KR100417398B1 - 디에스피의명령어블록반복처리방법 - Google Patents

디에스피의명령어블록반복처리방법 Download PDF

Info

Publication number
KR100417398B1
KR100417398B1 KR1019960039244A KR19960039244A KR100417398B1 KR 100417398 B1 KR100417398 B1 KR 100417398B1 KR 1019960039244 A KR1019960039244 A KR 1019960039244A KR 19960039244 A KR19960039244 A KR 19960039244A KR 100417398 B1 KR100417398 B1 KR 100417398B1
Authority
KR
South Korea
Prior art keywords
register
value
block
repeat
instruction
Prior art date
Application number
KR1019960039244A
Other languages
English (en)
Other versions
KR19980020676A (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 KR1019960039244A priority Critical patent/KR100417398B1/ko
Priority to US08/927,583 priority patent/US5960210A/en
Publication of KR19980020676A publication Critical patent/KR19980020676A/ko
Application granted granted Critical
Publication of KR100417398B1 publication Critical patent/KR100417398B1/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
    • 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/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

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

본 발명은 디지탈신호 처리기(DSP)에서 오버헤드 발생을 없앤 인스트럭션 블록 리피트 기술에 관한 것으로, 종래의 명령어 블록 리피트수행 방법에 있어서는 반복 연산식을 많은 데이타에 반복적으로 적용하고 이를 실시간내로 처리하는 특징을 갖는 디에스피에서 프로그램의 실행 속도를 저하시키는 오버헤드가 존재하지 않도록 하는 수단이나 알고리즘이 구비되어 있지 않아 실시간 처리에 어려움이 있었다
따라서, 본 발명은 이를 해결하기 위하여, 카운터의 카운트값을 감소시키는 동작은 리피트 블록의 마지막 명령어가 실행될때 처리하고, 스택(8),(3),(6)을 팝하는 동작은 리피트 블록의 첫번째 명령어가 실행될때 처리되도록 하였다. 또한, 리피트명령어를 만나면 구현에 필요한 값을 스택(8),(3),(6)에 저장한 후 내부 블록내의 명령어들이 반복 횟수만큼 실행되도록 하고, 내부 리피트 블록의 카운터인 NUM2를 감소시켜 나가다가 NUM2가 “1”에서 “0”으로 감소되면 “명령어2”가 실행될때 스택의 값을 팝하여 리피트 블록의 마지막에서는 더이상 리피트 명령어에 의한 제어가 아닌 일반적인 프로그램의 제어라고 인식하도록 하였다.

Description

디에스피의 명령어블록 반복처리 방법
본 발명은 디지탈신호 처리기(DSP: Digital Signal Processor)에서 오버헤드 발생을 없앤 인스트럭션 블록 리피트(Instruction Block Repeat) 기술에 관한 것으로, 특히 프로그램의 실행속도를 저하시키는 오버헤드가 발생되지 않도록 프로세서 내에서 하드웨어적으로 설계된 중첩가능한 리피트 블록을 추가하고, 이를 이용하여 하나의 명령어로 실행이 가능하도록 한 디에스피의 명령어블록 반복처리 방법에 관한 것이다.
통상적으로, 디에스피는 디지탈 형태로 표현된 신호에 대해 수학적인 처리를 수행하는 프로세서로서 이는 비디오나 사운드, 스피치(Speech)등의 분야에 널리 사용되고 있으며, 실시간내 처리가 필수적으로 요구되는 특징이 있다.
그런데, 비디오나 사운드 스피치등 디에스피의 응용분야에서 일반적으로 활용되는 알고리즘들은 그 자체가 반복적인 연산식을 많이 포함하고 있을 뿐만 아니라 하나의 연산식을 많은 입력 데이타에 반복적으로 적용하게 되어 있다.
따라서, 디에스피의 코어(Core)를 디자인할때 추가적인 오버헤드 없이 여러 명령어(instruction)를 반복적으로 처리할 수 있도록 하드웨어적인 수단을 구비하고, 프로그램어로 하여금 하나의 명령어를 이용하여 실행시킬 수 있도록 하는 것이 요구되고 있는 추세이다. 일예로써, TI(texas Instrument)사의 DSP 코어에서는 이를 위해 RPTB라는 명령어가 제안되었다.
블록 리피트(repeat) 명령어는 여러개의 명령어를 반복 실행하도록 하는 명령어로서 하기와 같은 포맷을 갖는다.
이와 같은 명령어를 구현하기 위하여, 프로세서는 여러 명령어의 시작과 끝을 표시하는 주소값과 이 블록을 몇번 반복할 것인가를 나타내는 반복횟수를 레지스터와 같은 기록매체에 저장하고 있어야 한다.
현재, TI사의 디에스피 코어(TMS32OC2x시리즈, TMS320C5x시리즈)에서는 블록리피트를 중첩하여 사용할 수 없게 되어 있으므로 만약 프로그램어가 다중의 블록 리피트를 사용하고자 하는 경우 한개의 블록 리피트를 제외한 나머지 블록의 반복 구현을 위해 필요한 세개의 값 즉, “반복횟수”, “시작주소”, “끝주소”를 프로그래밍적으로 리피트블록이 시작되기 전에 임의의 저장 장소에 저장하고, 블록의 마지막 명령어 실행 후 이를 저장 장소에서 읽어내어(memory reference) 해당 레지스터의 값을 수정해야 한다.
2중 블록 리피트 프로그래밍시 내부의 블록을 리피트 블록으로 처리한 경우 TMS320C5x 어셈블리어로 구현한 프로그램의 예는 다음과 같다.
상기 TMS320C5x의 프로그램에서 ②부분이 NUM+1회 반복되는데, ②가 한번 실행될 때 마다 ①부분이 NUM2+1회 반복적으로 실행된다. 이때, 반복횟수, 시작주소,끝주소를 임의의 저장장소에 저장시킨 후 다시 로딩하는데 필요한 명령(instruction)이 6개이므로 오버헤드는 6 ×(NUM+1)이 된다.
그러나, 이와 같은 종래의 명령어 블록 리피트수행 방법에 있어서는 반복 연산식을 많은 데이타에 반복적으로 적용하고 이를 실시간대로 처리하는 특징을 갖는 디에스피에서 프로그램의 실행 속도를 저하시키는 오버헤드가 존재하지 않도록 하는 수단이나 알고리즘이 구비되어 있지 않아 실시간 처리에 어려움이 있었다.
따라서, 본 발명의 목적은 반복연산식을 않은 데이타에 반복적으로 적용하고 이를 실시간내에 처리하는 디에스피에 있어서 프로그램의 실행속도를 저하시키는 오버헤드가 발생되지 않도록 프로세서 내에서 하드웨어적으로 설계된 중첩가능한 리피트 블록을 추가하고 하나의 명령어로 실행이 가능하도록 한 디에스피의 명령어 블록 반복처리 방법을 제공함에 있다.
상기의 목적을 달성하기 위한 본 발명 디에스피의 명령어블록 반복처리 방법은 리피트 블록명령어가 입력될때 스택 푸쉬를 수행함과 아울러 리피트 블록내의 명령어의 실행중임을 표시하기 위하여 제3레지스터(5)의 값을 하나 증가시킨 후 실행 프로그램의 주소를 저장하는 제1레지스터(2)의 값을 하나 증가시키는 제1과정(S1-S3)과; 리피트 블록명령어가 입력되지 않을때 상기 제3레지스터(5)의 값을 “1”과 비교하여 그대로 상기 제1과정으로 진행하거나, 리피트 블록의 끝주소를 저장하고 있는 제4레지스터(7)의 값과 상기 제1레지스터(2)의 값을 비교하여 상기 제1과정으로 진행하거나 리피트 블록의 반복횟수를 저장하는 제5레지스터(9)의 값을 하나 감소시키는 제2과정(S4-S6)과; 상기 제5레지스터l(9)의 값이 “0”인지를 확인하여 스택을 팝처리함과 아울러 상기 제3레지스터(5)의 값을 하나 감소시킨 후 상기 제1과정으로 진행하거나, 제2레지스터(4)에 저장된 리피트 블록의 시작 주소를 상기 제1레지스터(2)에 저장하는 제3과정(S7-S9)으로 이루어 진다.
제1도는 본 발명 명령어블록 반복처리 방법이 적용되는 디에스피의 블록도로서 이에 도시한 바와 같이, 비교기(10)의 제어를 받아 제1레지스터(2)의 출력이나 제2레지스터(4)의 출력을 선택하는 멀티플렉서(1)와; 실행 프로그램의 주소를 저장하는 제1레지스터(2)와; 명령어 리피트블록의 시작주소를 저장하기 위한 PASR 스택(3) 및 제2레지스터(4)와; 현재 리피트 블록내의 명령어의 실행중임을 표시하기 위한 제3레지스터(5)와; 명령어 리피트블록의 끝 주소를 저장하기 위한 PEAR 스택(6) 및 제4레지스터(7)와; 명령어 리피트블록의 반복 횟수를 저장하기 위한 BRCR 스택(8) 및 제5레지스터(9)와; 상기 각 레지스터(4),(5),(7),(9)의 출력값을 근거로 현재 주소가 리피트 블록의 끝인지를 비교 판단하여 그 판단결과에 따른 제어신호를 상기 멀티플렉서(1)측으로 출력하는 비교기(10)로 구성한 것으로, 이와 같이 구성한 본 발명의 작용 및 효과를 첨부한 제2도 및 제3도를 참조하여 상세히 설명하면 다음과 같다.
단일 리피트 블록의 구현방법은 다음과 같다
상기 ①의 시점에서 명령어의 반복 횟수와 블록의 시작, 끝 주소를 각각의 레지스터(9),(4),(6)에 저장한 후 ④의 시점에서 “명령어4”가 실행될때, 카운터에 저장된 반복횟수가 “0”이 아니면 카운터의 카운트값을 감소시키면서 다음에 “명령어1”이 실행되도록 주소를 조정하고, 반복 횟수가 “0”이면 다음에 “명령어5”가 실행되도록 주소를 조정한다.
이와 같이 명령어 리피트 블록이 중첩되는 경우, 이를 처리하기 위해 세개의 값을 저장할 스택(Stack)을 필요로 한다. 즉, ①과 ② 시점에서 세 값을 각각의 스택(8),(3),(6)에 저장하고, ③과 ④ 시점에서 카운터값을 확인하여 그 값이 “0”인 경우 현재 스택의 맨 위에 있는 값(이미 모두 실행이 끝난 반복 블록을 위한 값)을 없애고(pop하고), 이전에 처리하던 리피트 블록에 대한 값으로레지스터(9),(4),(7) 값들을 수정한다.
중첩된 리피트 블록 처리시 가장 중요한 문제는 ③과 ④의 위치가 같은 경우 즉, 여러개의 리피트 블록이 한 위치에서 끝나는 경우로서 의 예를 들면 다음과 같다.
이중으로 중첩된 리피트 블록의 경우 ③의 위치에 있는 “명령어3”이 실행되는 시점에서 현재 처리중인 내부 레지스터 블록의 카운터 값이 “0”이면, 스택값을 팝(pop)하고 다음 값으로 카운터를 셋팅한 다음 이를 감소(외부 리피트 블록이 한번 실행되었기 때문)시키는 작업이 동시에 이루어지도록 한다.
일반적인 중첩 리피트 블록인 경우, 같은 위치에서 끝나는 리피트 블록의 수를 미리 예측할 수 없으므로 n개의 상기 과정 즉, “스택값을 팝하고 다음 값으로 카운터를 셋팅한 다음 이를 감소시키는 작업”을 동시에 처리하는 것이 불가능하다.
상기에서 제시한 구현방법의 문제점은 블록의 마지막 명령어를 실행하는 사이클에서 블록 리피트용 카운터의 카운트값을 감소시키는 것과 스택(8),(3),(6)을팝하는 작업을 한꺼번에 수행시키기 때문에 발생되는 것이므로 마지막 명령어 처리시 실행되는 작업을 감소시킨다면 이 문제는 자연스럽게 해결될 것이다.
따라서, 이를 해결하기 위하여 본 발명에서는 카운터의 카운트값를 감소시키는 동작은 리피트 블록의 마지막 명령어인 “명령어3”, “명령어4”가 실행될때 처리하고, 스택(8),(3),(6)을 팝하는 동작은 리피트 블록의 첫번째 명령어인 “명령어1”, “명령어2”가 실행될때 처리되도록 하였다.
리피트 명령어를 만나면 구현에 필요한 값을 스택(8),(3),(6)에 저장(①', ②' 참조)하고, 이후, 내부 블록내의 명령어들이 반복 횟수만큼 실행된다. 내부 리피트 블록의 카운터인 NUM2를 감소시켜 나가다가 NUM2가 “1”에서 “0”으로 감소되면 “명령어2”가 실행될때 스택의 값을 팝한다
결국, 리피트 블록의 마지막에서는 더이상 리피트 명령어에 의한 제어가 아닌 일반적인 프로그램의 제어라고 인식하게 되는데, 왜나하면 명령어 블록이 끝난후 실행될 프로그램의 주소가 블록의 시작주소가 아닌 블록의 끝 주소이기 때문이다.
명령어 블록의 마지막에서는 항상 하나의 리피트 블록에 대해 카운터의 다운카운트 동작만 발생되므로 n개의 리피트 블록이 같은 위치에서 끝나더라도 다른 오버헤드 없이 자연스럽게 중첩되며, 중첩의 갯수는 스택(8),(3),(6)의 용량에 따라 결정된다.
이상에서 상세히 설명한 바와 같이, 본 발명은 프로그램의 실행 속도를 저하시키는 오버헤드가 발생하지 않도록 프로세서 내에서 하드웨어적으로 설계된 중첩가능한 리피트 블록을 추가하고, 이를 이용하여 카운터의 카운트값을 감소시키는 동작은 리피트 블록의 마지막 명령어가 실행될때 처리하며, 스택을 팝하는 동작은 리피트 블록의 첫번째 명령어가 실행될때 처리되도록 함으로써 디에스피의 실시간 처리에 이바지 할 수 있는 효과가 있다.
제1도는 본 발명의 명령어블록 반복처리 방법이 적용되는 디에스피의 블록도
제2도는 본 발명의 명령어블록 반복처리 방법에 대한 설명도.
제3도는 본 발명의 명령어블록 반복처리 방법에 대한 신호 흐름도.
*** 도면의 주요부분에 대한 부호의 설명 ***
1 : 멀티플렉서 2,4,5,7,9 : 레지스터
3 : PASR 스택 6 : PEAR 스택
8 : BRCR 스택 10 : 비교기

Claims (1)

  1. 디에스피에서 리피트 블록명령어가 입력될 때, 스택 푸쉬를 수행함과 아울러 리피트 블록내의 명령어의 실행중임을 표시하기 위하여 제3레지스터(5)의 값을 하나 증가시킨 후 실행 프로그램내의 주소를 저장하는 제1레지스터(2)의 값을 하나 증가시키는 제1과정과; 리피트 블록명령어가 입력되지 않을때 상기 제3레지스터(5)의 값이 “1”인지를 확인하여 그대로 상기 제1과정으로 진행하거나, 리피트 블록의 끝주소를 저장하고 있는 제4레지스터(7)의 값과 상기 제1레지스터(2)의 값을 비교하여 상기 제1과정으로 진행하거나 리피트 블록의 반복횟수를 저장하는 제5레지스터(9)의 값을 하나 감소시키는 제2과정과; 상기 제5레지스터(9)의 값이 “0”인지를 확인하여 스택을 팝처리함과 아울러 상기 제3레지스터(5)의 값을 하나 감소시킨 후 상기 제1과정으로 진행하거나, 제2레지스터(4)에 저장된 리피트 블록의 시작 주소를 상기 제1레지스터(2)에 저장하는 제3과정으로 이루어지는 것을 특징으로 하는 디에스피의 명령어블록 반복처리 방법.
KR1019960039244A 1996-09-11 1996-09-11 디에스피의명령어블록반복처리방법 KR100417398B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019960039244A KR100417398B1 (ko) 1996-09-11 1996-09-11 디에스피의명령어블록반복처리방법
US08/927,583 US5960210A (en) 1996-09-11 1997-09-11 Nested-loop-specialized circuitry for repeatedly performed arithmetic operations in digital signal processor and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960039244A KR100417398B1 (ko) 1996-09-11 1996-09-11 디에스피의명령어블록반복처리방법

Publications (2)

Publication Number Publication Date
KR19980020676A KR19980020676A (ko) 1998-06-25
KR100417398B1 true KR100417398B1 (ko) 2004-04-03

Family

ID=19473312

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960039244A KR100417398B1 (ko) 1996-09-11 1996-09-11 디에스피의명령어블록반복처리방법

Country Status (2)

Country Link
US (1) US5960210A (ko)
KR (1) KR100417398B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100252136B1 (ko) * 1997-12-29 2000-04-15 윤종용 디지털 신호 처리 칩에서의 반복 구문 실행 제어회로
US6990570B2 (en) * 1998-10-06 2006-01-24 Texas Instruments Incorporated Processor with a computer repeat instruction
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6845443B2 (en) * 1999-12-30 2005-01-18 Hynix Semiconductor Inc 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
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
JP2001337845A (ja) * 2000-05-30 2001-12-07 Mitsubishi Electric Corp マイクロプロセッサ
DE10254658A1 (de) * 2002-11-22 2004-06-03 Philips Intellectual Property & Standards Gmbh Mikrocontroller und zugeordnetes Verfahren zum Abarbeiten der Programmierung des Mikrocontrollers
KR100710220B1 (ko) * 2005-02-22 2007-04-20 엘지전자 주식회사 디지털 신호처리 방법
US8728763B2 (en) 2009-08-11 2014-05-20 Response Genetics Methods, primers, probes and kits useful for the detection of BRAF mutations
US9170811B2 (en) 2013-01-09 2015-10-27 King Fahd University Of Petroleum And Minerals Structured control instruction fetch unit
US10908901B2 (en) * 2017-06-29 2021-02-02 Texas Instruments Incorporated Streaming engine with early exit from loop levels supporting early exit loops and irregular loops

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4158227A (en) * 1977-10-12 1979-06-12 Bunker Ramo Corporation Paged memory mapping with elimination of recurrent decoding
US4947316A (en) * 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
GB2200483B (en) * 1987-01-22 1991-10-16 Nat Semiconductor Corp Memory referencing in a high performance microprocessor
US5727194A (en) * 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier

Also Published As

Publication number Publication date
US5960210A (en) 1999-09-28
KR19980020676A (ko) 1998-06-25

Similar Documents

Publication Publication Date Title
KR100417398B1 (ko) 디에스피의명령어블록반복처리방법
US5596760A (en) Program control method and program control apparatus
US4833640A (en) Register bank change including register to register transfer in a data processing system
Heisinger et al. QuAPI: Adding Assumptions to Non-Assuming SAT & QBF Solvers.
JP2758624B2 (ja) マイクロプログラムの調速方式
KR0170288B1 (ko) 메모리 엑세스 장치 및 그 방법
KR100246465B1 (ko) 마이크로프로세서 스택 명령어의 수행사이클을 줄이기 위한 장치 및 그 방법
JPH01284969A (ja) イテレーション演算回路
JPH04308936A (ja) テキスト最適化方式
JPS5999552A (ja) マイクロコンピユ−タ
JPH04316127A (ja) 情報処理装置
JPH04314130A (ja) 直接編成ファイルへの入出力方法
JPS59189407A (ja) シ−ケンス制御装置
JPH03228133A (ja) プログラム制御回路
JPS6238748B2 (ko)
JPH07129408A (ja) 言語処理プログラムの実行方式
JP2000187591A (ja) ループ処理方式
JPS63233471A (ja) 回帰的なベクトル・メモリ・アクセスの最適化方式
JPS61100836A (ja) 移動命令論理比較命令処理方式
JPH0619705A (ja) パイプライン制御方式
JPH05250156A (ja) Riscプロセッサ
JPH031238A (ja) 情報処理装置のコンパイラ
JPS6074023A (ja) 変数チエツク方式
JPH07175656A (ja) 代入用アドレス保持装置
JPS59173874A (ja) ベクトル処理装置

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee