KR20010058870A - Data processing method of a processor - Google Patents

Data processing method of a processor Download PDF

Info

Publication number
KR20010058870A
KR20010058870A KR1019990066242A KR19990066242A KR20010058870A KR 20010058870 A KR20010058870 A KR 20010058870A KR 1019990066242 A KR1019990066242 A KR 1019990066242A KR 19990066242 A KR19990066242 A KR 19990066242A KR 20010058870 A KR20010058870 A KR 20010058870A
Authority
KR
South Korea
Prior art keywords
instruction
program
processor
command
memory
Prior art date
Application number
KR1019990066242A
Other languages
Korean (ko)
Other versions
KR100347138B1 (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 KR1019990066242A priority Critical patent/KR100347138B1/en
Priority to US09/750,115 priority patent/US6845443B2/en
Publication of KR20010058870A publication Critical patent/KR20010058870A/en
Application granted granted Critical
Publication of KR100347138B1 publication Critical patent/KR100347138B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

PURPOSE: A method for processing data of a processor is provided to increase the reliability and the efficiency of an application program including a repeat block command by removing a restriction of the number of command which the repeat block command has. CONSTITUTION: A repeat count value is set up. A repeat block command fetched from a memory is decoded. A repeat termination and a repeat start address are set up. The first command of the repeat block is fetched. The first command is decoded and executed. The second command is fetched. A memory address for fetching the second command is corresponded to the repeat termination address. It is checked whether the first command is a command for non-linearly changing an execution order of a program. In case that the first command is the command for non-linearly changing the execution order, a memory address of the second command is stored.

Description

프로세서의 데이터처리방법{DATA PROCESSING METHOD OF A PROCESSOR}DATA PROCESSING METHOD OF A PROCESSOR

본 발명은 프로세서에 관한 것으로서, 특히 반복블럭(Repeat Block: 이하 RPTB로 약칭함)명령이 포함된 프로그램을 효율적으로 수행하기 위한 프로세서의 데이터 처리방법에 관한 것이다.The present invention relates to a processor, and more particularly, to a data processing method of a processor for efficiently executing a program including a repeat block (hereinafter, abbreviated as RPTB) instruction.

도 1에는 RPTB명령이 포함된 프로그램을 수행하기 위한 종래의 프로세서가 도시되어 있다. 도 1에 도시된 바와같이, 프로세서 코어(100)는 프로세서의 연산로직 및 일부 제어로직을 포함하며, 프로그램 메모리(101)에 저장된 명령을 파이프라인 형태 즉, 도 2와 같이 페치(F)-디코드(D)-리드/실행(R/D)의 3단계로 처리한다. 메모리(101)는 프로세서에서 사용되는 메모리의 총칭으로서, 프로세서 코어(100)에 의해 디코드될 명령을 저장한다. 프로그램 카운터(PC) 생성로직(106)은 프로세서 코어(100)의 제어에 따라 프로그램 카운터(PC)값을 생성하고, 그 생성된 PC값은 멀티플렉서(107)를 통하여 프로그램 카운터(108)에 저장된다.1 shows a conventional processor for executing a program including an RPTB instruction. As shown in FIG. 1, the processor core 100 includes the operational logic and some control logic of the processor, and fetches (F) -decodes instructions stored in the program memory 101 in a pipeline form, that is, as shown in FIG. 2. (D)-Read / Execute (R / D). The memory 101 is a general term for the memory used in the processor, and stores instructions to be decoded by the processor core 100. The program counter (PC) generation logic 106 generates a program counter (PC) value under the control of the processor core 100, and the generated PC value is stored in the program counter 108 through the multiplexer 107. .

RPTB제어로직(102), 반복 카운트(RC) 레지스터(103), 반복종료(RE) 레지스터(104), 반복시작(RS) 레지스터(105)는 RPTB로직을 형성한다. RPTB제어로직(102)은 프로세서 코어(100)로부터 출력된 인에이블신호에 의해 동작되며, RPTB명령을 수행하시 반복 카운트(RC) 레지스터(103), 반복종료(RE) 레지스터(104), 반복시작(RS) 레지스터(105) 및 멀티플렉서(MUX)(107)를 제어한다. 상기 반복 카운트(RC) 레지스터(103)는 반복카운트값(반복횟수)(BRC)을 저장하고, 반복종료(RE) 레지스터(104)와반복시작(RS) 레지스터(105)는 반복종료 어드레스(REA)와 반복시작 어드레스(RSA)를 각각 저장한다.The RPTB control logic 102, the repeat count (RC) register 103, the repeat end (RE) register 104, and the repeat start (RS) register 105 form the RPTB logic. The RPTB control logic 102 is operated by the enable signal output from the processor core 100, and the repetition count (RC) register 103, the repetition end (RE) register 104, and the repetition start when the RPTB instruction is executed. (RS) register 105 and multiplexer (MUX) 107 are controlled. The repeat count (RC) register 103 stores a repeat count value (repeat count) BRC, and the repeat end (RE) register 104 and repeat start (RS) register 105 are the repeat end address (REA). ) And repeat start address (RSA) are stored respectively.

RPTB제어로직(102)은 프로그램 카운터(108)에 저장된 메모리 어드레스와 반복종료 어드레스(REA)를 비교하여, 두 어드레스가 동일하면 멀티플렉서(107)를 제어하여 RS레지스터(105)에 저장된 반복시작 어드레스(RSA)를 프로그램 카운터(108)로 입력하고, RC레지스터(103)로 감소신호를 출력하여 반복 카운트값(BRC)을 감소시킨다.The RPTB control logic 102 compares the memory address stored in the program counter 108 and the repetition end address REA. If the two addresses are the same, the RPTB control logic 102 controls the multiplexer 107 to store the repetition start address (stored in the RS register 105). RSA) is input to the program counter 108, and a decrease signal is output to the RC register 103 to decrease the repetition count value BRC.

이와 같이 구성된 종래의 프로세서의 동작을 다음의 <프로그램 1>의 실행과정을 참조하여 설명하면 다음과 같다.The operation of the conventional processor configured as described above will be described with reference to the following execution procedure of <Program 1>.

<프로그램 1>에서 반복 카운트값(BRC)은 "2"로 설정되어 있으며, RPTB명령의 반복종료 어드레스(REA)는 "n+3"으로 설정되어 있으며, RPTB명령에는 3개의 명령(CALL),(ADD),(SUB)이 포함되어 있다.In <Program 1>, the repeat count value (BRC) is set to "2". The repeat end address (REA) of the RPTB instruction is set to "n + 3". The RPTB instruction includes three instructions (CALL), (ADD) and (SUB) are included.

<프로그램 1><Program 1>

STM BRC #2 n-1STM BRC # 2 n-1

RPTB n+3 nRPTB n + 3 n

CALL n+10 n+1CALL n + 10 n + 1

ADD n+2ADD n + 2

SUB n+3SUB n + 3

RET n+10RET n + 10

NOP n+11NOP n + 11

NOPNOP

도3은 상기 <프로그램 1>의 각 명령이 파이프라인상에서 어떻게 동작되는지를 나타낸 일예이다.3 is an example showing how each instruction of <Program 1> operates on a pipeline.

첫 번째 싸이클(60)에서, 프로세서 코어(100)는 프로그램 카운터(108)에서 출력된 메모리 어드레스(n-1)에 해당되는 명령(STM)을 메모리(101)로부터 페치한다[F(n-1)].In the first cycle 60, the processor core 100 fetches from the memory 101 an instruction STM corresponding to the memory address n-1 output from the program counter 108 [F (n-1). )].

2번째 싸이클(61)에서, 프로세서 코어(100)는 페치된 명령(STM)을 디코드하여[D(n-1)], 반복 카운트값(BRC) "2" 를 저장하기 위한 제어신호를 RPTB제어로직(102)로 출력한다. 상기 프로세서 코어(100)는 이전의 PC값(n-1)을 다음 PC값(n)으로 증가시키도록 PC생성로직(106)을 제어하고, 메모리(101)로부터 프로그램 카운터(108)의 메모리 어드레스(n)에 해당하는 명령(RPTB)을 페치한다[F(n)].In the second cycle 61, the processor core 100 decodes the fetched instruction STM [D (n-1)] to control the control signal for storing the repetition count value BRC "2". Output to logic 102. The processor core 100 controls the PC generation logic 106 to increase the previous PC value n-1 to the next PC value n, and the memory address of the program counter 108 from the memory 101. Fetch the instruction (RPTB) corresponding to (n) [F (n)].

3번째 싸이클(62)에서 RPTB제어로직(102)은 RC레지스터(103)에 2회의 반복카운트 값(BRC)을 세팅한다[R/E(n-1)]. 프로세서 코어(100)는 페치한 RPTB명령을 디코드하여 RPTB제어로직(102)으로 인에이블신호 및 반복종료 어드레스(REA)를 출력하고[D(n)], 다음 PC값(n+1)으로 증가시키도록 PC생성로직(106)을 제어한다. 또한, 프로세서 코어(100)는 메모리(101)로부터 프로그램 카운터(108)의 메모리 어드레스(n+1)에 해당하는 명령(CALL)을 페치한다[F(n+1)].In the third cycle 62, the RPTB control logic 102 sets two repeat count values BRC in the RC register 103 [R / E (n-1)]. The processor core 100 decodes the fetched RPTB instruction, outputs the enable signal and the repetition end address REA to the RPTB control logic 102 [D (n)], and increases to the next PC value (n + 1). To control the PC generation logic 106. The processor core 100 also fetches an instruction CALL corresponding to the memory address n + 1 of the program counter 108 from the memory 101 [F (n + 1)].

4번째 싸이클(63)에서 RPTB제어로직(102)은 상기 인에이블신호에 의해 동작되어, "n+3"의 반복종료 어드레스(REA)를 RE레지스터(104)에 설정하고, 프로그램 카운터(108)에서 출력된 메모리 어드레스(n+1)를 RS레지스터(105)의 반복시작 어드레스(RSA)로서 설정한다[R/E(n)]. 즉, RPTB제어로직(102)은 디코드된 RPTB명령의 어드레스(n+3)를 반복종료 어드레스(REA)로 설정하고, 프로그램카운터(108)의 이전 메모리 어드레스(n+2)를 반복시작 어드레스(RSA)로 설정한다.In the fourth cycle 63, the RPTB control logic 102 is operated by the enable signal to set the repetition end address REA of " n + 3 " to the RE register 104, and the program counter 108 The memory address (n + 1) outputted from S is set as the repeat start address (RSA) of the RS register 105 [R / E (n)]. That is, the RPTB control logic 102 sets the address n + 3 of the decoded RPTB instruction to the repetition end address REA, and sets the previous memory address n + 2 of the program counter 108 to the repeat start address ( RSA).

프로세서 코어(100)는 명령(CALL)을 디코드한 후 PC생성로직(106)을 제어하여 PC값을 "n+2"로 증가시키고[D(n+1)], 프로그램 카운터(108)에서 출력된 메모리 어드레스(n+2)를 저장하도록 메모리(101)를 제어하고, 디코드된 n+10의 어드레스를 생성하도록 PC생성로직(106)을 제어한다. 이때, RPTB제어로직(102)은 프로그램 카운터(108)의 메모리 어드레스(n+2)와 반복종료 어드레스(REA)가 다르기 때문에 아무런 제어동작도 수행하지 않는다. 그리고, 프로세서 코어(100)는 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[F(n+2)].The processor core 100 decodes the instruction CALL and then controls the PC generation logic 106 to increase the PC value to "n + 2" [D (n + 1)] and output it from the program counter 108. The memory 101 is controlled to store the stored memory address n + 2, and the PC generation logic 106 is generated to generate the decoded n + 10 address. At this time, the RPTB control logic 102 does not perform any control operation because the memory address n + 2 of the program counter 108 and the repetition end address REA are different. The processor core 100 fetches an instruction ADD corresponding to the memory address n + 2 [F (n + 2)].

5번째 싸이클(64)에서, 메모리(101)는 메모리 어드레스(n+2)를 저장한다[R/E(n+1)]. 프로세서 코어(100)는 이전 명령이 CALL이기 때문에 페치된 명령(ADD)을 디코드하지 않으며[D(n+2)], PC값을 "n+11"로 증가시키도록 PC생성로직(106)을 제어한다. 그리고, 프로세서 코어(100)는 이전의 메모리 어드레스(n+2)에 해당되는 명령(FET)을 페치한다[F(n+10)].In the fifth cycle 64, the memory 101 stores a memory address n + 2 [R / E (n + 1)]. The processor core 100 does not decode the fetched instruction ADD because the previous instruction is CALL [D (n + 2)] and increases the PC generated logic 106 to increase the PC value to "n + 11". To control. The processor core 100 fetches an instruction FET corresponding to the previous memory address n + 2 [F (n + 10)].

6번째 싸이클(65)에서, 명령(ADD)이 디코드되지 않았기 때문에 프로세서 코어(100)는 명령(ADD)을 실행하지 않는다[R/E(n+2)]. 프로세서 코어(100)는 페치된 명령(RET)을 디코드하고[D(n+10)], PC값을 "n+11"로 증가시키도록 PC생성로직(106)을 제어한다. 그런데, 상기 명령(RET)은 복귀(Rerurn)를 의미하기 때문에, 프로세서 코어(100)는 메모리(101)에 기저장된 메모리 어드레스(n+2)를 리드한 후 그 리드된 메모리 어드레스(n+2)가 다시 PC값으로 설정될 수 있도록 PC생성로직(106)을 제어한다. 그리고, 프로세서 코어100)는 이전의 메모리 어드레스(n+11)에 해당되는 명령(NOP)을 페치한다[F(n+11)].In the sixth cycle 65, the processor core 100 does not execute the instruction ADD because the instruction ADD has not been decoded [R / E (n + 2)]. Processor core 100 decodes the fetched instruction RET [D (n + 10)] and controls PC generation logic 106 to increase the PC value to " n + 11 ". However, since the command RET means return, the processor core 100 reads the memory address n + 2 previously stored in the memory 101 and then reads the read memory address n + 2. Control the PC generation logic 106 to be set back to the PC value. The processor core 100 fetches an instruction NOP corresponding to the previous memory address n + 11 [F (n + 11)].

7번째 싸이클(66)에서, 현재 복귀중이기 때문에 프로세서 코어(100)는 아무런 실행을 하지 않는다[R/E(n+10)]. 프로세서 코어(100)는 페치된 명령(NOP)을 디코드 하고D[(n+11)], 이전 PC값(n+2)을 "n+3'으로 증가시키도록 PC생성로직(106)을 제어한다. 또한, 프로세서 코어(100)는 메모리(101)로부터 이전의 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[F(n+2)].In the seventh cycle 66, the processor core 100 does nothing because it is currently returning (R / E (n + 10)). Processor core 100 decodes the fetched instruction NOP and controls PC generation logic 106 to increase D [(n + 11)] and increase the previous PC value (n + 2) to “n + 3”. In addition, the processor core 100 fetches an instruction ADD corresponding to the previous memory address n + 2 from the memory 101 [F (n + 2)].

8번째 싸이클(67)에서, 프로세서 코어(100)는 명령(NOP)이 "No operation"이기 때문에 아무 실행도 수행하지 않는다[R/E(n+11)]. 그리고, 프로세서 코어(100는 페치된 명령(ADD)을 디코드한 후 다음 PC값(n+4)을 생성하도록 PC생성로직(106)을 제어한다[D(n+2)]. 그런데, 이전의 PC값(n+2)이 상기 RE레지스터(104)의 반복종료 어드레스(REA)(n+2)와 일치하기 때문에, RPTB제어로직(102)은 RS레지스터(105)와 멀티플렉서(107)를 제어하여 반복시작 어드레스(RSA)가 프로그램 카운터(108)로 입력되도록 한다. 그리고, RPTB제어로직(102)은 RC레지스터(103)로 감소신호를 출력하고, 프로세서 코어(100)는 메모리(101)로부터 이전의 메모리 어드레스(n+3)에 해당되는 명령(SUB)을 페치한다[F(n+3)].In the eighth cycle 67, the processor core 100 performs no execution because the instruction NOP is "No operation" [R / E (n + 11)]. The processor core 100 then decodes the fetched instruction ADD and then controls the PC generation logic 106 to generate the next PC value n + 4 [D (n + 2)]. Since the PC value (n + 2) coincides with the repetition end address (REA) (n + 2) of the RE register 104, the RPTB control logic 102 controls the RS register 105 and the multiplexer 107. The repetition start address RSA is input to the program counter 108. The RPTB control logic 102 outputs a decrement signal to the RC register 103, and the processor core 100 receives the memory 101 from the memory 101. The instruction SUB corresponding to the previous memory address n + 3 is fetched [F (n + 3)].

9번째 싸이클(68)에서, 프로세서 코어(100)는 명령(ADD)을 실행하고, RC레지스터(103)는 감소신호에 따라 반복 카운트값(BRC)을 2에서 1로 감소시킨다[R/E(n+2)]. 그리고, 프로세서 코어(100)는 페치된 명령(SUB)을 디코드하고 [D(n+3)], 명령(CALL)을 메모리(101)로부터 페치한다[F(n+1)].In the ninth cycle 68, the processor core 100 executes the instruction ADD, and the RC register 103 decreases the repetition count value BRC from 2 to 1 in accordance with the decrement signal [R / E ( n + 2)]. The processor core 100 decodes the fetched instruction SUB and fetches [D (n + 3)] and fetches the instruction CALL from the memory 101 [F (n + 1)].

이후, 4번째싸이클(63)에서 8번째싸이클(67)까지의 동작을 재차 수행하여, 다시 PC값(n+2)이 반복종료 어드레스(REA)와 일치하면 RPTB제어로직(102)은 RC레지스터(103)로 감소신호를 출력한다. 따라서, RC레지스터(103)는 감소신호에 따라 반복 카운트값(BRC)을 0으로 감소시키고, 프로세서 코어(100)는 RC레지스터(103)의 반복 카운트값(BRC)이 0가 되면 RPTB제어로직(102)을 디스에이블시킨다.Subsequently, the operation from the fourth cycle 63 to the eighth cycle 67 is performed again, and if the PC value n + 2 coincides with the repetition end address REA again, the RPTB control logic 102 receives the RC register. A decrease signal is output to (103). Accordingly, the RC register 103 decreases the repetition count value BRC to 0 according to the decrement signal, and the processor core 100 determines that the repetition count value BRC of the RC register 103 becomes 0 when the RPTB control logic ( 102 is disabled.

또한, 종래의 프로세서의 데이터처리동작을 다음의 <프로그램 2>를 참조하여 설명하면 다음과 같다.In addition, the data processing operation of the conventional processor will be described with reference to the following <Program 2>.

<프로그램 2><Program 2>

STM BRC #2 n-1STM BRC # 2 n-1

RPTB n+2 nRPTB n + 2 n

CALL n+10 n+1CALL n + 10 n + 1

ADD n+2ADD n + 2

RET n+10RET n + 10

NOP n+11NOP n + 11

<프로그램 2>는 <프로그램 1>과 동일하게 반복 카운트값(BRC)이 "2"로 설정된다. 그런데, <프로그램 2>는 <프로그램 1>과는 달리 반복 종료 어드레스(REA)가 "n+2"로 설정되며, RPTB명령은 단지 2개의 명령(CALL),(ADD)만을 포함한다.In <Program 2>, the repeat count value BRC is set to "2" similarly to <Program 1>. However, unlike <Program 1>, <Program 2> has a repetition end address REA set to "n + 2", and the RPTB instruction includes only two instructions CALL and ADD.

따라서, <프로그램 2>을 실행하는 경우 첫번째 싸이클(70)에서 3번째 싸이클(72)까지는 <프로그램 1>과 동일하다.Therefore, when executing <Program 2>, the first cycle 70 to the third cycle 72 is the same as <Program 1>.

4번째 싸이클(73)에서 RPTB제어로직(102)은 반복종료 어드레스(REA)를 "n+2"로, 반복시작 어드레스(RSA)는 "n+1"로 설정한다[R/E(n)]. 프로세서 코어(100)는 페치한 명령(CALL)을 디코드한 후 메모리 어드레스(n+2)이 메모리(101)에 저장될 수 있도록 PC생성로직(106)을 제어한다[D(n+1)]. 또한, 프로세서 코어(100)는 n+10이 다음 PC값이 될 수 있도록 PC생성로직(106)을 제어한다.In the fourth cycle 73, the RPTB control logic 102 sets the repetition end address REA to "n + 2" and the repetition start address RSA to "n + 1" [R / E (n) ]. The processor core 100 decodes the fetched instruction CALL and then controls the PC generation logic 106 so that the memory address n + 2 can be stored in the memory 101 [D (n + 1)]. . In addition, processor core 100 controls PC generation logic 106 such that n + 10 becomes the next PC value.

이때, RPTB제어로직(102)은 PC값(n+2)이 반복종료 어드레스(REA)와 일치하기 때문에 RC레지스터(103)로 감소신호를 출력한다. 그리고, 프로세서 코어(100)는 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[F(n+2)].At this time, the RPTB control logic 102 outputs a reduction signal to the RC register 103 because the PC value n + 2 coincides with the repetition end address REA. The processor core 100 fetches an instruction ADD corresponding to the memory address n + 2 [F (n + 2)].

이후 5번째 싸이클(74)에서 메모리(101)는 메모리 어드레스(n+2)를 저장하고, RC레지스터(103)는 감소신호에 따라 반복 카운트값(BRC)을 2에서 1로 감소시킨다[R/E(n+1)]. 프로세서 코어(100)는 이전 명령이 CALL이기 때문에 페치된 명령(ADD)을 디코드하지 않으며[D(n+2)], PC값을 "n+11"로 증가시키도록 PC생성로직(106)을 제어한다. 그리고, 프로세서 코어(100)는 이전의 메모리 어드레스(n+2)에 해당되는 명령(FET)을 페치한다[F(n+10)].Then, in the fifth cycle 74, the memory 101 stores the memory address n + 2, and the RC register 103 decreases the repetition count value BRC from 2 to 1 in accordance with the decrement signal [R / E (n + 1)]. The processor core 100 does not decode the fetched instruction ADD because the previous instruction is CALL [D (n + 2)] and increases the PC generated logic 106 to increase the PC value to "n + 11". To control. The processor core 100 fetches an instruction FET corresponding to the previous memory address n + 2 [F (n + 10)].

6번째 싸이클(75)은 <프로그램 1>과 동일하다.The sixth cycle 75 is the same as <Program 1>.

7번째 싸이클(76)에서, 현재 복귀중이기 때문에 프로세서 코어(100)는 아무런 실행을 하지 않는다[R/E(n+10)], 또한, 프로세서 코어(100)는 페치된 명령(NOP)을 디코드하고[D[(n+11)], 메모리(101)에 저장되었던 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[F(n+2)].In the seventh cycle 76, the processor core 100 does nothing because it is currently returning (R / E (n + 10)), and the processor core 100 also decodes the fetched instruction NOP. [D [(n + 11)], the instruction ADD corresponding to the memory address n + 2 stored in the memory 101 is fetched [F (n + 2)].

이때, 메모리(101)에 저장되었던 메모리 어드레스(n+2)는 반복종료 어드레스(REA)와동일하기 때문에 RPTB제어로직(102)은 감소신호를 다시 RC레지스터(103)로 출력하고, n+1의 반복개시 어드레스(RSA)가 프로그램 카운터(108)로 제공될 수 있도록 RS레지스터(105)와 멀티플렉서(107)를 제어한다.At this time, since the memory address n + 2 stored in the memory 101 is the same as the repetition end address REA, the RPTB control logic 102 outputs the decrease signal to the RC register 103 again, and n + 1. The RS register 105 and the multiplexer 107 are controlled so that the repetition start address RSA can be provided to the program counter 108.

따라서, 8번째 싸이클(77)에서 RC레지스터(103)의 반복 카운트값(BRC)은 감소신호에 따라 1에서 0으로 감소되며, 이때 프로세서 코어(100)는 RPTB제어로직(102)을 디스에이블시킨다.Therefore, in the eighth cycle 77, the repetition count value BRC of the RC register 103 decreases from 1 to 0 according to the decrement signal, and the processor core 100 disables the RPTB control logic 102. .

여기서 우리는 원래 <프로그램 2>에서 의도한 것과는 다르게 실행되었음을 알 수 있다. 즉, <프로그램 2>에서는 n+1의 명령인 CALL을 디코드한 후에 반복 카운트값(BRC)을 한번 감소시키고, CALL을 끝내고 RET가 실행되었을 때 다시 반복 카운트값(BRC)을 감소시킨다.Here we see that it was executed differently than originally intended in Program 2. That is, in <Program 2>, after repeating the CALL of n + 1 command, the repeat count value BRC is decreased once, and when the CALL is finished and RET is executed, the repeat count value BRC is decreased again.

그 결과, RPTB명령에 의해 실제 1번 실행된 CALL 및 실제로 페치되었을 뿐 실행되지는 않은 ADD가 반복 카운트 레지스터(103)에는 마치 2번 실행된 것처럼 표시된다. 따라서, 종래의 프로세서는 RPTB명령내에 적어도 3개 이상의 명령이 있어야만 프로그램의 신뢰성을 보장되는 문제점이 발생된다.As a result, the CALL actually executed once by the RPTB instruction and the ADD actually fetched but not executed are displayed in the iteration count register 103 as if executed twice. Therefore, the conventional processor has a problem that the reliability of the program is guaranteed only if there are at least three or more instructions in the RPTB instruction.

본래 프로세서는 외부로부터 예상치못한 입력을 인터럽트로 받아들이며, 인터럽트를 입력받은 프로세서는 현재 상태를 저장하고(주소포함), 특정프로그램을 수행한 후 다시 예전의 상태로 돌아간다. 이것은 CALL 명령과 아주 유사하다. 만약 3개이상의 명령으로 구성된 반복블럭을 포함한 프로그램에서 프로세서가 반복블럭의 마지막 부분(BRC를 감소시키는 제어신호가 출력된 후)을 실행할 때 인터럽트가 들어왔다면, 프로세서는 인터럽트를 실행하고 난 후 다시 예전의 상태로 돌아가지 않게 된다. 이것은 인터럽트 실행 후 BRC가 또다시 감소되기 때문에 생긴 결과이다. 따라서, 종래의 프로세서에서는 프로세서가 반복블럭의 마지막 부분을 실행할 때 인터럽트가 들어오면 BRC의 이중감소에 의해 프로그램을 올바르게 실행되지 않는 문제점이 있었다.Inherently, the processor accepts an unexpected input from the outside as an interrupt. The processor receives the interrupt, saves its current state (including its address), executes a particular program, and then returns to its previous state. This is very similar to the CALL command. If a program contains an iteration block of three or more instructions and an interrupt is encountered when the processor executes the last part of the iteration block (after the control signal is output to reduce the BRC), the processor executes the interrupt and then resumes. Will not return to the state of. This is the result of the BRC being reduced again after the interrupt is executed. Therefore, in the conventional processor, when an interrupt comes in when the processor executes the last part of the iteration block, the program is not executed correctly due to the double reduction of the BRC.

따라서, 상기 문제점을 해결하기 위하여 RPTB명령을 실행할 때 마지막 명령이 실행될 때는 인터럽트를 받아들이지 않도록 하는 방법이 있지만, 인터럽트를 받을 수 있는 명령이 인터럽트를 받지 못하도록 하는 것은 RPTB명령이 포함된 응용프로그램의 효율성을 떨어뜨리게 된다.Therefore, in order to solve the above problem, there is a method to disable the interrupt when the last command is executed when executing the RPTB command, but preventing the interruptable command from receiving the interrupt reduces the efficiency of the application program including the RPTB command. Dropped.

따라서, 본 발명의 목적은 RPTB명령내에 포함된 명령의 수에 관계없이 프로그램실행의 신뢰성을 확보할 수 있는 프로세서의 데이터처리방법을 제공하는데 있다.Accordingly, an object of the present invention is to provide a data processing method of a processor that can ensure the reliability of program execution regardless of the number of instructions included in the RPTB instruction.

본 발명의 다른 목적은 CALL명령실행시 반복 카운트값의 이중감소를 방지하여, 실제로 처리되지 명령이 실행된 것으로 오인되는 것을 방지할 수 있는 프로세서의 데이터 처리방법을 제공하는데 있다.Another object of the present invention is to provide a data processing method of a processor that can prevent a double count of a repeat count value when a CALL instruction is executed, thereby preventing the instruction not actually processed from being mistaken as being executed.

상기와 같은 목적을 달성하기 위하여 본 발명에 따른 프로세서의 데이터 처리장치는 파이프라인 형태로 명령을 처리하는 프로세서 코어와, 상기 프로세코어서에 의해 페치될, 디코드될 및 실행될 다음 명령의 메모리 어드레스를 저장하는 프로그램 카운터와, 상기 프로세서의 제어에 따라 프로그램 카운터값을 증가시켜 상기 프로그램 카운터로 출력하는 프로그램 카운터 생성로직과, 반복블럭명령이 포함된 프로그램이 저장된 메모리로 구성된 프로세서에 있어서, 반복 카운트값을 설정하는 제1과정과,메모리로부터 페치된 반복블럭 명령을 디코드하여 반복종료 및 반복시작 어드레스를 설정하고, 반복블럭의 제1명령을 페치하는 제2과정과, 제1명령을 디코드하여 실행하고, 다음의 제2명령를 페치하는 제3과정과, 제2명령의 메모리 어드레스가 반복종료 어드레스와 일치하는지 비교하는 제4과정과, 제4과정에서 두 어드레스가 일치하면 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령인지 체크하는 제5과정과, 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령이면 제2명령의 메모리 어드레스를 저장하고 반복 카운트값을 감소시키지 않는 제6과정으로 구성된다.In order to achieve the above object, a data processing apparatus of a processor according to the present invention stores a processor core for processing an instruction in a pipeline form, and a memory address of a next instruction to be decoded and executed by the processor. In the processor consisting of a program counter, a program counter generation logic for increasing a program counter value under the control of the processor and outputting the program counter value to the program counter, and a memory in which a program including a repeat block command is stored, the repeat count value is set. A first process to decode, and a repeating block instruction fetched from the memory to set a repeat end and repeat start address, a second process of fetching the first instruction of the repeating block, and decode and execute the first instruction. The third process of fetching the second instruction of the second instruction, and the memory address of the second instruction is repeated A fourth step of comparing the first address with a second address; a fifth step of checking whether the first command is a nonlinear change in the execution order of the program if the two addresses match in the fourth step; and the first command is the execution of the program. In the case of non-linear order changing, the sixth process stores the memory address of the second command and does not decrease the repeat count value.

도 1은 반복블럭 명령이 포함된 프로그램을 수행하기 위한 종래 프로세서의 블록도.1 is a block diagram of a conventional processor for executing a program including an iterative block instruction.

도 2는 페치(F)-디코드(D)-리드/실행(R/D)의 3단계로 이루어진 명령 파이프라인을 나타낸 도면.FIG. 2 shows an instruction pipeline consisting of three stages: Fetch (F)-Decode (D)-Read / Execute (R / D).

도 3은 도1에서 반복블럭명령이 포함된 <프로그램 1>의 실행과정을 3단계의 파이트라인 형태로 나타낸 도면.FIG. 3 is a diagram illustrating an execution process of <Program 1> including an iteration block command in FIG.

도 4는 도1에서 반복블럭명령이 포함된 <프로그램 2>의 실행과정을 3단계의 파이트라인 형태로 나타낸 도면.4 is a diagram illustrating an execution process of <Program 2> including an iteration block command in FIG.

도 5는 반복블럭명령이 포함된 프로그램을 수행하기 위한 본 발명에 따른 프로세서의 블록도.5 is a block diagram of a processor according to the present invention for executing a program including a repeat block instruction.

*** 도면의 주요 부분에 대한 부호의 설명 ****** Explanation of symbols for the main parts of the drawing ***

100 : 프로세서 코어 101 : 메모리100: processor core 101: memory

102 : RPTB제어로직 103 ; RC레지스터102: RPTB control logic 103; RC register

104 : RE레지스터 105 : RS레지스터104: RE register 105: RS register

106 : PC생성로직 107 : 멀티플렉서(MUX)106: PC-generated logic 107: Multiplexer (MUX)

108 : 프로그램 카운터(PC) 109 : RPTB수정로직108: program counter (PC) 109: RPTB modified logic

도 4에는 본 발명에 따른 프로세서는 도 1에 도시된 종래의 프로세서구조에 RPTB수정로직(109)을 추가로 포함한다.4, the processor according to the present invention further includes an RPTB modification logic 109 in the conventional processor structure shown in FIG.

RPTB수정로직(109)은 현재 프로세서 코어(100)에서 디코드중인 명령이 프로그램의 실행순서를 비선형적인(Unlinear)형태(Branch, Call등)로 바꾸는 명령일 경우는 RPTB제어로직(102)로부터 RC레지스터(103)으로 입력되는 감소신호를 차단한다. 또한, 반복 카운트값(BRC)이 0이 되어 RPTB제어로직(102)이 디스에이블되었을 때 상기 RPTB수정로직(109)은 반복 카운트값(BRC)의 감소가 이중감소에 의한 것이라면 RPTB제어로직(102)을 다시 인에이블시킨다.The RPTB modification logic 109 is an RC register from the RPTB control logic 102 when the instruction being decoded in the processor core 100 changes the execution order of the program into a nonlinear form (Branch, Call, etc.). The reduction signal input to 103 is blocked. Further, when the RPTB control logic 102 is disabled because the repetition count value BRC becomes 0, the RPTB correction logic 109 is configured to reduce the RPTB control logic 102 if the decrease in the repetition count value BRC is due to double reduction. Enable) again.

이와 같이 구성된 본 발명에 따른 프로세서의 데이터 처리동작을 전술한 <프로세서 2>의 오동작 부분을 참조하여 설명하면 다음과 같다.The data processing operation of the processor according to the present invention configured as described above will be described with reference to the malfunction of the above-described <Processor 2>.

4번째 싸이클에서, RPTB제어로직(102)은 반복종료 어드레스(REA)를 "n+2"로, 반복시작 어드레스(RSA)는 "n+1"로 설정한다[R/E(n)]. 프로세서 코어(100)는 페치한 명령(CALL)을 디코드하고[D(n+1)], 메모리 어드레스(n+2)가 메모리(101)에 저장될 수 있도록 메모리(101)와 PC생성로직(106)을 제어한다. 그리고, 프로세서 코어(100)는 n+10이 다음의 PC값으로 설정되도록 PC생성로직(106)을 제어하며, RPTB수정로직(109)에 현재 디코드중인 명령이 CALL임을 통지한다. 이때, 상기 PC생성로직(106)에서 생성된 PC값(n+2)은 반복종료 어드레스(REA)(n+2)와 동일하기 때문에 RPTB제어로직(102)은 RPTB수정로직(109)으로 반복 카운트값(BRC)를 감소시키기 위한 감소신호를 출력한다. 또한, 프로세서 코어(100)는 메모리(101)로부터 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[F(n+2)].In the fourth cycle, the RPTB control logic 102 sets the repetition end address REA to "n + 2" and the repetition start address RSA to "n + 1" [R / E (n)]. The processor core 100 decodes the fetched instruction CALL [D (n + 1)], and stores the memory 101 and the PC generation logic such that the memory address n + 2 can be stored in the memory 101. 106). The processor core 100 then controls the PC generation logic 106 so that n + 10 is set to the next PC value, and notifies the RPTB correction logic 109 that the instruction currently being decoded is CALL. At this time, since the PC value (n + 2) generated by the PC generation logic 106 is the same as the repetition end address (REA) (n + 2), the RPTB control logic 102 is repeated with the RPTB modification logic 109. A decrease signal for reducing the count value BRC is output. In addition, the processor core 100 fetches an instruction ADD corresponding to the memory address n + 2 from the memory 101 [F (n + 2)].

5번째 싸이클에서, 메모리(101)는 메모리 어드레스(n+2)를 저장한다[R/E(n+1)]. 프로세서 코어(100)는 이전 명령이 CALL이기 때문에 다음 명령(ADD)을 디코드하지 않는다[D(n+2)]. 그리고, 프로세서 코어(100)는 PC값을 "n+11"로 증가시키도록 PC생성로직(106)을 제어하고, 메모리 어드레스(n+2)에 해당되는 명령(FET)을 페치한다[F(n+10)].In the fifth cycle, the memory 101 stores a memory address n + 2 [R / E (n + 1)]. The processor core 100 does not decode the next instruction ADD because the previous instruction is CALL [D (n + 2)]. The processor core 100 then controls the PC generation logic 106 to increase the PC value to " n + 11 " and fetches an instruction FET corresponding to the memory address n + 2 [F ( n + 10)].

그런데, CALL 명령은 프로그램의 실행순서를 비선형적인 형태로 바꾸는 명령이기 때문에 CALL다음의 명령은 실행되지 않는다. 따라서, RPTB수정로직(109)은 아직 RPTB의 마지막이 아니라고 판단하여 RPTB 제어로직(102)로부터 입력된 BRC감소신호를 RC레지스터(103)로 출력하지 않는다. 즉, RPTB수정로직(109)은 BRC감소신호 생성시 실행한 명령이 CALL임을 인식하여 RC레지스터(103)로 입력되는 감소신호를 차단함으로써, RC레지스터(103)의 반복 카운트값(BRC)은 감소되지 않는다.However, since the CALL instruction changes the execution order of the program into a non-linear form, the instruction following CALL is not executed. Therefore, the RPTB correction logic 109 does not output the BRC reduction signal input from the RPTB control logic 102 to the RC register 103 because it determines that it is not the end of the RPTB yet. That is, the RPTB correction logic 109 blocks the decrement signal input to the RC register 103 by recognizing that the command executed when generating the BRC reduction signal is CALL, thereby reducing the iteration count value BRC of the RC register 103. It doesn't work.

따라서, 본 발명은 RPTB명령내에 2개의 명령만이 있는 경우에도 프로그램을 올바르게 실행할 수 있으며, CALL명령실행시 종래의 프로세서에서 문제되었던 반복 카운트값(BRC)의 이중감소를 방지할 수 있다. 그리고, 본 발명은 반복 카운트값(BRC)의 이중감소를 방지함으로써, 실제로 처리되지 명령(ADD)이 실행된 것으로 오인하여 발생되었던 종래의 문제도 해결할 수 있게 된다.Therefore, the present invention can execute the program correctly even when there are only two instructions in the RPTB instruction, and it is possible to prevent the double reduction of the repetition count value BRC which has been a problem in the conventional processor when executing the CALL instruction. In addition, the present invention prevents double reduction of the iteration count value BRC, thereby solving the conventional problem caused by mistaken that the instruction ADD that was not actually processed is executed.

본 발명은 가장 대표적인 명령인 CALL을 예로들어 설명하였지만 이에 한정되지는 않으며, 프로그램의 실행순서를 비선형적인 형태로 바꾸는 모든 명령에 적용될 수 있다. 또한, 본 발명은 가장 우선순위가 높은 브랜치명령인 인터럽트에도 적용할 수 있다.Although the present invention has been described using CALL, which is the most representative example, the present invention is not limited thereto, and the present invention can be applied to all instructions for changing the execution order of a program into a nonlinear form. The present invention can also be applied to interrupts, which are branch instructions with the highest priority.

또한, 본 발명에서 선행된 실시예들은 단지 한 예로서 청구범위를 한정하지 않으며, 여러가지의 대안, 수정 및 변경들이 통상의 지식을 갖춘자에게 자명한 것이 될 것이다.In addition, the foregoing embodiments of the present invention are not limited to the claims by way of example only, and various alternatives, modifications, and changes will be apparent to those skilled in the art.

상술한 바와같이, 본 발명에 따른 프로세서는 반복블럭 명령이 갖는 명령수의 제약을 해소함으로써, 반복블럭 명령이 포함된 응용프로그램의 신뢰성 및 효율성을 높일 수 있는 효과가 있다.As described above, the processor according to the present invention has the effect of increasing the reliability and efficiency of the application program containing the iteration block instruction by removing the restriction of the number of instructions in the iteration block instruction.

본 발명은 CALL명령을 실행할 때 종래의 프로세서에서 문제되었던 블록 카운트값의 이중감소를 방지하여, 실제로 처리되지 명령이 실행된 것으로 오인하여 발생되었던 종래의 문제도 해결할 수 있다.The present invention prevents the double reduction of the block count value, which was a problem in the conventional processor when executing the CALL instruction, and can solve the conventional problem caused by mistaken that the instruction was not actually processed.

Claims (5)

파이프라인 형태로 명령을 처리하는 프로세서 코어와, 프로세서코어에 의해 페치될, 디코드될 및 실행될 다음 명령의 메모리 어드레스를 저장하는 프로그램 카운터와, 프로세서 코어의 제어에 따라 프로그램 카운터값을 증가시켜 프로그램 카운터로 제공하는 프로그램 카운터 생성로직과, 반복블럭명령이 포함된 프로그램을 저장하는 메모리로 구성된 프로세서구조에 있어서,A processor counter for processing instructions in a pipeline form, a program counter for storing memory addresses of the next instruction to be decoded and executed by the processor core, and a program counter value for increasing the program counter value under the control of the processor core. In the processor structure comprising a program counter generating logic to provide, and a memory for storing a program containing a repeat block instruction, 반복 카운트값을 설정하는 제1과정과;A first step of setting a repetition count value; 메모리로부터 페치된 반복블럭 명령을 디코드하여 반복종료 및 반복시작 어드레스를 설정하고, 반복블럭의 제1명령을 페치하는 제2과정과;Decoding a repeating block instruction fetched from the memory to set a repeating end and repeating start address, and fetching a first instruction of the repeating block; 제1명령을 디코드하여 실행하고, 다음의 제2명령를 페치하는 제3과정과;A third step of decoding and executing the first instruction and fetching the next second instruction; 제2명령의 메모리 어드레스가 반복종료 어드레스와 일치하는지 비교하는 제4과정과;A fourth step of comparing whether the memory address of the second command matches the repetition end address; 제4과정에서 두 어드레스가 일치하면 상기 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령인지 체크하는 제5과정과;A fifth step of checking whether the first command is a non-linear order of execution of the program if the two addresses match in the fourth step; 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령이면 제2명령의 메모리 어드레스를 저장하고 반복 카운트값을 감소시키지 않는 제6과정으로 구성된 것을 특징으로 하는 프로세서의 데이터 처리방법.And a sixth step of storing the memory address of the second instruction and not reducing the repetition count value if the first instruction is a non-linear instruction for changing the execution order of the program. 제1항에 있어서, 상기 반복 카운트값은 반복블럭명령의 실행전에 프로세서 코어에 의해 로딩되는 것을 특징으로 하는 프로세서의 데이터 처리방법.The method of claim 1, wherein the iteration count value is loaded by a processor core before execution of the iteration block instruction. 제1항에 있어서, 상기 제5과정은 메모리 어드레스가 반복종료 어드레스와 일치하면 반복시작 어드레스를 프로그램 카운터로 제공하여, 재차 반복블럭명령을 수행하는 과정을 추가로 포함하는 것을 특징으로 하는 프로세서의 데이터 처리방법.The data of the processor as claimed in claim 1, wherein the fifth process further includes providing a repetition start address to the program counter when the memory address matches the repetition end address, and executing the repetitive block command again. Treatment method. 제1항에 있어서, 제6과정은 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령이면 제1명령을 실행한 후에 반복 카운트값을 감소시키는 과정을 추가로 포함하는 것을 특징으로 하는 프로세서의 데이터 처리방법.The processor of claim 1, further comprising: if the first instruction is a non-linear instruction for changing the execution order of the program, reducing the iteration count value after executing the first instruction. Data processing method. 제1항에 이어서, 상기 제6과정은 제1명령이 프로그램의 실행순서를 선형적으로 바꾸는 명령이면 제2명령의 메모리 어드레스를 저장하지 않고 반복 카운트값을 감소시키는 것을 특징으로 하는 프로세서의 데이터 처리방법.The processor of claim 6, wherein the sixth step is to reduce the repetition count value without storing the memory address of the second instruction if the first instruction is a linear change of the execution order of the program. Way.
KR1019990066242A 1999-12-30 1999-12-30 Data processing method of a processor KR100347138B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019990066242A KR100347138B1 (en) 1999-12-30 1999-12-30 Data processing method of a processor
US09/750,115 US6845443B2 (en) 1999-12-30 2000-12-29 Method of processing a repeat block efficiently in a processor wherein the repeat count is not decremented in a specific case to prevent error in execution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990066242A KR100347138B1 (en) 1999-12-30 1999-12-30 Data processing method of a processor

Publications (2)

Publication Number Publication Date
KR20010058870A true KR20010058870A (en) 2001-07-06
KR100347138B1 KR100347138B1 (en) 2002-08-03

Family

ID=19633384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990066242A KR100347138B1 (en) 1999-12-30 1999-12-30 Data processing method of a processor

Country Status (1)

Country Link
KR (1) KR100347138B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100710220B1 (en) * 2005-02-22 2007-04-20 엘지전자 주식회사 method for digital signal processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100710220B1 (en) * 2005-02-22 2007-04-20 엘지전자 주식회사 method for digital signal processing

Also Published As

Publication number Publication date
KR100347138B1 (en) 2002-08-03

Similar Documents

Publication Publication Date Title
US5303355A (en) Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
US6560692B1 (en) Data processing circuit, microcomputer, and electronic equipment
JPH04313121A (en) Instruction memory device
US5710913A (en) Method and apparatus for executing nested loops in a digital signal processor
US20020124161A1 (en) Data processing system having redirecting circuitry and method therefor
US5446849A (en) Electronic computer which executes squash branching
KR100423910B1 (en) Method and apparatus for executing coprocessor instructions
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
KR100206887B1 (en) Cpu for debugging program
US20060218378A1 (en) Integrated circuit device
US9436466B2 (en) Blank bit and processor instructions employing the blank bit
JPS623342A (en) Pipeline processor
KR100347138B1 (en) Data processing method of a processor
JP5233078B2 (en) Processor and processing method thereof
US6266764B1 (en) Program controller for switching between first program and second program
JPH08166880A (en) Computer
WO2024029174A1 (en) Processor for controlling pipeline processing based on jump instruction, and program storage medium
JP2721611B2 (en) Programmable controller
JP2721610B2 (en) Programmable controller
US6845443B2 (en) Method of processing a repeat block efficiently in a processor wherein the repeat count is not decremented in a specific case to prevent error in execution
JPH05250156A (en) Risc processor
US20060294345A1 (en) Methods and apparatus for implementing branching instructions within a processor
KR20030067365A (en) Device and Method for Folding Instrucion of Extentable Instruction Set Computer Processor
JPH05313890A (en) Address arithmetic circuit
JP2005134987A (en) Pipeline arithmetic 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: 20050620

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee