ブリッターとは、コンピュータのメモリ内でデータを高速に移動および変更するための 回路であり、コプロセッサやマイクロプロセッサ上のロジックブロックとして実装されることもあります。ブリッターは、大量のデータを比較的短時間で、CPUと並行してメモリ領域間でコピーすることができ、CPUのより複雑な処理能力を他の処理に解放します。ブリッターの典型的な用途としては、グラフィカルユーザーインターフェースのウィンドウやアイコン、2Dビデオゲームの画像や背景など、ビットマップの移動が挙げられます。
その名前は、1973年のゼロックス Altoのビット blit操作に由来し 、[ 1 ]ビット blit はビット ブロック転送の略です。[ 2 ] blit 操作は単なるメモリ コピー以上のものです。バイト境界に揃っていないデータ (ビット blitのビット)、透過ピクセル (宛先を上書きしてはいけないピクセル) の処理、ソース データと宛先データを組み合わせるさまざまな方法が含まれるからです。
ブリッターは、プログラマブルグラフィックス処理ユニットによってほぼ完全に取って代わられた。
ハードウェアアクセラレーションによるラスタグラフィックス機能を持たないコンピュータ(1970年代から1980年代のほとんどの家庭用コンピュータや、1990年代半ばまでのIBM PC互換機など)では、フレームバッファは通常、CPUからアクセス可能なメモリに格納されます。描画は、ソフトウェアによってフレームバッファを更新することで行われます。
小さな画像を大きな画像に合成する(ビデオゲームなど)処理や、塗りつぶされた長方形を描画する処理といった基本的なグラフィックス処理では、大量のメモリを操作する必要があり、ロード/ストア命令の短いループの取得とデコードに多くのサイクルが費やされます。当時のシステムの中には、スプライトや専用のテキスト描画システムといった形で、この処理をソフトウェアからオフロードするための専用ハードウェアを備えていたものもありましたが、1980年代に市場がビジネスアプリケーションへと移行するにつれ、こうしたハードウェアは後のマシンではほとんど姿を消しました。
フレームバッファに必要なメモリ量を削減するため、システムでは一般的に、解像度や表示できる色数を減らす様々なグラフィックモードが提供されていました。例えば、白黒ディスプレイでは、ピクセルが黒か白かを定義するのにピクセルごとに1ビットしか必要としないため、 1バイトに8ピクセル分のデータを格納できます。しかし、このためディスプレイの更新が複雑になります。1ピクセルを変更する場合、バイトを読み込み、そのピクセルに対応するビットを更新してから、書き戻す必要があります。また、パックされたピクセルを操作するには、CPUで追加のシフト演算やマスキング演算が必要になります。
ブリッターは、CPUよりも高速にデータコピーやメモリブロックの書き込みといった反復的なタスクを処理するために開発されました。これはCPUと並行して実行でき、透明としてマークされたピクセルをスキップしたり、バイト境界に揃っていないデータを処理したりするなど、手動でコーディングすると著しく遅くなる特殊なケースにも対応できます。
1973年:ビットブリットという用語が生まれたゼロックス・アルトには、マイクロコードで実装されたビットブロック転送命令があり、CPUで同じ操作を記述するよりもはるかに高速だった。[ 1 ]マイクロコードはダン・インガルスによって実装された。[ 1 ]
1978年:バリー・アストロケード家庭用ゲーム機には、原始的なブリッターハードウェアが搭載されている。[ 3 ]
1979年:Three Rivers Computer CorporationのPERQは、「Raster-Op」プロセッサ命令を提供し、単純なメモリ転送を実行するだけでなく、通常は視覚コンテンツの矩形領域に対応する2つのメモリ領域の内容を結合することができます。ブール演算の選択を使用して内容を結合し、指定された宛先領域を更新し、[ 4 ]: 13-15、システムのメモリの全帯域幅を使用して結果を出力します。[ 5 ]
1982年:NEC μPD7220ビデオディスプレイプロセッサは、形状プリミティブを描画するだけでなく、ダイレクトメモリアクセスを介して矩形ビットマップをディスプレイメモリに転送し、画面の矩形部分を埋めることができます。[ 6 ] [ 7 ]この設計はインテルにライセンス供与され、82720グラフィックスディスプレイコントローラとして販売されました。
1982年: Williams Electronicsのアーケードビデオゲーム「Robotron: 2084」には、最大80個のオブジェクトを同時に動かすことができる2つのブリッターチップが搭載されています。[ 8 ]パフォーマンスは、およそ910KB/秒と測定されました。[ 8 ]ブリッターは、色0が透明である4ビット(16色)ピクセルで動作し、非長方形の形状を可能にします。[ 9 ] Williamsは、 SinistarやJoustなど、同時期の他のゲームでも同じハードウェアを使用しました。[ 9 ]
1984年: MS -DOS互換のMindsetパーソナルコンピュータには、ビットマップの矩形領域を移動するためのカスタムVLSIチップが搭載されています。ハードウェアは透明度と、ソースデータとデスティネーションデータを組み合わせるための8つのモードを処理します。 [ 10 ] Mindsetは、当時のIBM PC互換機よりも最大50倍高速なグラフィックスを備えていると謳われていましたが、 [ 11 ]このシステムは成功しませんでした。
1985年:Amigaパーソナルコンピュータのコプロセッサの1つはブリッターです。ブリッターという用語を使用した最初の米国特許出願は、Commodore-Amiga, Inc.に譲渡された「ビットマップ画像データのブロック転送用パーソナルコンピュータ装置」でした。[ 12 ]ブリッターは、サイズ16の3つのビットベクトルに対して任意のブール演算を実行します。
destination := op(source A, source B, source C)1986年: TMS34010は、ビットマップデータを操作するための(ピクセルブロック転送)命令を含む組み込み命令を備えた汎用32ビットプロセッサですPIXBLT。透明ピクセルの処理、バイトアラインされていないデータの処理、ビット深度の変換など、ソフトウェアで実装すると余分な処理が必要になるケースに最適化されています。PIXBLTソースデータとデスティネーションデータを組み合わせる22の方法を提供します。[ 13 ] TMS34010は、1988年のNarcから始まり、 Hard Drivin'、Smash TV、Mortal Kombat、NBA Jamなど、多数のアーケードゲームでCPUとGPUの両方として機能しました。 [ 14 ]また、1990年代にはグラフィックスアクセラレータボードにも使用されました。
1987年: 1987年4月にIBM Personal System/2コンピュータとともに導入されたIBM 8514/Aディスプレイアダプタには、ビットブロック転送ハードウェアが含まれています。[ 15 ]

1987年: Atari Mega ST 2にはブリッターチップが搭載されています。[ 16 ]正式には「Atari ST Bit-Block Transfer Processor」と呼ばれ、BLiTTERと表記され、ソースデータと宛先データをマージするための16のオプションを提供します。[ 17 ]ブリッターは、その後のほとんどのSTマシンでサポートされています。
1989年:短命に終わったAtari Transputer Workstationには、(Mega STベースの)「Blossom」ビデオシステムの一部としてブリッターハードウェアが搭載されていた。[ 18 ]
1989年:アタリのカラー携帯ゲーム機「リンクス」には、スケーリングと歪み効果を備えたカスタムブリッターが搭載されている。
1993年:アタリ・ジャガー・ゲームコンソールには、カスタム「トム」チップの一部としてブリッターハードウェアが搭載されている。[ 19 ]
1996年: VESAグループは、 IBM PC互換機上でVBE/アクセラレータ機能(VBE/AF)を用いたハードウェアビットブロック転送などの機能にアクセスするための標準化された方法を導入した。

通常、コンピュータプログラムは、必要なメモリ転送の内容と、データに対して実行する論理演算を記述した情報を特定のハードウェアレジスタに格納します。その後、CPUはブリッターの動作を開始します。ブリッターが動作している間、CPUは他の処理に利用できますが、並列実行されるブリッターはメモリ帯域幅を消費します。
スプライトなど、完全に透明なピクセルを含むデータをコピーする場合、一部のハードウェアでは、ブレット処理中に特定のピクセル値(例えば色0)を無視することができます。これらのピクセルはコピー先に書き込まれません。
システムによっては、転送するピクセルとそのまま残すピクセルを示すマスクとして、1ピクセルあたり1ビットの画像をもう1つ使用するという方法もあります。このマスクはステンシルのように機能します。論理演算は次のとおりです。
destination := (background AND NOT mask) OR spriteハードウェアスプライトは、独立して配置でき、ビデオチップによってオンザフライで背景と合成される小さなビットマップです。フレームバッファは変更されません。[ 20 ]スプライトの欠点は、スキャンラインあたりの動くグラフィックに制限があることです。これは、3 ( Atari 2600 ) から 8 ( Commodore 64およびAtari 8 ビットコンピュータ) まで、16 ビットコンソールやアーケードハードウェアでは大幅に多くなります ( Neo Geoは 1 ラインあたり 96 個のスプライトを表示できます)。永続的なビットマップを更新できないため、一般的なデスクトップ GUI アクセラレーションには適していません。