6. 디스플레이와 어댑터에 대한 기본적인 사항

Xconfig 의 각 항목을 해킹하기 전에 다음의 기본적인 사항들을 알고 있어야만 합니다.

6.1. 모니터의 동기주파수

수평 동기주파수는 모니터가 일초에 수평 스캔라인을 몇번이나 주사할수 있는가를 뜻합니다; 이 수치야 말로 모니터에 있어 가장 중요한 수치입니다. 수직 동기 주파수는 일초에 빔이 수직으로 몇번이나 횡단할수 있는가입니다.

동기주파수들은 보통 모니터 설명서의 제원부분에 나와있습니다. 수평 동기 주파수는 주로 KHz, 수직 동기주파수는 주로 Hz 단위(1 초간의 반복횟수)로 표기합니다. 수직 동기주파수는 보통 50-150 Hz 이내이고 수평 동기주파수는 보통 31-135 KHz 이내입니다.

멀티싱크 모니터의 경우 이 동기주파수들은 고정된 수치가 아닌 어떤 범위로 표시됩니다. 반면 일부 모니터들, 특히 저가형 모니터들에서는 이 주파수들은 몇개의 고정된 값들을 가질 뿐입니다. 이 값들 역시 설정을 바꾸는 것이 가능하긴 합니다만 모니터 자체가 이에 맞춰 설정되었기 때문에 선택의 범위는 멀티싱크 모니터에 비해 크게 줄어드니다. 좋은 해상도를 원한다면 가장 높은 수평 수직주파수 쌍을 선택하세요 --- 주의할 점은 주파수가 고정된 모니터에서는 원래 디자인된 제원보다 높은 스피드로 모니터 클럭을 구동시킬 경우 모니터가 쉽게 손상될 수도 있다는 것입니다.

본 문서의 초기버전에서는 상당히 용감하게 멀티싱크 모니터를 오버시켰었습니다. 더 나은 성능을 얻기 위해 정격 수직 동기주파수의 최대값보다도 더 높은 값으로 모니터를 구동시켰던 것입니다. 이에 대해 보다 조심할 필요가 있음을 지적받았습니다. 이 문제는 뒤의 모니터의 오버 부분에서 다루겠습니다.

6.2. 모니터의 비디오 대역폭

모니터의 비디오 대역폭은 모니터 설명서의 제원 부분에 나와있습니다. 만약 나와있지 않다면 그 모니터의 정격 최고 해상도 부분을 보세요. 경험칙입니다만 다음은 해상도를 대략적인 대역폭으로 환산한 것입니다(동시에 이는 사용가능한 도트클럭 값 각각의 대략적인 상한값이기도 합니다).

       640x480               25 MHz
       800x600               36 MHz
       1024x768              65 MHz
       1024x768 interlaced   45 MHz
       1280x 1024           110 MHz
       1600x1200            185 MHz

이 수치들은 무슨 마술이 아닙니다. XFree86 의 표준모드 데이터 베이스에 적혀있는 각 해상도별 가장 낮은 도트클럭일 뿐입니다(단, 마지막 줄은 필자가 삽입한 것입니다). 모니터의 실제 대역폭은 아마도 위의 최소값보다는 더 큰 값일 것입니다. 따라서 위의 값보다 몇 MHz 더 높은 도트클럭을 사용한다해서 그리 겁먹을 필요는 없습니다.

또한 대역폭은 65 MHz 이하의 도트클럭에서는 거의 문제가 되지 않습니다. 대부분의 고해상도 모니터의 경우, SVGA 카드는 모니터의 비디오 대역폭의 최고 한계값에 턱없이 못미치는 범위에서 사용되기 때문입니다. 예를 들어보지요.(역주: 도트클럭은 비디오 카드가 발생시키는 주파수이고 비디오 대역폭은 모니터가 받아들일수 있는 주파수임을 상기하세요)

  모니터                                     비디오 대역폭
  -----------------------------------------------------------
  NEC 4D                                          75 MHz
  Nano 907a                                       50 MHz
  Nano 9080i                                      60 MHz
  Mitsubishi HL6615                               110 MHz
  Mitsubishi Diamond Scan                         100 MHz
  IDEK MF-5117                                    65 MHz
  IOCOMM Thinksync-17 CM-7126                     136 MHz
  HP D1188A                                       100 MHz
  Philips SC-17AS                                 110 Mhz
  Swan SW617                                      85 MHz
  Viewsonic 21PS                                  185 MHz
  PanaSync/Pro P21                                220 MHz

설사 저가형 모니터라 할지라도 대부분의 경우 표준해상도에서는 심각한 대역폭 부족을 일으키지는 않습니다. NEC Multsync II 모니터는 좋은 예입니다 --- 이 모니터의 제원을 보면 800x600 화면조차 지원하지 못하는 것으로 나와있습니다. 겨우 800x560 밖에 지원하지 못합니다. 이와같은 저해상도에서는 높은 도트클럭이나 높은 대역폭이 필요없는 것입니다. 아마도 당신이 선택할수 있는 것은 32Mhz 나 36 Mhz 정도일텐데 둘다 모니터의 정격 비디오 대역폭인 30 Mhz 에서 크게 벗어난 값은 아닙니다.

이 두개의 구동 주파수에서는 어쩌면 화질이 기대한만큼 선명하지 않을 수도 있습니다만 분명히 참고 쓸만한 정도는 될 것입니다. 물론 NEC Multisync II 가 36 MHz 보다 높은 비디오 대역폭을 지원했더라면 더 좋았을 것입니다. 하지만 이미지의 왜곡을 일으킬 정도로 화질이 나쁜 것이 아니라면 텍스트 작업등의 일반적인 용도로 쓰는데는 별 문제가 없을 것입니다(만일 화질이 그 정도로 나쁘다면 당신의 눈이 제일 먼저 알려주겠지요).

6.3. 카드의 도트클럭

보통, 비디오 카드 설명서의 제원 부분에는 비디오 카드의 최대 (일초에 화면에 출력할수 있는 픽셀수의 최대값)이 나와있습니다.

당신이 이 수치를 모른다면 X 서버가 찾아낼수 있습니다. 최근 버전의 X 서버들은 모두 --probeonly 옵션이 있어서, 이를 쓰면 X 를 재가동하거나 비디오 모드를 바꾸지 않고도 필요한 정보를 출력해 줍니다.

만일 -probeonly 옵션이 없다해도 실망할 필요는 없습니다. 최악의 경우 X 서버로 인해 모니터가 먹통이 된다고 하더라도 X 서버는 클럭 및 그외 다른 정보들을 표준 에러로 출력할 수 있습니다. 이 표준 에러 출력을 화일로 출력하도록 해두면 모니터가 먹통이 되어 재부팅을 할수 밖에 없더라도 알아낸 정보는 화일에 그대로 저장되게 됩니다.

probe 결과나 시작 메시지는 다음 예와 비슷합니다.

XFree86 를 사용하는 경우 :

    Xconfig: /usr/X11R6/lib/X11/Xconfig
    (**) stands for supplied, (--) stands for probed/default values
    (**) Mouse: type: MouseMan, device: /dev/ttyS1, baudrate: 9600
    Warning: The directory "/usr/andrew/X11fonts" does not exist.
             Entry deleted from font path.
    (**) FontPath set to "/usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/"
    (--) S3: card type: 386/486 localbus
    (--) S3: chipset:   924
                        ---
        칩셋 -- 이 부분은 정확한 칩의 종류를 나타내고 있습니다.
                86C911 칩의 초기 버전이군요.

    (--) S3: chipset driver: s3_generic
    (--) S3: videoram:  1024k
                        -----
             이 부분은 비디오 보드상의 프레임 버퍼 램의 크기를 나타냅니다.

    (**) S3: clocks:  25.00  28.00  40.00   3.00  50.00  77.00  36.00  45.00
    (**) S3: clocks:   0.00   0.00  79.00  31.00  94.00  65.00  75.00  71.00
                      ------------------------------------------------------
                          MHz 단위로 나타낸 사용가능한 구동 주파수들입니다.

    (--) S3: Maximum allowed dot-clock: 110MHz
                                        ------
                                      대역폭(Bandwidth)입니다.
    (**) S3: Mode "1024x768": mode clock =  79.000, clock used =  79.000
    (--) S3: Virtual resolution set to 1024x768
    (--) S3: Using a banksize of 64k, line width of 1024
    (--) S3: Pixmap cache:
    (--) S3: Using 2 128-pixel 4 64-pixel and 8 32-pixel slots
    (--) S3: Using 8 pages of 768x255 for font caching

SGCS 나 X/inside X 를 사용하는 경우 :

WGA: 86C911 (mem: 1024k clocks: 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71)
---  ------       -----         --------------------------------------------
 |     |            |                MHz 단위의 사용가능한 구동 주파수들
 |     |            +-- 비디오 보드의 프레임 버퍼 램의 크기
 |     +-- 칩의 종류
 +-- 서버의 종류

주의: 되도록 컴퓨터에 다른 부하가 없는 상태에서 실행하세요. 왜냐하면 X 는 일종의 응용프로그램이기 때문에 X 의 타이밍 루프가 디스크 작업등과 동시에 이루어지거나 한다면 위의 수치들 자체가 부정확해질 수 있기 때문입니다. 수 회에 걸쳐 실행해 본 후 수치들이 안정된 값을 갖는지를 확인하십시요; 만약 값이 계속 들쭉날쭉하다면 안정된 값을 가질 때까지 다른 프로세스들은 죽여버리세요. 마우스 데몬 프로세스가 있다면 이를 죽여놓으세요. 특히나 마우스 데몬은 당신을 헷갈리게 만들기 쉽습니다(리눅스 사용자의 경우는 gpm, SVr4 사용자들은 mousemgr 입니다).

클럭 측정이 부정확해지는 것을 피하려면 위에서 측정한 수치를 당신의 Xconfig 화일의 Clocks 속성 부분에 써주어야 합니다 --- 이는 타이밍 루프를 억제시키고 X 가 정확한 클럭값을 사용하게 해줍니다. 위의 예에서 나온 데이터를 사용하면 다음과 같습니다.

    wga
            Clocks  25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71

작업부하의 변동이 심한 시스템의 경우, 알수없는 이유로 X 가 뜨지 않는 경우가 가끔 있는데 이렇게 클럭수치를 적어주면 이를 방지할 수 있습니다. 간혹, 시스템 부하로 인해서 X 가 잘못된 타이밍을 잡은 후, 설정 데이터베이스에서 그 타이밍에 해당하는 도트클럭을 찾지 못거나 잘못된 도트클럭을 찾는 수가 있기 때문입니다.

6.4. 이 기본 수치들은 무엇을 제어하는가

궁극적으로는 비디오 카드의 도트클럭과 모니터의 동기주파수 대역이 사용가능한 해상도를 결정짓습니다. 하지만 하드웨어의 잠재능력을 얼마만큼 이끌어낼수 있는가는 드라이버에 달려 있습니다. 고성능 하드웨어가 구비되었다 하더라도 그에 상응하는 좋은 디바이스 드라이버가 없다면 돈낭비에 불과합니다. 반면 융통성 좋은 디바이스 드라이버를 쓰면 상대적으로 떨어지는 성능의 하드웨어라도 원래의 능력이상으로 성능을 이끌어낼 수 있습니다. 이것이 XFree86 의 디자인 철학입니다.

당신이 사용할 도트클럭을 모니터의 비디오 대역폭에 매칭시켜야 합니다. 이 부분에서 상당한 선택의 여지가 있습니다. -- 어떤 모니터들은 정격 대역폭보다 30 % 이상 오버해서 구동시킬 수도 있습니다. 그 위험성 여부는 모니터의 정격 수직 동기주파수를 얼마만큼 오버시킬수 있는가에 달려 있습니다. 이에 대해서는 뒤에서 보다 자세히 설명하겠습니다.

대역폭에 대해 알게되면 보다 현명한 설정을 할 수 있습니다. 이를 통해 디스플레이의 화질(특히, 세밀한 부분의 선명도)을 향상시킬수 있는 것입니다.