[go: up one dir, main page]

KR0175275B1 - The internal register structure of micro controller using changeable instructio length set - Google Patents

The internal register structure of micro controller using changeable instructio length set Download PDF

Info

Publication number
KR0175275B1
KR0175275B1 KR1019960045149A KR19960045149A KR0175275B1 KR 0175275 B1 KR0175275 B1 KR 0175275B1 KR 1019960045149 A KR1019960045149 A KR 1019960045149A KR 19960045149 A KR19960045149 A KR 19960045149A KR 0175275 B1 KR0175275 B1 KR 0175275B1
Authority
KR
South Korea
Prior art keywords
instruction
code
basic
register
operation code
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1019960045149A
Other languages
Korean (ko)
Other versions
KR19980026641A (en
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 KR1019960045149A priority Critical patent/KR0175275B1/en
Publication of KR19980026641A publication Critical patent/KR19980026641A/en
Application granted granted Critical
Publication of KR0175275B1 publication Critical patent/KR0175275B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 마이크로 콘트롤러의 가변 길이 명령어를 사용하는 내부 레지스터 구조에 관한 것으로, 각 명령어에 대해 각각의 고유한 레지스터인 복수 개의 레지스터를 갖는 기본 레지스터 세트와, 기본 레지스터를 어드레싱하고 소정의 메모리로부터 독출된 데이터를 기본 레지스터에 로딩하는 레지스터 포인터와, 레지스터 포인터가 메모리로부터 데이터 값을 로딩할 때 세팅된 메모리 어드레스 값을 갖는 어드레스 베이스 레지스터를 포함하는 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조는, 32 비트 마이크로 콘트롤러에 있어서, 2 바이트로 최대 272개의 명령어를 사용할 수 있고, 마이크로 콘트롤러에 탑재되는 롬의 크기를 줄일 수 있다.The present invention relates to an internal register structure using a variable length instruction word of a microcontroller, comprising: a basic register set having a plurality of registers, each of which is a unique register for each instruction; An internal register structure using a variable length instruction set that includes a register pointer to load data into a base register and an address base register with a memory address value set when the register pointer loads a data value from memory, In the controller, a maximum of 272 instructions can be used with 2 bytes, and the size of the ROM mounted on the microcontroller can be reduced.

Description

마이크로 콘트롤러의 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조(The Internal Register Structure of Micro Controller Using Changeable Instruction Length Set)An internal register structure using a variable-length instruction set of a microcontroller (Changeable Instruction Length Set)

본 발명은 마이크로 내부 레지스터 구조에 관한 것으로, 좀 더 구체적으로는 마이크로 콘트롤러에 탑재(搭載)되는 프로그램 롬의 크기를 줄이기 위한 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a micro internal register structure, and more particularly, to an internal register structure using a variable length instruction set to reduce the size of a program ROM loaded in a microcontroller.

현재 전세계의 마이크로 프로세서 및 마이크로 콘트롤러 시장은 하이 엔드(high-end)와 로우 엔드(low-end)로 양분되어 있다. 개인용 컴퓨터(personal computer)나 워크스테이션(work station)등과 같은 하이 엔드 시장에서는 성능이 중요시된다. 그러나 가전제품 또는 소형 통신기기 등과 같은 로우 엔드 시장에서는 성능보다는 전력 소모가 적고, 낮은 단가가 중요시되기 때문에 롬의 크기는 매우 중요하다.Today, the global microprocessor and microcontroller markets are divided into high-end and low-end markets. Performance is important in high-end markets such as personal computers and work stations. However, in low-end markets such as home appliances and small-sized communication devices, the size of the ROM is very important because power consumption is less than performance and low unit price is important.

마이크로 콘트롤러의 경우는 마이크로 프로세서와는 달리, 일반적으로 높은 성능보다는 적은 롬 크기를 갖는 제품이 넓은 시장을 차지하고 있다. 특히 내장 콘트롤러(imbedded controller)의 경우는 내부에 롬이 탑재(搭載)되기 때문에, 아직도 가격이 저렴한 8비트나 16비트 제품이 더 선호되고 있다.Unlike microprocessors in the case of microcontrollers, products with less ROM size generally occupy a larger market than higher performance. Particularly, in the case of the embedded controller, since the ROM is loaded, the 8-bit or 16-bit product which is still inexpensive is more preferred.

앞으로는 처리해야 할 데이터 양이 많아지고 정확도를 높여야 하기 때문에 32비트로 전환되고 있지만, 32비트의 경우는 기본적인 명령어 세트가 8비트에 비해 4배가 되므로, 롬 크기가 그만큼 커지게 되는 문제점을 갖는다. 또한 롬 크기가 커짐에 따라 단가도 높아지게 되기 때문에 경쟁력 있는 시스템을 얻기 위해서는, 같은 일을 수행할 때에 보다 더 적은 롬 데이터가 요구된다. 이것은 곧 명령어 세트의 설계와 이를 수행하기 위한 장치가 전체 시스템에 큰 영향을 준다는 것을 나타낸다.In the future, the amount of data to be processed is increased and the accuracy is increased. In the case of 32 bits, however, the basic instruction set is quadrupled compared to 8 bits, and thus the ROM size becomes large. Also, as the ROM size increases, the unit price also increases. Therefore, in order to obtain a competitive system, less ROM data is required than when performing the same operation. This indicates that the design of the instruction set and the device for performing it have a large impact on the overall system.

본 발명은 32 비트 마이크로 콘트롤러의 롬 크기를 줄이기 위해 내부 처리 단위(unit)와 데이터 단위는 32비트로 하고, 가장 많이 사용하는 명령어인 기본 명령어는 8 비트로 표현하며, 그 이외의 명령어는 부가 명령어로서 8 비트 이상으로 표현 가능하도록 하는 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조를 제공하는데 그 목적이 있다.In order to reduce the ROM size of the 32-bit microcontroller, the internal processing unit and the data unit are set to 32 bits. The basic instruction word, which is the most frequently used instruction word, is expressed by 8 bits. The other instruction words are 8 Bit instruction set that can be expressed in more than one bit.

도 1은 본 발명의 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조.1 is an internal register structure using a variable length instruction set of the present invention;

* 도면의 주요 부분에 대한 부호의 설명DESCRIPTION OF THE REFERENCE NUMERALS

100 : 기본 레지스터 세트 200 : 레지스터 포인터100: Basic register set 200: Register pointer

210 : 데스티네이션 220 : 소오스210: Destination 220: Source

300 : 어드레스 베이스 레지스터 400 : 메모리300: address base register 400: memory

상술한 목적을 달성하기 위해 제안된 본 발명의 특징에 의하면,According to a feature of the present invention proposed to achieve the above-mentioned object,

마이크로 콘트롤러의 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조는 : 가변 길이 명령어 세트의 각 명령어에 대해 각각의 고유한 레지스터인 복수 개의 기본 레지스터를 갖고, 상기 각 레지스터들에 의해 수행된 연산 결과를 저장하며, 이 중 복수 개의 레지스터가 스택 구조를 이루는 기본 레지스터 세트와; 데스티네이션과 소오스로 구성되며, 각각에 소정의 비트가 할당되어 상기 기본 레지스터를 어드레싱 함으로써 연속되는 덧셈, 곱셈과 같은 누산을 수행하도록 하며, 소정의 메모리로부터 독출된 데이터 값을 기본 레지스터에 로딩하는 레지스터 포인터와; 상기 레지스터 포인터가 메모리로부터 데이터 값을 로딩할 때, 이 데이터 값에 대한 세팅된 메모리 어드레스 값을 갖는 어드레스 베이스 레지스터를 포함한다.An internal register structure using a variable-length instruction set of a microcontroller includes: a plurality of basic registers, each of which is a unique register for each instruction of a variable-length instruction set, storing an operation result performed by each of the registers; A basic register set in which a plurality of registers form a stack structure; And a register for loading a data value read from a predetermined memory into a basic register so as to perform accumulation such as successive addition and multiplication by addressing the basic register by assigning a predetermined bit to each of the address and the destination, A pointer; And an address base register having a memory address value set for the data value when the register pointer loads a data value from the memory.

이 특징의 바람직한 실시예에 있어서, 상기 가변 길이 명령어 세트는 : 동작코드와 피동작코드로 구성되어 기본적인 명령을 수행하도록 정의된 복수 개의 기본 명령어와; 상기 기본 명령어에 속한 명령어로서, 기본 명령어 외의 소정의 확장된 부가 명령을 수행하도록 정의된 제 1 및 제 2 동작코드와; 상기 기본 명령어의 비트수 이상이며, 상기 제 1 및 제 2 동작코드에 의해 상기 부가 명령을 수행하도록 정의된 복수 개의 부가 명령어를 포함하여, 상기 제 1 및 제 2 동작코드 각각에 대한 기본 명령어의 제 1 및 제 2 피동작코드로 상기 부가 명령어를 위한 동작코드가 정의된다.In a preferred embodiment of this aspect, the variable length instruction set comprises: a plurality of basic instructions consisting of an operation code and an action code and defined to perform a basic instruction; Instructions belonging to the basic instruction, comprising: first and second operation codes defined to perform a predetermined extended instruction other than the basic instruction; And a plurality of additional instructions that are not less than the number of bits of the basic instruction and are defined to perform the additional instruction by the first and second operation codes, 1 and the second to-be-executed code are defined.

이 특징의 바람직한 실시예에 있어서, 상기 기본 명령어의 단위는 1 바이트이며, 상위 니블은 동작코드로, 하위 니블은 피동작코드로 사용되고, 가능한 16 가지의 동작코드 중 하나를 제 1 동작코드로하여, 기본 명령어의 피동작코드가 니블로 표현될 수 없는 경우, 첫 번째 명령어의 동작코드로 상기 제 1 동작코드를 사용하고, 두 번째 명령어의 동작코드를 실행시키고자 하는 명령어의 실제 동작코드로하여, 첫 번째 명령어의 제 1 피동작코드와 두 번째 명령어의 피동작코드를 상기 실제 동작코드에 대한 1 바이트의 피동작코드가 되게 하고, 상기 기본 명령어의 가능한 동작코드 중 또 다른 하나를 하위 니블이 피동작코드가 아님을 나타내는 제 2 동작코드로하여, 상기 제 1 피동작코드와 상기 제 2 피동작코드가 하나의 동작코드가 되게 하며, 이 동작코드를 상기 부가 명령어로 정의한다.In a preferred embodiment of this aspect, the unit of the basic instruction is one byte, the upper nibble is used as the operation code, the lower nibble is used as the to-be-operated code, and one of the 16 possible operation codes is set as the first operation code , The first operation code is used as the operation code of the first instruction and the actual operation code of the instruction to be executed as the operation code of the second instruction when the operation code of the basic instruction can not be expressed by the nibble , Causing the first to-be-operated code of the first instruction and the to-be-executed code of the second instruction to be a one-byte to-be-executed code for the actual operation code, The first to-be-operated code and the second to-be-operated code are made to be one operation code, A is defined as the additional command.

이상과 같은 본 발명에 의하면, 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조는 8 비트 가변 길이 명령어 세트를 사용하여 2 바이트로 최대 272 개의 명령어를 사용할 수 있고, 32 비트 마이크로 콘트롤러의 롬 크기를 줄일 수 있다.According to the present invention, an internal register structure using a variable length instruction set can use up to 272 instructions in 2 bytes using an 8-bit variable length instruction set and reduce the ROM size of a 32-bit microcontroller have.

실시예Example

이하, 도 1 및 표 1을 참조하여 본 발명의 실시예를 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to FIG. 1 and Table 1.

도 1은 본 발명의 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조이다.Figure 1 is an internal register structure using the variable length instruction set of the present invention.

도 1을 참조하면, 내부 레지스터 구조의 기본 레지스터 세트(basic register set)(100)는 32 비트 기본 레지스터들로 구성되며, 가변 길이 명령어 세트의 각 명령어에 대해 각각의 고유한 레지스터가 되는 복수 개의 기본 레지스터를 갖고, 상기 각 레지스터들에 의해 수행된 연산 결과를 저장한다. 이 중 레지스터 A, B, C(110)가 스택(stack) 구조를 이룬다. 레지스터 Y(120)는 곱셈 연산시 데이터가 32 비트를 넘을 때 주로 사용되는데, 예를 들어 연산 데이터가 64 비트 일 때, 상위 32 비트가 레지스터 Y(120)에 저장된다. 레지스터 A, B, C, Y(110, 120) 각각에는 2 비트의 어드레스 (00)2, (01)2, (10)2, (11)2가 할당되어 있다.Referring to FIG. 1, a basic register set 100 of an internal register structure is composed of 32-bit basic registers, and a plurality of basic registers, each of which is a unique register for each instruction of a variable- And stores the result of the operation performed by the registers. Of these, the registers A, B, and C 110 form a stack structure. The register Y 120 is mainly used when the data exceeds 32 bits in the multiplication operation. For example, when the operation data is 64 bits, the upper 32 bits are stored in the register Y 120. 2 bits (00) 2 , (01) 2 , (10) 2 and (11) 2 are assigned to the registers A, B, C and Y

레지스터 포인터(register pointer)(200)는 데스티네이션(destination)(210)과 소오스(source)(220)로 구성되며, 각각 2 비트씩 할당되어 상기 기본 레지스터를 어드레싱(addressing) 함으로써, 연속되는 덧셈이나 곱셈처럼 누산(accumulation)이 필요한 경우에, 연산 데이터를 로딩(loading)하여 지정한 상기 기본 레지스터 세트(100)의 기본 레지스터에 전달하고, 소정의 메모리(400)로부터 독출된 데이터 값을 기본 레지스터에 로딩한다.A register pointer 200 is composed of a destination 210 and a source 220. The register pointer 200 is allocated by 2 bits each to address the basic register so that successive additions When accumulation is required as a multiplication, the operation data is loaded and transferred to the designated basic register of the basic register set 100, and the data value read from the predetermined memory 400 is loaded into the basic register do.

32 비트로 된 어드레스 베이스 레지스터(address base register)(300)는 상기 레지스터 포인터(200)가 메모리(400)로부터 데이터 값을 로딩할 때, 이 데이터 값에 대한 세팅(setting)된 메모리 어드레스 값을 갖는다.A 32-bit address base register 300 has a memory address value set for this data value when the register pointer 200 loads a data value from the memory 400. [

표 1은 기본 명령어가 8 비트 명령어일 경우에 대해, 본 발명이 제안하는 기본 명령어 세트이다.Table 1 is a basic instruction set proposed by the present invention when the basic instruction is an 8-bit instruction.

표 1을 참조하면, 기본 명령어는 상위 니블(nibble ; 4 비트)에 동작에 대한 지시를 나타내는 동작코드(opcode)가 할당되어 있다. 그리고 하위 니블에 동작의 대상인 데이터 및 데이터의 위치에 대한 정보를 나타내는 피동작코드(operand)가 할당되어 있다. 이 때, load 명령을 사용하여 3을 레지스터 A에 load하는 경우, 동작코드는 0 이고 피동작코드는 3이 되어, 명령어 코드는 3이 된다. 이것은 이진 코드로는 (00000011)2로 표시된다. 본 발명이 제안하는 명령어 세트는 어드레스 필드를 갖지 않으므로 명령어에서 레지스터 A를 지정할 필요가 없고, 명령어 코드 3으로 이미 고유한 레지스터로 지정된 레지스터 A에 3이 load 된다.Referring to Table 1, an operation code (opcode) indicating an instruction for an operation is assigned to a higher nibble (4 bits) in the basic instruction. An operation code (operand) indicating information on the location of the data and the data that is the operation target is assigned to the lower nibble. At this time, when 3 is loaded into the register A by using the load instruction, the operation code is 0, the to-be-operated code is 3, and the instruction code is 3. This is represented by binary code (00000011) 2 . Since the instruction set proposed by the present invention does not have an address field, it is not necessary to designate the register A in the instruction, and 3 is loaded into the register A which is already designated by the instruction code 3.

동작코드Action code 동작action 동작코드Action code 동작action 00 loadload 88 callcall 1One storestore 99 returnreturn 22 jumpjump AA shift leftshift left 33 add constadd const BB shift rightshift right 44 sub constsub const CC condition jumpcondition jump 55 equal constequal const DD prefixprefix 66 set pointer세트 포터 EE non operandnon operand 77 set baseset base FF reservedreserved

기본 명령어에 대한 피동작코드를 확장하는 방법은 다음과 같다.Here's how to extend the work code for basic commands:

예를 들어 17을 load 한다고 하자. 이 때 17은 기본 명령어의 하위 니블로 표현될 수 없다. 그러나 본 발명에서 제시하는 표 1의 동작코드 D(prefix)를 사용하면 표현이 가능하다. 여기서 D는 그 다음 들어오는 바이트가 앞 명령어의 연속으로 인식되도록 미리 정의된 동작코드로서, 이것을 제 1 동작코드라 한다. 그러므로 처음 명령어 코드를 D1로 하고, 후속 명령어 코드를 0F로하게 되면, 상기 제 1 동작코드 D에 의해 소정의 버퍼에 저장된 1과 후속 명령어 코드에 의한 F(16)이 함께 load 된다. 그러므로 17을 load 하기 위한 명령어 코드는 D10F가 된다. 여기서 제 1 동작코드는 제 1 동작코드에 대한 제 1 피동작코드를 수행시키는 기능을 갖지 않는다. 다만, 연속된 명령어 코드 0F와 함께 사용되어 실제 동작코드 0에 대한 피동작코드 영역을 확장하도록 하는 기능을 갖는다. 다시 말해, 제 1 동작코드를 사용하면 상기 예에서와 같이 하나의 동작코드에 대해 8 비트 이상의 피동작코드를 사용할 수 있게 된다.For example, let's load 17. At this time, 17 can not be expressed as a lower nibble of the basic instruction. However, by using the operation code D (prefix) of Table 1 presented in the present invention, expression is possible. Here, D is a predefined operation code, which is the first operation code so that the next incoming byte is recognized as a continuation of the preceding instruction. Therefore, when the first instruction code is set to D1 and the subsequent instruction code is set to 0F, F (16) according to the first instruction code stored in the predetermined buffer by the first operation code D is loaded together. Therefore, the instruction code for loading 17 becomes D10F. Wherein the first operation code does not have the function of executing the first operation code for the first operation code. However, it is used together with the continuous command code 0F to expand the to-be-operated code area for the actual operation code 0. In other words, by using the first operation code, more than 8-bit operation codes can be used for one operation code as in the above example.

상기 방법에 따라 기본 명령어의 하위 니블로 된 피동작코드가 8 비트, 12 비트 16 비트 등으로 더욱 확장될 수 있다. 그것은 명령어의 동작코드로 제 1 동작코드를 계속 사용하다가 최종 명령어의 동작코드에 원하는 동작코드를 기입하는 방법으로 인해 가능하다.According to the above method, the to-be-operated code in the lower nibble of the basic instruction can be further expanded to 8 bits, 12 bits, 16 bits, and the like. This is possible because of the method of continuously using the first operation code as the operation code of the instruction and writing the desired operation code into the operation code of the final instruction.

기본 명령어로 부가 명령어를 정의 방법은 다음과 같다.How to define additional commands with basic commands is as follows.

부가 명령어는 기본 명령어의 E를 사용하여 정의된다. 여기서 E는 피동작코드가 피동작코드가 아닌 즉, non-operand로서 정의된 동작코드이며, 이것을 제 2 동작코드라 한다. 이 제 2 동작코드를 상기 제 1 동작코드 D 다음 명령어의 동작코드로 오게 함으로써 부가 명령어를 정의할 수 있다.Additional instructions are defined using E of the basic instruction. Here, E is an operation code defined as a non-operand, that is, not a to-be-operated code, and this is referred to as a second operation code. The second operation code can be defined as an operation code of the next operation code D, and an additional instruction word can be defined.

만약, 곱셈(multiply)이라는 새로운 부가 명령어를 정의 하고자 하는 경우, 그 명령어의 동작코드를 A3라 하자. 상기 부가 명령어 정의 방법에 의해 그 명령어의 첫 바이트는 DA가 되며 두 번째 바이트는 E3이 된다. 그러므로 이 명령어에 대한 명령어 코드는 DAE3이 된다. 각 바이트의 두 번째 니블이 그 명령어의 동작코드를 나타낸다. 여기서 제 2 동작코드는 실시예 2에서와 같이 A를 피동작코드로하여 동작을 수행하도록 하는 동작코드가 아니다. 다만, A가 소정의 버퍼에 저장되었다가 연속된 명령어 코드 E3과 함께 사용되어 부가적인 명령어를 수행하도록 한다. 즉, 제 2 동작코드는 피동작코드가 피동작코드가 아님을 나타냄으로써 제 1 및 제 2 동작코드에 대한 제 1 및 제 2 피동작코드가 실제 동작코드가 되도록 한다.If you want to define a new multiply instruction, say the operation code of the instruction is A3. According to the additional instruction definition method, the first byte of the instruction is DA and the second byte is E3. Therefore, the command code for this command is DAE3. The second nibble of each byte indicates the operation code of the instruction. Here, the second operation code is not an operation code for causing the operation to be performed using A as the operation code as in the second embodiment. However, A is stored in a predetermined buffer and used together with the consecutive instruction code E3 to perform additional instructions. That is, the second operation code indicates that the to-be-operated code is not the to-be-operated code so that the first and second to-be-operated codes for the first and second operation codes are the actual operation codes.

상기 방법으로 정의될 수 있는 부가 명령어의 코딩 예를 표 2에 나타내었다.Table 2 shows coding examples of additional instructions that can be defined by the above method.

2 바이트로 부가 명령어는 최대 28즉, 256개가 가능하며, 기본 명령어 개수 16과 합하면 총 272개의 명령어를 사용할 수 있게 된다.A two-byte instruction is added up to 28 words, and can be a dog 256, combined with the number of basic instructions 16 are able to use a total of 272 instructions.

더 많은 부가 명령어를 정의하고자 할 때는, 동작코드로 제 1 동작코드를 계속 사용하고 최종 명령어에서 제 2 동작코드를 사용하면 된다.To define more additional instructions, you can continue to use the first operation code with the operation code and use the second operation code with the final instruction.

예를 들어 새로운 부가 명령어의 코드가 A8B 라면 명령어 코드는 DAD8EB로 된다.For example, if the new additional instruction code is A8B, the instruction code is DAD8EB.

동작코드Action code 명령어 코드Command code 동작action 1111 D1E1D1E1 add with carryadd with carry 2626 D2E6D2E6 andand A8A8 DAE8DAE8 divdiv BFBF DBEFDBEF trap enabletrap enable 00 D0E0D0E0 store globalstore global

이러한 부가 명령어가 내부 레지스터와 어떻게 연관되는지를 다음에서 살펴보도록 한다. 부가 명령어 multiply로 4×18 이라는 연산을 수행할 때, 연산 결과를 레지스터 C에 저장한다고 하자.Let's take a look at how these additional instructions relate to internal registers. Assume that multiply instruction 4 × 18 is used to store the result of operation in register C.

레지스터 A, B, C(110)가 스택 구조를 이루기 때문에 레지스터 C를 먼저 지정하지 않으면 잘 알려진 바와 같이 스택에서 저장되는 데이터는 push되어 순차적으로 쌓이게 된다. 따라서 load되는 장소인 레지스터 C의 지정이 필요하다. 레지스터 포인터(200)에 레지스터 어드레스를 주는 동작코드를 F(reserved)라 하자. 레지스터 포인터(200)는 총 4 비트로서 한 번의 명령어로 제어가 가능하다. 따라서 동작코드 F를 사용하여 F8이라는 명령어를 주게 되면, 레지스터 C에 연산 결과가 저장된다. 다시 말하자면 F는 레지스터 포인터(200)의 데스티네이션(210)과 소오스(220)가 가리키게 되는 어드레스를 지정하는데, 8을 나타내는 이진 코드 (1000)2의 상위 2 비트가 레지스터 C의 어드레스인 (10)2와 같은 데스티네이션의 어드레스이고, 하위 2 비트가 소오스의 어드레스가 된다.Since the registers A, B, and C 110 have a stack structure, if the register C is not designated first, data stored in the stack is pushed and accumulated sequentially as is well known. Therefore, it is necessary to specify register C, which is the place to be loaded. Let F (reserved) be an operation code for giving a register address to the register pointer 200. The register pointer 200 has a total of 4 bits and can be controlled by a single command. Therefore, when the instruction F8 is given using the operation code F, the operation result is stored in the register C. In other words, F designates the destination 210 of the register pointer 200 and the address to which the source 220 is pointing. The upper two bits of the binary code 1000 2 indicating 8 indicate the address 10 of the register C, 2, and the lower two bits are the address of the source.

상기와 같은 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조로, 마이크로 콘트롤러에 대한 롬 크기는 현저하게 줄어들 수 있다.With the internal register structure using the variable length instruction set as described above, the ROM size for the microcontroller can be significantly reduced.

이상과 같은 본 발명에 의하면, 32 비트 마이크로 콘트롤러에서 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조는, 2 바이트로 최대 272개의 명령어를 사용할 수 있고, 마이크로 콘트롤러에 탑재되는 롬의 크기를 줄일 수 있는 효과가 있다.According to the present invention, an internal register structure using a variable-length instruction set in a 32-bit microcontroller can use up to 272 instructions with 2 bytes, and can reduce the size of a ROM mounted on a microcontroller .

Claims (3)

마이크로 콘트롤러의 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조에 있어서,In an internal register structure using a variable-length instruction set of a microcontroller, 가변 길이 명령어 세트의 각 명령어에 대해 각각의 고유한 레지스터인 복수 개의 기본 레지스터를 갖고, 상기 각 레지스터들에 의해 수행된 연산 결과를 저장하며, 이 중 복수 개의 레지스터가 스택 구조를 이루는 기본 레지스터 세트(100)와;A plurality of basic registers each being a unique register for each instruction of the variable length instruction set and storing a result of the operation performed by each of the registers, and a basic register set 100); 데스티네이션(210)과 소오스(220)로 구성되며, 각각에 소정의 비트가 할당되어 상기 기본 레지스터를 어드레싱 함으로써 연속되는 덧셈, 곱셈과 같은 누산을 수행하도록 하며, 소정의 메모리(400)로부터 독출된 데이터 값을 기본 레지스터에 로딩하는 레지스터 포인터(200)와;A predetermined bit is allocated to each of the destination 210 and the source 220 to perform accumulation such as successive addition and multiplication by addressing the basic register, A register pointer (200) for loading a data value into a basic register; 상기 레지스터 포인터(200)가 메모리(400)로부터 데이터 값을 로딩할 때, 이 데이터 값에 대한 세팅된 메모리 어드레스 값을 갖는 어드레스 베이스 레지스터(300)를 포함하는 것을 특징으로 하는 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조.Wherein the register pointer (200) comprises an address base register (300) having a memory address value set for the data value when loading the data value from the memory (400). Internal register structure. 제 1 항에 있어서,The method according to claim 1, 상기 가변 길이 명령어 세트는,The variable length instruction set includes: 동작코드와 피동작코드로 구성되어 기본적인 명령을 수행하도록 정의된 복수 개의 기본 명령어와;A plurality of basic instructions composed of an operation code and an operation code to define a basic instruction; 상기 기본 명령어에 속한 명령어로서, 기본 명령어 외의 소정의 확장된 부가 명령을 수행하도록 정의된 제 1 및 제 2 동작코드와;Instructions belonging to the basic instruction, comprising: first and second operation codes defined to perform a predetermined extended instruction other than the basic instruction; 상기 기본 명령어의 비트수 이상이며, 상기 제 1 및 제 2 동작코드에 의해 상기 부가 명령을 수행하도록 정의된 복수 개의 부가 명령어를 포함하여,And a plurality of additional instructions that are not less than the number of bits of the basic instruction and are defined to perform the additional instruction by the first and second operation codes, 상기 제 1 및 제 2 동작코드 각각에 대한 기본 명령어의 제 1 및 제 2 피동작코드로 상기 부가 명령어를 위한 동작코드가 정의되는 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조.Wherein a variable length instruction set is defined in which an operation code for the additional instruction is defined to a first and a second driven code of a basic instruction for each of the first and second operation codes. 제 2 항에 있어서,3. The method of claim 2, 상기 기본 명령어는 1 바이트로 구성되며, 상위 니블은 동작코드로, 하위 니블은 피동작코드로 사용되고,The basic instruction consists of 1 byte, the upper nibble is used as an operation code, the lower nibble is used as an operation code, 가능한 16 가지의 동작코드 중 하나를 제 1 동작코드로하여, 기본 명령어의 피동작코드가 니블로 표현될 수 없는 경우,If one of the sixteen possible operation codes is set as the first operation code and the to-be-operated code of the basic instruction can not be expressed as nibble, 첫 번째 명령어의 동작코드로 상기 제 1 동작코드를 사용하고, 두 번째 명령어의 동작코드를 실행시키고자 하는 명령어의 실제 동작코드로하여,Using the first operation code as the operation code of the first instruction and using the operation code of the second instruction as the actual operation code of the instruction to be executed, 첫 번째 명령어의 제 1 피동작코드와 두 번째 명령어의 피동작코드를 상기 실제 동작코드에 대한 1 바이트의 피동작코드가 되게 하고,The first to-be-operated code of the first instruction and the to-be-operated code of the second instruction are made to be one-byte to-be-executed codes for the actual operation code, 상기 기본 명령어의 가능한 동작코드 중 또 다른 하나를 하위 니블이 피동작코드가 아님을 나타내는 제 2 동작코드로하여,The second operation code indicating that the lower nibble is not the to-be-operated code, another one of possible operation codes of the basic instruction, 상기 제 1 피동작코드와 상기 제 2 피동작코드가 하나의 동작코드가 되게 하며, 이 동작코드를 상기 부가 명령어로 정의하는 가변 길이 명령어 세트를 사용하는 내부 레지스터 구조.An internal register structure using a variable length instruction set in which the first to-be-operated code and the second to-be-operated code are one operation code and defines the operation code as the additional instruction.
KR1019960045149A 1996-10-10 1996-10-10 The internal register structure of micro controller using changeable instructio length set Expired - Fee Related KR0175275B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019960045149A KR0175275B1 (en) 1996-10-10 1996-10-10 The internal register structure of micro controller using changeable instructio length set

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960045149A KR0175275B1 (en) 1996-10-10 1996-10-10 The internal register structure of micro controller using changeable instructio length set

Publications (2)

Publication Number Publication Date
KR19980026641A KR19980026641A (en) 1998-07-15
KR0175275B1 true KR0175275B1 (en) 1999-04-01

Family

ID=19477010

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960045149A Expired - Fee Related KR0175275B1 (en) 1996-10-10 1996-10-10 The internal register structure of micro controller using changeable instructio length set

Country Status (1)

Country Link
KR (1) KR0175275B1 (en)

Also Published As

Publication number Publication date
KR19980026641A (en) 1998-07-15

Similar Documents

Publication Publication Date Title
RU2212049C2 (en) Mixed file of vector/scalar registers
EP0755540B1 (en) Efficient addressing of large memories
US6314504B1 (en) Multi-mode memory addressing using variable-length
US6986029B2 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
JP2001504969A (en) Data processor for stack
KR100322277B1 (en) Central processing unit having expansion instruction
JP3201716B2 (en) Computer equipment
KR19990013576A (en) Forced Page Zero Paging Method of Microcontroller Using Data Random Access Memory
KR0175275B1 (en) The internal register structure of micro controller using changeable instructio length set
KR19990037573A (en) Processor architecture and instruction set to maximize available opcodes and execute various addressing modes
US20030046516A1 (en) Method and apparatus for extending instructions with extension data of an extension register
EP0510635A2 (en) Address generation in a data processing unit
US20050021929A1 (en) Micro controller for processing compressed codes
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
US6442058B2 (en) Control circuit and semiconductor device including same
JP2001043082A (en) Information processor and method for coding and decoding instruction
US7370159B2 (en) Microprocessor having an extended addressable space
US6198691B1 (en) Force page paging scheme for microcontrollers of various sizes using data random access memory
EP0787326A1 (en) System and method for processing of memory data and communication system comprising such system
JPS62107339A (en) Instruction constituting method for microcomputer
US5479632A (en) Microcomputer having two-level memory to facilitate calculation of effective addresses
JP3792633B2 (en) Microcontroller and microcontroller device
EP1639476A2 (en) Microcontroller and addressing method
KR19990037395A (en) System and method for executing two word instructions in a single cycle
CN118502662A (en) Method and device for carrying codes in FLASH to RAM

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

R17-X000 Change to representative recorded

St.27 status event code: A-3-3-R10-R17-oth-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

FPAY Annual fee payment

Payment date: 20061030

Year of fee payment: 9

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 9

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20071110

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20071110

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000