KR100623604B1 - 데이터 처리장치 및 그의 데이터 처리 방법 - Google Patents

데이터 처리장치 및 그의 데이터 처리 방법 Download PDF

Info

Publication number
KR100623604B1
KR100623604B1 KR1020017006111A KR20017006111A KR100623604B1 KR 100623604 B1 KR100623604 B1 KR 100623604B1 KR 1020017006111 A KR1020017006111 A KR 1020017006111A KR 20017006111 A KR20017006111 A KR 20017006111A KR 100623604 B1 KR100623604 B1 KR 100623604B1
Authority
KR
South Korea
Prior art keywords
word
bit
data
data processing
value
Prior art date
Application number
KR1020017006111A
Other languages
English (en)
Other versions
KR20010092743A (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
Priority claimed from GB9825543A external-priority patent/GB2343970A/en
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20010092743A publication Critical patent/KR20010092743A/ko
Application granted granted Critical
Publication of KR100623604B1 publication Critical patent/KR100623604B1/ko

Links

Images

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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE

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)
  • Complex Calculations (AREA)

Abstract

전체적인 동작에서는, Q31 누적 연산과 함께 Q15씩 곱셈을 실행하기 위해서, 다음과 같이 처리를 진행한다. 초기에 레지스터 뱅크(8)로부터의 Q15값을 버스 A와 버스 B 상에서 판독하여, 입력으로서 단일 사이클 정수 곱셈기(16)에 공급한다. Q30형 형태인 결과를 레지스터 뱅크(8)로 피드백 시킨다. 연속적인 처리 사이클을 따라 새로운 명령어중 하나를 실행하여(예: QDADD 명령어) A 버스상의 곱셈의 Q30형 결과와 B 버스 상의 Q31누적 값을 판독한다. 그래서, Q30형 값은, 1만큼 왼쪽으로 시프트되거나 시프팅 및 포화부(26)에 의해 포화되어 하나의 입력으로서 산술 논리장치(22)에 공급된다.
데이터 처리 시스템, 포화부, Q15 산술, Q31 산술, 곱셈기, 레지스터 뱅크

Description

데이터 처리장치 및 그의 데이터 처리 방법{DATA PROCESSING APPARATUS AND DATA PROCESSING METHOD THEREOF}
본 발명은 데이터 처리 시스템에 관한 것이다. 특히, 본 발명은 포화 산술연산을 실행하는데 적합한 산술연산을 실행하는 데이터 처리 시스템에 관한 것이다.
많은 DSP 알고리즘은, 때때로 Q15 산술과 Q31 산술로서 알려진 것을 사용한다. 그 Q15 수는, 보통 16-비트 2의 보수 정수이지만, 그 정수를 215로 나눈 것을 나타낸 것으로 간주한다. 16-비트 2의 보수 정수는 -215 부터 +215-1까지의 수를 나타내므로, Q15는 -1 부터 +(1-2-15)까지의 수를 나타낸다.
이와 유사하게, Q31 수는, 231로 나눈 것으로서 간주된 보통 32-비트 2의 보수 정수이고, -1 부터 -(1-2-31)까지의 수를 나타낼 수 있다. 유사하게, (N+1)-비트 QN 수를 임의의 다른 N값으로 정의할 수 있다.
Q15와 Q31 산술의 중요한 특징은, "포화하는(saturating)" 것이다. 수학적인 산술 연산 결과가 최대 양의 값(+1-2-N)을 넘을 경우, 그 포화된 결과는 최대 양의 값이고, 이와 유사하게, 그 수학적인 결과가 -1 미만일 경우, 그 포화된 결과는 -1이다. 예를 들어, Q15 산술에서, A=0x8000(-1을 나타냄)과 B=0xC000(-0.5를 나타냄)일 경우, A와 B를 가산하면 보통 0x4000의 16-비트 2의 보수 결과라기 보다 0x8000(-1을 나타냄)의 결과를 산출할 것이다.
DSP 알고리즘에서의 매우 바람직하고 일반적으로 일어나는 연산은, "곱셈-누적", 즉 2개의 오퍼랜드 곱셈 다음에 3번째 오퍼랜드를 가산한다:
결과=(A*B)+C
포화된(때로는 클리핑된(clipped) 것처럼 알려진) 산술에 그러한 곱셈-누적 명령어를 제공하기를 바랄 경우 중요한 문제가 일어난다. 특히, 이는, QN 수에 관한 산술을 실행할 때의 경우이다.
여러 가지 다른 형태의 명령어를 포화된 및 비포화된 형태의 양쪽에 포함시키기 위해서, 상당한 양의 옵코드(opcode) 비트 공간을 필요로 한다. 더욱이, 단일 사이클 곱셈 성능을 제공하려고 시도하는 경우, 포화 및 관련된 조정을 하기 위한 요구사항을 해결해야 하는 추가적인 부담으로, 최악의 경우 포화 곱셈 명령어가 클록 속도를 바람직하게 제한하지 못한다.
영국 공개 특허출원 GB-A-2,317,465에는, 하나의 명령어에 완전 Q15 곱셈-누적 연산, 예를 들면, 임의로 기준화된 dest=SAT(acc+SAT(2*srcl*src2))와, 임의로 기준화된 dest=SAT(acc-SAT(2*srcl*src2))를 실행하기 위한 곱셈 이중 명령어를 제공하는 코프로세서가 개시되어 있다.
일 국면에 따르면, 본 발명은,
데이터 처리 명령어에 응답하여 처리 제어신호를 발생하는 명령 디코더와,
상기 처리 제어신호에 의해 제어되고, 데이터 오퍼랜드 워드에 대하여 데이터 처리연산을 실행하는 처리 로직(6)을 포함하고,
상기 명령 디코더(4)는 제 1 명령어에 응답하여, 상기 처리 로직(6)을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제 2의 N-비트 데이터 오퍼랜드 워드 Q에 대하여 데이터 처리 연산을 실행하여, 다음 식으로 주어지는 N-비트의 결과 데이터 워드 R을 발생하며,
R=Sat(Fun(P)+Q),
여기서, 여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는 적어도 N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양에서 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리장치를 제공한다.
본 발명은, 포화 곱셈-누적 연산의 요구사항에 의해 처리하는데 적합한 특정 목적용 명령어의 제공으로 중요한 이점을 갖는다는 것을 알 수 있다. 특히, 원하는 표준 단일 사이클 곱셈을 위한 현재의 요구사항은, 누적 연산을 실행하는 연속적인 명령어에 의해 사용된 사이클에서 그 산술의 포화 성질이 더욱 용이하게 포함되면서 처리하는데 요구된 조정으로 완화된다. 또한, 새로운 명령어는, 일부 곱셈 명령어의 포화 버전을 정의할 필요성을 대체할 수 있어서 옵코드 비트 공간과 포화 산술을 지원하는데 필요한 다른 오버헤드를 감소시킨다. 끝으로, 이 새로운 명령어를, 다른 국면의 비포화 및 포화 산술에 의해 처리할 그 시스템내에 이미 구성되는 것 상에 하드웨어를 거의 추가하지 않고서 실행할 수 있다.
새로운 명령어를 실행하는데 사용된 하드웨어가 많은 다른 형태일 수 있다는 것을 알 수 있을 것이다. 최종의 결과 N-비트 데이터 워드를 생성하는데 필요한 다른 연산은, 여러 가지 다른 방식으로 그룹을 지어서 다른 회로블록에 의해 실행할 수 있다. 단일 명령어를 사용하여 상기 주어진 것과 같은 마지막 값을 갖는, 결과 N-비트 데이터 워드를 생성하는 이들의 여러 가지 다른 방법은, 본 발명의 모든 실시예이다.
포화 곱셈-누적 연산에서 사용하기 위한 상술한 명령어와 유사한 구성에서는, 유사한 명령어를 포화 곱셈-감소 연산을 지원하기 위해 제공한다.
본 발명의 명령어에 적용된 시프트 양은 여러 가지 다른 값이다. 그러나, 특히, 시프트된 워드가 제 1의 N-비트 데이터 오퍼랜드 워드의 두배인 시프트 양이 유용하다.
2개의 Q15 수에 관해 정수 곱을 실행하면, 보통 그 발생된 결과는, 통상의 32-비트의 부호가 부가된 2의 보수 값이 230으로 나누어지는 것으로서 간주되는 경우 32-비트 "Q30형"수이어서, -2부터 +(2-2-30)까지의 수를 나타낸다. 또한, Q30형 수는, 30개의 2진 자리를 갖는 부호가 부가된 32-비트 고정 소수점 수일 수 있다. 그러나, 이러한 경우, 처리하는데 필요한 것은, Q31 수이다. 이 문제점을 해결하기 위해서, 본 발명의 명령어는, 다음의 표준 정수 곱과 이 정수 곱의 결과를 두배로 하는데 사용된 시프트 양을 실행하여서 그 명령어가 포화되고 조건으로서 누적 또는 감소를 요하기에 앞서 그 결과를 Q30형 형태에서 Q31 형태로 변화시킨다. 그래서, 포화 산술 지원을 하는데 필요한 문제에 관한 조정 중의 하나는, 곱셈 사이클 종단에 의해 제공되어야 하는 것보다 연속적인 명령어 내에 포함되는 정수 곱의 결과에 대한 조정으로 구성될 수 있다.
포화를 실행하기 위한 로직 회로는, 많은 다른 형태일 수 있다. 그러나, 상기 시프트된 워드를 포화하는 본 발명의 바람직한 실시예에서는, 상기 N-비트 데이터 오퍼랜드 워드 P의 소정 특성을 검출하여, 검출된 경우, 상기 시프트된 값을 허용값의 범위를 갖는 각각의 종점값으로 바꾸는 것을 포함한다.
이 특징으로 알 수 있는 것은, 일부의 경우, 제 1의 N-비트 데이터 오퍼랜드 워드 P에 관해 실행하려고 하는 조작이 상대적으로 제한된 형태이기 때문에 그 제 1의 N-비트 데이터 오퍼랜드 워드 P의 특성을 검출하여서 포화를 제공할 수 있어서 포화를 요구하는 오버플로우 또는 언더플로우가 일어나도록 하는 경우는 특히 하드웨어 요구사항이 전체적으로 감소가 되는 것이 검출되기도 한다는 것이다.
특히, 적용된 시프트 양이 제 1의 N-비트 데이터 오퍼랜드 워드 P를 두배로 할 경우, 포화의 필요성은 2개의 최상위 비트의 제 1의 N-비트 데이터 오퍼랜드 워드 P를 비교하여서 바람직하게 간단한 방법으로 검출할 수 있다.
Fun(X) 명령어에 대한 오버플로우 또는 언더플로우가 일어날 수 있는 상대적으로 제한된 범위의 경우와 비교하면, Sat(X)에 대한 오버플로우 또는 언더플로우는 아주 일반적으로 일어날 수 있어서, 본 발명의 바람직한 실시예는, X가 허용값 범위 외에 있는 경우 검출하여, 검출된 경우, X를 상기 N-비트 결과 데이터 워드 R을 발생하는 상기 허용값 범위의 각각의 종점값으로 바꾸는 것을 포함하는 것과 같은 것이다.
본 발명의 새로운 명령어는 그 자신의 권한에 있어서 이롭지만, 상술한 것처럼, 그들은, 제 3의 N/2-비트 데이터 오퍼랜드 워드 A와 제 4의 N/2-비트 데이터 오퍼랜드 워드 B를 곱하여서 제 1의 N-비트 오퍼랜드 데이터 워드를 발생하는 제 2의 명령어를 실행하기 위해 곱셈기를 제공하는 실시예에 특히 매우 적합하다.
어떠한 종류의 오퍼랜드에 대해서도 본 발명의 명령어를 사용하는 것이 가능하다. 그러나, 그 명령어는, 상기 제 1의 N-비트 오퍼랜드 데이터 워드 P, 상기 제 2의 N-비트 오퍼랜드 데이터 워드 Q 및 상기 결과 N-비트 데이터 워드 R이, -1≤P<+1, -1≤Q<+1 및 -1≤R<+1이고, Sat(X)가 범위 -1≤X<+1에 있도록, 최상위 비트위치의 바로 우측에 소수점이 있는 부호가 부가된 고정 소수점 데이터 워드인 실시예에서 특히 유용하다.
상술한 것처럼, 그러한 QN형 오퍼랜드는, 그 데이터 처리 시스템의 나머지에 관해 부적당한 충돌없이 본 발명의 명령어에 의해 효과적으로 제공될 수 있는 조정과 포화를 요구한다.
제 1의 N-비트 데이터 오퍼랜드 워드 P의 가장 일반적으로 유용한 값은, N/2-비트씩 부호 곱셈으로 생성할 수 있는 값들이다. 그러나, 본 발명의 바람직한 실시예는, X의 모든 N-비트 가능값을 시프트하여 포화하도록 동작하는 Fun(X)의 기능성을 확대시킨다.
본 발명은, N이 여러 가지 다른 값을 갖는 시스템에서 사용할 수 있다. 그러나, 본 발명이 특히 유용한 형태의 DSP 연산은, N=32와 같은 N 값을 필요로 한다.
상세한 구성요소를 포함하는 시스템으로서 본 발명을 구현할 수 있다는 것을 알 수 있지만, 집적회로로서 데이터 처리 장치를 구현하는 것이 매우 바람직하다.
다른 국면에 따르면, 본 발명은,
데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 단계와,
상기 처리 제어신호의 제어 하에서 데이터 오퍼랜드 워드에 대하여 데이터 처리 연산을 실행하는 단계를 포함하는 데이터 처리장치의 데이터 처리방법에 있어서,
제 1 명령어에 응답하여, 상기 처리 로직(6)을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제2의 N-비트 오퍼랜드 워드 Q에 대하여 데이터 처리연산을 실행하여, 다음 식으로 주어지는 N-비트 결과 데이터 워드 R을 발생하고,
R=Sat(Fun(P)+Q),
여기서, Sat(X)는,포화된 값 X를 복귀시키는 함수이고, Fun(X)는, 적어도N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리방법을 제공한다.
또한, 본 발명의 보완 방법에 따른 국면은, 명령어가 가산 연산보다 감산을 실행하는 것을 제공한다.
본 발명의 실시예를, 첨부도면을 참조하여 실시예에 의해서만 설명하겠다.
도 1은 집적회로 내부에 있는 명령 디코더와 처리 로직을 나타내고,
도 2, 도 3 및 도 4는 포화 산술을 지원하기 위해 제공된 명령어의 연산을 나타낸 흐름도이다.
도 1은 명령 디코더(4)와 처리 로직(6)을 포함한 집적회로(2)(영국, 캠브리지 ARM사에서 제조된 ARM9TDMI 마이크로프로세서의 부분과 유사함)의 부분을 나타낸다. 그 처리 로직(6)은 많은 다른 별도의 기능 소자로 구성된다. 레지스터 뱅크(8)는 조작하려고 하는 데이터 오퍼랜드 워드(P, Q)를 저장한다. 이들 워드를 레지스터 뱅크(8)로부터 판독하여 멀티플렉서(10, 12, 14)를 통해 그 처리 로직(6)내에 있는 여러 가지 다른 처리부에 공급한다. 정수 곱셈기(16)는 기능 가운데에서 부호가 부가된 정수 곱셈을 실행하도록 구성된다. 가산기(18)는, 비포화 곱셈-누적 연산을 실행하고, 곱셈기의 결과를 자리 올림 보류(carry-save)에서 2의 보수 포맷으로 변환하도록 구성된다. 또한, 시프터(shifter, 20)와 산술 논리장치(22)가 구성되어 있다. 상술한 처리 로직(6)의 기본 구성요소는 일반적으로 공지된 것이다. 명령 디코더(4)로부터의 제어신호(24)를, 그 처리 로직(6)내에 있는 여러 가지 소자에 공급하여 그들의 동작을 제어하고 조정한다. 특히, 그 명령 디코더가 하나의 명령어를 디코딩할 때, 제어신호(24)를 출력하여 그 처리 로직(6)내의 여러 가지 멀티플렉서를 스위칭시켜 원하는 데이터 경로를 선택하고, 그 처리 로직(6)내의 여러 가지 처리 장치를 활성화시켜 배열하여 그 디코딩된 명령어에 의해 특정 연산을 실행한다. 명백하게 하기 위해, 개개의 구성요소를 명령 디코더에 합치는 신호선을 도면에서 생략하였다.
포화 산술(QDADD, QDSUB 및 QDRSB)용 추가 명령어를 지원하기 위해서, 시프팅 및 포화부(26)는 산술 논리장치(22)의 앞에 있고, 완전(full) 포화부(28)는 산술 논리장치(22)가 동작한 후 다음 파이프라인 단계에서 레지스터 뱅크(8)까지의 피드백 경로상에 구성된다. 동작에 있어서, 먼저, 시프팅 및 포화부(26)는, 이 시프팅 및 포화부로의 32-비트 데이터 워드 입력 중 최상위 2비트가 같지 않은지를 검사하여 판단한다. 이 조건을 검출할 경우, 그 입력 데이터 워드가 왼쪽 시프트에 의해 Q31 워드로 변환되어 있는 Q30형 워드를 나타낼 때 1비트만큼의 왼쪽 시프트로 오버플로우 또는 언더플로우가 일어날 것이다. 2개의 최상위 비트가 "01"일 경우, 시프팅 및 포화부(26)는 허용값 범위의 최대 종점을 나타내는 0x7FFFFFFF를 출력한다. 또한, 2개의 최상위 비트가 "10"일 경우, 시프팅 및 포화부(26)는 허용값 범위의 최소 종점을 나타낸 0x80000000를 출력한다. 그 조건이 검출되지 않을 경우, 시프팅 및 포화부(26)는 입력 2진 데이터 값의 두배에 해당하는 입력 2진 데이터 값을 1비트 위치만큼 왼쪽으로 시프트시킴으로써, Q15씩 수의 정수 곱에 의해 얻어진 Q30형 표시를 그 이상의 처리(예: 누적)과 포화에 요구되는 것과 같은 Q31 표시로 변형시킨다.
이 시프팅 및 포화부(26)는, 바이패스 루트가 구비되어서 디코딩되어 있는 특정 명령어가 이 동작을 요구하지 않을 때 명령 디코더(4)로부터의 적절한 제어신호(24)에 따라 동작을 끊을 수 있다. 또한, 시프팅 및 포화부(26)는 A버스 상에 위치하고, 이 버스는 보통 B버스가 시프터(20)를 포함하므로 B 버스에 비해 시간 제약이 거의 없다. 따라서, 시프팅 및 포화부(26)는, 어떠한 중요한 추가적인 시간 문제도 일으키지 않는다.
완전 포화부(28)는, 산술 논리장치(22)가 그 필요로 하는 가산 또는 감산을 실행한 후 사용하기 위한 리턴 경로상에 구성된다. 이때, 완전 포화부(28)는, 공지된 원리에 따라 산술 논리장치(22)에 의해 산출된 부호가 부가된 결과의 오버플로우 또는 언더플로우를 검출하여 그것을 허용 값 범위의 적절한 최대 또는 최소 종점 값으로 정정하도록 동작한다. 그 시프팅 및 포화부(26)처럼, 그 완전 포화부(28)는 바이패스 루트로 구성되어 있어서 포화가 요구되지 않을 때 적절한 제어신호(24)에 따라 동작을 끊을 수 있다. 이 완전 포화부(28)가 보통 가산 및 감산 명령어를 위해 아무것도 하지 않는 파이프라인 단계에 있기 때문에, 이는 어떠한 시간 문제도 추가하지 않는다. 그러나, 그것이 요구하는 것은, 포화 명령어의 결과가 바로 이어지는 명령어로 사용될 경우, 프로세서가 1 사이클 동안 인터록을 한다. 이때의 인터록을, 로드(load) 명령어에 의해 로딩된 값을 바로 이어지는 명령어로 사용할 경우 많은 마이크로프로세서 상에서 발생된 인터록과 유사한 방법으로 조정할 수 있다.
전체적인 동작에서는, Q31 누적 연산과 함께 Q15씩 곱셈을 실행하기 위해서, 다음과 같이 처리을 진행한다. 초기에 레지스터 뱅크(8)로부터의 Q15값을 버스 A와 버스 B 상에서 판독하여, 입력으로서 단일 사이클 정수 곱셈기(16)에 공급한다. Q30형 형태인 결과를 레지스터 뱅크(8)로 피드백 시킨다. 연속적인 처리 사이클을 따라 새로운 명령어중 하나를 실행하여(예: QDADD 명령어) A 버스상의 곱셈의 Q30형 결과와 B 버스 상의 Q31누적값을 판독한다. 그래서, Q30형 값은, 1만큼 좌로 시프트되거나 시프팅 및 포화부(26)에 의해 포화되어 하나의 입력으로서 산술 논리장치(22)에 공급된다. B 버스상의 Q31값은, 적절한 제어신호(24)를 사용하여 그 시프터(20)가 그 입력값을 시프트시키지 않고서 산술 논리장치(22)에 다른 입력으로서 공급된다. 그 시프팅 및 포화부(26)는, Q30형 값을 필요로 하는 포화된 Q31값으로 정정하고, 이것을 산술 논리장치(22)에 의해 B 버스 상의 Q31값에 가산한다. 그래서, 오버플로우 및 언더플로우 플래그와 그 레지스터 뱅크내로 다시 저장되기에 앞서 산술 논리장치(22)로부터의 다른 표준 조건을 검출하여서 Q31 포화에 요하는 완전 포화부(28)에 그 산술 논리장치(22)로부터의 출력을 공급한다. 가산을 하는 산술 논리장치(22) 대신에, 적절한 제어신호(24)에 의해 제어하여 QDRSB 명령어의 B 버스 값에서 A 버스 값을 감산시키거나 또는 QDSUB 명령어의 A 버스 값에서 B 버스 값을 감산시킬 수도 있다. 상기 명령 디코더로부터의 적절한 제어신호(24)에 따라 감산을 실행하기 위해 산술 논리장치의 구성을, 여러 가지 표준 방법으로 구현할 수도 있다.
위로부터 알 수 있는 것은, QDADD, QDSUB 및 QDRSB 명령어에 의해 실행된 연산이, 처리 로직내 여러 가지 기능부 사이에서 다른 방법으로 나누어진다는 것이다. 당업자는, 이러한 여러 가지 부간의 연산 분할이 다른 방법으로 일어나지만 동일한 종료 결과를 낸다.
도 2는 QDADD 명령어에서 실행된 처리 단계를 나타내는 흐름도이다. 단계 40에서는, 제 1의 32-비트 오퍼랜드 데이터 워드 중 최상위 2비트가 "01"인지를 검사한다. 그럴 경우, 1만큼 좌로 시프트로 오버플로우가 되어서 단계 42에서는 그 값을 최대 허용 양의 값(+1-231)으로 설정하는데 사용한다. 또한, 단계 44에서는, 2개의 최상위 비트가 왼쪽 시프트로 언더플로우가 되는 것을 나타내는 "10"인지를 검사한다. 이 경우에, 검출되면, 단계 46에서는 그 값을 최소 허용값 -1로 설정한다.
오버플로우 또는 언더플로우 조건도 검출되지 않을 경우, 단계 48에서는 1비트 위치만큼 제 1의 32-비트 오퍼랜드 데이터 워드를 좌로 시프트하여서, 그것이 무슨 수를 나타내는지를 그것을 Q30형 형태에서 Q31 형태로 변환한다. 단계 40 내지 48의 동작은, 시프팅 및 포화부(26)에 의해 제공된 함수와 앞서 설명한 Fun(X) 함수에 대응한다.
단계 50에서는 가산을 실행한다. 이 가산은 도 1에서의 산술 논리장치(22)에 의해 실행된 가산에 대응한다.
단계 52와 54에서는, 그 추가 단계 50에서 일어나는 포화 값에서 오버플로우를 검출하여 처리한다. 또한, 단계 56과 58에서는, 언더플로우를 처리한다. 오버플로우 또는 언더플로우도 검출되지 않을 경우, 정정하지 않는다. 단계 60에서는, 레지스터 뱅크(8)내의 레지스터 내로 QDADD 명령어의 결과 R을 다시 저장한다.
단계 52 내지 58에 의해 실행된 동작은, 도 1의 완전 포화부(28)에 의해 제공된 것과 상술한 Sat(X) 함수에 대응한다.
도 3은 유사한 흐름도이지만 QDSUB 명령어의 경우를 나타낸 것이다. 이 명령어에서, 도 2의 단계 50을, 시프트되고 포화된 제 1의 오퍼랜드 데이터 워드 P에서 제 2의 32-비트 오퍼랜드 데이터 워드 Q를 감산하는 단계 62로 대체한다.
도 4는 도 3과 유사하지만 이 경우에는 도 3의 단계 62에서 일어나는 감산의 순서가 도 4의 단계 64에서는 역으로 되어 있는 것이다.

Claims (15)

  1. 데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 명령 디코더(4)와, 상기 처리 제어신호에 의해 제어되고, 데이터 오퍼랜드 워드에 대하여 데이터 처리연산을 실행하는 처리 로직(6)을 포함하는 데이터 처리장치에 있어서,
    상기 명령 디코더(4)는 제 1 명령어에 응답하여, 상기 처리 로직(6)을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제 2의 N-비트 데이터 오퍼랜드 워드 Q에 대하여 데이터 처리 연산을 실행하여, 다음 식으로 주어지는 N-비트의 결과 데이터 워드 R을 발생하며,
    R=Sat(Fun(P)+Q),
    여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는 적어도 N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양에서 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리장치.
  2. 데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 명령 디코더(4)와, 상기 처리 제어신호에 의해 제어되고, 데이터 오퍼랜드 워드에 대하여 데이터 처리연산을 실행하는 처리 로직(6)을 포함하는 데이터 처리장치에 있어서,
    상기 명령 디코더(4)는 제 1 명령어에 응답하여, 상기 처리 로직을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제 2의 N-비트 데이터 오퍼랜드 워드 Q에 대하여 데이터 처리연산을 실행하여, 다음 식으로 주어지는 N-비트의 결과 데이터 워드 R을 발생하며,
    R=Sat(Fun(P)-Q),
    여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는 적어도 N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양에서 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리장치.
  3. 데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 명령 디코더(4)와, 상기 처리 제어신호에 의해 제어되고, 데이터 오퍼랜드 워드에 대하여 데이터 처리연산을 실행하는 처리 로직(6)을 포함하는 데이터 처리장치에 있어서,
    상기 명령 디코더(4)는 제 1 명령어에 응답하여, 상기 처리 로직을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제 2의 N-비트 데이터 오퍼랜드 워드 Q에 대하여 데이터 처리연산을 실행하여, 다음 식으로 주어지는 N-비트의 결과 데이터 워드 R을 발생하며,
    R=Sat(Q-Fun(P)),
    여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는 적어도 N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양에서 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리장치.
  4. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 시프트 양은, 상기 시프트된 워드가 상기 제 1의 N-비트 데이터 오퍼랜드 워드 P의 2배가 되는 시프트 양인 것을 특징으로 하는 데이터 처리장치.
  5. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 시프트된 워드를 포화하는 것은, 상기 제 1의 N-비트 데이터 오퍼랜드 워드 P의 소정 특성을 검출하여, 검출된 경우, 상기 시프트된 값과 허용 값 범위의 각각의 종점 값을 교환하는 것을 특징으로 하는 데이터 처리장치.
  6. 제 4 항에 있어서,
    상기 시프트된 워드를 포화하는 것은, 상기 제 1의 N-비트 데이터 오퍼랜드 워드 P의 소정 특성을 검출하여, 검출된 경우, 상기 시프트된 값과 허용 값 범위의 각각의 종점 값을 교환하는 것을 포함하고, 상기 제 1의 N-비트 데이터 오퍼랜드 워드는 부호가 부가된 값이고, 상기 소정 특성은 상기 제 1의 N-비트 데이터 오퍼랜드 워드 P중 2개의 최상위 비트가 비 동일한 것을 특징으로 하는 데이터 처리장치.
  7. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 Sat(X)는, X가 허용 값 범위의 외측에 있는가를 검출하여, 검출된 경우, X와 상기 허용 값 범위의 각각의 종점 값을 교환하여, 상기 N-비트 결과 데이터 워드 R을 발생하는 것을 특징으로 하는 데이터 처리장치.
  8. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 처리 로직은 곱셈기(MUL)를 포함하고, 상기 제 1의 N-비트 오퍼랜드 데이터 워드 P는, 제 2 명령어에 응답하여 제 3의 N/2-비트 데이터 오퍼랜드 워드 A와 제 4의 N/2-비트 데이터 오퍼랜드 워드 B의 부호가 부가된 곱셈에 의해 발생된 곱셈 결과인 것을 특징으로 하는 데이터 처리장치.
  9. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 제 1의 N-비트 오퍼랜드 데이터 워드 P, 상기 제 2의 N-비트 오퍼랜드 데이터 워드 Q 및 상기 결과 N-비트 데이터 워드 R은, -1≤P<+1, -1≤Q<+1 및 -1≤R<+1이고, Sat(X)가 범위 -1≤X<+1에 있도록, 최상위 비트위치의 바로 우측에 소수점이 있는 부호가 부가된 고정 소수점 데이터 워드인 것을 특징으로 하는 데이터 처리장치.
  10. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 Fun(X)은, X의 모든 N비트의 값에 대하여 동작하고, 시프트 양 X를 시프트하여 시프트된 워드를 발생하는 동시에, 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값으로 복귀시키는 함수인 것을 특징으로 하는 데이터 처리장치.
  11. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 N=32인 것을 특징으로 하는 데이터 처리장치.
  12. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 데이터 처리장치는 집적회로를 포함하는 것을 특징으로 하는 데이터 처리장치.
  13. 데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 단계와,
    상기 처리 제어신호의 제어 하에서 데이터 오퍼랜드 워드에 대하여 데이터 처리 연산을 실행하는 단계를 포함하는 데이터 처리장치의 데이터 처리방법에 있어서,
    제 1 명령어에 응답하여, 상기 처리 로직(6)을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제2의 N-비트 오퍼랜드 워드 Q에 대하여 데이터 처리연산을 실행하여, 다음 식으로 주어지는 N-비트 결과 데이터 워드 R을 발생하고,
    R=Sat(Fun(P)+Q),
    여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는, 적어도N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리방법.
  14. 데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 단계와,
    상기 처리 제어신호의 제어 하에서 데이터 오퍼랜드 워드에 대하여 데이터 처리 연산을 실행하는 단계를 포함하는 데이터 처리장치의 데이터 처리방법에 있어서,
    제 1 명령어에 응답하여, 상기 처리 로직(6)을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제2의 N-비트 오퍼랜드 워드 Q에 대하여 데이터 처리연산을 실행하여, 다음 식으로 주어지는 N-비트 결과 데이터 워드 R을 발생하고,
    R=Sat(Fun(P)-Q),
    여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는, 적어도N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리방법.
  15. 데이터 처리 명령어에 응답하여, 처리 제어신호를 발생하는 단계와,
    상기 처리 제어신호의 제어 하에서 데이터 오퍼랜드 워드에 대하여 데이터 처리 연산을 실행하는 단계를 포함하는 데이터 처리장치의 데이터 처리방법에 있어서,
    제 1 명령어에 응답하여, 상기 처리 로직(6)을 제어하는 제어신호를 발생하고, 제 1의 N-비트 데이터 오퍼랜드 워드 P와 제2의 N-비트 오퍼랜드 워드 Q에 대하여 데이터 처리연산을 실행하여, 다음 식으로 주어지는 N-비트 결과 데이터 워드 R을 발생하고,
    R=Sat(Q-Fun(P)),
    여기서, Sat(X)는 포화된 값 X를 복귀시키는 함수이고, Fun(X)는, 적어도N/2-비트와 N/2-비트의 부호가 부가된 곱셈에 의해 발생될 수 있는 X의 값에 대하여 동작하고, 시프트 양 X를 시프트하는 것에 의해 시프트된 워드를 발생하는 동시에 상기 시프트된 워드를 포화시키는 것에 의해 얻어진 값을 복귀시키는 함수인 것을 특징으로 하는 데이터 처리방법.
KR1020017006111A 1998-11-20 1999-05-26 데이터 처리장치 및 그의 데이터 처리 방법 KR100623604B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9825543.3 1998-11-20
GB9825543A GB2343970A (en) 1998-11-20 1998-11-20 Arithmetic operations in a data processing system

Publications (2)

Publication Number Publication Date
KR20010092743A KR20010092743A (ko) 2001-10-26
KR100623604B1 true KR100623604B1 (ko) 2006-09-13

Family

ID=10842828

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017006111A KR100623604B1 (ko) 1998-11-20 1999-05-26 데이터 처리장치 및 그의 데이터 처리 방법

Country Status (6)

Country Link
JP (1) JP4177962B2 (ko)
KR (1) KR100623604B1 (ko)
DE (1) DE69902814T2 (ko)
IL (1) IL141982A (ko)
MY (1) MY114856A (ko)
RU (1) RU2225638C2 (ko)

Also Published As

Publication number Publication date
JP2002530774A (ja) 2002-09-17
JP4177962B2 (ja) 2008-11-05
DE69902814T2 (de) 2003-01-09
MY114856A (en) 2003-01-31
RU2225638C2 (ru) 2004-03-10
DE69902814D1 (de) 2002-10-10
IL141982A0 (en) 2002-03-10
IL141982A (en) 2005-12-18
KR20010092743A (ko) 2001-10-26

Similar Documents

Publication Publication Date Title
US7236995B2 (en) Data processing apparatus and method for converting a number between fixed-point and floating-point representations
JPH1195981A (ja) 乗算回路
US6128726A (en) Accurate high speed digital signal processor
US6609143B1 (en) Method and apparatus for arithmetic operation
GB2341702A (en) Floating-point multiply-accumulate unit
US5677861A (en) Arithmetic apparatus for floating-point numbers
EP1137980B1 (en) Arithmetic operations in a data processing system
JP3476960B2 (ja) 算術論理演算装置及び制御方法
JPH07234778A (ja) 演算回路
US6014683A (en) Arithmetic operation system for arithmetically operating a first operand having an actual point and a second operand having no actual point
KR100623604B1 (ko) 데이터 처리장치 및 그의 데이터 처리 방법
US6202078B1 (en) Arithmetic circuit using a booth algorithm
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
JP4159565B2 (ja) ベクトル積和演算回路
JP3252954B2 (ja) 乗算方法および乗算回路
KR0176883B1 (ko) 복소수 승산기
KR100315303B1 (ko) 디지탈 신호 처리기
JP2951685B2 (ja) 固定小数点演算器
JPH02114324A (ja) 乗算器
JP3638218B2 (ja) シフト機能付きalu命令を持つマイクロプロセッサ
KR100251547B1 (ko) 디지탈신호처리기(Digital Sgnal Processor)
JPH10149277A (ja) 乗算装置
JPH04160533A (ja) マイクロ・プロセッサ
JP3068640B2 (ja) 計算装置
JPH0317738A (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: 20120821

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130820

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140825

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 13

EXPY Expiration of term