web-dev-qa-db-ja.com

なぜビットマスクは「マスク」と呼ばれ、どのような目的に使用されますか?

なぜ「ビットマスク」はこのように呼ばれるのですか?

これらは主にビット単位の演算に使用され、ビットマスクの使用は個別の変数の使用よりも効率的です。

しかし、私の質問は、ビットマスクが発明された理由と時期です。初期のコンピューティング以来使用されていましたか? ITドメインには、ビットマスク以外の種類の「マスク」はありますか?

81
yoyo_fun

(顔の種類の)マスクは、顔の一部を覆い、他の部分を透けさせるものです。用語はコンピューティングの類推で使用されます。ビットマスクは、ビットセット内の一部のビットを覆い(フィルターし)、他のビットを通過させます。

ITドメインには、ビットマスク以外の種類の「マスク」はありますか?

頭のすぐ上にあるマスクは、画像処理で頻繁に使用されます。それは同様の概念です。何をマスクして何を通過させるかという形を示す白黒画像を作成します。

101
Mason Wheeler

ビットマスクは、ビットフィールドの一部のビットをマスクし、他のビットを公開するために使用されます。

initial value: 011011001
bit mask.....: 111110000
result value.: 011010000

これは、論理ゲート(AND、OR ...)またはトランジスタを備えた電子機器、またはリレーを備えた電気機械で計算する前に使用されていました。

56
mouviciel

ビットマスクはひどく古いです。最初のものへの参照を見つけることはできませんでしたが、8ビットプロセッサの登場により確かに人気があり、おそらく4ビットプロセッサでも使用されていました。

ビットマスクの背後にある考え方は、ビット単位の並列処理を利用することです。 8ビットコンピューターは、1つのネイティブWordにパックされている場合(つまり、レジスターに収まることを意味します)、8ビットに対して同じビット単位の操作を一度に実行できます。

名前はマスキングに由来します。マスキングは、操作したくない領域を隠す一般的な方法です。たとえば、壁の領域をマスクするためにこのステンシルを検討してください(ステンシルは、パターンを表示するために、ペイント後に移動されています)

Stencils

マスクは写真にも使用され、「ステンシル」ではなく「覆い焼き」という用語で表現されます。マスクを使用して、印刷中に一部の光を覆い隠して、領域を明るくすることができます。

Photography masks

この用語は、フォトリソグラフィーでも直接使用されます。これは、集積回路を作成するために使用される技術です。マスクは、光がチップに塗布されたフォトレジストに到達するのを防ぎ、後でチップ上の魅力的なパターンにつながるパターンを作成します。 (下の画像は Intel 8080Aプロセッサ のマスクの1つです(知りたい場合))

Photolithography mask

同様に、ビットマスキングでは、操作するWordの部分を選択し、残りのビットをすべてマスクします。以下の例では、「and」演算を使用して、3番目、4番目、および8番目のビットのみが透けて見えるように入力をマスクしています。残りは「マスク」され、0になります。私が使用するマスクは00110001です。 #が0を表し、.が1を表すことで、以下に示します。これにより、ビットマスクの視覚的な外観が上記の物理マスクの外観に似ているため、「選択されたビット」行が表示されますマスクされなかった出力のビット(「選択されたビット」は実際には発生する論理演算ではありません...プロセッサーは1つのステップで入力とマスクから出力へと実際に移行しますが、視覚的なイメージが明確になると思います)

Input          10010111
Mask           ##..###.  (aka 00110001)
-----------------------
(selected)       01   1
Input AND Mask 00010001

すでに述べたように、ビットマスキングはプロセッサーの生産性を劇的に向上させるため、非常に古いものです。 4ビットプロセッサでは、プロセッサを4倍高速にすることができます。 8ビットプロセスでは、8倍高速になります(もちろん、ビット単位の演算のみ)。

これの魅力的な用途の1つは、チェスエンジンです。チェス盤には64マスあります。最新のエンジンには64ビット整数があります。これはひじょうに便利な運なので、チェスエンジンはしばしばそれを利用します。いわゆる「 bitboards 」があり、ピースの場所が含まれています。これにより、すべてのポーンの動きを1つのステップで探すなど、あらゆる種類の最適化を行うことができます。

40
Cort Ammon

英語での最も一般的な使用法では、マスクは何かを隠すデバイスです。スクリーン印刷は別の回答で言及されています。テープをペイントすると、ペイントなどが付着しないように「マスク」されます。PCボードのはんだマスクは、はんだ付けされない領域からはんだ付けされる領域を「マスク」します。

「ビットマスキング」の場合、一部のビットは「非表示」または無視されるため、より関心のある他のビットをより簡単に操作したり、単に表示したりできます。

ビットマスキングは、単に「古い」手法ではなく、初期のプロセッサから私が知る限り、すべてではないにしてもほとんどの機械命令の原始的な操作です。通常、これは「このレジスタのビットパターンを使用して他のレジスタのビットをマスクする」という形式です。

ビットマスクは、 スクリーン印刷 に似ています。結果に引き継ぐ特定のビット位置を選択します。

source value = 42 -> 00101010b
mask = 51 -> 00110011b
result 42&51 = 00100010b -> 34

maskのもう1つの意味は、グラフィカルユーザーインターフェイスのページです。ユーザーがデータを入力できます。

10
Timothy Truckle

ビットマスク はいくつかの理由で発明されました:

  • ハードウェアレジスタは連続したビットのセットにマップされました
  • それほど遠くない過去では、メモリ空間は非常に限られていた

ORしてビットをオンにするか、ANDしてビットをオフにするビットのパターンがどのように見えるかを見ると、それはマスクのように見えます。

最も一般的なマスク(ビットマスクに基づく)はイメージマスクです(冒頭に含めたリンクを参照)。

3
Berin Loritsch

ITにおける別の種類の物理マスクは、シリコンウェーハの一部のみをエッチングするために使用されるリソグラフィフォトマスクです。これは初期のコンピュータの製造には使用されていませんでしたが、過去50年間に業界で働いていた人なら誰でもそれを知っていたでしょう。

「ビットマスク」という正確な用語がいつ出現したかはわかりませんが、演算自体はビット単位であり、これはすべてのバイナリコンピュータの基本的な命令です。

3
Davislor