부동소수점 장치

부동소수점 장치(浮動小數點裝置, floating point unit, 줄여서 FPU)는 CPU의 일부로서 부동소수점 연산을 효율적으로 처리하기 위한 하드웨어 논리회로 모듈이다. 부동소수점 실수에 대한 사칙연산을 지원하며, 모듈에 따라 거듭제곱 뿐만 아니라 삼각 함수 등 다양한 수학 계산을 할 수 있다. 초기의 마이크로프로세서는 정수형 계산을 기반으로 하는 ALU만을 사용되었다. 후에 실수형 데이터 처리를 위해 전용 하드웨어인 논리 회로가 만들어졌다. 대부분 IEEE 754 표준에 따라 설계되며, 고성능의 CPU에 사용된다.

모든 CPU가 별도의 FPU를 가지고 있는 것은 아니다. 대부분의 8비트 마이크로프로세서는 정수형 ALU 만을 가지고 있기 때문에, 소프트웨어 개발도구에서 부동소수점을 계산하는 함수 형태의 기계어 코드 집합을 제공한다. 대부분의 8비트 CPU 개발도구는 단정밀 부동소수점 처리함수만 제공한다. 정수형 ALU을 사용하여 부동소수점을 계산하는 여러개의 기계어 코드를 이용하여 FPU의 기능을 흉내낸다. 물론 이 경우는 FPU를 사용하는 경우보다 연산 속도가 훨씬 느리다.

인텔의 x86계열의 경우 i386은 정수형 ALU만을 가지고 있어서, i387이라는 칩을 별도로 PCB 상에서 연결하여 사용하였다. 이를 사용할 경우 별도의 기계어 명령어 집합을 가지고 있어 두개의 연산장치를 구별하였다. i486에서 한개의 칩에 통합되었다. 그러나 마이크로프로세서 입장에서 ALU가 일반적인 레지스터(EAX, EBX,...)와 연결되어 있다면, FPU는 별도의 FPU-레지스터 버퍼를 가지고 있어 메모리의 실수 데이터를 FPU-레지스터에 전송하고 수학계산 명령어를 실행하면 계산된다. 계산된 FPU-레지스터 값을 다시 메모리에 전송하여 처리한다.

임베디드 시스템에 많이 사용하는 ARM의 경우 많은 경우 FPU가 존재하지 않는다. 수학계산이 많다면 FPU가 존재하는 응용분야의 ARM 계열을 사용해야 한다.

수치 연산을 할 때 보조 프로세서로 사용하며 컴퓨터가 사용하는 기본 마이크로프로세서보다 숫자를 다룰 때 더 빠르게 사용할 수 있다. FPU는 전적으로 대형 수학적 연산을 강조하는 명령 집합이 있어서 계산이 빨라질 수 있다. 현재의 대부분의 PC 에서는 FPU를 채택하고 있으며, 평상시에는 수행하지 않다가, 그래픽 이미지 처리나 표현 등과 같은 특별할 일을 수행할 때에만 FPU가 작동하게 된다.

그래픽 처리를 위한 GPU는 부동소수점 전용의 병렬구조를 갖고 있고 빠른 계산을 행한다. 주로 그래픽 카드에 사용하여 3D 처리를 위한 계산을 담당한다. 3D 게임이나 복잡한 수학계산을 실행할 때 사용하며 PC에 사용하는 CPU와 한 칩에 결합하는 경향이 있다.

슈퍼컴퓨터(supercomputer)는 많은량의 실수계산이 요구되므로 GPU와 CPU의 복합 결합 구조를 갖는 구조로 발전하고 있다. 인텔의 CPU와 nvidia의 Tesla GPU의 결합으로 Tianhe-1A가 만들어졌다.[1] Archived 2014년 2월 2일 - 웨이백 머신[2]

같이 보기

편집