맨위로가기

프레임버퍼

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

프레임버퍼는 컴퓨터 그래픽에서 화면에 표시되는 이미지를 저장하는 메모리 영역이다. 1940년대 후반에 개발이 시작되어, 1970년대에 MOS 메모리 칩의 발전과 함께 상용화되었다. 초기에는 흑백 및 제한된 색상 표현을 지원했지만, 기술 발전에 따라 해상도와 색상 표현력이 향상되었다. 프레임버퍼는 디스플레이 모드, 색상 팔레트, 메모리 접근 방식 등 다양한 방식으로 구성될 수 있으며, 그래픽 가속기를 통해 성능을 향상시킬 수 있다. 현재는 가상 프레임버퍼, 페이지 플리핑과 같은 기술과 함께 사용되며, 벡터 디스플레이, 텍스트 모드 디스플레이 등과 비교된다.

더 읽어볼만한 페이지

  • 영상 처리 - 컴퓨터 비전
    컴퓨터 비전은 디지털 이미지나 비디오로부터 고차원적 이해를 얻는 학제적 연구 분야로, 인간 시각 시스템 자동화 및 인공 시스템 이론 연구를 목표로 하며, 딥러닝 기술 발전으로 다양한 분야에 응용되고 있다.
  • 영상 처리 - 워터마크
    워터마크는 종이 제조 시 두께 차이를 이용해 만들어지는 표식으로, 위조 방지를 위해 지폐나 여권 등에 사용되며 댄디 롤 등의 제작 기법을 통해 만들어지고 컴퓨터 프린터 인쇄 기술로도 활용된다.
  • 사용자 인터페이스 - 로그인
    로그인은 특정 페이지, 웹사이트 또는 응용 프로그램에 접근하기 위해 사용자 이름과 암호를 입력하여 시스템에 접근하는 절차이며, 1960년대 시분할 시스템과 1970년대 BBS에서 사용되기 시작했다.
  • 사용자 인터페이스 - 키넥트
    키넥트는 마이크로소프트에서 개발한 동작 인식 장치로, 적외선 프로젝터와 센서를 사용하여 사용자의 움직임과 음성을 인식하며, Xbox용으로 출시되어 큰 인기를 얻었지만 개인정보 보호 문제 등으로 판매가 부진하여 생산이 중단되었고, 다양한 분야에서 활용되며 기술적 가치를 인정받아 클라우드 기반 Azure Kinect로 이어졌으나 단종되었다.
  • 컴퓨터 그래픽스 - 딥페이크
    딥페이크는 인공지능 기술을 활용하여 영상이나 이미지를 조작, 합성하여 실제와 구별하기 어렵게 만드는 기술이며, 가짜 뉴스, 명예훼손, 신원 위장 등 다양한 문제점을 야기한다.
  • 컴퓨터 그래픽스 - 엔비디아
    엔비디아는 1993년 설립된 미국의 반도체 회사로, GeForce 256을 통해 GPU라는 용어를 대중화하고 딥러닝 기술 발전에 힘입어 인공지능 및 자율주행 분야에서 시장을 선도하며 성장하여 2024년 6월에는 시가총액 세계 1위 기업에 올랐다.
프레임버퍼
기본 정보
프레임 버퍼의 다이어그램
프레임 버퍼의 다이어그램
유형컴퓨터 그래픽스
부분
관련비디오 카드
기술적 세부 사항
설명프레임 버퍼는 컴퓨터 메모리의 한 부분으로, 비디오 디스플레이 장치를 구동하는 비트맵을 포함하고 있다.
작동 방식'메모리 위치는 화면의 픽셀에 해당한다. 프레임 버퍼는 컴퓨터 그래픽스 하드웨어에 의해 직접 쓰여지며, 래스터 그래픽스 이미지의 "메모리 맵"을 제공하며, 컴퓨터의 중앙 처리 장치(CPU)에 의한 지속적인 새로 고침을 피할 수 있게 한다.'
깊이프레임 버퍼의 깊이(비트 수)는 표시될 수 있는 색상 수를 결정한다. 8비트 프레임 버퍼는 256개의 다른 색상을 허용하고, 16비트는 65,536개의 색상을 허용하며, 24비트는 1670만 개 이상의 다른 색상을 허용한다.
사용 목적'프레임 버퍼는 텔레비전 세트와 컴퓨터 모니터 모두에 사용할 수 있다. 때로는 그래픽 카드의 일부인 칩에 내장되기도 한다.'
역사
발명1969년

2. 역사

프레임 버퍼는 컴퓨터 개발 초기부터 그 개념이 있었지만, 1947년 맨체스터 베이비 컴퓨터에서 윌리엄스 튜브를 사용하여 처음으로 구현되었다.[6][7]

2. 1. 초기 개발

1951년 SWAC 윌리엄스 튜브 CRT의 메모리 패턴


컴퓨터 연구자들은 오랫동안 프레임버퍼의 이론적 장점에 대해 논의했지만, 경제적으로 실용적인 비용으로 충분한 메모리를 가진 기계를 생산할 수 없었다.[5] 1947년, 맨체스터 베이비 컴퓨터는 윌리엄스 튜브를 사용하여 CRT(음극선관) 메모리에 1024 비트를 저장하고 두 번째 CRT에 표시했다.[6][7] 다른 연구소에서도 이러한 기술을 탐구했으며, MIT 링컨 연구소는 1950년에 4096 디스플레이를 달성했다.[5]

1960년대 후반, 브룩헤븐 RAster 디스플레이(BRAD)는 드럼 메모리와 텔레비전 모니터를 사용한 컬러 스캔 디스플레이를 구현했다.[8] 1969년, 벨 연구소의 A. 마이클 놀은 자기 코어 메모리를 사용한 프레임 버퍼 스캔 디스플레이를 구현했다.[9] 이후, 벨 연구소 시스템은 표준 컬러 TV 모니터에서 3비트 색심도로 이미지를 표시하도록 확장되었다.

2. 2. 상용화 및 발전

MOS 메모리 (집적 회로) 칩의 개발로, 1970년대 초에 프레임 버퍼를 갖춘 디지털 메모리 시스템이 실용화되었다.[11][10] 1972년, Xerox PARC에서 리차드 샵이 슈퍼페인트 시스템을 개발했다.[11]

1974년, 에반스 & 서덜랜드는 최초의 상용 프레임 버퍼인 픽쳐 시스템을 출시했는데,[12] 가격은 약 15000USD였다. 이는 8비트 그레이스케일로 최대 512 x 512 픽셀의 해상도를 생성할 수 있었다. 뉴욕 기술 연구소는 에반스 & 서덜랜드 프레임 버퍼 3개를 사용하여 최초의 24비트 컬러 시스템을 만들었다.[13]

1975년, 영국 회사 퀀텔은 최초의 상업용 풀 컬러 방송 프레임 버퍼인 Quantel DFS 3000을 생산했다. 이는 1976년 몬트리올 올림픽의 TV 중계에서 사용되었다.

1970년대 후반, 많은 가정용 컴퓨터가 낮은 색심도의 프레임 버퍼를 포함하게 되었다. 1980년대에 제작된 아미가 컴퓨터는 4096가지 색상을 표시할 수 있는 독특한 홀드 앤 수정 프레임 버퍼를 포함했다.

1980년대, SGI, 썬 마이크로시스템즈, HP, DEC, IBM은 워크스테이션 컴퓨터용 프레임 버퍼를 출시했다. 세가는 고급 아케이드 보드에 프레임 버퍼를 사용했다.

3. 디스플레이 모드

개인 및 가정용 컴퓨팅에서 사용되는 프레임버퍼는 작동 가능한 일련의 정의된 '모드'를 가지는 경우가 많았다. 이러한 모드는 하드웨어를 재구성하여 서로 다른 해상도, 색 심도, 메모리 레이아웃 및 재생률 타이밍을 출력한다.

3. 1. 유닉스 시스템

유닉스 머신 및 운영 체제 환경에서는 하드웨어 설정을 직접 조작하여 프레임 버퍼를 제어하는 방식을 선호했다. 이러한 방식은 모든 해상도, 색 심도, 재생률을 얻을 수 있어 훨씬 유연했으며, 프레임버퍼에 사용할 수 있는 메모리에 의해서만 제한되었다.

하지만 이 방식에는 디스플레이 장치가 기능을 넘어 구동될 수 있다는 부작용이 있었다. 어떤 경우에는 디스플레이 하드웨어 손상으로 이어지기도 했다.[14] 더 일반적인 경우에는 왜곡되고 사용할 수 없는 출력이 생성되었다. 최신 CRT 모니터는 보호 회로를 도입하여 이 문제를 해결했다. 디스플레이 모드가 변경되면 모니터는 새 재생 빈도에서 신호 잠금을 얻으려고 시도한다. 모니터가 신호 잠금을 얻을 수 없거나 신호가 설계 제한 범위를 벗어난 경우, 모니터는 프레임버퍼 신호를 무시하고 사용자에게 오류 메시지를 표시할 수 있다.

LCD 모니터도 비슷한 보호 회로를 포함하는 경향이 있지만, 그 이유는 다르다. LCD는 디스플레이 신호를 디지털 방식으로 샘플링해야 하므로(전자 빔을 에뮬레이션하여) 범위를 벗어난 신호는 모니터에 물리적으로 표시될 수 없다.

4. 색상 팔레트

초기 프레임 버퍼는 메모리 제약으로 인해 1비트(픽셀당 2색), 2비트(4색), 4비트(16색), 8비트(256색) 등 낮은 색 심도를 주로 사용했다. 이는 전체 색상 범위를 표현할 수 없다는 문제가 있었는데, 색상표를 사용하는 인덱스 색상 방식으로 이 문제를 해결했다.[1]

4. 1. 인덱스 색상

인덱스 색상은 프레임 버퍼에 저장된 각 색상이 색상표의 인덱스로 작용하는 방식이다. 프레임 버퍼 메모리에 저장된 각 색상은 색상 인덱스로 작용하며, 색상표는 제한된 수의 서로 다른 색상을 가진 팔레트 역할을 한다. 나머지는 인덱스 테이블로 사용된다. 이러한 방식을 통해 제한된 수의 색상으로 더 다양한 색상을 표현할 수 있다.[1]

일반적인 인덱스 256색 이미지와 자체 팔레트(견본 사각형으로 표시됨)는 다음과 같다.[1]



일부 설계에서는 룩업 테이블을 동적으로 변경하여(데이터를 쓰거나 기존 팔레트 간에 전환) 더 넓은 팔레트를 가진 이미지를 렌더링할 수 있었다. 예를 들어, 야외 사진을 볼 때 그림을 네 개의 막대로 나누어, 맨 위에는 하늘색, 다음은 나뭇잎 색, 다음은 피부와 의복 색, 맨 아래에는 땅색을 강조할 수 있었다. 이렇게 하려면 각 팔레트가 색상을 겹치도록 해야 했지만, 신중하게 수행하면 큰 유연성을 얻을 수 있었다.[1]

5. 메모리 접근

프레임버퍼는 일반적으로 CPU 메모리 공간에 메모리 맵핑을 통해 접근하지만, 이것이 유일한 접근 방법은 아니다. 프레임버퍼는 메모리 접근에 사용되는 방법이 매우 다양하다.

5. 1. 메모리 구성

프레임버퍼는 CPU 메모리 공간에 직접 메모리 맵핑을 통해 접근하는 것이 일반적이지만, 유일한 접근 방법은 아니다. 프레임버퍼는 메모리 접근 방식이 매우 다양하며, 가장 일반적인 방법은 다음과 같다.

  • 전체 프레임버퍼를 주어진 메모리 범위에 맵핑.
  • 각 픽셀, 픽셀 범위 또는 팔레트 항목을 설정하는 포트 명령.
  • 프레임버퍼 메모리보다 작은 메모리 범위를 맵핑한 다음 필요에 따라 뱅크 스위칭.


프레임버퍼 구성은 팩 픽셀 또는 플래너 방식일 수 있다. 프레임버퍼는 전체 포인트 어드레싱이 가능하거나 업데이트 방법에 제한이 있을 수 있다.

6. 비디오 카드 RAM

비디오 카드는 일정량의 RAM을 가지고 있다. 이 RAM의 일부분은 이미지 데이터를 버퍼링하는 데 사용되므로, '프레임 버퍼'라는 용어가 같은 의미로 사용되기도 한다.[15]

6. 1. 작동 원리

CPU는 비디오 카드에 이미지 업데이트를 전송한다. 카드상의 비디오 프로세서는 화면 이미지의 그림을 형성하여 RAM의 큰 비트맵으로 프레임 버퍼에 저장한다. 이 비트맵은 카드가 화면 이미지를 지속적으로 새로 고치는 데 사용된다.[15]

7. 가상 프레임 버퍼

가상 프레임버퍼는 호환성을 위해 프레임버퍼 장치의 기능을 에뮬레이션하는 시스템이다. 리눅스 프레임버퍼 장치(fbdev)와 X 가상 프레임버퍼(Xvfb)가 대표적인 예시이다.

7. 1. 종류

가상 프레임버퍼는 호환성을 위해 프레임버퍼 장치의 기능을 에뮬레이션하려는 많은 시스템에서 사용된다. 가장 일반적인 두 가지 가상화 프레임버퍼는 리눅스 프레임버퍼 장치(fbdev)와 X 가상 프레임버퍼(Xvfb)이다.

  • '''리눅스 프레임버퍼 장치(fbdev):''' 프로그램이 쉽게 접근할 수 있는 보장된 메모리 맵으로 기본 프레임버퍼에 접근하는 물리적 방식을 추상화하기 위해 개발되었다. 이렇게 하면 프로그램이 분리된 메모리 맵을 가진 시스템을 처리하거나 뱅크 스위칭을 요구할 필요가 없으므로 이식성이 향상된다.[1]
  • '''X 가상 프레임버퍼(Xvfb):''' 그래픽 프레임버퍼 없이 X를 실행하는 방법을 제공하기 위해 X 윈도 시스템 배포판에 추가되었다.[1]

8. 페이지 플리핑

이중 버퍼링이라고 알려진 기술, 또는 더 구체적으로는 페이지 플리핑에서 프레임 버퍼는 현재 프레임을 표시하기 위해 메모리의 절반을 사용한다. 해당 메모리가 표시되는 동안, 메모리의 다른 절반은 다음 프레임의 데이터로 채워진다. 보조 버퍼가 채워지면 프레임 버퍼는 대신 보조 버퍼를 표시하도록 지시받는다. 기본 버퍼는 보조 버퍼가 되고 보조 버퍼는 기본 버퍼가 된다. 이 전환은 종종 이전 프레임의 절반과 새 프레임의 절반이 함께 표시되는 화면 찢김을 방지하기 위해 수직 블랭킹 간격 이후에 수행된다.

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

9. 그래픽 가속기

그래픽 가속기는 프레임 버퍼를 채우는 데 필요한 CPU 시간을 줄여 그래픽 성능을 향상시키는 기술이다.

9. 1. 작동 방식

더 나은 그래픽에 대한 요구가 증가함에 따라, 하드웨어 제조업체는 프레임버퍼를 채우는 데 필요한 CPU 시간을 줄이는 방법을 만들었다. 이것은 일반적으로 '그래픽 가속'이라고 불린다. 일반적인 그래픽 드로잉 명령(그중 많은 수가 기하학적)이 원시 형태로 그래픽 가속기로 전송된다. 그러면 가속기는 명령의 결과를 프레임버퍼로 래스터화한다. 이 방법은 CPU가 다른 작업을 수행할 수 있도록 한다.

초기 가속기는 2D GUI 시스템의 성능 향상에 중점을 두었다. 이러한 2D 기능을 유지하면서, 대부분의 최신 가속기는 실시간으로 3D 이미지를 생성하는 데 중점을 둔다. 일반적인 디자인은 OpenGL 또는 Direct3D와 같은 그래픽 라이브러리를 사용하여 그래픽 드라이버와 인터페이스하여 수신된 명령을 가속기의 그래픽 처리 장치(GPU)에 대한 지침으로 변환한다. GPU는 해당 지침을 사용하여 래스터화된 결과를 계산하고 결과는 프레임버퍼로 비트 블리트된다. 그런 다음 프레임버퍼의 신호는 내장 비디오 오버레이 장치(일반적으로 프레임버퍼의 데이터를 수정하지 않고 마우스 커서를 생성하는 데 사용됨)와 출력 신호를 수정하여 생성되는 최종 특수 효과와 결합하여 생성된다. 이러한 최종 특수 효과의 예는 3dfx Voodoo 카드에서 사용된 공간 안티앨리어싱 기술이었다. 이 카드들은 래스터화된 그래픽의 앨리어싱을 훨씬 덜 눈에 띄게 만드는 출력 신호에 약간의 흐림을 추가한다.

9. 2. 주요 제조업체

과거에는 3dfx Interactive, ATI, 허큘리스, 트라이던트, 엔비디아, 래디우스, S3 그래픽스, SiS, 실리콘 그래픽스 등 다양한 제조업체가 있었다. 2015년 기준으로 x86 기반 시스템용 그래픽 가속기 시장은 엔비디아 (2002년에 3dfx를 인수), AMD (2006년에 ATI를 인수), 인텔이 지배하고 있다.

10. 비교

프레임버퍼는 래스터 스캔 방식으로 이미지를 표시하는데, 이는 텔레비전의 작동 방식과 유사하다. 화면에 표시되는 각 지점의 색상 정보는 프레임버퍼에서 가져와 픽셀 집합을 생성한다.[1]

10. 1. 벡터 디스플레이와의 비교

벡터 디스플레이는 그래픽 기본 요소의 꼭짓점만 저장한다. 그런 다음 출력 디스플레이의 전자 빔은 꼭짓점에서 꼭짓점으로 이동하여 해당 지점 사이의 영역에 선을 그리는 방식인데, 이는 프레임버퍼가 래스터 그래픽의 등장 이전에 흔했던 방식이다.[1]

10. 2. 텍스트 모드 디스플레이와의 비교

프레임버퍼는 벡터 디스플레이와 초기 텍스트 모드 디스플레이와는 다른 기술을 사용한다. 벡터 디스플레이에서는 그래픽 기본 요소의 꼭짓점만 저장되어 전자 빔이 꼭짓점 사이를 이동하며 선을 그린다. 반면 텍스트 모드 디스플레이에서는 버퍼가 픽셀 대신 문자에 대한 코드를 저장하며, 비디오 디스플레이 장치가 각 문자에 대한 픽셀을 생성한다.[1]

참조

[1] 웹사이트 What is frame buffer? A Webopedia Definition http://www.webopedia[...] 1998-06
[2] 웹사이트 Frame Buffer FAQ http://www.sunhelp.o[...] 2014-05-14
[3] 서적 ".NET Framework Solutions: In Search of the Lost Win32 API" https://books.google[...] Wiley 2015-04-21
[4] 웹사이트 Smart Computing Dictionary Entry - video buffer https://web.archive.[...] 2015-04-21
[5] 간행물 The random-access image: Memory and the history of the computer screen https://escholarship[...] 2018-03-01
[6] 간행물 A storage system for use with binary-digital computing machines https://web.archive.[...] 1949-03
[7] 웹사이트 Kilburn 1947 Report Cover Notes (Digital 60) http://curation.cs.m[...] 2019-04-26
[8] 간행물 BRAD: The Brookhave Raster Display 1968-06
[9] 간행물 Scanned-Display Computer Graphics 1971-03
[10] conference Computer Architecture For Interactive Display Of Segmented Imagery https://books.google[...] Springer Science & Business Media 1983-06
[11] 웹사이트 SuperPaint: An Early Frame Buffer Graphics System https://web.archive.[...] IEEE
[12] 문서 Picture System http://s3data.comput[...] Evans & Sutherland 2017-12-31
[13] 웹사이트 History of the New York Institute of Technology Graphics Lab https://www.cs.cmu.e[...] 2007-08-31
[14] 문서 XFree86 Video Timings HOWTO: Overdriving Your Monitor http://tldp.org/HOWT[...]
[15] 웹사이트 An illustrated Guide to the Video Cards http://karbosguide.c[...]
[16] 웹인용 What is frame buffer? A Webopedia Definition http://www.webopedia[...] 1998-06
[17] 웹인용 Frame Buffer FAQ http://www.sunhelp.o[...] 2014-05-14
[18] 서적 ".NET Framework Solutions: In Search of the Lost Win32 API" https://books.google[...] Wiley 2015-04-21
[19] 웹인용 Smart Computing Dictionary Entry - video buffer https://web.archive.[...] 2015-04-21



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com