RU2530285C1 - Active hardware stack of the processor - Google Patents

Active hardware stack of the processor Download PDF

Info

Publication number
RU2530285C1
RU2530285C1 RU2013137540/08A RU2013137540A RU2530285C1 RU 2530285 C1 RU2530285 C1 RU 2530285C1 RU 2013137540/08 A RU2013137540/08 A RU 2013137540/08A RU 2013137540 A RU2013137540 A RU 2013137540A RU 2530285 C1 RU2530285 C1 RU 2530285C1
Authority
RU
Russia
Prior art keywords
stack
address
processor
counters
program
Prior art date
Application number
RU2013137540/08A
Other languages
Russian (ru)
Inventor
Андрей Андреевич Семёнов
Дмитрий Александрович Усанов
Original Assignee
Федеральное Государственное Бюджетное Образовательное Учреждение Высшего Профессионального Образования "Саратовский Государственный Университет Имени Н.Г. Чернышевского"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Федеральное Государственное Бюджетное Образовательное Учреждение Высшего Профессионального Образования "Саратовский Государственный Университет Имени Н.Г. Чернышевского" filed Critical Федеральное Государственное Бюджетное Образовательное Учреждение Высшего Профессионального Образования "Саратовский Государственный Университет Имени Н.Г. Чернышевского"
Priority to RU2013137540/08A priority Critical patent/RU2530285C1/en
Application granted granted Critical
Publication of RU2530285C1 publication Critical patent/RU2530285C1/en

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

FIELD: electricity.
SUBSTANCE: hardware stack of the processor with the stack pointer and stack control logic comprises a program counter with tri-state output cascades, which includes additionally at least N of program counters with tri-state output cascades, at that inputs for parallel loading of all program counters are interconnected bit-by-bit, outputs of all program counters are interconnected bit-by-bit, increment inputs of all program counters are interconnected so that at each certain moment of time only one program counter selected by the stack pointer is in active state and may perform its functions independently from other counters.
EFFECT: increasing operational speed of the processor, its efficiency, simplifying its design due to manufacturing of a program counter unit operating as per the stack principle and allowing operations of subroutine jump or interrupt service procedure.
2 dwg

Description

Изобретение относится к области электроники и микропроцессорной техники и может быть использовано в конструкциях современных, высокопроизводительных RISC-микропроцессоров и микроконтроллеров для повышения быстродействия и упрощения их конструкции.The invention relates to the field of electronics and microprocessor technology and can be used in the construction of modern, high-performance RISC microprocessors and microcontrollers to improve performance and simplify their design.

В общем случае стек (от англ. stack - стопка) - структура данных, представляющая из себя список элементов, организованных по принципу LIFO (англ. Last In - First Out, «последним пришел - первым вышел»).In the general case, a stack (from the English stack - stack) is a data structure that is a list of elements organized according to the LIFO principle (Last In - First Out, “last come, first go”).

В рамках заявляемого технического решения термин стек употребляется применительно к области памяти процессора, организованной по принципу "магазина" (по аналогии с магазином в огнестрельном оружии - стрельба начнется с патрона, заряженного в магазин последним) и обеспечивающей сохранение адресов возврата при вызове подпрограмм и обслуживании прерываний для последующей передачи управления в точку вызова подпрограммы или на адрес, перед которым был выполнен переход к процедуре обслуживания прерывания.In the framework of the proposed technical solution, the term stack is used in relation to the processor’s memory area organized according to the “store” principle (similar to a store in firearms - firing will start from the cartridge loaded into the store last) and ensure that return addresses are saved when calling subroutines and serving interrupts for the subsequent transfer of control to the call point of the subprogram or to the address before which the transition to the interrupt service procedure was performed.

Отметим также, что архитектура RISC (Reduced Instruction Set Computer - компьютер с сокращенным набором команд) является основой современных высокопроизводительных микропроцессоров и микроконтроллеров.We also note that the architecture of RISC (Reduced Instruction Set Computer - a computer with a reduced set of instructions) is the basis of modern high-performance microprocessors and microcontrollers.

Основными требованиями архитектуры RISC являются:The main requirements of the RISC architecture are:

1. Любая операция должна выполняться за один такт.1. Any operation should be performed in one step.

2. Система команд должна содержать минимальное количество наиболее часто используемых команд одинаковой длины.2. The command system must contain a minimum number of the most frequently used commands of the same length.

3. Операции обработки данных реализуются только в формате регистр-регистр. Обмен между регистрами и памятью выполняется только командами загрузки-записи.3. Data processing operations are implemented only in the register-register format. The exchange between registers and memory is performed only by load-write commands.

В дальнейшем эти требования были несколько смягчены, и в настоящее время незыблемым остается только требование: обработка данных ведется только командами в формате регистр-регистр. А требование выполнения любой операции за один такт стало трактоваться как выполнение любых операции за одинаковый интервал времени - машинный цикл, или как загрузка конвейера команд в темпе "команда за такт".In the future, these requirements were somewhat relaxed, and at present, only the requirement remains unshakable: data processing is carried out only by commands in the register-register format. And the requirement to perform any operation in a single cycle began to be interpreted as the execution of any operation for the same time interval - a machine cycle, or as loading a command pipeline at a pace of "command per cycle".

Но, тем не менее, соответствие этому требованию позволяет упростить логику декодирования команд благодаря использованию команды фиксированной длины и фиксированного формата, возможность исполнения которых за фиксированный интервал времени позволяет с помощью довольно несложных схемотехнических решений реализовать не только высокую скорость выполнения элементарных операций при сохранении простоты устройства управления и синхронизации процессора, но также организовать как конвейеризацию, так и пространственный параллелизм вычислений.But, nevertheless, compliance with this requirement makes it possible to simplify the logic of decoding instructions by using fixed-length and fixed-format instructions, the ability to execute which for a fixed time interval allows using fairly simple circuitry solutions to realize not only high speed of performing elementary operations while maintaining the simplicity of the control device and processor synchronization, but also organize both pipelining and spatial parallelism computation nings.

Следует также отметить, что в наши дни лучшие черты RISC-архитектуры широко заимствуются при разработке современных высокопроизводительных микропроцессоров и микроконтроллеров, в связи с чем технической задачей заявляемого технического решения является создание специфической конструкции аппаратного стека процессора, позволяющей выполнять сложные машинные операции за один такт.It should also be noted that today the best features of RISC architecture are widely borrowed in the development of modern high-performance microprocessors and microcontrollers, in connection with which the technical task of the claimed technical solution is to create a specific design of the processor hardware stack that allows performing complex machine operations in one clock cycle.

К числу таких сложных операций относятся вызовы подпрограмм и обслуживание прерываний, поскольку при выполнении они предполагают переход на заданный адрес, то есть, запись значения адреса перехода в регистр программного счетчика (PC) процессора, с одновременным сохранением адреса возврата из подпрограммы, то есть, с сохранением текущего значения PC, что довольно сложно реализовать за одинаковый со всеми остальными командами интервал времени.Such complex operations include subprogram calls and interrupt service, because when they are executed, they involve switching to the specified address, that is, writing the value of the transition address to the processor program counter (PC) register of the processor, while simultaneously saving the return address from the subprogram, that is, with saving the current PC value, which is quite difficult to implement for the same time interval with all other commands.

Рассмотрим, как эта операция реализуется в конструкции характерных представителей семейств микропроцессоров и микроконтроллеров.Consider how this operation is implemented in the design of the characteristic representatives of the families of microprocessors and microcontrollers.

Известен микроконтроллер семейства TMS 1000 (pat. US 3988604, pat. US 4024386). Упрощенная блок-схема этого микроконтроллера представлена в его техническом описании (TMS 1000 Series Data Manual, The Engineering Staff of TEXAS INSTRUMENTS INCORPORATED Semiconductor Group).Known microcontroller family TMS 1000 (pat. US 3988604, pat. US 4024386). A simplified block diagram of this microcontroller is presented in its technical description (TMS 1000 Series Data Manual, The Engineering Staff of TEXAS INSTRUMENTS INCORPORATED Semiconductor Group).

В микроконтроллерах этого семейства эффективный адрес при обращении к постоянному запоминающему устройству (ПЗУ) программ (ROM) образуется подачей на его адресные входы текущего содержимого программного счетчика (PROGRAM COUNTER) и содержимого регистра адреса страницы (PAGE ADDRESS REGISTER). Такое разделение обусловлено ограниченностью аппаратных ресурсов микроконтроллера.In microcontrollers of this family, the effective address when accessing the read-only memory (ROM) of the program (ROM) is formed by feeding the current contents of the program counter (PROGRAM COUNTER) and the contents of the page address register (PAGE ADDRESS REGISTER) to its address inputs. This separation is due to the limited hardware resources of the microcontroller.

При выполнении операции вызова подпрограммы (CALL) текущее состояние программного счетчика сохраняется в регистре возврата из подпрограммы (SUBROUTINE RETURN REGISTER), а содержимое регистра адреса страницы записывается в регистр буфера страницы (PAGE BUFFER REGISTER). После этого в программный счетчик и регистр адреса страницы записывается эффективный адрес перехода к вызываемой подпрограмме из ПЗУ программ, и выполнение операций продолжается с адреса, содержащегося в программном счетчике и регистре адреса страницы.When the subroutine call operation (CALL) is performed, the current state of the program counter is stored in the subroutine return register (SUBROUTINE RETURN REGISTER), and the contents of the page address register are written to the page buffer register (PAGE BUFFER REGISTER). After that, the effective address of the transition to the called subprogram from the program ROM is recorded in the program counter and page address register, and operations continue from the address contained in the program counter and page address register.

При выполнении операции возврата из подпрограммы (RETN) на адрес, откуда эта подпрограмма была вызвана, содержимое регистра буфера страницы переписывается в регистр адреса страницы, а программный счетчик загружается значением регистра возврата из подпрограммы. После чего выполнение операций продолжается с эффективного адреса, содержащегося в программном счетчике и регистре адреса страницы, то есть с адреса, откуда была вызвана подпрограмма.When performing a return operation from a subroutine (RETN) to the address from where this subroutine was called, the contents of the page buffer register are written to the page address register, and the program counter is loaded with the value of the return register from the subroutine. After that, operations continue from the effective address contained in the program counter and page address register, that is, from the address from where the subroutine was called.

Такое решение представляет собой простейший одноранговый стек, предоставляющий возможностью сохранения лишь одного адреса возврата из подпрограммы или процедуры обслуживания прерывания.This solution is the simplest peer-to-peer stack that provides the ability to save only one return address from a subroutine or interrupt service routine.

Недостатком подобного решения являются малая глубина вложения вызовов подпрограмм, поскольку регистр буфера страницы и регистр возврата из подпрограммы способны сохранить только один эффективный адрес возврата из подпрограммы, а также невозможность выполнения операции вызова подпрограммы за один такт, поскольку запись адреса перехода к подпрограмме в программный счетчик не может быть выполнена одновременно с сохранением его текущего значения.The disadvantage of this solution is the small depth of nesting of subprogram calls, since the page buffer register and the return register from the subprogram can save only one effective return address from the subprogram, as well as the inability to execute the subprogram call operation in one clock cycle, since writing the address of the transition to the subprogram in the program counter does not can be performed while maintaining its current value.

Известен процессор семейства ЭВМ PDP (Programmed Data Processor) американской корпорации Digital Equipment Corporation (DEC). В конструкции PDP-8 было найдено элегантное, хотя и несколько необычное, решение: адрес возврата из подпрограммы сохранялся в самой подпрограмме по адресу ее вызова, а выполнение подпрограммы начиналось со следующего адреса.Known processor family of computers PDP (Programmed Data Processor) of the American corporation Digital Equipment Corporation (DEC). An elegant, albeit somewhat unusual, solution was found in the PDP-8 design: the return address from the subprogram was stored in the subprogram itself at the address of its call, and the execution of the subprogram began with the following address.

При выполнении PDP-8 операции вызова подпрограммы по адресу Y (JMS Y) текущее состояние программного счетчика процессора сохраняется по этому адресу - Y, а значение Y+1 заносится в программный счетчик, после чего выполнение операций подпрограммы продолжается с адреса Y+1, содержащегося в программном счетчике до инструкции возврата из подпрограммы (JMPIY). Выполнение этой операции предполагает загрузку PC значением из ячейки памяти с адресом Y, а, следовательно, и возврат управления к месту вызова подпрограммы (PROGRAMMED DATA PROCESSOR-8 USERS HANDBOOK. DIGITAL EQUIPMENT CORPORATION. MAYNARD, MASSACHUSETTS, p.23).When performing a PDP-8 operation of calling a subprogram at address Y (JMS Y), the current state of the processor’s software counter is stored at this address — Y, and the value Y + 1 is entered in the program counter, after which the execution of subprogram operations continues from address Y + 1 contained in the program counter before the subroutine return instruction (JMPIY). Performing this operation involves loading the PC with a value from the memory location with address Y, and, consequently, returning control to the place of the subprogram call (PROGRAMMED DATA PROCESSOR-8 USERS HANDBOOK. DIGITAL EQUIPMENT CORPORATION. MAYNARD, MASSACHUSETTS, p.23).

Согласно приведенной в техническом описании блок-схеме PDP-8 (PDP-8 A HIGH SPEED DIGITAL COMPUTER. DIGITAL EQUIPMENT CORPORATION. MAYNARD, MASSACHUSETTS, p.8), в процессе выполнения операции вызова подпрограммы по адресу Y в регистр адреса памяти (MEMORY ADDRESS REGISTER) записывается адрес перехода Y из буферного регистра памяти (MEMORY BUFFER REGISTER) по сигналам генератора основных состояний (MAJOR STATE GENERATOR), управляемого кодом инструкции JMS Y из регистра инструкции (INSTRUCTION REGISTER).According to the PDP-8 flowchart in the technical description (PDP-8 A HIGH SPEED DIGITAL COMPUTER. DIGITAL EQUIPMENT CORPORATION. MAYNARD, MASSACHUSETTS, p.8), during the operation of calling the subprogram at address Y in the memory address register (MEMORY ADDRESS REGISTER) records the transition address Y from the memory buffer register (MEMORY BUFFER REGISTER) according to the signals of the basic state generator (MAJOR STATE GENERATOR) controlled by the instruction code JMS Y from the instruction register (INSTRUCTION REGISTER).

После этого содержимое программного счетчика (PROGRAM COUNTER) через буферный регистр памяти (MEMORY BUFFER REGISTER) заносится в оперативную память (4096-WORD CORE MEMORY) по адресу Y в регистре адреса памяти, а содержимое регистра адреса памяти, содержащее значение адреса перехода Y, переписывается в программный счетчик и инкрементируется. Таким образом начинается выполнение операций подпрограммы с адреса Y+1, содержащегося в программном счетчике.After that, the contents of the program counter (PROGRAM COUNTER) through the buffer memory register (MEMORY BUFFER REGISTER) is recorded in RAM (4096-WORD CORE MEMORY) at address Y in the memory address register, and the contents of the memory address register containing the value of jump address Y are overwritten into the software counter and incremented. Thus, the execution of subroutine operations begins with the address Y + 1 contained in the program counter.

Роль инструкции возврата из подпрограммы в PDP-8 играет команда перехода по значению, содержащемуся в ячейке памяти. При этом в команде JMPIY заранее программируется переход по значению, содержащемуся в первой ячейке подпрограммы. В результате выполнения инструкции JMPIY содержимое ячейки оперативной памяти по адресу Y через буферный регистр памяти заносится в программный счетчик, что фактически передает управление программой на адрес возврата.The role of the subroutine return instruction in PDP-8 is played by the jump instruction based on the value contained in the memory cell. At the same time, in the JMPIY command, the transition is pre-programmed according to the value contained in the first cell of the subprogram. As a result of executing the JMPIY instruction, the contents of the RAM cell at address Y are entered into the program counter via the memory buffer register, which actually transfers control of the program to the return address.

Такая аппаратная реализация механизма возврата из подпрограмм и процедур обслуживания прерываний, по сути, предоставляет свой отдельный одноранговый стек в памяти для каждого вызова подпрограммы или процедуры обслуживания прерывания.Such a hardware implementation of the mechanism for returning from subroutines and interrupt service routines essentially provides its own separate peer-to-peer stack in memory for each subprogram call or interrupt service routine.

Недостатком такого решения, несмотря на то, что оно значительно увеличивает глубину вложения вызовов подпрограмм, является невозможность выполнения операции вызова подпрограммы за один такт, поскольку запись адреса перехода к подпрограмме в программный счетчик здесь также не может быть выполнена одновременно с сохранением его текущего значения в оперативной памяти. Кроме того, операции обращения к оперативной памяти значительно медленнее операций записи и чтения регистров самого процессора, и подобный принцип сохранения адреса возврата из подпрограммы не позволяет выполнять рекурсивные вызовы подпрограммы из себя самой или процедуры обслуживания прерывания, поскольку новый адрес возврата в этом случае будет занесен в ячейку хранения, но предыдущий адрес возврата, хранящийся в ней, безусловно, будет утерян. К тому же данный механизм сохранения адреса возврата не работоспособен в случае размещения подпрограмм в памяти постоянного запоминающего устройства, запись в которое физически невозможна.The disadvantage of this solution, despite the fact that it significantly increases the nesting depth of subprogram calls, is the inability to execute the subprogram call operation in one clock cycle, since writing the address of the transition to the subprogram in the program counter here also cannot be performed simultaneously with saving its current value in the operational memory. In addition, the operations of accessing RAM are much slower than the operations of writing and reading registers of the processor itself, and a similar principle of saving the return address from the subroutine does not allow recursive calls of the subroutine from itself or the interrupt service routine, since the new return address in this case will be entered in storage cell, but the previous return address stored in it will certainly be lost. In addition, this mechanism for storing the return address is not operational if subroutines are placed in the memory of a read-only memory device, recording into which is physically impossible.

Наиболее близким по технической сущности к заявляемому изобретению, принятым за прототип, является микроконтроллер серии PIC18 фирмы Microchip, который содержит 31-уровневый (в общем случае - N-уровневый) аппаратный стек (31-Level Stack), представленный в виде блок-схемы в фирменном техническом описании (Microchip PIC18(L)F1XK22 Data Sheet, 20-Pin Flash Microcontrollers with nanoWatt XLP Technology. © 2009-2011 Microchip Technology Incorporated. DS41365E - page 10).The closest in technical essence to the claimed invention, adopted as a prototype, is a Microchip PIC18 series microcontroller, which contains a 31-level (in general case, N-level) hardware stack (31-Level Stack), presented in the form of a block diagram in Proprietary Datasheet (Microchip PIC18 (L) F1XK22 Data Sheet, 20-Pin Flash Microcontrollers with nanoWatt XLP Technology. © 2009-2011 Microchip Technology Incorporated. DS41365E - page 10).

В конкретном аппаратном исполнении микроконтроллера Microchip PIC18(L)F1XK22 стек адресов возврата (Return Address Stack) представляет собой отдельную дополнительную область памяти, содержащую 31 регистр (31-Level Stack), и организованную по магазинному типу, причем регистр (ячейка стека), в который производится запись, или из которого производится чтение, определяется специальным указателем стека (Stack Pointer - STKPTR) с логикой управления стеком.In the specific hardware version of the Microchip PIC18 (L) F1XK22 microcontroller, the Return Address Stack is a separate additional memory area containing 31 registers (31-Level Stack) and organized by store type, with the register (stack cell) in which is being written, or from which reading is being made, is determined by a special stack pointer (Stack Pointer - STKPTR) with stack control logic.

Область стека микроконтроллера PIC18(L)F1XK224 не принадлежит ни к программной области, ни к области данных. Текущее значение программного счетчика (Program Counter - PC) пересылается в стек, когда выполняется команда вызова подпрограммы (CALL) или производится обработка прерывания, при этом указатель стека увеличивается на единицу и указывает на ячейку стека, в которую заносится содержимое PC. В программный счетчик же заносится начальный адрес выполняемой процедуры обработки прерывания или подпрограммы. При выполнении процедуры возврата из подпрограммы (команды RETLW, RETFIE или RETURN), в программный счетчик загружается содержимое текущей ячейки стека, а указатель стека уменьшается на единицу.The stack area of the PIC18 (L) F1XK224 microcontroller belongs neither to the software area nor to the data area. The current value of the program counter (Program Counter - PC) is sent to the stack when a subroutine call command (CALL) is executed or interrupt processing is performed, while the stack pointer is incremented by one and points to the stack cell into which the contents of the PC are pushed. In the program counter, the starting address of the interrupt processing routine or subroutine that is being executed is entered. During the return procedure from the subprogram (RETLW, RETFIE, or RETURN commands), the contents of the current stack cell are loaded into the program counter, and the stack pointer is reduced by one.

Тридцатиодноуровневый аппаратный стек микроконтроллера Microchip PIC18(L)F1XK224 обеспечивает глубину вложений вызовов подпрограмм до 31 с последующим корректным возвратом. При переполнении ограниченного аппаратного стека указатель стека снова указывает на исходную ячейку, и микроконтроллер начнет запись в стек «по кольцу», стирая предыдущее содержимое стека. При извлечении может наблюдаться аналогичный процесс: читается содержимое «дна» стека, а указатель перескакивает на самый верх.The thirty-level hardware stack of the Microchip PIC18 (L) F1XK224 microcontroller provides a sub-routine call attachment depth of up to 31, followed by a correct return. When the limited hardware stack overflows, the stack pointer again points to the original cell, and the microcontroller starts writing to the stack “in a ring”, erasing the previous contents of the stack. When retrieving, a similar process can be observed: the contents of the "bottom" of the stack are read, and the pointer jumps to the very top.

В качестве указателя аппаратного стека обычно используется двоичный счетчик соответствующей разрядности со входом установки в начальное состояние по сигналу сброса, способный выполнять операции инкремента и декремента. Логика управления стеком обычно реализуется посредством дешифратора типа «код-позиция», активизирующего один из регистров стека, согласно номеру (коду) в указателе стека. Для подключения к программному счетчику только одного из регистров стека используются регистры с тристабильным выходным каскадом, способные отключаться от шины, или же выбор выходного кода одного из регистров осуществляется посредством коммутатора (мультиплексора).As a pointer to the hardware stack, a binary counter of the corresponding bit capacity is usually used with the installation input in the initial state by a reset signal, capable of performing increment and decrement operations. The stack control logic is usually implemented by means of a code-position decoder that activates one of the stack registers according to the number (code) in the stack pointer. To connect only one of the stack registers to the program counter, registers with a tristable output stage that can disconnect from the bus are used, or the output code of one of the registers is selected using a switch (multiplexer).

Недостатком конструкции, выбранной в качестве прототипа, несмотря на то, что она обеспечивает приемлемую глубину вложения вызовов подпрограмм, является невозможность выполнения операции вызова подпрограммы за один такт, поскольку запись адреса перехода к подпрограмме в программный счетчик здесь также не может быть выполнена одновременно с сохранением его текущего значения в регистрах стека.The disadvantage of the design chosen as a prototype, despite the fact that it provides an acceptable depth of nesting of subprogram calls, is the impossibility of performing a subprogram call operation in one clock cycle, since recording the address of the transition to the subprogram in the program counter here also cannot be performed while saving it current value in stack registers.

Задачей заявляемого технического решения является создание конструкции узла программного счетчика, работающего по принципу стека (или по магазинному принципу), но позволяющего в отличие от прототипа выполнять операции перехода к подпрограмме или к процедуре обслуживания прерывания, а также - возврата из них за один такт, при соблюдении схемотехнической простоты процессора.The objective of the proposed technical solution is to create a design of the software counter assembly working on the stack principle (or on the store principle), but allowing, unlike the prototype, to perform operations of switching to a subroutine or to an interrupt service procedure, as well as returning from them in one clock cycle, compliance with the circuit simplicity of the processor.

Технический результат заключается в повышении быстродействия процессора, и, как следствие, производительности, при упрощении его конструкции.The technical result consists in increasing the speed of the processor, and, as a consequence, performance, while simplifying its design.

Указанный технический результат достигается тем, что аппаратный стек процессора с указателем стека и логикой управления стеком, включающий программный счетчик с тристабильными выходными каскадами, согласно решению дополнительно содержит по крайней мере N программных счетчиков с тристабильными выходными каскадами, при этом входы параллельной загрузки всех программных счетчиков соединены поразрядно вместе, выходы всех программных счетчиков соединены поразрядно вместе, входы инкремента всех программных счетчиков соединены вместе, входы разрешения параллельной загрузки всех программных счетчиков соединены вместе, входы выборки каждого из отдельных программных счетчиков подсоединены к одноименным управляющим выходам логики управления стеком так, что в каждый отдельный момент времени только один из программных счетчиков, выбранный указателем стека, может находиться в активном состоянии и выполнять свои функции независимо от остальных.This technical result is achieved in that the processor hardware stack with a stack pointer and stack control logic, including a software counter with tristable output stages, according to the solution additionally contains at least N program counters with tristable output stages, while the parallel load inputs of all program counters are connected bitwise together, the outputs of all software counters are connected bitwise together, the increment inputs of all software counters are connected together, input Allows the parallel loading of all program counters to be connected together, the sampling inputs of each of the individual program counters are connected to the control outputs of the stack control logic of the same name, so that at any given moment only one of the program counters selected by the stack pointer can be in an active state and execute their functions independently of the rest.

В конструкцию процессора (микропроцессора, микроконтроллера), содержащую программный счетчик и характерные узлы реализации аппаратного стека, такие как указатель стека с логикой управления стеком и регистры стека, согласно техническому решению, дополнительно вводятся в общем случае N идентичных программных счетчиков, фактически заменяющих в конструкции регистры стека, которые из конструкции исключаются, а указатель стека с логикой управления стеком подключается к блоку N+1 программных счетчиков для выборки активного в данный момент времени программного счетчика.In the design of the processor (microprocessor, microcontroller) containing the software counter and the characteristic nodes of the hardware stack implementation, such as the stack pointer with the stack control logic and stack registers, according to the technical solution, in general, N identical program counters are actually introduced, which actually replace the registers in the design the stack, which are excluded from the design, and the stack pointer with the stack control logic is connected to the N + 1 block of software counters for fetching the currently active software counter

Выходы программных счетчиков с тристабильными выходными каскадами соединены поразрядно вместе, так что в каждый отдельный момент времени на выходах активны сигналы только одного из счетчиков, выбранного указателем стека посредством логики управления стеком. Входы параллельной загрузки программных счетчиков также соединены поразрядно вместе, что позволяет в каждый отдельный момент времени осуществить параллельную загрузку значением адреса перехода только одного из счетчиков, выбранного указателем стека посредством логики управления стеком. Счетные входы программных счетчиков также объединены, что позволяет подать импульсы инкремента на все счетчики, но при этом инкрементируется только тот из счетчиков, который в данный момент выбран указателем стека посредством логики управления стеком. В результате при выполнении операции перехода к подпрограмме или к процедуре обслуживания прерывания активный на данный момент программный счетчик будет содержать адрес возврата из подпрограммы, который никуда не будет сохраняться, поскольку начальный адрес подпрограммы или процедуры обслуживания прерывания будет записан в следующий программный счетчик, активизированный посредством логики управления стеком в результате инкремента указателя стека. Текущие коды операций подпрограммы выбираются при этом из памяти активным программным счетчиком, в то время как неактивный - содержит и хранит адрес возврата из подпрограммы. Для возврата из подпрограммы или процедуры обслуживания прерывания достаточно декрементировать указатель стека, который посредством логики управления стеком переведет в активное состояние программный счетчик, хранящий адрес возврата из подпрограммы, а текущий счетчик будет при этом переведен в неактивное состояние.The outputs of the program counters with tristable output stages are connected bitwise together, so that at each separate moment of time the outputs are active only from one of the counters selected by the stack pointer through the stack control logic. The inputs for parallel loading of program counters are also connected bitwise together, which allows parallel loading of only one of the counters selected by the stack pointer using the stack control logic at the same time. The counting inputs of software counters are also combined, which allows you to apply increment pulses to all counters, but only that counter that is currently selected by the stack pointer through the stack control logic is incremented. As a result, during the transition to the subroutine or to the interrupt service procedure, the currently active program counter will contain the return address from the subprogram, which will not be saved anywhere, since the starting address of the subprogram or interrupt service procedure will be written to the next program counter activated by logic stack control as a result of incrementing the stack pointer. The current operation codes of the subprogram are selected from the memory by the active program counter, while inactive - it contains and stores the return address from the subprogram. To return from a subroutine or an interrupt service routine, it is sufficient to decrement the stack pointer, which, by means of the stack control logic, will switch the program counter, which stores the return address from the subroutine, to the active state, and the current counter will become inactive.

Если же в процессе выполнения подпрограммы случится вызов другой подпрограммы, то текущий активный счетчик будет хранить адрес возврата из нее, а начальный адрес вложенной подпрограммы будет записан в следующий программный счетчик, который будет активизирован посредством логики управления стеком в результате инкремента указателя стека.If, in the process of executing the subprogram, another subprogram is called, the current active counter will store the return address from it, and the starting address of the nested subprogram will be written to the next program counter, which will be activated by the stack control logic as a result of the increment of the stack pointer.

Глубина вложения подпрограмм определяется количеством имеющихся программных счетчиков, и ситуации с переполнением обрабатываются аналогично ситуациям с переполнением стека прототипа.The depth of nesting of subprograms is determined by the number of available software counters, and situations with overflow are handled similarly to situations with overflow of the prototype stack.

Таким образом, из алгоритма выполнения операции перехода к подпрограмме или к процедуре обслуживания прерывания исключается этап сохранения содержимого программного счетчика в регистре стека, алгоритм же возврата из этих процедур и вовсе упрощается до операции декремента указателя стека, поскольку полностью отсутствует необходимость записи в программный счетчик из стека адреса возврата. А инкремент указателя стека и запись начального адреса подпрограммы в очередной программный счетчик, переведенный в активное состояние посредством логики управления стеком, как и декремент указателя стека в процедуре возврата могут быть выполнены за один такт, что позволяет повысить быстродействие процессора на 30-50% при реализации операций вызова подпрограмм или обслуживания прерывания, а также возврата из них, в силу уменьшения количества тактов, необходимых для выполнения таких операций. В результате также упрощается конструкции узла управления и дешифрации кода инструкции, поскольку заявляемое техническое решение предполагает выполнение всех кодов операций за фиксированное время в один машинный такт.Thus, the stage of saving the contents of the program counter in the stack register is excluded from the algorithm for performing the operation of moving to the subroutine or to the procedure for servicing the interrupt, while the return algorithm from these procedures is completely simplified to the operation of decrementing the stack pointer, since there is no need to write to the program counter from the stack return address. And the increment of the stack pointer and the entry of the starting address of the subprogram into the next program counter, activated by the stack control logic, as well as the decrement of the stack pointer in the return procedure can be performed in one clock cycle, which allows to increase the processor speed by 30-50% when implemented operations of calling subprograms or servicing an interrupt, as well as returning from them, due to a decrease in the number of clock cycles required to perform such operations. The result also simplifies the design of the control unit and decryption of the instruction code, since the claimed technical solution involves the execution of all operation codes in a fixed time in one machine cycle.

Существует функциональная аналогия между принципом работы предложенного решения и принципом работы типичного аппаратного стека процессора (микропроцессора, микроконтроллера), а также его конструкцией. Но организованные по магазинному принципу программные счетчики в предложенном решении не только выполняют пассивную функцию хранения адреса возврата из подпрограммы, но и играют роль активного текущего указателя инструкций в памяти. Это позволяет назвать заявляемое техническое решение - активный аппаратный стек процессора.There is a functional analogy between the principle of operation of the proposed solution and the principle of operation of a typical processor hardware stack (microprocessor, microcontroller), as well as its design. But program counters organized by the store principle in the proposed solution not only perform a passive function of storing the return address from the subprogram, but also play the role of the active current instruction pointer in memory. This allows us to name the claimed technical solution - the active hardware stack of the processor.

Заявляемое техническое решение отличается от прототипа наличием новых блоков - N идентичных программных счетчиков, их связями с остальными элементами схемы. Эти отличия позволяют сделать вывод о соответствии заявляемого решения критерию "новизна".The claimed technical solution differs from the prototype in the presence of new blocks - N identical software counters, their relationships with other elements of the circuit. These differences allow us to conclude that the proposed solution meets the criterion of "novelty."

Требуемый результат достигается всей вновь введенной совокупностью существенных признаков, которые в известной патентной и научной литературе не обнаружены на дату подачи заявки. Следовательно, техническое решение соответствует критерию "изобретательский уровень".The desired result is achieved by the entire newly introduced set of essential features that are not found in the well-known patent and scientific literature at the filing date. Therefore, the technical solution meets the criterion of "inventive step".

Заявляемое решение поясняется чертежами, где на фиг.1 приведена блок-схема предлагаемого устройства, а на фиг.2 - представлены эпюры сигналов, иллюстрирующие принцип работы устройства потактово.The claimed solution is illustrated by drawings, where Fig. 1 shows a block diagram of the proposed device, and Fig. 2 is a waveform diagram illustrating the principle of operation of the device tactically.

На чертеже приняты следующие обозначения:In the drawing, the following notation:

- IDCU - Instruction Decode and Control Unit - устройство управления и синхронизации, обычно выполняемое аппаратно на основе программируемой логической матрицы (PLM);- IDCU - Instruction Decode and Control Unit - a control and synchronization device, usually performed in hardware based on a programmable logic matrix (PLM);

- SP - Stack Pointer - указатель стека, аппаратно представляющий собой двоичный счетчик (CT) со входом установки в начальное состояние (R) по сигналу сброса, способный выполнять операции инкремента (+1) и декремента (-1), с логикой управления стеком, аппаратно представляющей собой дешифратор (DC) позиционного типа;- SP - Stack Pointer - a stack pointer, a hardware counter representing a binary counter (CT) with the installation input in the initial state (R) by a reset signal, capable of performing increment (+1) and decrement (-1) operations, with stack control logic, hardware representing a positional type decoder (DC);

- PC FILE - Program Counter File - организованный по магазинному типу файл N+1 программных счетчиков (PC 0, PC 1, … PC N+1); аппаратно представляющих собой двоичные счетчики (CT) с параллельной загрузкой по управляющему сигналу разрешения параллельной записи (PE), имеющих и способных выполнять операции инкремента (+1), а счетчик PC 0 обладает также входом установки в начальное состояние (R) по сигналу сброса;- PC FILE - Program Counter File - a store-organized file of N + 1 software counters (PC 0, PC 1, ... PC N + 1); hardware representing binary counters (CT) with parallel loading by the control signal for enabling parallel recording (PE), having and capable of performing increment operations (+1), and the counter PC 0 also has a setup input to the initial state (R) by a reset signal;

- IR - Instruction Register - регистр команд (инструкций), аппаратно выполненный на основе регистра (RG) с параллельной загрузкой по стробирующему сигналу (C);- IR - Instruction Register - a register of commands (instructions), hardware-based on the basis of the register (RG) with parallel loading by the gating signal (C);

- ADDR BUFF - Address Buffer - буфер адреса, аппаратно выполненный на основе регистра (RG) с параллельной загрузкой по стробирующему сигналу (C) и тристабильным выходным каскадом, управляемым по входу разрешения выходного сигнала (OE);- ADDR BUFF - Address Buffer - the address buffer hardware-based on the register (RG) with parallel loading by the gating signal (C) and a tristable output stage controlled by the output signal resolution (OE) input;

- MEMORY - память, или запоминающее устройство с тристабильным двунаправленным каскадом вывода данных (DATA), в общем случае - MEM, поскольку может быть выполнено как на основе интегральных схем с произвольным доступом (RAM), так и - только для чтения (ROM);- MEMORY - memory, or storage device with a tristable bi-directional data output cascade (DATA), in the general case - MEM, since it can be performed both on the basis of random access integrated circuits (RAM) and read-only (ROM);

- ADDR - адресные линии;- ADDR - address lines;

- BADDR - буферированные адресные линии;- BADDR - buffered address lines;

- DATA BUS - шина данных, тристабильная и двунаправленная;- DATA BUS - data bus, tristable and bidirectional;

- INSTRUCTION CODE - код операции (инструкция);- INSTRUCTION CODE - operation code (instruction);

- ALU - Arithmetic-Logical Unit - арифметико-логическое устройство (АЛУ);- ALU - Arithmetic-Logical Unit - Arithmetic Logic Unit (ALU);

Устройство управления и синхронизации - IDCU осуществляет генерацию управляющих сигналов согласно поступающему на его входы коду операции (INSTRUCTION CODE) для всех внутренних узлов процессора, но на чертеже (фиг.1) показаны только те из сигналов, которые относятся к работе активного аппаратного стека процессора и основных взаимодействующих с ним узлов:Control and synchronization device - IDCU generates control signals according to the operating code (INSTRUCTION CODE) for all internal nodes of the processor, but the figure (Fig. 1) shows only those signals that relate to the operation of the active hardware stack of the processor and the main nodes interacting with it:

- RES IN - Reset Input - вход внешнего сигнала начальной инициализации процессора;- RES IN - Reset Input - input of an external signal of initial initialization of the processor;

- CLK IN - Clock Input - вход внешнего тактового сигнала;- CLK IN - Clock Input - input of an external clock signal;

- RES PC - Reset Program Counter - сигнал установки программного счетчика в исходное состояние;- RES PC - Reset Program Counter - signal to set the software counter to its initial state;

- INC PC - Increment Program Counter - сигнал увеличения программного счетчика на единицу;- INC PC - Increment Program Counter - signal to increase the program counter by one;

- LD ADDR - Load Address - сигнал параллельной загрузки адреса перехода в программный счетчик;- LD ADDR - Load Address - signal for parallel loading of the transition address to the program counter;

- STB ADDR - Strobe Address - сигнал (строб) записи эффективного адреса в буфер адреса;- STB ADDR - Strobe Address - signal (strobe) for writing the effective address to the address buffer;

- EN ADDR - Enable Address - сигнал разрешения выдачи эффективного адреса на адресные входы запоминающего устройства (памяти);- EN ADDR - Enable Address - permission signal for issuing an effective address to the address inputs of a storage device (memory);

- MEM WR - Memory Write - сигнал разрешения записи в память;- MEM WR - Memory Write - enable signal write to memory;

- MEM RD - Memory Read - сигнал разрешения чтения из памяти;- MEM RD - Memory Read - permission signal to read from memory;

- INC SP - Increment Stack Pointer - сигнал увеличения указателя стека на единицу;- INC SP - Increment Stack Pointer - signal to increase the stack pointer by one;

- DEC SP - Decrement Stack Pointer - сигнал уменьшения указателя стека на единицу;- DEC SP - Decrement Stack Pointer - signal to reduce the stack pointer by one;

- RES SP - Reset Stack Pointer - сигнал установки указателя стека в исходное состояние;- RES SP - Reset Stack Pointer - signal to set the stack pointer to its original state;

- STB INSTR - Strobe Instruction - сигнал (строб) записи кода операции (инструкции) в регистр команд;- STB INSTR - Strobe Instruction - signal (strobe) of writing the operation code (instructions) in the command register;

- INT IN - Interrupt Input - вход сигнала прерывания от внешнего источника прерывания.- INT IN - Interrupt Input - interrupt signal input from an external interrupt source.

Согласно представленной на фиг.1 схеме, указатель стека SP своими входами начальной установки R, инкремента +1 и декремента -1 подключен к устройству управления и синхронизации IDCU по управляющим линиям RES SP, INC SP и DEC SP соответственно. Выходы логики управления стеком 0÷N указателя стека SP, осуществляющие выбор активного программного счетчика, подсоединены ко входам активизации CS (Cheap Select) программных счетчиков PC 0, PC 1, … PC N (всего N+1). Одноименные входы инкремента +1, как и входы разрешения параллельной загрузки РЕ (Parallel Enable) программных счетчиков объединены и подключены соответственно к управляющим выходам INC PC и LD ADDR устройства управления и синхронизации IDCU. В каждый отдельный момент времени эти сигналы могут быть активны лишь для одного из программных счетчиков, выбранного в этот момент времени логикой управления стеком указателя стека SP. Программный счетчик PC 0 соединен своим входом начальной установки R с управляющим выходом RES PC устройства управления и синхронизации IDCU, что позволяет инициаллизировать его значением стартового адреса при включении процессора или по сигналу аппаратного сброса RESET. Выходы программных счетчиков PC 0, PC 1, … PC N с тристабильными выходными каскадом соединены поразрядно вместе и подключены к адресным входам ADDR буфера адреса ADDR BUFF, причем в каждый отдельный момент времени на выходах активны сигналы только одного из счетчиков, выбранного указателем стека SP посредством логики управления стеком. Буфер адреса ADDR BUFF соединен по входу стробирующего сигнала C и входу разрешения выходного сигнала ОЕ с устройством управления и синхронизации IDCU, управляющие линии STB ADDR и EN ADDR которого соответственно осуществляют запись в буфер эффективного адреса с выхода активного программного счетчика и разрешают выдачу этого адреса с выходов BADDR буфера на адресные входы ADDR запоминающего устройства MEMORY, к которым выходные линии буфера адреса подсоединены. Входы разрешения записи в память WE (Write Enable) и разрешения выдачи данных OE (Output Enable) запоминающего устройства MEMORY соединены с выходами MEM WR и MEM RD устройства управления и синхронизации IDCU, что позволяет последнему разрешать выдачу данных из памяти MEMORY на двунаправленную и тристабильную шину данных DATA BUS по выходам DATA, или же записывать в память значение с шины через эти же выводы, но выполняющие уже функцию входов.According to the diagram shown in FIG. 1, the stack pointer SP is connected to the IDCU control and synchronization device via the control lines RES SP, INC SP and DEC SP with their inputs of the initial installation R, increment +1, and decrement -1. The outputs of the stack control logic 0 ÷ N of the SP stack pointer, which selects the active program counter, are connected to the activation inputs CS (Cheap Select) of the program counters PC 0, PC 1, ... PC N (total N + 1). The inputs of the same name increment +1, as well as the inputs for allowing parallel loading of PE (Parallel Enable) software counters are combined and connected respectively to the control outputs INC PC and LD ADDR control and synchronization devices IDCU. At each separate moment in time, these signals can be active only for one of the program counters selected at that moment in time by the stack stack pointer control logic SP. The program counter PC 0 is connected by its initial setup input R to the control output RES PC of the IDCU control and synchronization device, which allows it to be initialized with the start address value when the processor is turned on or by a RESET hardware reset signal. The outputs of the software counters PC 0, PC 1, ... PC N with tristable output stages are connected bitwise together and connected to the ADDR address inputs of the ADDR BUFF address buffer, and at each separate moment of time, only one of the counters selected by the stack pointer SP is active at the outputs stack control logic. The ADDR BUFF address buffer is connected at the input of the gate signal C and the output resolution enable signal OE with the IDCU control and synchronization device, whose control lines STB ADDR and EN ADDR respectively write to the effective address buffer from the output of the active program counter and enable the output of this address from the outputs BADDR buffers to the ADDR address inputs of the MEMORY, to which the output lines of the address buffer are connected. The entries of the write enable permission WE (Write Enable) and output enable data OE (Output Enable) of the MEMORY memory device are connected to the MEM WR and MEM RD outputs of the IDCU control and synchronization device, which allows the latter to allow the data from the MEMORY memory to be sent to the bi-directional and tri-stable bus DATA BUS data on the DATA outputs, or write to the memory the value from the bus through the same outputs, but which already perform the function of inputs.

Через двунаправленную и тристабильную шину данных DATA BUS с выводами DATA запоминающего устройства MEMORY соединяются входы INSTRIN регистра команд IR, в котором по активному сигналу на стробирующем входе C, соединеном с управляющим выходом STB INSTR устройства управления и синхронизации IDCU, и фиксируется поступивший из памяти код операции. С выходов INSTR регистра команд IR, подключенных к устройству управления и синхронизации IDCU, на последнее подается текущий код операции (INSTRUCTION CODE), согласно которому IDCU осуществляет генерацию управляющих сигналов для всех внутренних узлов процессора.Through the bi-directional and tristable data bus DATA BUS, the INSTRIN inputs of the IR command register are connected to the DATA pins of the MEMORY memory device, in which the operation code received from the memory is recorded on the gate signal C connected to the control output STB INSTR of the IDCU control and synchronization device . From the INSTR outputs of the register of IR commands connected to the IDCU control and synchronization device, the last one is the current operation code (INSTRUCTION CODE), according to which IDCU generates control signals for all internal nodes of the processor.

К двунаправленной и тристабильной шине данных DATA BUS подключены также и входы ADDR программных счетчиков PC 0, PC 1, … PC N, соединенные поразрядно вместе, что позволяет осуществить по управляющему сигналу LD ADDR устройства управления и синхронизации IDCU запись адреса передачи управления в случае безусловного перехода, вызова подпрограммы или возникновения прерывания с шины данных в программный счетчик, выбранный по входу CS в качестве активного в данный момент логикой управления стеком указателя стека SP.The ADDR inputs of the program counters PC 0, PC 1, ... PC N are connected to the bidirectional and tristable DATA BUS data bus. They are connected bitwise together, which allows the IDCU control and synchronization device to record the control transfer address in case of an unconditional transition using the LD ADDR control signal , calling a subroutine, or causing an interrupt from the data bus to the program counter selected by the CS input as the currently active stack control logic of the stack pointer SP.

К двунаправленной и тристабильной шине данных DATA BUS подключается также арифметико-логическое устройство ALU и другие узлы процессора, не изображенные на схеме фиг.1, поскольку они не находятся в непосредственном взаимодействии с активный аппаратный стеком.The arithmetic logic unit ALU and other processor nodes not shown in the diagram of Fig. 1 are also connected to the bidirectional and tristable data bus DATA BUS, since they are not in direct interaction with the active hardware stack.

На входы устройства управления и синхронизации IDCU - RES IN, INT IN и CLK IN поступают соответственно внешние сигналы начальной инициализации (сброса) процессора RESET, аппаратного прерывания INT и последовательность тактовых импульсов CLK, осуществляющая синхронизацию всего процессорного устройства.The inputs of the IDCU control and synchronization device, RES IN, INT IN, and CLK IN, respectively receive external signals of initial initialization (reset) of the RESET processor, hardware interrupt INT, and a clock sequence CLK that synchronizes the entire processor device.

Активный аппаратный стек процессора работает следующим образом.The active hardware stack of the processor works as follows.

При включении напряжения питания или принудительной начальной инициализации процессора на вход RES IN устройства управления и синхронизации IDCU поступает активный уровень внешнего сигнала начальной инициализации RESET, а на вход тактирования CLK IN-последовательность внешних тактовых импульсов CLK. За время действия сигнала RESET синхронно с тактовыми импульсами CLK происходит установка в начальное состояние указателя стека SP активным сигналом RES SP по входу начальной установки R, в результате чего на выходе 0 логики управления стеком появляется активный уровень, который в свою очередь по входу CS переводит в активное состояние программный счетчик PC 0. В этот же момент времени устройство управления и синхронизации IDCU, активным сигналом RES PC инициализирует программный счетчик PC 0 начальным значением адреса инструкции по его входу начальной установки R.When the supply voltage is turned on or the processor is forced to initialize, the RES IN input of the IDCU control and synchronization device receives the active level of the external RESET initialization signal, and the clock input CLK receives the IN-sequence of external clock pulses CLK. During the operation of the RESET signal, synchronously with the CLK clock pulses, the SP stack pointer is set to the initial state by the active RES SP signal at the initial setup input R, as a result of which the active level appears at the output 0 of the stack control logic, which in turn transfers the CS to the active state is program counter PC 0. At the same time, the IDCU control and synchronization device, with the active signal RES PC, initializes the program counter PC 0 with the initial value of the address of the instruction for its input initial Settings R.

По завершению сигнала RESET, процессор синхронно с тактовыми импульсами CLK переходит к выполнению процедуры выборки из памяти кода операции (FETCH). При этом установленный в активном программном счетчике PC 0 начальный адрес (обычно - это 0) переписывается по адресным входам ADDR в буфер адреса ADDR BUFF синхронно с активным сигналом STB ADDR, подаваемым IDCU на вход С буфера адреса, при этом на управляющем входе EN ADDR последнего устройство управления и синхронизации устанавливает разрешающий уровень, в результате чего значение адреса с выходов BADDR буфера поступает на адресные входы ADDR запоминающего устройства MEMORY.Upon completion of the RESET signal, the processor synchronously with the CLK clock pulses proceeds to the procedure of selecting the operation code (FETCH) from the memory. In this case, the starting address set in the active program counter PC 0 (usually 0) is copied via the ADDR address inputs to the ADDR BUFF address buffer synchronously with the active STB ADDR signal supplied by IDCU to the C address of the address buffer, while at the control input EN ADDR of the last the control and synchronization device sets the resolution level, as a result of which the address value from the BADDR outputs of the buffer goes to the ADDR address inputs of the MEMORY memory.

По сигналу INC PC, поданному устройством управления и синхронизации на входы инкремента +1 программных счетчиков, на выходе активного счетчика PC 0 установится следующее значение адреса - на единицу большее, которое и будет передано на адресные входы ADDR запоминающего устройства MEMORY во время последующей процедуры FETCH.According to the INC PC signal supplied by the control and synchronization device to the inputs of the increment of +1 program counters, the output of the active counter PC 0 will set the following address value - one more, which will be transmitted to the ADDR address inputs of the MEMORY memory device during the subsequent FETCH procedure.

По сигналу MEM RD от устройства управления и синхронизации IDCU, поступающему на вход разрешения выдачи данных OE запоминающего устройства, содержимое ячейки по адресу 0 поступает на шину данных DATA BUS и фиксируется в регистре команд IR активным сигналом STB INSTR, поданным IDCU на стробирующий вход С регистра.According to the MEM RD signal from the IDCU control and synchronization device, which is input to the OE data output enable input of the storage device, the contents of the cell at address 0 are sent to the DATA BUS and recorded in the IR command register by the active STB INSTR signal supplied by IDCU to the gate input C register .

На этом процедура выборки из памяти кода операции заканчивается, а текущий код операции (INSTRUCTION CODE), поданный с выходов INSTR регистра команд IR на входы устройства управления и синхронизации IDCU, будет определять последовательность управляющих сигналов IDCU, организующих согласованную совместную работу внутренних узлов процессора синхронно с тактовыми импульсами CLK в следующей фазе исполнения инструкции.This completes the procedure for fetching the operation code from the memory, and the current operation code (INSTRUCTION CODE), filed from the INSTR outputs of the IR command register to the inputs of the IDCU control and synchronization device, determines the sequence of IDCU control signals that organize coordinated joint work of internal processor nodes synchronously with CLK clocks in the next phase of instruction execution.

Предположим, для определенности, что в данный момент исполняемой является инструкция инкремента программного счетчика, поскольку отсутствие на схеме фиг.1 других узлы процессора, не находящихся в непосредственном взаимодействии с активный аппаратный стеком, не позволяет нам детально рассмотреть иные операции. В этом случае в фазе исполнения инструкции на входы инкремента +1 программных счетчиков устройством управления и синхронизации IDCU будет подан активный сигнал INC PC, в результате чего на выходе активного счетчика PC 0 установится значение, на единицу большее его текущего значения. После чего фаза исполнения инструкции будет окончена, процессор перейдет к процедуре выборки из памяти следующего кода операции по описанному выше алгоритму, и такое последовательное чтение инструкций из памяти с их последующим исполнением будет происходить до тех пор, пока не возникнет аппаратное прерывание, или же в программе, хранимой в памяти, не встретятся инструкции безусловного перехода или вызова подпрограммы.Suppose, for definiteness, that the instruction for incrementing a program counter is currently executable, since the absence of other processor nodes in the diagram of FIG. 1 that are not directly interacting with the active hardware stack does not allow us to consider other operations in detail. In this case, in the execution phase of the instruction for the increment inputs of +1 program counters, the IDCU control and synchronization device will send an active INC PC signal, as a result of which the output of the active counter PC 0 will be set to a value one more greater than its current value. After that, the execution phase of the instruction will be completed, the processor will proceed to the procedure of retrieving the following operation code from the memory using the algorithm described above, and such a sequential reading of instructions from the memory with their subsequent execution will occur until a hardware interrupt occurs, or in the program stored in memory, there will not be instructions for unconditional jump or subroutine call.

Рассмотрим работу активного аппаратного стека процессора в случае вызова подпрограммы или возникновения прерывания, а также возврата из этих процедур. Для демонстрации эффективности заявляемого технического решения будем рассматривать алгоритм реализации этих процедур на уровне микроопераций в привязке к последовательности входных тактовых импульсов CLK, изображенной на фиг.2.Consider the operation of the active hardware stack of the processor in the event of a subroutine call or interruption, as well as return from these procedures. To demonstrate the effectiveness of the proposed technical solution, we will consider the implementation algorithm of these procedures at the level of microoperations in relation to the sequence of input clock pulses CLK, shown in figure 2.

Период следования тактовых импульсов CLK, определяет длительность внутреннего такта процессора Ti - минимальный интервал времени за который устройству управления и синхронизации IDCU необходимо организовать как выборку кода инструкции из памяти, так и ее исполнение посредством последовательности микроопераций, выражающихся в подаче управляющих сигналов соответствующим узлам процессора.The CLK clock pulse period determines the duration of the internal clock of the Ti processor - the minimum time interval for which the IDCU control and synchronization device needs to organize both the selection of the instruction code from the memory and its execution through a sequence of microoperations, expressed in the supply of control signals to the corresponding processor nodes.

Поскольку процессор представляет собой синхронную систему, исполняющую свои внутренние микрооперации в привязке к импульсам синхронизации, становится очевидным, что характерных временных привязок на интервале Ti сигнала CLK - фронт импульса и спад импульса - явно недостаточно для организации выполнения даже минимального числа микрооперации по выборке и исполнению текущей инструкции. Поэтому в схеме устройства управления и синхронизации обычно формируют две последовательности внутренних тактирующих импульсов по фронтам и по спадам сигнала CLK - С1 и С2. Эти две последовательности на длительности интервала Ti обеспечивают четыре привязки по времени - по фронтам и спадам тактирующих импульсов.Since the processor is a synchronous system that executes its internal microoperations in relation to synchronization pulses, it becomes obvious that the characteristic time bindings on the Ti interval of the CLK signal — the pulse front and the pulse drop — are clearly insufficient to organize even the minimum number of microoperations in the selection and execution of the current instructions. Therefore, in the circuit of the control and synchronization device, two sequences of internal clock pulses are usually formed at the edges and at the edges of the CLK signal — C1 and C2. These two sequences over the duration of the Ti interval provide four time references — along the edges and decays of the clock pulses.

В случае выполнения инструкции вызова подпрограммы по фронту импульса С1 устройство управления и синхронизации IDCU подает активный сигнал STB ADDR на вход С буфера адреса, чем фиксирует в нем текущий адрес инструкции с выходов активного программного счетчика. Одновременно IDCU переводит в активное состояние свои управляющие линии EN ADDR и MEM RD, которые разрешают буферу адреса ADDR BUFF выдать адрес инструкции на входы ADDR запоминающего устройства MEMORY, а запоминающему устройству - выдать содержимое ячейки по указанному адресу на шину данных DATA BUS. К концу импульса С1 значение кода операции на линиях шины данных можно считать установившимся, поэтому по спаду С1 устройство управления и синхронизации подает активный сигнал STB INSTR на стробирующий вход С регистра команд IR, тем самым "защелкивая" в нем текущую инструкцию (INSTRUCTION CODE), код которой по линиям выходов INSTR регистра будет удерживаться на входах IDCU в фазе выполнения инструкции. Одновременно с этим устройство управления и синхронизации подает активный сигнал INC PC на входы инкремента+1 программных счетчиков, в результате чего на выходе активного в данный момент программного счетчика, активизированного по входу CS логикой управления стеком, появится адрес следующей инструкции программы.In the case of executing the subroutine call instruction on the pulse edge C1, the IDCU control and synchronization device sends an active signal STB ADDR to the input C of the address buffer, which captures the current instruction address from the outputs of the active program counter in it. At the same time, IDCU puts its control lines EN ADDR and MEM RD into active state, which allow the ADDR BUFF address buffer to send the instruction address to the ADDR inputs of the MEMORY memory device, and to the memory device to send the contents of the cell at the specified address to the DATA BUS data bus. By the end of pulse C1, the value of the operation code on the data bus lines can be considered steady, therefore, on the decline of C1, the control and synchronization device sends an active signal STB INSTR to the gate input C of the IR command register, thereby “latching” the current instruction (INSTRUCTION CODE) into it, whose code on the INSTR register output lines will be held at the IDCU inputs in the execution phase of the instruction. At the same time, the control and synchronization device supplies an active INC PC signal to the inputs of the increment + 1 program counters, as a result of which the address of the next program instruction appears at the output of the currently active program counter activated by CS input by the stack control logic.

Таким образом, за первую половину такта 77 сигнала CLK устройство управления и синхронизации завершает процедуру выборки из памяти кода операции вызова подпрограммы.Thus, in the first half of clock cycle 77 of the CLK signal, the control and synchronization device completes the procedure of retrieving the subroutine call operation code from the memory.

На этапе выполнения этой операции, как и на этапе перехода к процедуре обслуживания прерывания, выполняются практически одинаковые микрооперации содержание которых сводится к сохранению адреса возврата и загрузке программного счетчика с шины данных DATA BUS адресом соответствующей подпрограммы, но при обслуживании прерывания этот адрес выдается на шину данных внешним устройством, вызвавшим прерывание или специальным внутренним устройством, в том случае, если осуществляется переход к процедуре обслуживания прерывания по фиксированному адресу.At the stage of performing this operation, as well as at the stage of transition to the interrupt service procedure, almost the same micro operations are performed, the contents of which are reduced to storing the return address and loading the program counter from the DATA BUS data address of the corresponding subprogram, but when the interrupt is serviced, this address is issued to the data bus an external device that caused the interrupt or a special internal device, in the event that the transition to the procedure for servicing the interrupt is fixed address.

Итак, в обоих рассматриваевымых случаях на момент фронта импульса С2, определяющего начало второй половины такта 77 сигнала CLK, на шине данных DATA BUS присутствует установившееся значение адреса подпрограммы. По фронту С2 устройством управления и синхронизации IDCU подается активный сигнал INC SP на вход инкремента +1 указатель стека SP, в результате чего его содержимое увеличивается на единицу, и логика управления стеком своим выходом i+1 активизирует по входу CS следующий программный счетчик PC i+1, а текущий программный счетчик PC i переходит в неактивное состояние, сохраняя при этом свое значение, которое и является адресом возврата из вызываемой подпрограммы. По спаду импульса С2 в активный программный счетчик PC i+1 записывается значение адреса подпрограммы с шины данных DATA BUS управляющим сигналом LDADDR, подаваемым устройством управления и синхронизации на входы разрешения параллельной загрузки РЕ программных счетчиков. Таким образом, следующая операция выборки из памяти кода операции будет производиться из ячейки памяти с адресом, записанным в активный программный счетчик PC i+1, что, собственно, и представляет собой передачу управления на адрес подпрограммы или процедуры обслуживания прерывания. Как видно из приведенного выше алгоритма, эти операции выполняются процессором, имеющим в своем составе заявляемый активный аппаратный стек, строго за один такт.So, in both cases under consideration, at the time of the pulse edge C2, which determines the beginning of the second half of clock cycle 77 of the CLK signal, a steady-state value of the subroutine address is present on the DATA BUS. On the front C2, the IDCU control and synchronization device sends the active signal INC SP to the increment input +1 of the SP stack pointer, as a result of which its content increases by one, and the stack control logic with its output i + 1 activates the next program counter PC i + at CS input 1, and the current program counter PC i goes into an inactive state, while retaining its value, which is the return address from the called routine. According to the decay of pulse C2, the value of the address of the subprogram from the DATA BUS data bus is written to the active program counter PC i + 1 by the LDADDR control signal supplied by the control and synchronization device to the parallel load resolution enable inputs of the PE program counters. Thus, the next operation of retrieving the operation code from the memory will be performed from the memory cell with the address recorded in the active program counter PC i + 1, which, in fact, is a transfer of control to the address of the subprogram or interrupt service routine. As can be seen from the above algorithm, these operations are performed by a processor that incorporates the claimed active hardware stack, strictly in one clock cycle.

Для оценки фактора повышения быстродействия процессора, имеющего в своем составе заявляемый активный аппаратный стек, рассмотрим последовательность микроопераций, выполняемых процессором с обычным стеком адресов возврата при обслуживании прерывания или вызове подпрограммы.To assess the factor of increasing the speed of the processor, which includes the claimed active hardware stack, we consider the sequence of microoperations performed by the processor with the usual stack of return addresses when servicing an interrupt or calling a subprogram.

Процедура выборки из памяти кода операции в этом случае особенностей по сравнению с алгоритмом, описанным выше, не имеет, а на этапе осуществления перехода к вызываемой процедуре последовательность микроопераций будет иная. По фронту импульса С2 устройством управления и синхронизации IDCU будет подан активный сигнал INC SP на вход инкремента +1 указатель стека SP, в результате чего его содержимое увеличивается на единицу, а логика управления стеком своим выходом i+1 активизирует по входу CS очередной регистр стека. По спаду С2 в этот регистр будет записано содержимое программного счетчика активным сигналом от устройства управления и синхронизации. Для записи в программный счетчик адреса перехода к подпрограмме с шины данных DATA BUS требуется следующий импульс С1, по которому уже должно начаться выполнение процедуры выборки из памяти кода следующей операции. Следовательно, устройство управления и синхронизации должно блокировать эту последовательность микрокоманд на следующий такт, что приводит к усложнению его структуры для выполнения операций за разное число тактов.In this case, the procedure for extracting the operation code from the memory has no specific features compared to the algorithm described above, and at the stage of transition to the called procedure, the sequence of microoperations will be different. On the edge of pulse C2, the IDCU control and synchronization device will send an active signal INC SP to the increment input +1 of the SP stack pointer, as a result of which its contents are incremented by one, and the stack control logic with its output i + 1 activates the next stack register at CS input. Upon the decline of C2, the contents of the program counter will be written into this register with an active signal from the control and synchronization device. To write to the program counter the address of the transition to the subprogram from the DATA BUS data bus, the next pulse C1 is required, by which the procedure for selecting the next operation code from the memory should already begin. Therefore, the control and synchronization device must block this sequence of microcommands for the next clock cycle, which complicates its structure for performing operations for a different number of clock cycles.

С учетом того, что для выполнения операции вызова подпрограммы или обслуживания прерывания процесору, имеющему в своем составе заявляемый активный аппаратный стек, достаточно состояний, обеспечиваемых импульсами С1 и С2 на длительности такта Ti сигнала CLK, а процессору с традиционным стеком требуется и следующий импульс С1, то очевидно, что, строго говоря, эти операции выполняются процесором с заявляемым решением, на 33% быстрее. Но с учетом того, что операция не может быть закончена в середине тактового импульса, то процессор с традиционным стеком выполняет операцию вызова подпрограммы или обслуживания прерывания за два такта Ti и Ti+1 сигнала CLK. Следовательно, повышение быстродействия процесора с заявляемым решением при выполнении подобных операции достигает 50%, поскольку он выполняет их за один такт, что упрощает схемотехнически конструкцию устройства управления и синхронизации.Considering that in order to execute a subroutine call operation or interrupt service, a processor that has the claimed active hardware stack incorporates enough states provided by pulses C1 and C2 for the duration of the clock cycle Ti of the CLK signal, a processor with a traditional stack also needs the next pulse C1, it is obvious that, strictly speaking, these operations are performed by the processor with the claimed solution, 33% faster. But taking into account the fact that the operation cannot be completed in the middle of the clock pulse, the processor with the traditional stack performs the operation of calling the subroutine or interrupt service in two clock cycles Ti and Ti + 1 of the CLK signal. Therefore, increasing the speed of the processor with the claimed solution when performing such operations reaches 50%, since it performs them in one cycle, which simplifies the circuit design of the control and synchronization device.

Оценим преимущество, которым обладает процесор, имеющий в своем составе заявляемый активный аппаратный стек, по сравнению с процессором с традиционным стеком при выполнении операции возврата из подпрограммы или процедуры обслуживания прерывания.Let us evaluate the advantage that a processor possesses, which incorporates the claimed active hardware stack, compared to a processor with a traditional stack when performing a return operation from a subprogram or interrupt service routine.

Процедура выборки из памяти кода операции в этом случае также не имеет особенностей по сравнению с алгоритмом, описанным выше, а на этапе осуществления возврата из вызываемой процедуры последовательность микроопераций, выполняемая процесором с заявляемым решением, будет следующей. По фронту импульса С2 устройством управления и синхронизации IDCU будет подан активный сигнал DEC SP на вход декремента -1 указателя стека SP. В результате чего его содержимое уменьшится на единицу, и если до этого был активным программный счетчик PC i+1, то логика управления стеком активизирует по входу CS своим выходом i программный счетчик PC i, сохранявший до этого момента свое состояние, которое и является адресом возврата из вызываемой подпрограммы. Таким образом, собственно, осуществляется возврат управления из подпрограммы или процедуры обслуживания прерывания в точку их вызова, и эта операция выполняются процессором, имеющим в своем составе заявляемый активный аппаратный стек, строго за один такт.The procedure for extracting the operation code from the memory in this case also has no features compared to the algorithm described above, and at the stage of returning from the called procedure, the sequence of microoperations performed by the processor with the claimed solution will be as follows. On the edge of pulse C2, the IDCU control and synchronization device will send an active signal DEC SP to the decrement -1 input of the stack pointer SP. As a result, its contents will decrease by one, and if before that the program counter PC i + 1 was active, then the stack control logic activates the program counter PC i at its CS input i and retains its state until that moment, which is the return address from the called routine. Thus, in fact, control is returned from the subroutine or interrupt service routine to the point of their call, and this operation is performed by the processor, which includes the claimed active hardware stack, in exactly one clock cycle.

Для сравнения процессор с традиционным стеком выполняет операцию вызова подпрограммы или обслуживания прерывания следующим образом: по фронту импульса С2 устройством управления и синхронизации IDCU будет подан активный сигнал разрешения выхода регистру стека, выбранного указателем стека SP, в результате чего его содержимое - значение адреса возврата - за время, равное длительности импульса С2, примет на входах программного счетчика установившееся значение, и по спаду С2 активным управляющим сигналом LD ADDR, подаваемым устройством управления и синхронизации на входы разрешения параллельной загрузки РЕ программного счетчика, будет записано в последний. По фронту С1 следующего такта устройство управления и синхронизации должно снять активный сигнал разрешения выхода регистра стека и подать активный сигнал DEC SP на вход декремента -1 указателя стека SP.For comparison, the processor with the traditional stack performs the operation of calling a subroutine or interrupt service as follows: along the edge of pulse C2, the IDCU control and synchronization device will send an active output enable signal to the stack register selected by the stack pointer SP, as a result of which its contents, the value of the return address, are the time equal to the pulse width C2 will take a steady value at the inputs of the software counter, and after the fall of C2, the active control signal LD ADDR supplied by the control device and synchronization to the inputs of the parallel load resolution PE of the software counter will be written to the last. On the edge C1 of the next clock, the control and synchronization device must remove the active enable register output enable signal from the stack register and apply the active signal DEC SP to the decrement -1 input of the stack pointer SP.

Очевидно, что процессор с традиционным стеком выполняет операцию возврата из подпрограммы или процедуры обслуживания прерывания за два такта Ti и Ti+1 сигнала CLK, а процесор с заявляемым решением - за один такт. Следовательно, его быстродействие при выполнении подобных операций на 50% выше процессора с традиционным стеком, при сохранении схемотехнической простоты устройства управления и синхронизации.Obviously, a processor with a traditional stack performs a return operation from a subroutine or interrupt service routine for two clock cycles Ti and Ti + 1 of the CLK signal, and a processor with the claimed solution performs one clock cycle. Therefore, its speed when performing such operations is 50% higher than the processor with the traditional stack, while maintaining the circuit simplicity of the control and synchronization device.

Таким образом, сравнение алгоритмов работы процесора, имеющего в своем составе активный аппаратный стек, с процессором, обладающим традиционным стеком, позволяет считать достигнутой цель заявляемого технического решения - создание конструкции узла программного счетчика, работающего по принципу стека (или по магазинному принципу), и позволяющего выполнять операции перехода к подпрограмме или к процедуре обслуживания прерывания, а также возврата из них за один такт, при соблюдении схемотехнической простоты процессора.Thus, a comparison of the operating algorithms of a processor, which includes an active hardware stack, with a processor having a traditional stack, allows us to consider the goal of the claimed technical solution to be achieved - creating a design of a software counter assembly working on the stack principle (or on the store principle), and allowing perform operations of switching to a subroutine or to an interrupt service procedure, as well as returning from them in one clock cycle, subject to the circuit simplicity of the processor.

Заявляемое решение - активный аппаратный стек - позволяет повысить быстродействие процессора на 30-50% при выполнении операций вызова подпрограмм или обслуживания прерывания, а также возврата из них, в силу уменьшения количества тактов, необходимых для аппаратной реализации таких операций.The claimed solution - an active hardware stack - allows you to increase processor speed by 30-50% when performing subroutine call operations or interrupt service operations, as well as returning from them, due to the reduction in the number of clock cycles required for the hardware implementation of such operations.

Claims (1)

Аппаратный стек процессора с указателем стека и логикой управления стека, включающий программный счетчик с тристабильными выходными каскадами, отличающийся тем, что аппаратный стек процессора дополнительно содержит по крайней мере N программных счетчиков с тристабильными выходными каскадами, при этом входы параллельной загрузки всех программных счетчиков соединены поразрядно вместе, выходы всех программных счетчиков соединены поразрядно вместе, входы инкремента всех программных счетчиков соединены вместе, входы разрешения параллельной загрузки всех программных счетчиков соединены вместе, входы выборки каждого из отдельных программных счетчиков подсоединены к одноименным управляющим выходам логики управления стеком так, что в каждый отдельный момент времени только один из программных счетчиков, выбранный указателем стека, может находиться в активном состоянии и выполнять свои функции независимо от остальных. A processor hardware stack with a stack pointer and a stack control logic, including a software counter with tristable output stages, characterized in that the processor hardware stack additionally contains at least N software counters with tristable output stages, while the parallel load inputs of all software counters are connected bitwise together , the outputs of all program counters are connected bitwise together, the increment inputs of all program counters are connected together, the parallel enable inputs To download all program counters, they are connected together, the sampling inputs of each of the individual program counters are connected to the control outputs of the stack control logic of the same name, so that at any single moment in time, only one of the program counters selected by the stack pointer can be in an active state and perform its functions independently of the rest.
RU2013137540/08A 2013-08-09 2013-08-09 Active hardware stack of the processor RU2530285C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2013137540/08A RU2530285C1 (en) 2013-08-09 2013-08-09 Active hardware stack of the processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2013137540/08A RU2530285C1 (en) 2013-08-09 2013-08-09 Active hardware stack of the processor

Publications (1)

Publication Number Publication Date
RU2530285C1 true RU2530285C1 (en) 2014-10-10

Family

ID=53381605

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2013137540/08A RU2530285C1 (en) 2013-08-09 2013-08-09 Active hardware stack of the processor

Country Status (1)

Country Link
RU (1) RU2530285C1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2581548C1 (en) * 2014-12-24 2016-04-20 Виктор Владимирович Моршнев Stack computers with prefix commands
RU2634197C1 (en) * 2016-10-05 2017-10-24 Федеральное государственное бюджетное образовательное учреждение высшего образования "Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского" Multifunctional debugging device for microprocessor systems
RU2694743C1 (en) * 2019-02-08 2019-07-16 Акционерное общество "Ангстрем" (АО "Ангстрем") Digital signal processor with system of commands vliw

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
US6658578B1 (en) * 1998-10-06 2003-12-02 Texas Instruments Incorporated Microprocessors
RU2271565C2 (en) * 2000-10-05 2006-03-10 Арм Лимитед Method for memorizing stack operands in register
EP1840742A2 (en) * 2006-03-31 2007-10-03 Technology Properties Limited Method and apparatus for operating a computer processor array

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
US6658578B1 (en) * 1998-10-06 2003-12-02 Texas Instruments Incorporated Microprocessors
RU2271565C2 (en) * 2000-10-05 2006-03-10 Арм Лимитед Method for memorizing stack operands in register
EP1840742A2 (en) * 2006-03-31 2007-10-03 Technology Properties Limited Method and apparatus for operating a computer processor array

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2581548C1 (en) * 2014-12-24 2016-04-20 Виктор Владимирович Моршнев Stack computers with prefix commands
RU2634197C1 (en) * 2016-10-05 2017-10-24 Федеральное государственное бюджетное образовательное учреждение высшего образования "Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского" Multifunctional debugging device for microprocessor systems
RU2694743C1 (en) * 2019-02-08 2019-07-16 Акционерное общество "Ангстрем" (АО "Ангстрем") Digital signal processor with system of commands vliw

Similar Documents

Publication Publication Date Title
US4553203A (en) Easily schedulable horizontal computer
JP3984786B2 (en) Scheduling instructions with different latency
US4991078A (en) Apparatus and method for a pipelined central processing unit in a data processing system
EP0241946A2 (en) Information processing system
JP2003502728A (en) Computer system including processor and coprocessor
US9747216B2 (en) Computer processor employing byte-addressable dedicated memory for operand storage
US7971040B2 (en) Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner
WO1999041661A1 (en) Zero overhead computer interrupts with task switching
RU2530285C1 (en) Active hardware stack of the processor
US11392407B2 (en) Semiconductor device
Stepchenkov et al. Energy efficient speed-independent 64-bit fused multiply-add unit
JPH0124655Y2 (en)
SU1541619A1 (en) Device for shaping address
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
CN111160558B (en) Quantum chip controller, quantum computing processing system and electronic device
US4811201A (en) Interconnect circuit
US9747238B2 (en) Computer processor employing split crossbar circuit for operand routing and slot-based organization of functional units
TWI339354B (en) Microcontroller instruction set
US8700869B1 (en) Multithreading implementation for flops and register files
US20150370570A1 (en) Computer Processor Employing Temporal Addressing For Storage Of Transient Operands
US20050262389A1 (en) Stack type snapshot buffer handles nested interrupts
Semenov et al. Active Processor Hardware Stack
US20030014474A1 (en) Alternate zero overhead task change circuit
JP2007018497A (en) Risc microprocessor priority vector interrupt system
CN2588451Y (en) 8-bit new structured microprocessor and multi-purpose chip circuit using same

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20170810