사용자 도구

사이트 도구


오디오_미신:높은_bit_depth가_무조건_좋은거다
[홈레코딩 필독서]"모두의 홈레코딩"구매링크

?높은 심도가 무조건 좋은거다?

그렇지 않다. 연산 형식이 다른 두 형태의 심도를 같이 비교하면 안된다.

정수형과 부동소수형의 장단점

일단 숫자 데이터 연산의 형식에는 정수형(Integer)과 부동소수형(Floating Point)이 있고, 서로 사용하는 연산기가 다르다. 정수형의 장점은 빠른 계산이 가능하다는 점, 하지만 표현할 수 있는 숫자의 범위가 적다는 점이고

부동소수형의 장점은 글자수(bit)에 비해서 표현할 수 있는 숫자의 범위가 매우 크다는 점이지만, 실제 숫자 표현의 자릿수와 소수점 표현에 대한 자리수의 복잡한 표현으로 이루어지기 때문에, 계산방식이 다소 느려진다는 점. 그리고 오차가 다소 발생할 수 있다는 점이 그 단점이다.1)

각 데이터 형식의 표현 범위

정수형 숫자 표현의 범위

  • 16-bit 정수형의 총 표현 가능 단계 = 2^16 = 65536(5자리수)
  • 24-bit 정수형의 총 표현 가능 단계 = 2^24 = 16777216(8자리수)
  • 32-bit 정수형의 총 표현 가능 단계 = 2^32 = 4294967296(10자리수)
  • 48-bit 정수배정밀도= 2^48 = 2.8147498e+14 (e+x 는 +10^X 를 말합니다.) = 28147598000(14자리수)
  • 56-bit 정수형 = 2^56 = 7.2057594e+16(16자리수)
  • 64-bit 정수형 = 2^64 = 1.8446744e+19(19자리수)

부동소수형 숫자 표현의 범위

  • 32-bit 부동소수형의 가장 작은 숫자 = 1.0 * 2^{-126} = 1.1754944e-38 (소수점 38자리수)
  • 32-bit 부동소수형의 가장 큰 숫자 = (2 - 2^{-23}) * 2^{127} = 3.4028235e+38 = (38자리수)

부동소수점 연산의 정밀성 손실

부동소수 연산의 정밀성 손실 문제를 구체적인 예시로 설명해보겠습니다.

예를 들어, 우리가 다음과 같은 두 개의 부동소수를 더한다고 가정해봅시다:

  • 0.1 * 10^{-20}
  • 0.2 * 10^{-20}

이 두 부동소수를 더하면 우리는 0.3 * 10^{-20}이 나와야 한다고 예상할 수 있습니다. 그러나 컴퓨터에서는 부동소수점을 표현할 때 소수점 이하의 정밀도에 한계가 있기 때문에 정확한 결과를 얻기 어렵습니다.

실제로 컴퓨터에서 이러한 덧셈을 수행하면 다음과 같은 결과가 나올 수 있습니다:

  • 0.1 * 10^{-20}를 표현할 때 발생하는 정밀성 손실로 인해 실제로는 0.10000000000000000000005 * 10^{-20} 정도로 저장될 수 있습니다.
  • 0.2 * 10^{-20}도 마찬가지로 정밀성 손실로 인해 0.20000000000000000000004 * 10^{-20} 정도로 저장될 수 있습니다.

따라서 이 두 수를 더하면 0.30000000000000000000009 * 10^{-20} 정도의 값이 나올 수 있습니다. 이것은 우리가 원했던 0.3 * 10^{-20}과 약간 다른 값이며, 부동소수점 연산의 정밀성 손실로 인해 발생한 것입니다.2)

이러한 예시를 통해, 부동소수 연산에서의 정밀성 손실이 어떻게 발생하는지 좀 더 구체적으로 이해할 수 있습니다.

이러한 오차는 금융 분야에서의 시간, 금액 계산이나, 공학에서의 정밀 계산이 필요한 분야에서는 큰 오류를 범할 수 있지만, 그래픽 분야 또는 오디오 분야에서는 큰 문제가 되지 않습니다. 그래서, 그래픽 카드에서 쓰이는 GPU에서는 거의 부동소수형 연산자를 가진 칩을 사용하고, 오디오 쪽에서는 최근 부동소수DSP 칩들이 레이턴시가 짧아진 제품들이 나오면서3) 부동소수형 연산칩을 사용하는 경향이 있습니다.

디지털 콘솔은 왜 정수형 연산자를 쓰는가?

디지털 콘솔들 중에서 내부 DSP의 연산형식이, 48-bit, 56-bit 등인 제품들은 정수DSP 연산 형식으로 나온 제품들이고 연산 레이턴시 부분에서 이득을 보기위해 채택한 DSP 정수형 연산자를 쓰기 때문이다. 이 제품들의 해상도는 32 bit 부동소수DSP 보다 해상도 면에서는 떨어지는 것이다.하지만 정수가 연산 속도4)가 빠르므로 레이턴시 부분에서 유리하기 때문에 아직도 디지털 콘솔 중엔 정수DSP를 쓰는 제품이 많이 있다.

결론

위에서 볼 수 있듯이 32 bit 부동소수가 표현할수 있는 숫자 범위는 정수형 표현과 비교하면 128 bit가 와도 상대가 안될 정도로 높으므로 48, 56-bit 정수형 등과 같은 정수형 연산자들과 비교한다면 32-bit 부동소수형은 거의 아날로그에 가깝다고 생각해도 무리가 아니다.5)

1)
하지만 오차는 무시해도 되는 수준으로 알려져 있다. 공학계산의 경우에는 100% 동일해야 해서 부동소수점 계산을 피하지만, 오디오나, 그래픽 등의 분야에서는 오차는 무시해도 되므로 부동소수를 적극 활용한다.
2)
그림이나 오디오 표현에서는 하나도 문제가 안되는 정도의 오차입니다.
3)
부동소수 연산자 DSP 칩이 나오게 된 원인은 공학계산 용도 등으로도 부동소수 오차가 크게 의미 없다는 판단이었을 것이다. 사실 DSP는 계산의 정확도 때문에 그동안 정수형 연산자 DSP가 대세였다.
4)
정수형 연산은 그냥 2진법기본 연산이므로 빠르다.
5)
사실 아직도 Pro Tools 구형의 48-bit 정수가 32-bit 부동소수보다 좋은 것이라는 헛소리를 하는 사람이 많다.!!아주 많다!! Pro Tools도 지금 현재 신형의 경우는 32-bit 부동소수형 연산을 하는 DSP칩으로 바뀌었다.
로그인하면 댓글을 남길 수 있습니다.
검색
[공지]회원 가입 방법
[공지]글 작성 및 수정 방법



오디오_미신/높은_bit_depth가_무조건_좋은거다.txt · 마지막으로 수정됨: 2024/04/14 저자 127.0.0.1