프레임 버퍼

Framebuffer
Sun TGX 프레임버퍼

프레임 버퍼(프레임버퍼 또는 프레임스토어)는 비디오 디스플레이를 구동하는 비트맵을 포함하는 RAM의 [1]일부입니다.완전한 비디오 [2]프레임의 모든 픽셀을 나타내는 데이터를 포함하는 메모리 버퍼입니다.최신 비디오 카드에는 코어에 프레임 버퍼 회로가 포함되어 있습니다.이 회로는 메모리 내 비트맵을 컴퓨터 모니터에 표시할 수 있는 비디오 신호로 변환합니다.

컴퓨팅에서 스크린 버퍼는 컴퓨터 애플리케이션에 [3]의해 컴퓨터 디스플레이에 표시되는 콘텐츠를 표현하기 위해 사용되는 컴퓨터 메모리의 일부이다.화면 버퍼는 비디오 버퍼, 재생 버퍼 또는 [4]줄여서 재생 버퍼라고도 합니다.화면 버퍼는 비디오 메모리와 구별해야 합니다.이를 위해 오프스크린 버퍼라는 용어도 사용됩니다.

버퍼의 정보는 일반적으로 디스플레이에 표시되는 모든 픽셀의 색상 값으로 구성됩니다.색상 값은 일반적으로 1비트 바이너리(흑백), 4비트 팔레트화, 8비트 팔레트화, 16비트 하이컬러24비트 트루컬러 형식으로 저장됩니다.픽셀 투명도에 대한 정보를 유지하기 위해 추가 알파 채널이 사용될 수 있습니다.프레임 버퍼에 필요한 메모리의 총량은 출력 신호의 해상도색심도 또는 팔레트 크기에 따라 달라집니다.

역사

1951년 SWAC Williams 튜브 CRT의 메모리 패턴

컴퓨터 연구자들은[who?] 프레임 버퍼의 이론적 이점에 대해 오랫동안 논의해 왔지만 경제적으로 실용적인 [citation needed][5]비용으로 충분한 메모리를 갖춘 기계를 생산할 수 없었다.1947년 맨체스터 베이비 컴퓨터는 1024비트를 브라운관(CRT) 메모리에 저장하고 두 번째 CRT에 [6][7]표시하기 위해 윌리엄스 튜브(나중에 윌리엄스-킬번 튜브)를 사용했다.다른 연구소는 [5]1950년에 MIT 링컨 연구소에서 4096 디스플레이를 달성하면서 이러한 기술을 연구하고 있었습니다.

드럼 메모리와 텔레비전 [8]모니터를 사용한 Brookhaven RAster Display (BRAD)라고 불리는 컬러 스캔 디스플레이가 1960년대 말에 구현되었다.1969년에 A.Bell Labs의 Michael Noll은 자기 코어 [9]메모리를 사용하여 프레임 버퍼를 갖춘 스캔 디스플레이를 구현했습니다.이후 Bell Labs 시스템은 표준 컬러 TV 모니터에 3비트의 색심도를 가진 이미지를 표시하도록 확장되었습니다.

1970년대 초 MOS 메모리(금속산화물반도체 메모리) 집적회로 칩, 특히 최소 1kb의 메모리를 가진 고밀도 DRAM(다이나믹 랜덤 액세스 메모리) 의 개발로 표준 [10][11]비디오 이미지를 유지할 수 있는 프레임 버퍼를 갖춘 디지털 메모리 시스템을 최초로 구축할 수 있게 되었다.이를 통해 [10]1972년 Richard ShoupXerox PARC에서 SuperPaint 시스템을 개발하게 되었습니다.Shoup은 SuperPaint 프레임 버퍼를 사용하여 초기 디지털 비디오 캡처 시스템을 만들 수 있었습니다.Shoup은 출력 신호를 입력 신호에 동기화함으로써 데이터가 이동하면서 각 픽셀을 덮어쓸 수 있었습니다.또한 Shoup은 컬러 테이블을 사용하여 출력 신호를 수정하는 실험을 했습니다.이러한 컬러 테이블을 통해 SuperPaint 시스템은 제한된 8비트 데이터 범위를 벗어나 다양한 색상을 생성할 수 있었습니다.이 스킴은 나중에 컴퓨터 프레임 버퍼에서 일반화될 것입니다.

1974년 에반스 & 서덜랜드는 최초의 상업용 프레임 버퍼인 Picture [12]System을 출시했는데 가격은 약 15,000달러였다.8비트 그레이스케일로 최대 512x512픽셀의 해상도를 생성할 수 있어 자체 프레임 버퍼를 구축할 리소스가 없는 그래픽 연구자들에게 큰 도움이 되었습니다.뉴욕공과대학은 나중에 에반스 & 서덜랜드 프레임 버퍼 [13]3개를 사용하여 최초의 24비트 컬러 시스템을 개발하게 된다.Digital Equipment Corporation PDP 11/04 미니컴퓨터를 사용하여 각 프레임 버퍼를 RGB 컬러 출력(빨간색, 녹색, 파란색)에 접속하여 3개의 디바이스를 1개씩 제어합니다.

1975년, 영국 회사 Quantel은 최초의 상용 풀 컬러 방송 프레임 버퍼인 Quantel DFS 3000을 생산했습니다.1976년 몬트리올 올림픽 TV에서 올림픽 성화 봉송 장면을 촬영하기 위해 처음 사용되었으며, 나머지 사진에서는 주자가 경기장에 입장하는 모습을 담았다.

집적회로 기술의 급속한 발전으로 1970년대 후반의 가정용 컴퓨터 중 많은 수가 저색 깊이 프레임 버퍼를 장착할 수 있게 되었다.오늘날 그래픽 기능을 갖춘 거의 모든 컴퓨터는 비디오 신호를 생성하기 위해 프레임 버퍼를 사용합니다.1980년대에 개발된 Amiga 컴퓨터는 그래픽 성능에 특별한 주의를 기울였으며 4096개의 색상을 표시할 수 있는 독특한 Hold-And-Modify 프레임 버퍼를 포함했습니다.

프레임 버퍼는 1980년대 내내 하이엔드 워크스테이션과 아케이드 시스템 보드에서도 인기를 끌었다.SGI, Sun Microsystems, HP, DEC IBM은 모두 이 기간에 워크스테이션 컴퓨터용 프레임 버퍼를 출시했습니다.이러한 프레임 버퍼는 보통 대부분의 가정용 컴퓨터에서 볼 수 있는 것보다 훨씬 더 높은 품질로 텔레비전, 인쇄, 컴퓨터 모델링 및 3D 그래픽에 정기적으로 사용되었습니다.세가는 고급 아케이드 보드에도 프레임 버퍼를 사용했습니다.이 보드도 가정용 컴퓨터보다 품질이 뛰어납니다.

디스플레이 모드

A Sun cgsix 프레임버퍼

퍼스널 컴퓨팅과 홈 컴퓨팅에서 사용되는 프레임 버퍼에는 프레임 버퍼를 동작시킬 수 있는 정의된 모드 세트가 있는 경우가 많습니다.이러한 모드는 다양한 해상도, 색심도, 메모리 레이아웃 및 리프레시 레이트타이밍을 출력하도록 하드웨어를 재설정합니다.

Unix 머신과 operating system의 세계에서는, 이러한 편리함은 일반적으로 하드웨어 설정을 직접 조작하는 것에 의해서 회피되고 있었습니다.이 조작은 해상도, 색심도, 리프레시 레이트를 얻을 수 있다는 점에서 훨씬 유연했습니다.프레임 버퍼에 탑재된 메모리만으로 제한됩니다.

이 방법의 안타까운 부작용은 디스플레이 장치가 능력 이상으로 구동될 수 있다는 것이었다.이로 인해 [14]디스플레이에 하드웨어 손상이 발생할 수 있습니다.보다 일반적으로는 단순히 왜곡되어 사용할 수 없는 출력이 생성되었습니다.최신 CRT 모니터는 보호 회로를 도입하여 이 문제를 해결합니다.디스플레이 모드가 변경되면 모니터는 새로운 리프레시 주파수에 대한 신호 잠금을 얻으려고 합니다.모니터가 신호 잠금을 얻을 수 없거나 신호가 설계 제한 범위를 벗어나면 모니터는 프레임 버퍼 신호를 무시하고 사용자에게 오류 메시지를 표시할 수 있습니다.

LCD 모니터에는 유사한 보호회로가 탑재되어 있는 경우가 있습니다만, 그 이유는 다릅니다.LCD는 전자빔을 에뮬레이트하여 디스플레이 신호를 디지털로 샘플링해야 하므로 범위를 벗어난 신호는 모니터에 물리적으로 표시할 수 없습니다.

컬러 팔레트

프레임 버퍼는 전통적으로 다양한 색상 모드를 지원했습니다.메모리 비용 때문에 대부분의 초기 프레임 버퍼는 1비트(1픽셀당 2컬러), 2비트(4컬러), 4비트(16컬러) 또는 8비트(256컬러)의 색심도를 사용했습니다.이렇게 색의 깊이가 작을 때의 문제는 모든 범위의 색상을 만들 수 없다는 것입니다.이 문제의 해결방법은 프레임버퍼에 룩업테이블을 추가하는 인덱스컬러입니다프레임 버퍼 메모리에 격납되어 있는 각 색상은, 색지수로서 기능합니다.룩업 테이블은 제한된 수의 다른 색상으로 팔레트 역할을 하고 나머지는 인덱스 테이블로 사용됩니다.

다음은 일반적인 색인 256색 이미지와 자체 팔레트(스왓치 직사각형으로 표시됨)입니다.

Adaptative 8bits palette sample image.png Adaptative 8bits palette.png

일부 설계에서는 실행 중에 LUT에 데이터를 쓸 수도 있고(또는 기존 팔레트 간 전환) 자체 팔레트를 사용하여 사진을 수평 막대로 분할할 수 있으므로 팔레트가 훨씬 더 넓은 이미지를 렌더링할 수도 있습니다.예를 들어 야외 촬영 사진을 볼 때, 사진은 하늘색에 중점을 둔 상단, 단풍색, 피부색 및 옷색에 중점을 둔 하단 등 4개의 막대로 나눌 수 있다.이를 위해서는 각 팔레트의 색상이 겹치지만 신중하게 처리되어 유연성이 뛰어납니다.

메모리 액세스

일반적으로 프레임 버퍼는 CPU 메모리 공간에 직접 메모리 매핑을 통해 액세스되지만 이 방법만이 액세스 가능한 것은 아닙니다.프레임 버퍼는 메모리에 액세스하는 방법에 따라 매우 다양합니다.가장 일반적인 예는 다음과 같습니다.

  • 프레임 버퍼 전체를 특정 메모리 범위에 매핑합니다.
  • 각 픽셀, 픽셀 범위 또는 팔레트 항목을 설정하는 포트 명령입니다.
  • 프레임 버퍼 메모리보다 작은 메모리 범위를 매핑하고 필요에 따라 뱅크스위칭을 실시합니다.

프레임 버퍼의 구성은 픽셀 또는 평면 패킹으로 구성할 수 있습니다.프레임 버퍼는 모두 주소 지정 가능한 포인트이거나 업데이트 방법에 제한이 있을 수 있습니다.

비디오 카드의 RAM

비디오 카드에는 항상 일정량의 RAM이 탑재되어 있습니다.이 RAM은 이미지 데이터의 비트맵이 표시용으로 "버퍼링"되는 곳입니다.따라서 이 RAM을 참조할 때 프레임버퍼라는 용어는 자주 서로 바꿔서 사용됩니다.

CPU가 비디오 카드에 이미지 업데이트를 송신합니다.카드상의 비디오 프로세서는, 화면 이미지의 화상을 형성해, 큰 비트맵으로서 프레임 버퍼에 보존합니다.RAM의 비트맵은 카드가 화면 [15]이미지를 지속적으로 새로 고치기 위해 사용합니다.

가상 프레임 버퍼

많은 시스템이 호환성을 이유로 프레임버퍼 디바이스의 기능을 에뮬레이트하려고 합니다.가장 일반적인 2개의 가상 프레임버퍼는 Linux 프레임버퍼 디바이스(fbdev)와 X 가상 프레임버퍼(Xvfb)입니다.Xvfb는 그래픽 프레임버퍼 없이 X를 실행하는 방법을 제공하기 위해 X Window System 배포에 추가되었습니다.Linux 프레임 버퍼 장치는 기본 프레임 버퍼에 액세스하는 물리적 방법을 프로그램이 쉽게 액세스할 수 있는 보장된 메모리 맵에 추상화하기 위해 개발되었습니다.이로 인해 메모리 맵이 분리되어 있거나 뱅크 스위칭이 필요한 시스템을 처리하기 위해 프로그램이 필요하지 않기 때문에 휴대성이 향상됩니다.

페이지 플립

프레임 버퍼는, 2 프레임 분의 비디오 데이터를 격납하기 위한 충분한 메모리를 사용해 설계할 수 있다.일반적으로 더블 버퍼링 또는 보다 구체적으로는 페이지 플립으로 알려진 기술에서 프레임 버퍼는 메모리의 절반을 사용하여 현재 프레임을 표시합니다.이 메모리가 표시되는 동안 메모리의 나머지 절반은 다음 프레임의 데이터로 채워집니다.세컨더리 버퍼가 가득 차면 프레임버퍼에 세컨더리 버퍼가 표시되도록 지시됩니다.프라이머리 버퍼가 세컨더리 버퍼가 되고 세컨더리 버퍼가 프라이머리 버퍼가 됩니다.이 스위치는 대부분의 경우 오래된 프레임의 절반과 새 프레임의 절반이 함께 표시되는 화면 분해를 방지하기 위해 수직 블랭크 간격 후에 실행됩니다.

페이지 플립은 PC 게임 프로그래머들이 사용하는 표준 기술이 되었다.

그래픽 액셀러레이터

더 나은 그래픽스에 대한 요구가 높아짐에 따라 하드웨어 제조업체는 프레임 버퍼를 채우는 데 필요한 CPU 시간을 단축하는 방법을 개발했습니다.이것을 일반적으로 그래픽 액셀러레이션이라고 부릅니다.일반적인 그래픽 그리기 명령어(대부분 기하학)는 원시 형태로 그래픽 액셀러레이터로 전송됩니다.다음으로 액셀러레이터는 명령어 결과를 프레임버퍼에 래스터라이즈 합니다.이 방법을 사용하면 CPU가 다른 작업을 수행할 수 있습니다.

초기 액셀러레이터는 2D GUI 시스템의 성능 향상에 초점을 맞췄습니다.대부분의 현대 가속기는 이러한 2D 기능을 유지하면서 실시간으로 3D 영상을 제작하는 데 초점을 맞추고 있습니다.공통 설계에서는 OpenGL이나 Direct3D 등의 그래픽 라이브러리를 사용하여 그래픽 드라이버와 인터페이스하여 수신된 명령을 액셀러레이터의 그래픽 처리 장치(GPU)용 명령으로 변환합니다.GPU는 이러한 명령을 사용하여 래스터라이즈된 결과를 계산하고 결과는 프레임 버퍼에 비트블릿됩니다.그런 다음 프레임 버퍼의 신호는 내장된 비디오 오버레이 장치(일반적으로 프레임 버퍼의 데이터를 수정하지 않고 마우스 커서를 생성하는 데 사용됨) 및 출력 신호를 수정하여 생성되는 최종 특수 효과와 함께 생성됩니다.그러한 최종 특수 효과의 예는 3dfx Voodoo 카드에 사용된 공간 안티앨리어싱 기술이다.이러한 카드는 출력 신호에 약간의 흐림을 더하여 래스터라이즈된 그래픽의 앨리어스를 훨씬 덜 명확하게 합니다.

한때 그래픽 액셀러레이터 제조사는 3dfx Interactive, ATI, 헤라클레스, Trident, Nvidia, Radius, S3 Graphics, SiS 및 실리콘 그래픽스 등 다양했습니다.2015년 현재 x86 기반 시스템의 그래픽 액셀러레이터 시장은 Nvidia(2002년 3dfx 인수), AMD(2006년 ATI 인수), Intel(2006년 현재 개별 비디오 카드가 아닌 통합 GPU만 생산)이 지배하고 있습니다.

비교

프레임 버퍼를 사용하면 전자빔(디스플레이 기술이 하나를 사용하는 경우)이 텔레비전이 브로드캐스트 신호를 렌더링하는 것처럼 래스터 스캔을 수행하도록 명령됩니다.따라서 화면에 표시되는 각 포인트의 색상 정보는 스캔 중에 프레임 버퍼에서 직접 추출되어 픽셀과 같은 이산적인 화소 세트를 만듭니다.

프레임 버퍼는 래스터 그래픽이 등장하기 이전의 일반적인 벡터 디스플레이(그 결과 프레임 버퍼의 개념)와는 크게 다릅니다.벡터 디스플레이에서는 그래픽 프리미티브의 정점만 저장됩니다.그런 다음 출력 디스플레이의 전자 빔이 정점에서 정점으로 이동하도록 명령되어 이러한 점 사이의 영역을 가로지르는 선을 추적합니다.

마찬가지로 프레임 버퍼는 초기 텍스트모드 디스플레이에서 사용되는 테크놀로지와는 다릅니다.이 테크놀로지에서는 버퍼에 개별 픽셀이 아닌 문자의 코드가 저장됩니다.비디오 디스플레이 디바이스는 프레임버퍼와 같은 래스터 스캔을 실행하지만 빔을 전송할 때 버퍼 내의 각 문자의 픽셀을 생성합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "What is frame buffer? A Webopedia Definition". webopedia.com. June 1998.
  2. ^ "Frame Buffer FAQ". Retrieved 14 May 2014.
  3. ^ Mueller, J. (2002). .NET Framework Solutions: In Search of the Lost Win32 API. Wiley. p. 160. ISBN 9780782141344. Retrieved 2015-04-21.
  4. ^ "Smart Computing Dictionary Entry - video buffer". Archived from the original on 2012-03-24. Retrieved 2015-04-21.
  5. ^ a b Gaboury, J. (2018-03-01). "The random-access image: Memory and the history of the computer screen". Grey Room. 70 (70): 24–53. doi:10.1162/GREY_a_00233. hdl:21.11116/0000-0001-FA73-4. ISSN 1526-3819. S2CID 57565564.
  6. ^ Williams, F. C.; Kilburn, T. (March 1949). "A storage system for use with binary-digital computing machines". Proceedings of the IEE - Part III: Radio and Communication Engineering. 96 (40): 81–. doi:10.1049/pi-3.1949.0018.
  7. ^ "Kilburn 1947 Report Cover Notes (Digital 60)". curation.cs.manchester.ac.uk. Retrieved 2019-04-26.
  8. ^ D. Ophir; S. Rankowitz; B. J. Shepherd; R. J. Spinrad (June 1968), "BRAD: The Brookhave Raster Display", Communications of the ACM, vol. 11, no. 6, pp. 415–416, doi:10.1145/363347.363385, S2CID 11160780
  9. ^ Noll, A. Michael (March 1971). "Scanned-Display Computer Graphics". Communications of the ACM. 14 (3): 145–150. doi:10.1145/362566.362567. S2CID 2210619.
  10. ^ a b Richard Shoup (2001). "SuperPaint: An Early Frame Buffer Graphics System" (PDF). Annals of the History of Computing. IEEE. Archived from the original (PDF) on 2004-06-12.
  11. ^ Goldwasser, S.M. (June 1983). Computer Architecture For Interactive Display Of Segmented Imagery. Computer Architectures for Spatially Distributed Data. Springer Science & Business Media. pp. 75-94 (81). ISBN 9783642821509.
  12. ^ Picture System (PDF), Evans & Sutherland, retrieved 2017-12-31
  13. ^ "History of the New York Institute of Technology Graphics Lab". Retrieved 2007-08-31.
  14. ^ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html XFree86 비디오 타이밍 방법: 모니터 오버드라이브
  15. ^ "An illustrated Guide to the Video Cards". karbosguide.com.

외부 링크