10 min read

CD-DA, CD-ROM 이야기

※ 이 문서는 기술 문서가 아니니까 레퍼런스는 별도로 달지 않는다.

아날로그 음악을 저장하는 방법으로 비닐 레코드라는 것이 있다. 흔히 말하는 LP판이다. 지름 30 cm짜리 PVC소재 플라스틱 판때기에 V자로 골을 파고, 소리 파형을 골짜기의 양쪽 경사에 기록하는 방식이다.

아날로그 매체의 특성상 다양한 문제가 있어, 이를 대체하는 컴팩트 디스크(Compact Disc)를 만들고 디지털로 소리를 저장(Digital Audio)하게 된다. 줄여서 CD-DA. 의외로, CD의 첫 시작은 음악CD였다. 컴퓨터에서 사용하는 일반적인 자료를 저장하게 된 것은 훨씬 뒤의 일이다.

CD 크기가 지름 12 cm이 된 것이라던지, 레이저 파장은 어떤걸 쓰며 CD 한 장에 74분 또는 80분을 쓰는 이유 등은 위키피디아를 참고하자. 특히 CD 한 장에 담을 수 있는 노래 길이는 어떤 기술적인 이유보다는 소니와 필립스 사이의 정치질의 결과물이라고 봐야 하겠다.

오디오 샘플링

여하튼. 아날로그 진동인 소리를 디지털 신호로 변환하려면 각종 수학적 이론이 적용되어야 한다. 사람의 귀는 평균적으로 20 Hz ~ 20,000 Hz 주파수의 소리를 들을 수 있다고 알려져 있다. 1초당 2만번 주기로 변화하는 신호를 손실없이 담으려면, 초당 측정 횟수(샘플링 레이트)는 그 두 배 빠르기가 되어야 한다. 나이퀴스트와 샤논이라는 두 명의 천재가 이를 수학적으로 증명했다고 하니까 넘어가자. 여하튼 40,000 Hz 샘플링 레이트로 측정해야 사람 귀에 들리는 소리를 수학적으로 완벽하게 저장할 수 있다는 것이다.

※ 이하 kHz 단위를 사용한다. 1 kHz = 1,000 Hz이다.

CD-DA 표준에서 샘플링 레이트는 44.1 kHz를 사용한다. 뭔가 애매한 숫자다. 공돌이들은 이런 애매한 숫자를 좋아하지 않는다. 44.1을 쓰느니 그 윗단계인 48을 선택하는 족속이다. 그런데 왜 44.1이라는 애매한 숫자일까? 당시에 디지털 오디오를 저장하는 장비로 영상용 테이프를 사용했기 때문이다. 미국표준인 NTSC 테이프에는 1초당 245라인 * 60필드 * 6샘플(모노) = 88,200 샘플을 저장할 수 있었고, 유럽표준인 PAL 테이프에도 1초당 294라인 * 50필드 * 6샘플(모노) = 88,200 샘플을 저장할 수 있었다.

그럼 88.2 kHz 아닌가? 사람 귀는 두 개다. 6샘플을 반으로 뚝 잘라 왼쪽 오른쪽 채널에 할당해야 하는 것이다. 수식을 다시 써 보자. NTSC 테이프에는 1초당 245라인 * 60필드 * 3샘플(스테레오) = 44,100 샘플을 저장할 수 있었고, PAL 테이프에도 1초당 294라인 * 50필드 * 3샘플(스테레오) = 44,100 샘플을 저장할 수 있었다. 오호 딱 맞아 떨어진다. 게다가 44,100은 2, 3, 5, 7로 나누어 떨어지므로 편리하다. 그렇게 44.1 kHz가 표준 샘플링 레이트로 지정되었다.

※ 이하 별도 표기가 없으면 2채널을 묶은 스테레오 샘플을 말한다. 1 스테레오 샘플 = 2 모노 샘플이라고 생각하면 된다.

16비트 양자화 또한 비슷한 이유로 결정되었다. 비디오 테이프에 44.1 kHz로 저장하려면 샘플(모노)당 16비트를 사용할 수 있었다. 필립스는 샘플(모노)당 14비트를 밀었고 소니는 16비트를 밀었는데 결국 소니가 승리했다. 어찌 보면 다행인 것이, 8비트 = 1바이트 이므로 샘플(모노)당 2바이트를 꽉 채워서 사용할 수 있게 된 것이다.

물리적 기록

그럼 CD에는 어떻게 물리적으로 데이터가 기록되고, 어떻게 주소가 부여될까. 위에서 말한 대로 1샘플은 16비트 * 2채널 = 32비트이다. 이렇게 6샘플을 모아서 192비트 단위로 묶는다. 이 192비트가 CD에 데이터를 기록하는 최소 단위이다. 왜 6샘플 = 192비트 단위로 묶은걸까? 아마 추측컨대, 오류정정부호를 효율적으로 적용하려고 192비트로 묶은 것 같다. 192/64 코드를 쓰면 딱 256비트가 나오거든.

그렇게 192비트 묶음은 오류정정부호가 붙어 256비트가 되고, 8비트 서브채널을 덧붙여 264 비트가 된다. 매 8비트마다 8-to-14 변조 + 3비트 병합 비트를 적용한다. 192비트가 561비트로 뻥튀기된다. 그리고 27비트의 동기화 비트가 더해져서 총 588비트를 사용하게 된다.

오디오 신호 192비트를 저장하는데 물리적으로는 588비트를 사용한다. CD에 물리적으로 기록된 데이터 중 2/3 이상은 탐색과 오류 정정에 사용되는 것이다. 실제 오디오에 사용되는 데이터는 1/3 도 안 된다. 여하튼 물리적 기록 과정에서 추가로 붙는 탐색 및 오류정정 코드는 우리가 사용할 수 없는 부분이므로, 앞으로는 생각하지 않는다.

논리적 주소

위에서 CD에 기록하는 데이터의 최소 단위는 6샘플 = 192비트라고 하였다. 초당 44,100샘플이니까, 6샘플은 1/7350초이다. 우리가 많이 쓰는 시분초 단위와 비교하면 너무 정밀하다. 조금 더 큰 단위로 묶어야 하겠다.

생각해 볼 수 있는 가장 간편한 단위는 1/100초 단위이다. 그런데, 1/100초는 441샘플이고, 6샘플 단위로 나누어 떨어지지 않는다. 기각. 사실 7350의 약수가 되도록 정해야 한다. 다양한 값이 나올 수 있지만 표준은 1/75초를 최소단위로 정하였다. 왜 그랬는지는 모르겠다.

여하튼. 1/75초는 588샘플이고, 6샘플 묶음으로 세어 보면 98묶음이다. 1/75초마다 2,352바이트의 오디오 데이터를 사용하게 된다. 이 1/75초 = 98묶음 = 588샘플을 1프레임 또는 1섹터라고 부르며, CD에서 재생시간을 정하는 최소 단위가 된다. 2분 10.4초는 가능하지만(0.4=30/75초), 2분 10.5초는 불가능하다. 2분 10.5066..초(38/75초)나 2분 10.52초(0.52=39/75초)로 작업해야 한다.

CD오디오를 정속(1배속) 재생하는 경우, 1초당 44,100샘플 * 4바이트 = 176,400바이트를 읽어야 한다. 따라서 CD에서 1배속 = 초당 176,400바이트이다. 그렇다면 52배속을 지원하는 CD롬은? 초당 9,172,800바이트를 읽을 수 있다는 것이다.

이러한 CD-DA 표준은 소니와 필립스가 만들었고, 흔히 레드북이라고 부른다. 겉표지가 빨간색이라나 뭐라나.

CD-ROM

CD-DA는 데이터를 디지털로 저장한다. 그렇다면 일반적인 디지털 데이터를 저장할 수도 있지 않을까? 물론 가능하다. CD 특성상 한번 기록하면 다시 쓰기가 불가능하므로, 읽기 전용이라는 의미에서 CD-ROM으로 부른다.

레드북 규격과 호환되는 시스템을 설계해야 했으므로, 기본적으로 1/75초 = 2,352바이트를 1프레임으로 똑같이 사용한다. 다만 어느정도 오류가 나도 문제가 없는 오디오와 달리, 디지털 데이터는 1비트 오류도 허용할 수 없다. 따라서 2,352바이트에 추가적인 구조를 넣어서 위치 정밀도와 오류보정 등을 넣게 된다.

16바이트는 헤더 정보로 동기화와 주소, 그리고 모드를 저장한다. 모드1에서는 2,048바이트의 데이터를 저장하고, 나머지는 추가적인 오류검출 및 정정에 사용한다. 모드2에서는 2,336바이트의 데이터를 저장하고, 추가적인 오류검출 및 정정은 없다. 이러한 표준은 옐로우 북이라고 부른다.

CD-DA의 1배속은 위에서 말한 것처럼 초당 176,400바이트를 읽을 수 있다. 이 속도는 CD-ROM에서도 똑같이 적용된다. 다만, 읽어오는 데이터 중에 헤더와 오류정정부호가 포함되므로, 실제 읽어오는 사용자 데이터는 모드1에서 초당 153,600바이트가, 모드2에서는 175,200바이트가 된다. 약간 더 느려지는 것이다.

옐로우 북을 확장하여 CD-ROM XA 확장 표준이 정의된다. 헤더 구조가 20바이트로 늘어나고, 모드2 제1형태는 2,048바이트, 제2형태는 2,324 바이트를 저장할 수 있다.

DVD, 블루레이

CD와 DVD, 블루레이는 각각 물리적 기록방식은 다르며, 논리적 섹터 구조 또한 다르다. 그러나, 1섹터당 사용자 저장공간은 2,048바이트로 같으며, 1섹터를 1/75초로 환산하여 주소를 계산하는 방식은 여전히 사용된다.

섹터 크기별 정리

2,048바이트 = CD-ROM MODE 1 / 읽기 속도 초당 153,600바이트
2,048바이트 = CD-ROM XA MODE 2 FORM 1 / 읽기 속도 초당 153,600바이트
2,324바이트 = CD-ROM XA MODE 2 FORM 2 / 읽기 속도 초당 174,300바이트
2,336바이트 = CD-ROM MODE 2 / 읽기 속도 초당 175,200바이트
2,352바이트 = CD-DA / 읽기 속도 초당 176,400바이트