KR100347138B1 - 프로세서의 데이터처리방법 - Google Patents

프로세서의 데이터처리방법 Download PDF

Info

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

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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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

본 발명은 반복블럭 명령이 포함된 프로그램을 실행할 때, 프로그램의 실행순서를 비선형적으로 바꾸는 명령에 의해 반복 카운트값이 이중으로 감소되는 것을 방지할 수 있는 프로세서의 데이터 처리방법에 관한 것이다.
본 발명에 따른 프로세서의 데이터 처리장치는 반복 카운트값을 설정하는 제1과정과, 메모리로부터 페치된 반복블럭 명령을 디코드하여 반복종료 및 반복시작 어드레스를 설정하고, 반복블럭의 제1명령을 페치하는 제2과정과, 제1명령을 디코드하여 실행하고, 다음의 제2명령을 페치하는 제3과정과, 제2명령을 페치하기 위한 메모리 어드레스가 반복종료 어드레스와 일치하는지 비교하는 제4과정과, 제4과정에서 두 어드레스가 일치하면 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령인지 체크하는 제5과정과, 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령이면 제2명령의 메모리 어드레스를 저장하고 반복 카운트값을 감소시키지 않는 제6과정으로 구성된다.

Description

프로세서의 데이터처리방법{DATA PROCESSING METHOD OF A PROCESSOR}
본 발명은 프로세서에 관한 것으로서, 특히 반복블럭(Repeat Block: 이하 RPTB로 약칭함)명령이 포함된 프로그램을 효율적으로 수행하기 위한 프로세서의 데이터 처리방법에 관한 것이다.
도 1에는 RPTB명령이 포함된 프로그램을 수행하기 위한 종래의 프로세서가 도시되어 있다. 도 1에 도시된 바와같이, 프로세서 코어(100)는 프로세서의 연산로직 및 일부 제어로직을 포함하며, 프로그램 메모리(101)에 저장된 명령을 파이프라인 형태 즉, 도 2와 같이 페치(F)-디코드(D)-리드/실행(R/D)의 3단계로 처리한다. 메모리(101)는 프로세서에서 사용되는 메모리의 총칭으로서, 프로세서 코어(100)에 의해 디코드될 명령을 저장한다. 프로그램 카운터(PC) 생성로직(106)은 프로세서 코어(100)의 제어에 따라 프로그램 카운터(PC)값을 생성하고, 그 생성된 PC값은 멀티플렉서(107)를 통하여 프로그램 카운터(108)에 저장된다.
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)를 각각 저장한다.
RPTB제어로직(102)은 프로그램 카운터(108)에 저장된 메모리 어드레스와 반복종료 어드레스(REA)를 비교하여, 두 어드레스가 동일하면 멀티플렉서(107)를 제어하여 RS레지스터(105)에 저장된 반복시작 어드레스(RSA)를 프로그램 카운터(108)로 입력하고, RC레지스터(103)로 감소신호를 출력하여 반복 카운트값(BRC)을 감소시킨다.
이와 같이 구성된 종래의 프로세서의 동작을 다음의 <프로그램 1>의 실행과정을 참조하여 설명하면 다음과 같다.
<프로그램 1>에서 반복 카운트값(BRC)은 "2"로 설정되어 있으며, RPTB명령의 반복종료 어드레스(REA)는 "n+3"으로 설정되어 있으며, RPTB명령에는 3개의 명령(CALL),(ADD),(SUB)이 포함되어 있다.
<프로그램 1>
STM BRC #2 n-1
RPTB n+3 n
CALL n+10 n+1
ADD n+2
SUB n+3
RET n+10
NOP n+11
NOP
도3은 상기 <프로그램 1>의 각 명령이 파이프라인상에서 어떻게 동작되는지를 나타낸 일예이다.
첫 번째 싸이클(60)에서, 프로세서 코어(100)는 프로그램 카운터(108)에서 출력된 메모리 어드레스(n-1)에 해당되는 명령(STM)을 메모리(101)로부터 페치한다[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)].
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)].
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)로 설정한다.
프로세서 코어(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)].
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)].
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)].
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)].
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)].
9번째 싸이클(68)에서, 프로세서 코어(100)는 명령(ADD)을 실행하고, RC레지스터(103)는 감소신호에 따라 반복 카운트값(BRC)을 2에서 1로 감소시킨다[R/E(n+2)]. 그리고, 프로세서 코어(100)는 페치된 명령(SUB)을 디코드하고 [D(n+3)], 명령(CALL)을 메모리(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)을 디스에이블시킨다.
또한, 종래의 프로세서의 데이터처리동작을 다음의 <프로그램 2>를 참조하여 설명하면 다음과 같다.
<프로그램 2>
STM BRC #2 n-1
RPTB n+2 n
CALL n+10 n+1
ADD n+2
RET n+10
NOP n+11
<프로그램 2>는 <프로그램 1>과 동일하게 반복 카운트값(BRC)이 "2"로 설정된다. 그런데, <프로그램 2>는 <프로그램 1>과는 달리 반복 종료 어드레스(REA)가 "n+2"로 설정되며, RPTB명령은 단지 2개의 명령(CALL),(ADD)만을 포함한다.
따라서, <프로그램 2>을 실행하는 경우 첫번째 싸이클(70)에서 3번째 싸이클(72)까지는 <프로그램 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)을 제어한다.
이때, RPTB제어로직(102)은 PC값(n+2)이 반복종료 어드레스(REA)와 일치하기 때문에 RC레지스터(103)로 감소신호를 출력한다. 그리고, 프로세서 코어(100)는 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[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)].
6번째 싸이클(75)은 <프로그램 1>과 동일하다.
7번째 싸이클(76)에서, 현재 복귀중이기 때문에 프로세서 코어(100)는 아무런 실행을 하지 않는다[R/E(n+10)], 또한, 프로세서 코어(100)는 페치된 명령(NOP)을 디코드하고[D[(n+11)], 메모리(101)에 저장되었던 메모리 어드레스(n+2)에 해당되는 명령(ADD)을 페치한다[F(n+2)].
이때, 메모리(101)에 저장되었던 메모리 어드레스(n+2)는 반복종료 어드레스(REA)와동일하기 때문에 RPTB제어로직(102)은 감소신호를 다시 RC레지스터(103)로 출력하고, n+1의 반복개시 어드레스(RSA)가 프로그램 카운터(108)로 제공될 수 있도록 RS레지스터(105)와 멀티플렉서(107)를 제어한다.
따라서, 8번째 싸이클(77)에서 RC레지스터(103)의 반복 카운트값(BRC)은 감소신호에 따라 1에서 0으로 감소되며, 이때 프로세서 코어(100)는 RPTB제어로직(102)을 디스에이블시킨다.
여기서 우리는 원래 <프로그램 2>에서 의도한 것과는 다르게 실행되었음을 알 수 있다. 즉, <프로그램 2>에서는 n+1의 명령인 CALL을 디코드한 후에 반복 카운트값(BRC)을 한번 감소시키고, CALL을 끝내고 RET가 실행되었을 때 다시 반복 카운트값(BRC)을 감소시킨다.
그 결과, RPTB명령에 의해 실제 1번 실행된 CALL 및 실제로 페치되었을 뿐 실행되지는 않은 ADD가 반복 카운트 레지스터(103)에는 마치 2번 실행된 것처럼 표시된다. 따라서, 종래의 프로세서는 RPTB명령내에 적어도 3개 이상의 명령이 있어야만 프로그램의 신뢰성이 보장되는 문제점이 발생된다.
본래 프로세서는 외부로부터 예상치못한 입력을 인터럽트로 받아들이며, 인터럽트를 입력받은 프로세서는 현재 상태를 저장하고(주소포함), 특정프로그램을 수행한 후 다시 예전의 상태로 돌아간다. 이것은 CALL 명령과 아주 유사하다. 만약 3개이상의 명령으로 구성된 반복블럭을 포함한 프로그램에서 프로세서가 반복블럭의 마지막 부분(BRC를 감소시키는 제어신호가 출력된 후)을 실행할 때 인터럽트가 들어왔다면, 프로세서는 인터럽트를 실행하고 난 후 다시 예전의 상태로 돌아가지 않게 된다. 이것은 인터럽트 실행 후 BRC가 또다시 감소되기 때문에 생긴 결과이다. 따라서, 종래의 프로세서에서는 프로세서가 반복블럭의 마지막 부분을 실행할 때 인터럽트가 들어오면 BRC의 이중감소에 의해 프로그램을 올바르게 실행하지 않는 문제점이 있었다.
따라서, 상기 문제점을 해결하기 위하여 RPTB명령을 실행할 때 마지막 명령이 실행될 때는 인터럽트를 받아들이지 않도록 하는 방법이 있지만, 인터럽트를 받을 수 있는 명령이 인터럽트를 받지 못하도록 하는 것은 RPTB명령이 포함된 응용프로그램의 효율성을 떨어뜨리게 된다.
따라서, 본 발명의 목적은 RPTB명령내에 포함된 명령의 수에 관계없이 프로그램실행의 신뢰성을 확보할 수 있는 프로세서의 데이터처리방법을 제공하는데 있다.
본 발명의 다른 목적은 CALL명령실행시 반복 카운트값의 이중감소를 방지하여, 실제로 처리되지 않는 명령이 실행된 것으로 오인되는 것을 방지할 수 있는 프로세서의 데이터 처리방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위하여 본 발명에 따른 프로세서의 데이터 처리장치는 파이프라인 형태로 명령을 처리하는 프로세서 코어와, 상기 프로세서코어에 의해 페치될, 디코드될 및 실행될 다음 명령의 메모리 어드레스를 저장하는 프로그램 카운터와, 상기 프로세서코어의 제어에 따라 프로그램 카운터값을 증가시켜 상기 프로그램 카운터로 출력하는 프로그램 카운터 생성로직과, 반복블럭명령이 포함된 프로그램이 저장된 메모리로 구성된 프로세서에 있어서, 반복 카운트값을 설정하는 제1과정과, 메모리로부터 페치된 반복블럭 명령을 디코드하여 반복종료 및 반복시작 어드레스를 설정하고, 반복블럭의 제1명령을 페치하는 제2과정과, 제1명령을 디코드하여 실행하고, 다음의 제2명령을 페치하는 제3과정과, 제2명령의 메모리 어드레스가 반복종료 어드레스와 일치하는지 비교하는 제4과정과, 제4과정에서 두 어드레스가 일치하면 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령인지 체크하는 제5과정과, 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령이면 제2명령의 메모리 어드레스를 저장하고 반복 카운트값을 감소시키지 않는 제6과정으로 구성된다.
도 1은 반복블럭 명령이 포함된 프로그램을 수행하기 위한 종래 프로세서의 블록도.
도 2는 페치(F)-디코드(D)-리드/실행(R/D)의 3단계로 이루어진 명령 파이프라인을 나타낸 도면.
도 3은 도1에서 반복블럭명령이 포함된 <프로그램 1>의 실행과정을 3단계의 파이프라인 형태로 나타낸 도면.
도 4는 도1에서 반복블럭명령이 포함된 <프로그램 2>의 실행과정을 3단계의 파이프라인 형태로 나타낸 도면.
도 5는 반복블럭명령이 포함된 프로그램을 수행하기 위한 본 발명에 따른 프로세서의 블록도.
*** 도면의 주요 부분에 대한 부호의 설명 ***
100 : 프로세서 코어 101 : 메모리
102 : RPTB제어로직 103 ; RC레지스터
104 : RE레지스터 105 : RS레지스터
106 : PC생성로직 107 : 멀티플렉서(MUX)
108 : 프로그램 카운터(PC) 109 : RPTB수정로직
도 5에 도시된 본 발명에 따른 프로세서는 도 1에 도시된 종래의 프로세서구조에 RPTB수정로직(109)을 추가로 포함한다.
RPTB수정로직(109)은 현재 프로세서 코어(100)에서 디코드중인 명령이 프로그램의 실행순서를 비선형적인(Unlinear)형태(Branch, Call등)로 바꾸는 명령일 경우는 RPTB제어로직(102)으로부터 RC레지스터(103)로 입력되는 감소신호를 차단한다. 또한, 반복 카운트값(BRC)이 0이 되어 RPTB제어로직(102)이 디스에이블되었을 때 상기 RPTB수정로직(109)은 반복 카운트값(BRC)의 감소가 이중감소에 의한 것이라면 RPTB제어로직(102)을 다시 인에이블시킨다.
이와 같이 구성된 본 발명에 따른 프로세서의 데이터 처리동작을 전술한 <프로세서 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)].
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)].
그런데, CALL 명령은 프로그램의 실행순서를 비선형적인 형태로 바꾸는 명령이기 때문에 CALL다음의 명령은 실행되지 않는다. 따라서, RPTB수정로직(109)은 아직 RPTB의 마지막이 아니라고 판단하여 RPTB 제어로직(102)으로부터 입력된 BRC감소신호를 RC레지스터(103)로 출력하지 않는다. 즉, RPTB수정로직(109)은 BRC감소신호 생성시 실행한 명령이 CALL임을 인식하여 RC레지스터(103)로 입력되는 감소신호를 차단함으로써, RC레지스터(103)의 반복 카운트값(BRC)은 감소되지 않는다.
따라서, 본 발명은 RPTB명령내에 2개의 명령만이 있는 경우에도 프로그램을 올바르게 실행할 수 있으며, CALL명령실행시 종래의 프로세서에서 문제되었던 반복 카운트값(BRC)의 이중감소를 방지할 수 있다. 그리고, 본 발명은 반복 카운트값(BRC)의 이중감소를 방지함으로써, 실제로 처리되지 않는 명령(ADD)이 실행된 것으로 오인하여 발생되었던 종래의 문제도 해결할 수 있게 된다.
본 발명은 가장 대표적인 명령인 CALL을 예로들어 설명하였지만 이에 한정되지는 않으며, 프로그램의 실행순서를 비선형적인 형태로 바꾸는 모든 명령에 적용될 수 있다. 또한, 본 발명은 가장 우선순위가 높은 브랜치명령인 인터럽트에도 적용할 수 있다.
또한, 본 발명에서 선행된 실시예들은 단지 한 예로서 청구범위를 한정하지 않으며, 여러가지의 대안, 수정 및 변경들이 통상의 지식을 갖춘자에게 자명한 것이 될 것이다.
상술한 바와같이, 본 발명에 따른 프로세서는 반복블럭 명령이 갖는 명령수의 제약을 해소함으로써, 반복블럭 명령이 포함된 응용프로그램의 신뢰성 및 효율성을 높일 수 있는 효과가 있다.
본 발명은 CALL명령을 실행할 때 종래의 프로세서에서 문제되었던 블록 카운트값의 이중감소를 방지하여, 실제로 처리되지 않는 명령이 실행된 것으로 오인하여 발생되었던 종래의 문제도 해결할 수 있다.

Claims (5)

  1. 파이프라인 형태로 명령을 처리하는 프로세서 코어와, 이 프로세서코어에 의해 페치될, 디코드될 및 실행될 다음 명령의 메모리 어드레스를 저장하는 프로그램 카운터와, 상기 프로세서 코어의 제어에 따라 프로그램 카운터값을 증가시켜 프로그램 카운터로 제공하는 프로그램 카운터 생성로직과, 반복블럭명령이 포함된 프로그램을 저장하는 메모리로 구성된 프로세서구조에 있어서,
    반복 카운트값을 설정하는 제1과정과;
    메모리로부터 페치된 반복블럭 명령을 디코드하여 반복종료 및 반복시작 어드레스를 설정하고, 반복블럭의 제1명령을 페치하는 제2과정과;
    상기 제1명령을 디코드하여 실행하고, 다음의 제2명령을 페치하는 제3과정과;
    상기 제2명령의 메모리 어드레스가 반복종료 어드레스와 일치하는지 비교하는 제4과정과;
    제4과정에서 두 어드레스가 일치하면 상기 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령인지 체크하는 제5과정과;
    상기 제1명령이 프로그램의 실행순서를 비선형적으로 바꾸는 명령이면 상기 제2명령의 메모리 어드레스를 저장하고 반복 카운트값을 감소시키지 않는 제6과정으로 구성된 것을 특징으로 하는 프로세서의 데이터 처리방법.
  2. 제1항에 있어서, 상기 반복 카운트값은 반복블럭명령의 실행전에 프로세서 코어에 의해 로딩되는 것을 특징으로 하는 프로세서의 데이터 처리방법.
  3. 제1항에 있어서, 상기 제5과정은 메모리 어드레스가 반복종료 어드레스와 일치하면 반복시작 어드레스를 프로그램 카운터로 제공하여, 재차 반복블럭명령을 수행하는 과정을 추가로 포함하는 것을 특징으로 하는 프로세서의 데이터 처리방법.
  4. 삭제
  5. 제1항에 있어서, 상기 제6과정은 제1명령이 프로그램의 실행순서를 선형적으로 바꾸는 명령이면 제2명령의 메모리 어드레스를 저장하지 않고 반복 카운트값을 감소시키는 것을 특징으로 하는 프로세서의 데이터 처리방법.
KR1019990066242A 1999-12-30 1999-12-30 프로세서의 데이터처리방법 KR100347138B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019990066242A KR100347138B1 (ko) 1999-12-30 1999-12-30 프로세서의 데이터처리방법
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 (ko) 1999-12-30 1999-12-30 프로세서의 데이터처리방법

Publications (2)

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

Family

ID=19633384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990066242A KR100347138B1 (ko) 1999-12-30 1999-12-30 프로세서의 데이터처리방법

Country Status (1)

Country Link
KR (1) KR100347138B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100710220B1 (ko) * 2005-02-22 2007-04-20 엘지전자 주식회사 디지털 신호처리 방법

Also Published As

Publication number Publication date
KR20010058870A (ko) 2001-07-06

Similar Documents

Publication Publication Date Title
US5303355A (en) Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
JPH04313121A (ja) インストラクションメモリ装置
KR20020073233A (ko) 코프로세서 명령 실행 장치 및 방법
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
US7979783B2 (en) Error detection device and method for error detection for a command decoder
US20060218378A1 (en) Integrated circuit device
US9436466B2 (en) Blank bit and processor instructions employing the blank bit
KR100347138B1 (ko) 프로세서의 데이터처리방법
JP5233078B2 (ja) プロセッサ及びその処理方法
JPS61157946A (ja) マイクロコンピユ−タ
US5875323A (en) Processor using implicit register addressing
US5630158A (en) Central processing unit including inhibited branch area
US6266764B1 (en) Program controller for switching between first program and second program
US6026480A (en) Processor having bug avoidance function and method for avoiding bug in processor
WO2024029174A1 (ja) ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体
JP2721611B2 (ja) プログラマブルコントローラ
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
JP2721610B2 (ja) プログラマブルコントローラ
JPH05250156A (ja) Riscプロセッサ
JPS6242301B2 (ko)
KR950003882B1 (ko) 멀티 사이클 명령을 처리하는 데이타 정적 제어장치
JPH09185490A (ja) 数値演算装置及び数値演算方法
JPH05313890A (ja) アドレス演算回路
JPH09128237A (ja) プログラマブルコントローラ
JPH03164945A (ja) データ処理装置

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