요즘 스퀴즈박스라는 네트워크 플레이어에 관심을 갖다보니 이곳에서도 비동기식 usb dac연결시 틱잡음이 생기는것 같습니다.
DDC에서도 같은원인때문인지는 모르겠으나 혹시나 도움이 될까하여 포스팅글 링크걸어봅니다.
결론을 먼저 말씀드리면 10불미만의 싼가격의 bus powered high speed usb hub를 사용하여 해결할수 있다는 얘기네요.
위의 틱잡음은 usb단과 dac의 연결시 전원공급문제때문에 생기는것이 아닐까 막연히 유추해봅니다.
틱잡음이라고 칭하는 문제의 원인이 비동기 버퍼가 비기 전에 데이터를 채워줘야 하는데 그 순간을 놓치면 생긴다고 볼 수 있습니다.
그렇다면 디지털시스템에서 비동기 전송에서 버퍼가 비기 전에 인터럽트가 걸리고, 인터럽트가 발생되면 하던 일을 중단하고 우선적으로
비어가는 버퍼를 채워주는 작업을 해줘야 하는데, 이 과정에 방해를 받으면 발생할 수 있습니다.
인터럽트라는 것이 어떤 경우에도 하던 일을 중단할 수 있는 것이 아니라 blocked operation이라고 하는 처리 과정에서는 인터럽트가
기다리게 됩니다. 꼭 필요한 경우에만 blocked operation을 해야 하는데 안이하게 드라이버나 프로그램을 짜서 blocked operation처리
시간이 길어지면 이런 일이 발생할 수 있습니다.
그리고 그 다음으로는 CPU성능이 부족하여 현재 동작중인 일들이 과다해서 task간에 CPU자원을 할당하는데 있어서 계산된 시나리오를
벗어나는 경우입니다.
두가지 경우가 모두 종종 일어날 수 있는 개연성을 가진 시나리오입니다.
사용자 입장에선 이런 전문적인 내용까지 생각할 필요는 없고, 단순하게 생각해서 PC성능이 높고 음악 들을 때 다른 일을 하지 않으면 됩니다.
아무리 성능이 높은 PC라 하더라도 지나치게 많은 일들을 걸어놓으면 문제가 생깁니다. 그리고 너무 사양이 낮으면 이러한 문제 발생 가능성이
매우 높아집니다.
전자의 경우 이렇게 PC와 사용방법이 아닌 근본적인 해결은 드라이버를 직접 개발하고 최적화해야 합니다. 현실적으로 불가능하죠.