KR100246465B1 - Apparatus and method for reducing cycle of microprocessor stack order - Google Patents
Apparatus and method for reducing cycle of microprocessor stack order Download PDFInfo
- Publication number
- KR100246465B1 KR100246465B1 KR1019960052489A KR19960052489A KR100246465B1 KR 100246465 B1 KR100246465 B1 KR 100246465B1 KR 1019960052489 A KR1019960052489 A KR 1019960052489A KR 19960052489 A KR19960052489 A KR 19960052489A KR 100246465 B1 KR100246465 B1 KR 100246465B1
- Authority
- KR
- South Korea
- Prior art keywords
- stack pointer
- stack
- register
- pointer value
- data
- Prior art date
Links
Abstract
1. 청구범위에 기재된 발명이 속한 기술분야1. TECHNICAL FIELD OF THE INVENTION
마이크로프로세서의 1 사이클 스택 오퍼레이션 라이트 회로One Cycle Stack Operation Light Circuit in Microprocessor
2. 발명이 해결하려고 하는 기술적 과제2. The technical problem to be solved by the invention
본 발명이 해결하려는 기술적 과제는, 메모리 버퍼 레지스터에서 데이터를 라이트하는 것과 산술/논리 연산기에서 계산된 스택 포인터 레지스터 값을 라이트하는 것을 동시에 수행하여, 1사이클에 스택 오퍼레이션을 하는 회로를 제공하는데 있다.An object of the present invention is to provide a circuit for performing a stack operation in one cycle by simultaneously writing data in a memory buffer register and writing a stack pointer register value calculated by an arithmetic / logical operator.
3. 발명의 해결방법의 요지3. Summary of Solution to Invention
마이크로프로세서의 1 사이클 스택 오퍼레이션 라이트 회로에 있어서, 산술/논리 연산기에서 스택 포인터 레지스터로 바로 가는 경로를 제공하여, 스택 오퍼레이션을 할 때 라이트_백 버스에서 데이터를 라이트하는 것과, 산술/논리 연산기에서 계산된 스택 포인터를 스택 포인터 레지스터에 라이트하는 것을 동시에 수행함으로서, 1 사이클에 스택 오퍼레이션 라이트를 수행하는 회로를 제공함.In a 1-cycle stack operation write circuit of a microprocessor, it provides a path from the arithmetic / logical operator to the stack pointer registers, writing data from the write_back bus when performing the stack operation, and computing from the arithmetic / logical operator. Providing a circuit for performing a stack operation write in one cycle by concurrently writing the stacked stack pointer to the stack pointer register.
4. 발명의 중요한 용도4. Important uses of the invention
본 발명은 메모리 버퍼 레지스터(MBR)에서 데이터를 쓰는 것과 동시에 산술/논리 연산기에서 계산된 스택 포인터 레지스터 데이터 값을 쓰는 것을 가능하게 하는 회로로 사용됨.The present invention is used as a circuit that enables writing of data in a memory buffer register (MBR) and at the same time writing a stack pointer register data value calculated in an arithmetic / logical operator.
Description
본 발명은 마이크로프로세서에 관한 것으로 특히 새로운 스택 포인터 값을 계산하는 산술/논리 연산기(ALU, Arithmetic Logic Unit)와 스택 포인터를 저장하는 스택 포인터 레지스터 간에 새로운 데이터 경로를 추가하여, 마이크로프로레서의 스택 명령어(팝 명령어, 푸시 명렁어) 수행 시 필요한 처리 사이클 수를 줄인 장치 및 그 방법에 관한 것이다.The present invention relates to a microprocessor. In particular, a stack instruction of a microprocessor is added by adding a new data path between an Arithmetic Logic Unit (ALU) for calculating a new stack pointer value and a stack pointer register for storing a stack pointer. (Pop instruction, push command) A device and method for reducing the number of processing cycles required when performing.
잘 알려진 바와 같이, 스택 명령어에는 팝(POP)와 푸시(PUSH)가 있다.As is well known, stack instructions include POP and PUSH.
팝은 범용 레지스터(general purpose register) 중의 하나인 스택 포인터 레지스터에 저장된 스택 포인터가 포인팅하는 스택 레지스터의 데이터를 읽어와 다수의 범용 레지스터 중 하나의 레지스터에 라이트하고, 스택 포인터 값을 하나 증가시켜 스택 포인터 레지스터에 라이트하는 스택 명령어이다. 그리고, 푸시는 스택 포인터 레지스터의 스택 포인터가 포인팅하는 스택 레지스터의 데이터를 읽어와 범용 레지스터 중 하나의 레지스터에 라이트하고, 스택 포인터 값을 하나 감소시켜 스택 포인터 레지스터에 라이트 하는 스택 명령어이다.POP reads data from the stack register pointed to by the stack pointer stored in the stack pointer register, which is one of the general purpose registers, writes to one of a number of general purpose registers, and increments the stack pointer value by one. Stack instruction to write to a register. Push is a stack instruction that reads data from the stack register pointed to by the stack pointer of the stack pointer register, writes it to one of the general registers, and decrements the stack pointer value by one to write to the stack pointer register.
종래의 상기 팝 및 푸시 명령어에 대한 처리 과정을 구체적으로 설명하면, 먼저 범용 레지스터 중의 하나인 스택 포인터 레지스터의 스택 포인터에 의해 포인팅된 스택 레지스터의 데이터를 읽어와 임시 저장 수단인 메모리 버퍼 레지스터(MBR, Memory Buffer Register)에 라이트하고, 스택 레지스터의 데이터를 읽는 동시에 산술/논리 연산기에서 스택 포인터 레지스터의 스택 포인터 값을 읽어와 상수 "1"을 가산하거나(팝 명령어일 경우) 감산하여(푸시 명령어일 경우) 새로운 스택 포인터의 값을 생성한다. 계속해서, 메모리 버퍼 레지스터(MBR)에 저장된 데이터를 범용 레지스터 중 임의의 한 레지스터에 라이트하고, 산술/논리 연산기에서 생성된 새로운 스택 포인터의 값 역시 스택 포인터 레지스터에 라이트해야 한다.The process of the conventional pop and push instruction will be described in detail. First, the data of the stack register pointed by the stack pointer of the stack pointer register, which is one of the general purpose registers, is read and the memory buffer register (MBR) is a temporary storage means. Memory Buffer Register), read the data in the stack register, and read the stack pointer value of the stack pointer register from the arithmetic / logic operator and add the constant "1" (for pop instructions) or subtract (for push instructions). ) Create a new stack pointer value. Subsequently, the data stored in the memory buffer register (MBR) must be written to any one of the general purpose registers, and the value of the new stack pointer generated by the arithmetic / logical operator must also be written to the stack pointer register.
이때, 종래에는 범용 레지스터에 라이트하기 위한 데이터가 실리는 데이터 버스를 공통으로 사용함으로써, 우선 메모리 버퍼 레지스터(MBR)에 저장된 데이터를 읽어와 데이터 버스를 통해 범용 레지스터에 라이트하고, 그 다음에 산술/논리 연산기에서 계산된 새로운 스택 포인터 값을 읽어와 데이터 버스를 통해 스택 포인터 레지스터에 라이트하였다.In this case, conventionally, a data bus carrying data for writing to a general purpose register is commonly used, so that data stored in the memory buffer register (MBR) is first read, written to the general purpose register via the data bus, and then arithmetic / The new stack pointer value computed by the logic operator was read and written to the stack pointer register via the data bus.
따라서, 종래에는 메모리 버퍼 레지스터(MBR)에 저장된 데이터를 읽어와 범용 레지스터에 라이트하는데 1 사이클이 필요하고, 산술/논리 연산기에서 계산된 새로운 스택 포인터의 값을 스택 포인터 레지스터에 라이트하는데 다시 추가의 1 사이클이 더 필요함으로써, 스택 명령어의 처리 사이클 수가 많아지는 문제가 있다.Thus, conventionally, one cycle is required to read data stored in the memory buffer register (MBR) and write it to the general purpose register, and add another one to write the value of the new stack pointer calculated by the arithmetic / logical operator to the stack pointer register. By requiring more cycles, there is a problem that the number of processing cycles of a stack instruction increases.
본 발명은 상기 문제점을 해결하기 위하여 안출된 것으로써, 새로운 스택 포인터 값을 계산하는 산술/논리 연산기와 스택 포인터를 저장하는 스택 포인터 레지스터 간에 데이터 통로를 추가로 구비하여, 메모리 버퍼 레지스터(MBR)의 데이터를 범용 레지스터에 라이트하는 동작과 새로운 스택 포인터의 값을 스택 포인터 레지스터에 라이트하는 동작을 1사이클에서 동시 수행함으로써 스택 명령어의 수행 사이클을 줄이기 위한 장치 및 그 방법을 제공하는데 그 목적이 있다.The present invention has been made to solve the above problems, and further includes a data path between an arithmetic / logic operator for calculating a new stack pointer value and a stack pointer register for storing the stack pointer, thereby providing a memory buffer register (MBR). It is an object of the present invention to provide an apparatus and method for reducing the execution cycle of a stack instruction by simultaneously performing data writing to a general purpose register and writing a new stack pointer value to a stack pointer register in one cycle.
도 1 은 본 발명에 따른 스택 명령어의 처리 사이클을 줄이기 위한 장치를 개념적으로 도시한 도면.1 conceptually illustrates an apparatus for reducing the processing cycle of a stack instruction in accordance with the present invention.
* 도면의 주요부분에 대한 부호의 설명* Explanation of symbols for main parts of the drawings
10 : 범용 레지스터 15 : 스택 포인터 레지스터10: general purpose register 15: stack pointer register
20 : 메모리 버퍼 레지스터 30 : 산술/논리 연산기20: memory buffer register 30: arithmetic / logic operator
40 : 스택 레지스터 50 : 라이트_백 버스40: stack register 50: write back bus
상기 목적을 달성하기 위한 본 발명은, 마이크로프로레서에서의 스택 명령어 수행 시 처리 사이클을 줄이기 위한 장치에 있어서, 스택 포인터 값을 저장하고 있는 스택 포인터 레지스터를 포함한 다수의 범용 레지스터; 데이터를 저장하고 있는 스택 레지스터; 상기 스택 포인터 저장 수단의 스택 포인터에 의해 포인팅된 상기 스택 레지스터의 데이터를 읽어와 임시 저장하기 위한 임시 저장 수단; 상기 임시 저장 수단에 저장된 데이터를 입력받아 상기 범용 레지스터에 라이트하기 위한 상기 임시 저장 수단과 상기 스택 포인터 저장 수단 사이의 제1 데이터 버스; 상기 스택 명령어 수행 시, 제1 오퍼랜드 버스로부터 상기 스택 포인터 값을 입력받고, 제2 오퍼랜드 버스로부터 상수 "1"을 입력받아 새로운 스택 포인터 값을 생성하기 위한 산술/논리 연산 수단; 및 상기 산술/논리 연산 수단에서 생성된 새로운 스택 포인터 값을 상기 스택 포인터 저장 수단에 직접 라이트하기 위한 상기 산술/논리 연산 수단과 상기 스택 포인터 저장 수단 사이의 제2 데이터 버스를 포함하여, 상기 제1 데이터 버스를 통한 상기 데이터의 라이트 동작과 상기 제2 데이터 버스를 통한 상기 스택 포인터 값의 라이트 동작을 동일 사이클에서 동시에 수행하는 것을 특징으로 한다.In order to achieve the above object, the present invention provides a device for reducing a processing cycle when performing a stack instruction in a microprocessor, comprising: a plurality of general purpose registers including a stack pointer register for storing a stack pointer value; A stack register for storing data; Temporary storage means for reading and temporarily storing data of the stack register pointed to by the stack pointer of the stack pointer storage means; A first data bus between the temporary storage means and the stack pointer storage means for receiving data stored in the temporary storage means and writing the data to the general register; Arithmetic / logical operation means for receiving a stack pointer value from a first operand bus and a constant “1” from a second operand bus to generate a new stack pointer value when the stack instruction is executed; And a second data bus between the arithmetic / logical operation means and the stack pointer storage means for writing the new stack pointer value generated by the arithmetic / logical operation means directly to the stack pointer storage means. The write operation of the data through the data bus and the write operation of the stack pointer value through the second data bus are simultaneously performed in the same cycle.
또한, 본 발명은 마이크로프로세서의 스택 명령어 수행 시 처리 사이클을 줄이기 위한 방법에 있어서, 스택 포인터 레지스터의 스택 포인터에 응답하여 포인팅되는 스택 레지스터의 데이터를 읽어와 저장하는 제1 단계; 상기 스택 포인터 값 및 상수 "1"로부터 새로운 상기 스택 포인터 값을 계산하는 제2 단계; 및 상기 제1 단계에서 저장된 데이터를 다수의 범용 레지스터 중 임의의 한 레지스터에 라이트하고, 동시에 상기 제2 단계에서 생성된 상기 스택 포인터 값을 상기 스택 포인터 레지스터에 라이트하는 제3 단계를 포함하여 이루어진다.In addition, the present invention provides a method for reducing a processing cycle when performing a stack instruction of a microprocessor, comprising: a first step of reading and storing data of a stack register pointed in response to a stack pointer of a stack pointer register; Calculating a new said stack pointer value from said stack pointer value and a constant " 1 "; And a third step of writing the data stored in the first step to any one of a plurality of general purpose registers and simultaneously writing the stack pointer value generated in the second step to the stack pointer register.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art may easily implement the technical idea of the present invention. do.
도 1은 본 발명에 따른 스택 명령어의 처리 사이클을 줄이기 위한 장치를 개념적으로 도시한 도면으로서, 8개의 범용 레지스터(10)와, 8개의 범용 레지스터(10)에 라이트할 데이터가 실리는 데이터 버스인 라이트_백 버스(50)와, 범용 레지스터 중 스택 레지스터를 포인팅하기 위한 스택 포인터 값을 저장하고 있는 스택 포인터 레지스터(15, 이하 ESP라 함)와, ESP로부터의 스택 포인터(SP)에 의해 포인팅되는 스택 구조의 레지스터(40)와, 스택 포인터(SP)에 의해 포인팅된 스택 레지스터(40)의 데이터를 읽어와 임시로 저장한 후 범용 레지스터(10)에 그 데이터를 라이트하기 위해 라이트_백 버스(50)에 싣는 메모리 버퍼 레지스터(20, 이하 MBR이라 함)와, 오퍼랜드 버스(A, B)로부터 오퍼랜드를 입력받아 각종 연산 동작을 수행하며, 스택 명령어 수행 시 오퍼랜드 버스(A)로부터 ESP(15)에 저장된 스택 포인터 값을 입력받고, 오퍼랜드 버스(B)로부터 상수 "1"을 입력받아 새로운 스택 포인터 값을 계싼한 후 별도의 데이터 통로(68)를 통해 계산된 스택 포인터 값을 ESP(15)에 라이트하는 산술/논리 연산기(30)로 이루어진다.1 is a conceptual diagram illustrating an apparatus for reducing the processing cycle of a stack instruction according to the present invention, which is a data bus carrying eight general purpose registers 10 and data to be written to eight general purpose registers 10. Pointed by a write back bus 50, a stack pointer register (15, hereinafter referred to as an ESP) that stores a stack pointer value for pointing a stack register among general-purpose registers, and a stack pointer (SP) from the ESP. The register 40 of the stack structure and the stack register 40 pointed to by the stack pointer SP are read and temporarily stored, and then the write_back bus ( 50) The memory buffer register 20 (hereinafter referred to as MBR) and the operands received from the operand buses A and B to perform various arithmetic operations, and perform the operand bus A when performing the stack instruction. Inputs the stack pointer value stored in the ESP 15 from the controller, receives the constant " 1 " from the operand bus B, encloses the new stack pointer value, and then calculates the stack pointer value calculated through the separate data path 68. It consists of an arithmetic / logical operator 30 that writes to the ESP 15.
본 발명에 따른 팝과 푸시 스택 명령어의 수행 과정을 도 1을 참조하여 상세히 설명한다.The execution of the pop and push stack instructions according to the present invention will be described in detail with reference to FIG. 1.
팝 및 푸쉬 스택 명령어를 수행할 때, 먼저 범용 레지스터(10) 중의 하나인 ESP(15)의 스택 포인터(SP)에 의해 포인팅된 스택 레지스터(40)의 데이터를 읽어와 임시 저장 수단인 MBR(20)에 라이트하고, 스택 레지스터(40)의 데이터를 읽는 동시에 산술/논리 연산기(30)에서 오퍼랜드 버스(A)에 실려있는 ESP(15)의 스택 포인터 값을 읽어와 오퍼랜드 버스(B)의 상수 "1"을 가산하거나(팝 명령어일 경우) 감산하여(푸시 명령어일 경우) 새로운 스택 포인터의 값을 생성한다. 계속해서, 동일 사이클에서 라이트_백 버스(50)을 통해 MBR(20)에 저장된 데이터를 범용 레지스터(10) 중 임의의 한 레지스터에 라이트하고, 데이터 통로(68)를 통해 산술/논리 연산기(30)에서 생성된 새로운 스택 포인터 값을 ESP(15)에 라이트한다. 여기서, 범용 레지스터에 라이트할 데이터들의 통로인 라이트_백 버스와는 별도로 ESP(15)와 산술/논리 연산기(30) 간의 데이터 통로(68)를 구비하여, 라이트_백 버스를 통해 MBR(20)에 저장된 데이터를 범용 레지스터(10)에 라이트하는 동작과 데이터 통로(68)를 통해 산술/논리 연산기(30)로부터의 새로운 스택 포인터 값을 ESP(15)에 라이트하는 동작을 동시에 수행함으로써, 1 사이클 동안에 데이터 라이트 동작 및 스택 포인터 값 라이트 동작이 동시에 이루어진다.When executing the pop and push stack instruction, first, the data of the stack register 40 pointed by the stack pointer SP of the ESP 15, which is one of the general registers 10, is read and the MBR 20, which is a temporary storage means, is read. ) And the stack pointer value of the ESP 15 loaded on the operand bus A by the arithmetic / logical operator 30 at the same time as reading the data of the stack register 40. Add 1 "(for pop instructions) or subtract (for push instructions) to create a new stack pointer. Subsequently, in the same cycle, the data stored in the MBR 20 via the write_back bus 50 is written into any one of the general registers 10, and the arithmetic / logical operator 30 is passed through the data passage 68. FIG. Writes the new stack pointer value generated in the " Here, a data path 68 between the ESP 15 and the arithmetic / logical operator 30 is provided separately from the write_back bus, which is a path of data to be written to the general register, and the MBR 20 is provided through the write_back bus. By writing the data stored in the general register 10 into the general register 10 and writing the new stack pointer value from the arithmetic / logical operator 30 to the ESP 15 through the data path 68 simultaneously, During the data write operation and the stack pointer value write operation are performed simultaneously.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.Although the technical idea of the present invention has been described in detail according to the above preferred embodiment, it should be noted that the above-described embodiment is for the purpose of description and not of limitation. In addition, those skilled in the art will understand that various embodiments are possible within the scope of the technical idea of the present invention.
상기와 같이 이루어지는 본 발명은, 산술/논리 연산기에서 스택 포인터 레지스터로 바로 가는 데이터 통로를 추가로 구비함으로써, 스택 명령어 수행 시 스택 레지스터로부터 읽어온 메모리 버퍼 레지스터의 데이터를 범용 레지스터에 라이트하는 동작과 산술/논리 연산기에서 계산된 새로운 스택 포인터 값을 스택 포인터 레지스터에 라이트하는 동작을 1사이클에서 동시에 수행할 수 있어 스택 명령어 처리 사이클 수를 줄일 수 있는 효가가 있다.The present invention as described above further comprises a data path from the arithmetic / logic operator to the stack pointer register, thereby writing and arithmetic operations to write the data of the memory buffer register read from the stack register to the general purpose register when the stack instruction is executed. Writing a new stack pointer value calculated by the / logical operator to the stack pointer register can be performed simultaneously in one cycle, which can reduce the number of stack instruction processing cycles.
또한, 본 발명은 스택 명령어 수행 시 사이클 당 수행할 수 있는 명령어의 수를 증가시켜 전체 마이크로프로세서의 성능을 향상시키는 효과가 있다.In addition, the present invention has the effect of improving the performance of the entire microprocessor by increasing the number of instructions that can be executed per cycle when performing the stack instruction.
Claims (4)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960052489A KR100246465B1 (en) | 1996-11-06 | 1996-11-06 | Apparatus and method for reducing cycle of microprocessor stack order |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960052489A KR100246465B1 (en) | 1996-11-06 | 1996-11-06 | Apparatus and method for reducing cycle of microprocessor stack order |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980034448A KR19980034448A (en) | 1998-08-05 |
KR100246465B1 true KR100246465B1 (en) | 2000-03-15 |
Family
ID=19481017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960052489A KR100246465B1 (en) | 1996-11-06 | 1996-11-06 | Apparatus and method for reducing cycle of microprocessor stack order |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100246465B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654871B1 (en) * | 1999-11-09 | 2003-11-25 | Motorola, Inc. | Device and a method for performing stack operations in a processing system |
-
1996
- 1996-11-06 KR KR1019960052489A patent/KR100246465B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980034448A (en) | 1998-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109661647B (en) | Data processing apparatus and method | |
JPS62180427A (en) | Program control circuit | |
US5053986A (en) | Circuit for preservation of sign information in operations for comparison of the absolute value of operands | |
US4954947A (en) | Instruction processor for processing branch instruction at high speed | |
US5757685A (en) | Data processing system capable of processing long word data | |
US4093983A (en) | Fast and normal rate instruction fetching | |
US6263424B1 (en) | Execution of data dependent arithmetic instructions in multi-pipeline processors | |
JP4465081B2 (en) | Efficient sub-instruction emulation in VLIW processor | |
KR100246465B1 (en) | Apparatus and method for reducing cycle of microprocessor stack order | |
US5819081A (en) | Method of executing a branch instruction of jumping to a subroutine in a pipeline control system | |
US6233675B1 (en) | Facility to allow fast execution of and, or, and test instructions | |
US6728870B1 (en) | Register move operations | |
JPH0222413B2 (en) | ||
US5854919A (en) | Processor and its operation processing method for processing operation having bit width exceeding data width of bit storage unit | |
US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
JP2883488B2 (en) | Instruction processing unit | |
US6944753B2 (en) | Fixed point unit pipeline allowing partial instruction execution during the instruction dispatch cycle | |
JP3325309B2 (en) | Subroutine return instruction processing unit | |
JPS61143850A (en) | Processor | |
JP3124361B2 (en) | Memory data loading device | |
JP3523407B2 (en) | Information processing equipment | |
JPH05150943A (en) | Computer | |
JP2866143B2 (en) | Dynamic pipeline processing unit | |
JPH0588890A (en) | Data processing method | |
KR19990066458A (en) | Data processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20051118 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |