KR20040065810A - 부동 소수점 연산을 지원하는 프로세서 - Google Patents

부동 소수점 연산을 지원하는 프로세서 Download PDF

Info

Publication number
KR20040065810A
KR20040065810A KR1020030002990A KR20030002990A KR20040065810A KR 20040065810 A KR20040065810 A KR 20040065810A KR 1020030002990 A KR1020030002990 A KR 1020030002990A KR 20030002990 A KR20030002990 A KR 20030002990A KR 20040065810 A KR20040065810 A KR 20040065810A
Authority
KR
South Korea
Prior art keywords
data
floating point
program
address
block
Prior art date
Application number
KR1020030002990A
Other languages
English (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 KR1020030002990A priority Critical patent/KR20040065810A/ko
Priority to US10/758,203 priority patent/US20040186868A1/en
Publication of KR20040065810A publication Critical patent/KR20040065810A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations

Abstract

본 발명은 정수 단위를 갖는 프로세서에서 많은 사이클 오버헤드 없이 부동 소수점 연산을 가능하도록한 부동 소수점 연산을 지원하는 프로세서에 관한 것으로, 부동 소수점 연산을 위한 프로그램을 저장하는 프로그램 메모리;상기 저장된 프로그램을 읽어 내는 인스트럭션 레지스터 및 디코딩된 프로그램에 의해 부동 소수점 연산을 위한 블록들의 제어 및 파이프 라인 제어를 수행하는 디코딩 및 파이프라인 제어부;내부 데이터 및 어드레스 연산 결과를 저장하는 데이터 메모리;프로그램 어드레스 및 데이터 어드레스를 발생하는 어드레스 발생부;데이터의 지수(Exponent)를 구하기 위해 데이터 입력의 부호를 판단하여 음수이면 이를 부정(Negate)하고 연산하여 지수값을 구하는 데이터 연산을 수행하는 연산 블록(ALU)을 포함한다.

Description

부동 소수점 연산을 지원하는 프로세서{Architecture Supporting Block Floating Point Processing in Processor}
본 발명은 프로세서에 관한 것으로, 특히 정수 단위를 갖는 프로세서에서 많은 사이클 오버헤드 없이 부동 소수점 연산을 가능하도록한 부동 소수점 연산을 지원하는 프로세서에 관한 것이다.
일반적으로 데이터 연산을 하되 정밀도를 요구하는 경우를 위해 많은 프로세서(Processor)에서는 배정도(Double Precision)로 확장할 수 있는 구조를 사용한다.
이는 배정도(Double Precision) 구조를 가질 때 그렇지 않은 경우보다 처리할 수 있는 유효 범위가 넓어지기 때문이다.
여기서, 배정도(Double Precision)란 데이터 폭(Data width)이 N bit일 경우 2N bit까지 확장하여 정밀도를 높이는 방법 또는 구조이다.
예를 들어, 데이터 폭이 16 비트(single precision data)인 경우에서 배정도(double precision)(32bit) 연산을 구현하는 것도 가능하다.
이와 같이 정밀도를 높이기 위하여 배정도 연산을 하는 경우에는 부동 소수점 단위(Floating Point Unit)는 계산 결과가 정밀하지만 로직 게이트 사이즈(Logic Gate size)가 크고 연산하는데 필요한 사이클(Cycle)수도 정수 단위(Integer Unit)의 4 ~ 5배 이상이 된다.
배정도(Double Precision)를 구현하기 위해서는 단정도(Single Precision)에 비해 2배의 사이클과 2배의 메모리가 필요하게 된다.
그리고 또 다른 방법으로 블록 부동 소수점(Block Floating Point) 연산을 위한 명령어를 지원하는 프로세서가 있다.
블록 부동 소수점(Block Floating Point) 연산이란 연산 유닛의 추가는 없이 가상적으로 지수(Exponent)의 위치를 구하고 데이터를 지수값 만큼 좌측으로 이동하여 유효 숫자의 범위를 확장하는 방법이다.
이와 같은 종래 기술의 프로세서들에서 부동 소수점 연산의 정밀도 및 연산 속도를 높이기 위한 방법들은 기능적으로 블록 부동 소수점 연산을 지원하지만 구현 면적 및 사이클 오버헤드(Cycle Overhead)가 크다.
예를 들어, 각 샘플의 비트를 MSB로부터 LSB까지 조사하는 경우에는 각 샘플의 지수값을 구하기 위해 데이터 폭 만큼의 사이클 수를 필요로 한다.
일반적으로 전용 명령어나 하드웨어 자원없이 일정한 샘플 크기를 가진 블록의 대표 지수값을 구하기 위해 각 지수의 최소값 또는 최대값을 구하는 루틴을 필요로 하게 되는데, 이 루틴은 (N2 + N)/2 cycle을 소모하게 된다.(여기서, N은 Block의 Sample수)
그러나 이상에서 설명한 종래 기술에 따른 프로세서는 다음과 같은 문제점이 있다.
종래 기술에서 정밀도를 높이기 위하여 배정도 연산을 하는 경우에는 단정도(Single Precision)연산에 비해 2배의 사이클과 2배의 메모리가 필요하게 된다.
또한, 연산 유닛의 추가는 없이 가상적으로 지수(Exponent)의 위치를 구하고 데이터를 지수값 만큼 좌측으로 이동하여 유효 숫자의 범위를 확장하는 방법을 적용하는 경우에는 사이클 오버헤드가 크다.
본 발명은 상기와 같은 종래 기술의 프로세서의 문제점을 해결하기 위해 안출한 것으로, 정수 단위를 갖는 프로세서에서 많은 사이클 오버헤드 없이 부동 소수점 연산을 가능하도록한 부동 소수점 연산을 지원하는 프로세서를 제공하는데 그 목적이 있다.
도 1은 본 발명에 따른 부동 소수점 연산을 지원하는 프로세서의 구성도
도 2는 본 발명에 따른 ALU 블록의 구성도
도면의 주요부분에 대한 부호의 설명
11. 프로그램 메모리 12. 인스트럭션 레지스터
13. 디코딩 및 파이프라인 제어부 14. 데이터 메모리
15. 프로그램 어드레스 발생부 16. ALU
17. 연산 유닛 18. 데이터 어드레스 발생부
상기와 같은 목적을 달성하기 위한 본 발명에 따른 부동 소수점 연산을 지원하는 프로세서는 부동 소수점 연산을 위한 프로그램을 저장하는 프로그램 메모리;상기 저장된 프로그램을 읽어 내는 인스트럭션 레지스터 및 디코딩된 프로그램에 의해 부동 소수점 연산을 위한 블록들의 제어 및 파이프 라인 제어를 수행하는 디코딩 및 파이프라인 제어부;내부 데이터 및 어드레스 연산 결과를 저장하는 데이터 메모리;프로그램 어드레스 및 데이터 어드레스를 발생하는 어드레스 발생부;데이터의 지수(Exponent)를 구하기 위해 데이터 입력의 부호를 판단하여 음수이면 이를 부정(Negate)하고 연산하여 지수값을 구하는 데이터 연산을 수행하는 연산 블록(ALU)을 포함하는 것을 특징으로 한다.
본 발명의 다른 목적, 특성 및 잇점들은 이하에서의 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 부동 소수점 연산을 지원하는 프로세서의 바람직한 실시예에 관하여 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.
도 1은 본 발명에 따른 부동 소수점 연산을 지원하는 프로세서의 구성도이고, 도 2는 본 발명에 따른 ALU 블록의 구성도이다.
본 발명은 한 블록에서 대표 지수값을 N 사이클(N은 블록의 샘플수)만에 구할 수 있는 프로세서의 구조를 제공하기 위한 것으로, 각 샘플의 부호가 MSB로부터 LSB까지 걸쳐 분포하는 성질을 이용하여 각 샘플의 부호에 따라 음수이면 양수로 만들어 논리 연산(Logical OR)을 하는 것이다.
이와 같은 연산으로 최종적으로 얻어지는 결과의 부호 비트의 모양은 대표적인 성격을 갖게 되고 이 샘플의 사인 비트(Sign bit) 수가 지수값이다.
그리고 구해진 지수값 만큼 왼쪽으로 이동해주면 유효 숫자 비트가 사인 비트의 바로 아래로 오게 된다.
이를 위한 본 발명에 따른 부동 소수점 연산을 지원하는 프로세서(또는Digital Signal Processor;DSP)는 부동 소수점 연산을 위한 프로그램을 저장하는 프로그램 메모리(11)와, 프로그램 메모리(11)에 저장된 프로그램을 읽어 내는 인스트럭션 레지스터(Instruction Register)(12)와, 디코딩된 프로그램에 의해 부동 소수점 연산을 위한 블록들의 제어 및 파이프 라인 제어를 수행하는 디코딩 및 파이프라인 제어부(13)와, 내부 데이터 및 어드레스 연산 결과를 저장하는 데이터 메모리(14)와, 프로그램 어드레스를 발생하는 프로그램 어드레스 발생부(15) 및 데이터 어드레스를 발생하는 데이터 어드레스 발생부(18)와, 데이터 연산을 위한 계산(Arithmetic), 로직, 승산(Multiplication)등을 수행하고 연산 유닛에 포함되거나 독립적으로 존재할 수 있으며, 데이터의 지수(Exponent)를 구할 목적으로 데이터 입력의 부호를 판단하여 음수이면 이를 부정(Negate)하고 연산하여 지수값을 구하는 부동 소수점 연산 블록 즉, ALU(16)와, 데이터 연산에 필요한 승산을 하는 연산 유닛(Multiplier)(17)을 포함하고 구성된다.
여기서, 부동 소수점 연산을 제어 및 수행하는 ALU(16)는 도 2에서와 같이, 데이터 메모리(14)에서 입력되는 데이터값을 저장 출력하는 데이터 레지스터(DBIND)와, 입력되는 데이터의 부호가 음수이면 이를 부정(Negate)하는 인버터(INV)와, 이전의 누산된 값과 입력 데이터값을 논리합 연산을 수행하고 그 결과를 다시 누산부((Accumulator;ACC)에 저장하는 논리 연산부(OR)를 포함하고 구성된다.
그리고 부호가 음수인 경우에 이를 부정하고 데이터값과 논리합 연산하는(ORC)동작을 일정 샘플 수만큼 반복 동작을 시킬 수 있는 루프(Loop) 구조를 갖기 위하여 리피트 블록(Repeat Block)을 구성하는 리피트 카운터(Repeat Counter), 블록의 시작 번지, 마지막 번지를 저장하는 입력 데이터 비트 시프트 카운트 레지스터(ASM0) 및 반복 연산에 의한 결과로부터 지수값을 추출하는 수단(CLZ)을 포함한다.
기본적으로 프로세서(Processor) 또는 DSP의 메모리에 일정량의 데이터가 미리 채워져 있다고 가정하고 본 발명에 따른 부동 소수점 연산을 지원하는 프로세서의 동작을 설명하면 다음과 같다.
먼저, 데이터 로딩 동작을 수행하는 명령을 실행하여 데이터 메모리에서 데이터가 계산 유닛으로 입력된다.
여기서, 데이터가 입력될 때마다 부호가 음수인 경우에는 부정(Negate)되기 때문에 양수처럼 받아들여진다. 따라서, 부호는 "0"이 되고 유효 숫자가 없는 부분은 "0"이 남아 있고 유효 숫자가 있는 부분은 "1"로 채워진다.
해당 블록의 모든 샘플을 읽어 상기한 연산(ORC)을 하게 되면 블록의 대표 지수만큼 MSB로부터 "0"이 남게 된다. 이때 부호 비트(sign bit)는 제외하고 MSB부터 연속적으로 남아있는 "0"의 수가 지수값이 된다.
그리고 표 1은 8 비트로 된 정수 또는 소수 표시 방법을 나타낸 것이다.
s b b b b b b b
MSB는 부호 비트로 사용되고 나머지 비트가 유효 표시 범위이다.
그리고 부호 비트가 "1"이면 음수를 의미하는 것이다.
예를 들어, 0x80 →-1.0이고, 0x40은 0.5라고 하고 이하의 데이터들을 한 블록이라고 하면 다음과 같이 지수값이 구해진다.
00001010
11100101 →00011010
00011110
11111000 →00000111
이와 같은 데이터들을 모두 본 발명에 따른 연산(ORC)를 하면 00011111이 되고 지수값은 2가 된다.
이와 같이 본 발명은 한 블록에서 대표 지수값을 N 사이클(N은 블록의 샘플수)만에 구할 수 있다.
이와 같은 본 발명에 따른 부동 소수점 연산을 지원하는 프로세서는 다음과 같은 효과가 있다.
본 발명은 각 샘플의 부호가 MSB로부터 LSB까지 걸쳐 분포하는 성질을 이용하여 각 샘플의 부호에 따라 음수이면 양수로 만들어 논리 연산(Logical OR)을 하여 한 블록에서 대표 지수값을 N 사이클(N은 블록의 샘플수)만에 구할 수 있다.
이는 정수 단위를 갖는 프로세서에서 많은 사이클 오버헤드 없이 부동 소수점 연산을 가능하도록 하는 효과를 갖는다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.

Claims (4)

  1. 부동 소수점 연산을 위한 프로그램을 저장하는 프로그램 메모리;
    상기 저장된 프로그램을 읽어 내는 인스트럭션 레지스터 및 디코딩된 프로그램에 의해 부동 소수점 연산을 위한 블록들의 제어 및 파이프 라인 제어를 수행하는 디코딩 및 파이프라인 제어부;
    내부 데이터 및 어드레스 연산 결과를 저장하는 데이터 메모리;
    프로그램 어드레스 및 데이터 어드레스를 발생하는 어드레스 발생부;
    데이터의 지수(Exponent)를 구하기 위해 데이터 입력의 부호를 판단하여 음수이면 이를 부정(Negate)하고 연산하여 지수값을 구하는 데이터 연산을 수행하는 연산 블록(ALU)을 포함하는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
  2. 제 1 항에 있어서, 연산 블록(ALU)은,
    데이터 메모리에서 입력되는 데이터값을 저장 출력하는 데이터 레지스터(DBIND)와,
    입력되는 데이터의 부호가 음수이면 이를 부정(Negate)하는 인버터(INV)와,
    이전의 누산된 값과 입력 데이터값을 논리합 연산을 수행하고 그 결과를 다시 누산부((Accumulator;ACC)에 저장하는 논리 연산부(OR)를 포함하고 구성되는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
  3. 제 1 항에 있어서, 연산 블록(ALU)은,
    일정 샘플 수만큼의 반복 연산을 위하여 리피트 블록(Repeat Block)을 구성하는 리피트 카운터(Repeat Counter)와,
    블록의 시작 번지, 마지막 번지를 저장하는 레지스터를 더 포함하는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
  4. 제 1 항에 있어서, 연산 블록(ALU)은,
    반복 연산에 의한 결과로부터 지수값을 추출하는 수단(CLZ)과, 계산 결과를 저장하는 레지스터를 더 포함하는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
KR1020030002990A 2003-01-16 2003-01-16 부동 소수점 연산을 지원하는 프로세서 KR20040065810A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030002990A KR20040065810A (ko) 2003-01-16 2003-01-16 부동 소수점 연산을 지원하는 프로세서
US10/758,203 US20040186868A1 (en) 2003-01-16 2004-01-16 Digital signal processor for supporting floating point operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030002990A KR20040065810A (ko) 2003-01-16 2003-01-16 부동 소수점 연산을 지원하는 프로세서

Publications (1)

Publication Number Publication Date
KR20040065810A true KR20040065810A (ko) 2004-07-23

Family

ID=32985720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030002990A KR20040065810A (ko) 2003-01-16 2003-01-16 부동 소수점 연산을 지원하는 프로세서

Country Status (2)

Country Link
US (1) US20040186868A1 (ko)
KR (1) KR20040065810A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150041540A (ko) * 2013-10-08 2015-04-16 삼성전자주식회사 수치 연산을 처리하는 장치 및 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8968396B2 (en) 2007-07-23 2015-03-03 Powervision, Inc. Intraocular lens delivery systems and methods of use
US8956408B2 (en) 2007-07-23 2015-02-17 Powervision, Inc. Lens delivery system
WO2012006616A2 (en) 2010-07-09 2012-01-12 Powervision, Inc. Intraocular lens delivery devices and methods of use
WO2012129407A2 (en) 2011-03-24 2012-09-27 Powervision, Inc. Intraocular lens loading systems and methods of use
JP6717740B2 (ja) 2013-03-15 2020-07-01 パワーヴィジョン・インコーポレーテッド 眼内レンズの収容および載置装置ならびにその使用方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0309348B1 (fr) * 1987-09-23 1993-04-21 France Telecom Dispositif d'addition et de multiplication binaire
US6212667B1 (en) * 1998-07-30 2001-04-03 International Business Machines Corporation Integrated circuit test coverage evaluation and adjustment mechanism and method
US6757819B1 (en) * 2000-02-18 2004-06-29 Texas Instruments Incorporated Microprocessor with instructions for shifting data responsive to a signed count value
US7080111B2 (en) * 2001-06-04 2006-07-18 Intel Corporation Floating point multiply accumulator
US6959314B1 (en) * 2002-05-13 2005-10-25 Eurica Califorrniaa Method of translating Boolean algebra into basic algebra

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150041540A (ko) * 2013-10-08 2015-04-16 삼성전자주식회사 수치 연산을 처리하는 장치 및 방법

Also Published As

Publication number Publication date
US20040186868A1 (en) 2004-09-23

Similar Documents

Publication Publication Date Title
US9703529B2 (en) Exception generation when generating a result value with programmable bit significance
US9703531B2 (en) Multiplication of first and second operands using redundant representation
US10579338B2 (en) Apparatus and method for processing input operand values
US9733899B2 (en) Lane position information for processing of vector
KR19980032693A (ko) 데이타프로세서 및 데이타처리시스템
US9720646B2 (en) Redundant representation of numeric value using overlap bits
KR20100075588A (ko) 산술연산용 크기 검출장치 및 방법
US7406589B2 (en) Processor having efficient function estimate instructions
KR20040065810A (ko) 부동 소수점 연산을 지원하는 프로세서
CN105302519B (zh) 用于执行浮点平方根运算的装置和方法
US10459688B1 (en) Encoding special value in anchored-data element
US9928031B2 (en) Overlap propagation operation
US10963245B2 (en) Anchored data element conversion
US10936285B2 (en) Overflow or underflow handling for anchored-data value
GB2527125A (en) Calculation of a number of iterations
US20220137962A1 (en) Logarithmic number system
JPS59136849A (ja) 除算装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid