KR20040065810A - 부동 소수점 연산을 지원하는 프로세서 - Google Patents
부동 소수점 연산을 지원하는 프로세서 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods 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
본 발명은 프로세서에 관한 것으로, 특히 정수 단위를 갖는 프로세서에서 많은 사이클 오버헤드 없이 부동 소수점 연산을 가능하도록한 부동 소수점 연산을 지원하는 프로세서에 관한 것이다.
일반적으로 데이터 연산을 하되 정밀도를 요구하는 경우를 위해 많은 프로세서(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)
- 부동 소수점 연산을 위한 프로그램을 저장하는 프로그램 메모리;상기 저장된 프로그램을 읽어 내는 인스트럭션 레지스터 및 디코딩된 프로그램에 의해 부동 소수점 연산을 위한 블록들의 제어 및 파이프 라인 제어를 수행하는 디코딩 및 파이프라인 제어부;내부 데이터 및 어드레스 연산 결과를 저장하는 데이터 메모리;프로그램 어드레스 및 데이터 어드레스를 발생하는 어드레스 발생부;데이터의 지수(Exponent)를 구하기 위해 데이터 입력의 부호를 판단하여 음수이면 이를 부정(Negate)하고 연산하여 지수값을 구하는 데이터 연산을 수행하는 연산 블록(ALU)을 포함하는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
- 제 1 항에 있어서, 연산 블록(ALU)은,데이터 메모리에서 입력되는 데이터값을 저장 출력하는 데이터 레지스터(DBIND)와,입력되는 데이터의 부호가 음수이면 이를 부정(Negate)하는 인버터(INV)와,이전의 누산된 값과 입력 데이터값을 논리합 연산을 수행하고 그 결과를 다시 누산부((Accumulator;ACC)에 저장하는 논리 연산부(OR)를 포함하고 구성되는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
- 제 1 항에 있어서, 연산 블록(ALU)은,일정 샘플 수만큼의 반복 연산을 위하여 리피트 블록(Repeat Block)을 구성하는 리피트 카운터(Repeat Counter)와,블록의 시작 번지, 마지막 번지를 저장하는 레지스터를 더 포함하는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
- 제 1 항에 있어서, 연산 블록(ALU)은,반복 연산에 의한 결과로부터 지수값을 추출하는 수단(CLZ)과, 계산 결과를 저장하는 레지스터를 더 포함하는 것을 특징으로 하는 부동 소수점 연산을 지원하는 프로세서.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150041540A (ko) * | 2013-10-08 | 2015-04-16 | 삼성전자주식회사 | 수치 연산을 처리하는 장치 및 방법 |
Families Citing this family (5)
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)
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 |
-
2003
- 2003-01-16 KR KR1020030002990A patent/KR20040065810A/ko not_active Application Discontinuation
-
2004
- 2004-01-16 US US10/758,203 patent/US20040186868A1/en not_active Abandoned
Cited By (1)
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 |