Skip to content

1부. 왜 계산기는 둘인가: ALU와 FPU

우리가 매일 쓰는 스마트폰이나 노트북. 당연히 그 안에는 숫자를 계산하는 단일 두뇌(CPU)가 들어 있다고 생각하기 쉽다. 컴퓨터의 뚜껑을 열고 반도체 칩을 현미경으로 들여다보면 아주 이상한 점을 발견하게 된다. 계산을 전담하는 장치가 완전히 다르게 생긴 두 개로 쪼개져 있기 때문이다.

대체 왜 세상에서 가장 정확하고 효율적이어야 할 기계가, 숫자를 다루는 일꾼을 두 명이나 따로 고용했을까? 더 크고 성능 좋은 계산기 하나로 모든 숫자를 처리하는 게 더 단순했을 텐데.

실제로 CPU 프로세서 안에는 정수 연산을 담당하는 ALU와 소수점이 있는 수 연산을 담당하는 FPU가 따로 떨어져 있다. 왜 컴퓨터가 계산기를 둘로 나눠 쓰게 되었는지, 그 사정을 가장 기초적인 자리에서부터 따라가본다.

ALU(Arithmetic Logic Unit, 산술 논리 장치)는 1, 2, 3처럼 소수점 없이 딱 떨어지는 숫자, 즉 정수 연산에 특화된 계산기다. 정수의 덧셈과 뺄셈 같은 산술 작업, 그리고 참과 거짓을 판별하는 논리 작업이 바로 이 장치의 몫이다. 정수는 자리 끝까지 또렷하기 때문에, 컴퓨터의 0과 1의 딱 떨어지는 규칙과 잘 맞물린다. 그 예로 7 + 5 = 12라는 계산은 어떤 상황에서도 한결같이 같은 답에 도착한다. 정수는 사과나 블록의 개수처럼 대상을 완벽하게 수 있고, 컴퓨터는 그 또렷한 패턴 위에서 판단을 내린다.

문제는 현실의 많은 값이 정수와 결이 다르다는 데 있다. 길이, 속도, 압력, 온도, 질량, 확률처럼 실제 계산이 다뤄야 하는 값을 실수라고 부른다. 이러한 실수는 대부분 소수점 아래를 길게 끌고 간다. 온도를 25.5도, 25.51도처럼 소수점 아래로 한없이 파고들기 시작하면 문제가 따라온다. 메모리 공간은 유한한데 실수의 꼬리는 끝까지 이어지니, 이런 숫자들을 기계 안에 끝까지 담아낼 자리가 모자란다.

여기서 등장한 것이 부동소수점이다. 부동소수점은 제한된 저장 공간 안에서 넓은 범위의 값을 그럴듯하게 표현하는 방법이다. FPU(Floating Point Unit, 부동소수점 연산 장치)는 그 근사값들을 다루는 실수 전용 계산기다.

그렇다면 FPU 하나가 ALU의 일까지 맡을 수는 있었을까? 더 크고 좋은 FPU 하나로 모든 숫자를 처리할 길은 있었을까?

ALU와 FPU의 차이는 속도를 넘어선다. 더 중요한 차이는 내부 절차의 복잡도에 있다.

정수 연산은 상대적으로 직접적이다. 부동소수점 연산은 같은 덧셈 하나에도 훨씬 복잡한 길을 거친다. 소수점의 위치를 이리저리 맞추고, 넘치는 부분을 반올림하고, 비어 있는 자리를 채우는 깐깐한 절차를 거쳐야 한다. 다시 말해 FPU는 숫자를 계산하기 전에 숫자의 형태를 먼저 맞추는 일부터 해야 한다. 예를 들어 1.50.003을 더할 때도, FPU는 두 수를 합치기 전에 먼저 같은 기준으로 맞춰 놓는 절차를 거친다.

그래서 하드웨어 수준에서도 둘은 성격이 달라진다. ALU는 정확한 비트 조작에 맞게 설계된다. 한편 FPU는 근사값을 유지하기 위해 훨씬 더 많은 규칙과 절차를 끌어안아야 한다. 애초에 목적이 다르다 보니 이 둘을 하나의 회로로 묶으려는 시도는 쉽게 비효율로 이어진다.

이처럼 딱 떨어지는 수를 다루는 회로와 꼬리가 긴 수를 어떻게든 욱여넣는 회로는 설계 방식부터 다른 결을 갖는다. 이것이 계산기가 둘로 나뉜 진짜 이유다.

FPU는 분명 유용하다. FPU가 자리 잡기 전이었다면 현대 과학 계산과 공학 계산의 상당 부분이 지금 같은 모양으로 자라기 어려웠을 것이다. 다만 이 편리함에는 함께 따라오는 비용이 있다. 부동소수점은 처음부터 근사 표현 위에 서 있기 때문에, 그 편리함에는 감춰진 구조적 대가가 뒤따른다. 우리가 실수를 다룰 수 있게 된 대가로 무엇을 잃게 되었는지, 그 오차의 진짜 얼굴은 다음 장에서 살펴본다.

다음 장으로 넘어가기 위한 질문

Section titled “다음 장으로 넘어가기 위한 질문”

그렇다면 이 문제는 단지 FPU가 덜 정교해서 생긴 것일까. 더 빠른 회로, 더 넓은 비트폭, 더 많은 자원을 주면 사라지는 문제일까.

이 오차의 뿌리는 기술의 정교함 너머에 있다. 어디에 놓여 있는지는 다음 장에서 더 깊이 따라가본다.