태그: Jitter

USB Audio 전송 케이블에 따른 음질 열화 논란에 대하여

요즘 들어서 오디오에 관심을 가지다 보니, 자연스럽게 이러한 케케묵은 논쟁거리에 발을 담그게 되는 것 같다.
오디오 케이블, 특히 디지털 케이블이 음질에 미치는 영향은 오랜 기간 동안 논란이 되어 왔는데, ‘청감상 무의미하다’는 의견이 대세가 되었음에도 아직 완전히 수그러들지는 않았기에 이 글을 작성하게 되었다.

이 글은 USB-IF에서 게시한 USB 2.0 Specification 및 USB Audio 2.0 Specification에 근거하여 작성되었으며, 이 기술 명세들은 공공에 공개되어 있음을 미리 밝히는 바이다.

 

1. USB의 전송 모드

현재 논란이 되고 있는 지터(Jitter) 노이즈에 대해 이야기하려면, 먼저 USB의 전송 모드에 대한 이해가 필요하다.
USB 2.0 표준은 4가지의 전송 모드를 가지고 있다.
각각 Control Transfer, Bulk Transfer, Interrupt Transfer, Isochronous Transfer 모드로, 각 모드의 특징은 다음과 같다.

– Control Transfer : USB 장치가 연결되고 초기 설정을 진행하는 모드로, 데이터의 수신이 보장된다.
– Bulk Transfer : 대용량 데이터를 전송할 때 사용하는 모드로, 에러 감지와 정정을 통한 신뢰성 있는 통신을 보장한다.
– Interrupt Transfer : 제한된 지연 시간(Latency)가 요구되는 경우에 사용된다. 디바이스로부터 임의의 시간에 데이터가 올 수 있으며, 디바이스가 요구하는 것 이상의 전송률(Rate)를 반드시 지원해야 한다. 추가적인 타이밍 소스가 없음에도, 응답 시간 제한이 요구될 수 있다.
– Isochronous Transfer : 생산-전송-소비가 연속적, 실시간으로 이루어지는 모드로, 타이밍이 매우 중요하다. 일정한 전송률로 데이터를 보낼 것이 요구되며, 지연 시간은 단말의 버퍼 크기에 달려 있다. 주로 비디오, 음성 등을 전송할 때 사용되며, USB Audio도 여기에 속한다. Isochronous Transfer는 일정한 전송률을 유지하는 것과 지연 시간을 최소화하기 위해 재전송을 허용하지 않으며, 오로지 Control Transfer를 통한 에러 보고만이 이루어진다.

Each AudioStreaming interface can have at most one isochronous data endpoint.
USB Audio 2.0 Specification

이와 같이 USB Audio는 Isochronous Transfer를 이용하는 것을 알 수 있다.

 

2. USB Audio 표준과 전송 지터 문제

지금껏 논란이 되었던 것은, ‘과연 USB 케이블의 품질이 전송 신호에 영향을 미칠까?’라는 것이었다. 이 주장은 크게 두 가지로 나뉘는데, USB 케이블을 거치는 동안 클럭이 열화된되는 주장과, USB 케이블의 품질에 따라 데이터 자체에 손실이 일어난다는 것이었다.
먼저 클럭 열화부터 다루어 보자.
클럭 열화가 발생한다고 주장하는 측에서는 컴퓨터가 생성하는 클럭의 품질이 낮으며, 그에 따라서 아날로그 신호를 재생할 때 열화가 발생한다고 말한다. 하지만 엄밀히 말해서 이것은 정확한 주장이라고 말하기 힘들다.

PC에서 기준 클럭으로 사용하는 오실레이터의 성능은 보통 25MHz 수준이며, 이것은 최대 0.08μs의 오차를 가진다는 이야기이다. 흔히 오디오용으로 사용되는 TCXO 오실레이터의 경우 40MHz의 클럭을 가지며, 약 0.05μs의 오차를 가진다. 최대값 기준으로 0.03μs의 오차를 구분하는 것은 사람의 귀로는 불가능하다.

그렇다면 무엇이 문제였는가? 사실 이 문제는 USB가 데이터를 전송할 때 전송 신호를 동기화하는 방식에서 기인한다.
디지털 신호를 전송할 때 클럭 동기화는 중요한 고려 요인 중 하나이다. 왜냐하면 디지털 신호는 전압 변동을 통해 0과 1을 해석하는데, 해석 타이밍이 어긋나버리면 0을 1로, 1을 0으로 인식할 수 있기 때문이다. USB에서는 클럭을 SOF(Start of Frame)을 기준으로 동기화하였고, 프레임의 주기는 USB 1.0에서는 1ms, 2.0에서는 125μs가 된다. 이 클럭 주기는 일반적인 데이터를 전송할 때는 문제가 없었지만, 데이터를 실시간으로 처리해야 되는 입장에서 보면, 데이터를 해석할 수 있는 기준점이 프레임의 주기마다 한번씩 들어오는 셈이 된다.

일반적으로 사용되는 CD의 샘플링 레이트인 44.1KHz를 기준으로 하면, 0.023ms, 23μs간격마다 한번씩 클럭이 교정되어야 ‘정확한’ 복원이 이루어진다고 장담할 수 있다. 하지만 USB Audio 1.0을 기준으로 한다면 무려 50배, 2.0을 기준으로도 6배의 오차가 발생할 수 있게 된다. 이러한 오차는 DAC에서 오버샘플링을 거치면서 더욱 커지게 되고, 결과적으로는 청감상으로도 영향을 미칠 수 있게 된다.
물론 나는 0.1ms정도의 오차로 발생할 수 있는 지터 노이즈를 인간의 귀가 구분할 수 있다고 생각하지 않는다. 하지만 이러한 논란이 제기된 것이 USB Audio 1.0이 사용되던 시기임을 생각하면 최대 1ms, 오버샘플링을 적용할 경우 수ms의 오차로 발생하는 노이즈는 귀로도 알아챌 수 있었을 것이다.

물론 이러한 문제가 USB Audio 표준 제정시에도 알려져 있었기에, 이러한 클럭 동기화에 따른 지터를 방지하기 위한 목적으로 Asynchronous(비동기) 클럭 동기화가 제안되었다. 이 비동기 전송이 USB Audio 2.0부터 도입된 것이라고 생각하는 사람들이 많은데, USB Audio 1.0 Specification에도 엄연히 비동기 전송이 포함되어 있으며, DAC를 USB로 연결하는 것이 보편화된 2000년대에 들어서야 비동기 전송이 채택된 DAC들이 시중에 등장하기 시작했다고 보는 것이 옳다.

비동기 클럭 동기화는 마스터 클럭을 SOF로부터 복원하는 것이 아닌, 단말이 가지고 있는(혹은 외부의) 클럭 소스로부터 얻어내는 것으로, USB의 클럭 주기에서 벗어나 더 고성능의 클럭을 이용해 DAC를 수행할 수 있게 하였다. 2016년 현재 판매되는 대부분의 USB DAC들은 비동기 전송을 지원하는 제품으로, 전송 지터는 사실상 무의미한 문제가 되었다.

 

3. USB Audio 전송 시의 데이터 손실

흔히들 ‘디지털 데이터는 무손실이기 때문에 데이터 오류가 발생하는 것은 불가능하다’고 치부하고 넘어가는 이 문제는 사실 전송 지터보다 훨씬 유의미한 문제이다. 왜냐하면 앞서 보았듯이 USB Audio가 사용하는 전송 모드인 Isochronous Transfer는 재전송을 수행하지 않기 때문인데, 디지털 신호에서 에러는 ‘발생하지 않는 것’이 아니라 ‘감지/정정 가능한 것’이기 때문에 아날로그 신호에 비해 월등한 신뢰성을 보장하는 것임을 생각하면 재전송을 통한 에러 정정을 수행하지 않는 것은 데이터가 전송 에러에 그대로 노출된다는 것을 의미한다.

USB에서는 에러를 감지하는 수단으로 CRC를 제공하지만, 에러를 정정하는 것은 하드웨어/소프트웨어 단의 재전송을 통해 이루어진다.

The protocol allows for error handling in hardware or software. Hardware error handling includes reporting and retry of failed transfers. A USB Host Controller will try a transmission that encounters errors up to three times before informing the client software of the failure. The client software can recover in an implementation-specific way.
USB 2.0 Specification

The timely delivery of isochronous data is ensured at the expense of potential transient losses in the data stream.
USB 2.0 Specification

하지만, USB Audio에서는 에러가 발생하더라도 재전송을 통한 정정을 수행하지 않는다!

이제 실제로 데이터가 손실될 수 있음을 알았으니 이 사실이 ‘청감적으로 유의미한 차이를 가져오는가’에 대해 논할 차례가 되었다.
정말 그럴까? 한번 계산을 통해 확인해보자.

USB 3.0 Electrical Compliance Methodology에 따르면 USB 3.0을 지원하는 장비는 10-12의 BER(Bit Error Rate)를 가진다고 한다. 아주 관대하게 봐서 비트 에러가 오로지 전송 매체(케이블)에서 발생한다고 가정하자. 그렇다면 1012비트를 전송하는 동안 1비트의 오류가 발생하는 셈이다. 1012비트를 좀 더 읽기 좋게 환산하면 125GB가 된다.
음.. 가만 생각해보니 청감상 무의미하다는 쪽에 무게를 너무 많이 실어주는 것 같다. 지금 예시로 든 것도 USB 3.0이지, 2.0이 아니지 않은가?
안타깝게도 USB 2.0에서 요구하는 비트 에러율에 대한 레퍼런스를 찾을 수 없었기에, 아주 관대하게 ‘좀 더 낡은 규격인 USB 2.0은 USB 3.0보다 100배의 에러가 발생한다’고 가정하자. 이렇게 가정하였을 경우 USB 2.0의 비트 에러율은 10-10이며, 1.25GB의 데이터를 전송할 때 1비트의 에러가 발생한다는 이야기가 된다.

앞서 말했듯이 USB 2.0은 125μs당 하나의 마이크로 프레임(Micro Frame)을 전송하며, 하나의 마이크로 프레임에 포함될 수 있는 데이터의 최대 크기가 1023Bit이므로, 1023Bit가 손실된다고 가정해 보자. 이 경우 일반적인 PCM 2채널의 비트레이트인 1141Kbps를 기준으로 약 0.001초에 해당하는 데이터가 손실된다. 하지만 Isochronous Transfer는 전송률을 맞춰야 하므로 1141Kbps에 맞춰서 데이터를 전송한다고 가정하면 약 143Bit가 손실된다. 이것으로 손실되는 데이터는 거칠게 계산해서 0.0001초 미만이다. 이것을 청감상으로 구분할 수 있을까? 판단은 지금 이 글을 읽고 있는 독자에게 맡긴다.
또한 실제로 에러가 발생하였을 경우 DAC에서는 데이터를 파기하는 대신 보간을 통한 복원을 시도한다. 이러한 알고리즘이 100% 성공적이라고 장담할 수는 없겠지만, 데이터가 잘려나가는 대신 정정된 데이터가 들어가는 것만으로도 에러를 구분할 수 있을 가능성은 더욱 줄어들 것이라는 점을 쉽게 알 수 있을 것이다.

한편, 1.25GB의 데이터를 전송할 동안 1비트의 에러가 발생한다는 것이 잘 와닿지 않을 수도 있겠다는 생각이 들어 간단한 예시를 준비하였다.
일반적인 PCM 데이터의 비트레이트인 1141Kbps를 기준으로 계산해보면, 약 8764초를 재생할 때 1비트의 에러가 발생한다는 결론이 나온다. 즉, 확률적으로 음악을 2시간 30분간 재생할 때 0.0001초의 노이즈가 1회 발생한다.

이것이 청감상으로 유의미하며 또한 자신의 귀로 구분이 가능하다고 주장하는 사람이 있다면 그건 정말 대단한 일이 아닐 수 없다는 생각이 든다.

 

4. 결론

이것으로 USB Audio의 음질 열화, 그리고 고급 USB 케이블을 둘러싼 소모적인 논쟁의 마무리를 지을 수 있었으면 한다.
무엇이건 주장하는 것은 자신의 자유이지만, 그 주장으로 남을 설득시키기 위해서는 상대방이 납득할 수 있는 수준의 근거와 논리가 필요하다. 마찬가지로, ‘청감상 무의미하다!’고 주장하는 것은 자유이지만, 이 주장을 입증하기 위해서는 나름의 근거와 논리가 있어야 할 것이다. 이 글이 오디오 미신과 싸우는 다른 모든 사람들에게 유익한 글이 되었기를 희망한다.