블리터

Blitter

블리터는 컴퓨터 메모리 내의 데이터를 빠르게 이동 및 수정하기 위한 회로이며, 때로는 마이크로프로세서 상의 코프로세서 또는 논리 블록으로도 사용됩니다.블리터는 CPU와 병렬로 많은 양의 데이터를 한 메모리 영역에서 다른 메모리 영역으로 비교적 빠르게 복사할 수 있으며 CPU의 복잡한 기능을 다른 작업에 사용할 수 있습니다.블리터의 일반적인 용도는 그래픽 사용자 인터페이스의 창이나 글꼴, 2D 비디오 게임의 이미지와 배경과 같은 비트맵의 이동입니다.이 이름은 1973년 [2]Xerox [1]Alto의 비트 블릿 동작에서 유래했습니다.이것은 비트 블록 전송을 의미합니다.바이트가 정렬되지 않은 데이터(따라서 비트 블릿의 비트), 투명한 픽셀(대상 덮어쓰지 않아야 하는 픽셀) 처리 및 소스 및 대상 데이터를 결합하는 다양한 방법이 포함되기 때문에 blit 작업은 메모리 복사본 이상입니다.

블리터는 주로 프로그램 가능한 그래픽 처리 장치로 대체되었습니다.

역사

대부분의 1970년대와 1980년대 가정용 컴퓨터와 1990년대 중반까지의 IBM PC 호환성을 포함하는 하드웨어 가속 래스터 그래픽스가 없는 컴퓨터에서는 프레임 버퍼가 일반적으로 CPU 액세스 가능한 메모리에 저장됩니다.드로잉은 소프트웨어를 통해 프레임 버퍼를 업데이트함으로써 이루어집니다.작은 이미지를 큰 이미지로 합성하거나(비디오 게임 등), 채워진 직사각형을 그리는 것과 같은 기본적인 그래픽 루틴에서는 대량의 메모리를 조작해야 하며, 많은 사이클이 로드/스토어 명령의 짧은 루프를 가져오고 디코딩하는 데 소비됩니다.캐시가 없는 CPU의 경우 명령에 대한 버스 요건은 데이터만큼 중요합니다.프레임 버퍼의 크기를 줄이기 위해 1바이트가 픽셀에 반드시 대응하는 것은 아니지만 8개의 싱글비트 픽셀, 4개의 2비트 픽셀 또는 4개의 4비트 픽셀 쌍을 포함할 수 있습니다.패킹된 픽셀을 조작하려면 CPU에서 추가 이동 및 마스킹 작업이 필요합니다.

블리터는 데이터를 복사하거나 메모리 블록을 채우는 반복 작업을 CPU에 의해 가능한 한 빨리 오프로드하도록 개발되었습니다.이는 CPU와 병렬로 실행할 수 있으며, 투명하게 표시된 픽셀을 건너뛰거나 바이트 정렬되지 않은 데이터를 처리하는 등 손으로 코딩할 경우 처리 속도가 현저히 느려지는 특수한 경우도 처리할 수 있습니다.

컴퓨터 및 비디오 게임에서 깜박임

1973년: 비트블릿이라는 용어가 유래한 제록스 알토는 마이크로코드로 구현된 비트블록 전송 명령을 가지고 있어 [1]CPU에 기록된 동일한 동작보다 훨씬 더 빠릅니다.이 마이크로코드는 Dan Ingalls[1]의해 구현되었습니다.

1982년: 도면 형상 프리미티브와 더불어 NEC pd PD7220 비디오 디스플레이 프로세서는 직접 메모리 액세스를 통해 직사각형 비트맵을 디스플레이 메모리로 전송하여 [3][4]화면의 직사각형 부분을 채울 수 있습니다.

1982: Williams Electronics의 The Robotron: 2084 아케이드 비디오 게임에는 최대 80개의 [5]물체를 동시에 이동할 수 있는 2개의 블리터 칩이 포함되어 있습니다.퍼포먼스는 약 910KB/[5]초로 측정되었습니다.블리터는 4비트(16컬러) 픽셀로 동작합니다.컬러 0은 투명하기 때문에 직사각형이 아닙니다.[6]윌리엄스는 시니스타와 [6]주스트포함한 그 시대의 다른 게임에서도 같은 하드웨어를 사용했다.

1984: MS-DOS 호환 Mindhold PC에는 비트맵의 직사각형 섹션을 이동하기 위한 커스텀 VLSI 칩이 포함되어 있습니다.하드웨어는 투과성과 소스 [7]및 대상 데이터를 결합하기 위한 8가지 모드를 처리합니다.Mindhind는 당시 [8]PC보다 최대 50배 빠른 그래픽을 탑재했다고 주장되었지만, 시스템은 성공하지 못했습니다.

1985: Amiga PC의 하드웨어 코프로세서 중 하나는 블리터입니다.블리터라는 용어를 사용한 최초의 미국 특허 출원은 코모도어-아미가 [9]주식회사에 할당된 "비트맵된 이미지 데이터의 블록 전송을 위한 개인용 컴퓨터 장치"였다.블리터는 사이즈가 16인3개의 비트벡터에 대해 임의의 부울 연산을 수행합니다.

destination := op(source A, source B, source C)

1986: TMS34010은 범용 32비트 프로세서로 비트맵 데이터를 조작하기 위한 추가 블리터와 같은 명령을 제공합니다.투명 픽셀 처리, 바이트가 아닌 정렬된 데이터 작업, 비트 깊이 변환 등 CPU에서 추가 처리가 필요한 경우에 최적화되어 있습니다.TMS34010은 1988년 나르스를 시작으로 하드드라이빈, 스매시TV, 모탈콤뱃, NBA잼다수의 아케이드게임에서 CPU와 GPU의 역할을 했으며 1990년대 프로급 그래픽 액셀러레이터 보드에 사용되기도 했다.

1986: 인텔 82786은 프로그램 가능한 그래픽스 프로세서이며BIT_BLT비트맵의 [11]직사각형 섹션을 이동하도록 지시합니다.

1987: 1987년 4월에 IBM Personal System/2 컴퓨터에 도입된 IBM 8514/A 디스플레이 어댑터는 비트 블록 전송 [12]하드웨어를 포함합니다.

아타리 ST 블리터 칩

1987년: 아타리 Mega ST 2에는 블리터 [13]칩이 포함되어 있습니다.공식적으로 "Atari ST Bit-Block Transfer Processor"라고 불리며, BLiTER로 스타일화되며 소스 및 대상 [14]데이터를 병합하기 위한 16가지 옵션을 제공합니다.블리터는 엔트리 레벨 STfm 홈컴퓨터의 최신 리비전을 포함하여 대부분의 후속 ST머신에서 지원됩니다.

1989년: 단명 Atari Transputer Workstation은 (Mega ST 기반) "Blossom" 비디오 [15]시스템의 일부로 블리터 하드웨어를 포함하고 있습니다.

1993년: 아타리사의 마지막 게임기인 Jaguar는 커스텀 "Tom" [16]칩의 일부로서 블리터 하드웨어를 탑재하고 있습니다.

1996년: VESA Group은 PC에서 VBE/AF(VBE/AF) 기능을 갖춘 하드웨어 비트 블록 전송(Bit Blt) 등의 기능에 액세스하기 위한 표준화된 방법을 도입했습니다.그 이전에는, 각 DOS 애플리케이션은 특정의 비디오 카드 드라이버와 함께 출하할 필요가 있었습니다.Windows 에서는, 각 비디오 카드는 독자적인 드라이버와 그것들을 사용하기 위한 표준화된 API를 가지고 있었습니다.

작동

Sprites (Left) and Masks (Right)

일반적으로 컴퓨터 프로그램은 완료해야 할 메모리 전송과 데이터에 대한 논리 연산을 설명하는 정보를 특정 레지스터에 넣습니다.그 후 CPU는 블리터의 동작을 개시합니다.병렬로 실행되고 있는 블릿은 메모리 대역폭을 사용하지만 블리터가 동작하고 있는 동안 CPU는 다른 처리를 할 수 있습니다.

스프라이트와 같은 투명한 부분을 사용하여 데이터를 복사하려면 블릿 중에 무시하도록 색상(예: 색상 0)을 지정할 수 있습니다.다른 시스템에서는 픽셀당 두 번째 1비트 이미지를 "마스크"로 사용하여 전송할 픽셀과 변경하지 않은 상태로 둘 픽셀을 나타낼 수 있습니다(오른쪽 이미지 참조).마스크는 스텐실처럼 작동합니다.트랜스페어런트 컬러 시스템의 논리 연산(픽셀 비트를 OR로 가산하여 해당 픽셀이 컬러0인지 아닌지를 판별한 후)은 다음과 같습니다.destination := (background AND NOT mask) OR sprite마스크된 픽셀과 마스크되지 않은 픽셀이 모두 0 및 1비트의 팔레트 입력/조합이 될 수 있는 별도의 사전 계산된 마스크 평면의 경우(이전 작업에서는 마스크된 것으로 추정되더라도 배경과 충돌할 수 있음) 연산은 다음과 같습니다.destination := (background AND NOT mask) OR (sprite AND mask)(아직도 3개의 입력이 있지만 그 중 1개를 2회 사용) 소프트웨어 렌더링에 사용되는 XOR 기반 방식과 작동 방식이 유사합니다(예: 초기 흑백 또는 컬러 비트플레인 GUI의 1비트+마스크 마우스 포인터, 마스킹 영역에서 추가 비트플레인 모두 0으로 고정됨).

기타 접근법

하드웨어 스프라이트는 비디오칩에 의해 즉시 배경과 함께 독립적으로 배치될 수 있는 작은 비트맵이기 때문에 프레임 버퍼의 실제 변경은 발생하지 않습니다.[17]스프라이트 시스템은 그래픽스 이동에 더 효율적입니다.일반적으로 메모리 사이클의 1/3을 필요로 합니다.이는 CPU 명령이 아닌 이미지 데이터만 가져오고 이후 컴포지팅을 [citation needed]온칩으로 수행하기 때문입니다.스프라이트의 단점은 스캔 라인당 그래픽 이동이 제한된다는 점입니다.스캔 라인당 그래픽 이동 범위는 3 ~8(Commodore 64Atari 8비트 패밀리)에서 16비트 콘솔 및 아케이드 하드웨어의 경우 현저하게 높아집니다(Neo Geo는 1줄당 96개의 스프라이트를 표시할 수 있습니다).또한 영속적인 비트맵을 갱신할 수 없습니다(일반적으로는 적합하지 않습니다).데스크톱 GUI 액셀러레이션).

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c Shirriff, Ken. "Restoring YCombinator's Xerox Alto day 5: Microcode tracing with a logic analyzer". Ken Shirriff's Blog.
  2. ^ "BitBlt function". Windows Dev Network. Microsoft. Retrieved 2 October 2016.
  3. ^ Peddie, Jon. "Famous Graphics Chips: NEC µPD7220 Graphics Display Controller". computer.org.
  4. ^ "User's Manual: NEC µPD7220/7220A" (PDF). NEC Electronics. December 1985. Archived from the original (PDF) on 2012-06-16.
  5. ^ a b Wolf, Mark J.P. (June 2012). Before the Crash: Early Video Game History. Wayne State University Press. p. 185. ISBN 9780814334508.
  6. ^ a b Riddle, Sean. "Blitter Information".
  7. ^ Williams, Gregg (April 1984). "Product Preview: The Mindset Personal Computer". Byte Magazine. 9 (4): 278–280.
  8. ^ Anderson, John J. (February 1985). "Mindset Micro: Pushing the envelope, or whatever happened to innovation?". Creative Computing. 11 (2): 50.
  9. ^ "US Patent 4874164 "Personal computer apparatus for block transfer of bit-mapped image data"".[영구 데드링크]
  10. ^ "Game listing for games running on the TMS34010 processor". mamedb.com. Archived from the original on 2016-03-04. Retrieved 2016-05-15.
  11. ^ 82786 Graphics Coprocessor User's Manual. Intel. 1988. p. 2-29.
  12. ^ Necasek, Michael. "The 8514/A Graphics Accelerator". OS/2 Museum.
  13. ^ "Atari Mega ST 2". Centre for Computing History.
  14. ^ "User Manual for the Atari ST Bit Block Transfer Processor". archive.org. Atari Corporation. June 17, 1987.
  15. ^ Rosenthal, Marshal M. (November 1989). "The Transputer Connection: An Exclusive Interview with Perihelion's Dr. Tim King". STart. 4 (4).
  16. ^ "Technical Reference Manual Tom & Jerry" (PDF). February 2001. pp. 4–5.
  17. ^ Hague, James. "Why Do Dedicated Game Consoles Exist?". Programming in the 21st Century. Archived from the original on 2018-04-23. Retrieved 2019-09-03.