ビットマスクが「マスク」と呼ばれるのはなぜですか?また、それらの目的は何ですか?


79

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

私はそれらが主にビット単位の操作に使用され、ビットマスクの使用が個別の変数の使用よりも効率的であることを知っています。

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


14
フォトリソグラフィ(UVを使用してシリコンウェーハにフィーチャをエッチングする)は、「フォトマスク」を使用してUV光源を選択的に遮断し、シリコンの露出領域が正しいパターンになるようにします。
レヴィ


1
また、さまざまなen.wikipedia.org/wiki/Mask_
曖昧さ回避

14
塗装作業をして、マスキングテープを使用したことがありますか?
gnasher729

1
別のタイプのマスク:ピクセル完全衝突検出は、2Dマスクのオーバーラップをすべて検出することです。
aluriak

回答:


101

(顔の種類の)マスクは、顔の一部を覆い、他の部分が透けて見えるようにするものです。この用語は計算の類推で使用されます。ビットマスクはビットセット内の一部のビットを覆い(フィルターで取り除き)、他のビットを通過させます。

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

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


33
サブネットマスクも非常に一般的です。
マチューM.17年

38
なつみ しかし、サブネットマスクもビットマスクではありませんか?これらは、ネットワークアドレスとホストアドレスを除外するために使用されます。
yoyo_fun

22
@JenniferAnderson白黒の画像もピクセルマスクだけではありませんか?
ベルギ

8
物理イメージマスクは、従来の写真やプロセス印刷から進化した技術の一部として、シリコンチップの製造に使用されます。 en.wikipedia.org/wiki/Photolithography
ジャンダー

20
マスキングは、ある領域を変更から保護し、別の領域を変更できるようにするための芸術用語でもあります。絵画でよく使用されます。それがマスキングテープの目的です。したがって、ペイントしたくないものにはペイントせずに、ペイントしたくないものにはペイントしません。
ネイトダイヤモンド

54

ビットマスクを使用して、ビットフィールドの一部のビットをマスクし、他のビットを公開します。

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

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


6
「ビットマスクは、ビットフィールドの一部のビットをマスクし、他のビットを公開するために使用されます。」このように考えたことはありませんが、かなり意味があります。説明ありがとうございます:)
yoyo_fun

1
@mouvicelでは、論理ゲートを備えた電子機器でビットマスクがどのように使用されたかについてのリンクをいくつか教えていただけますか。目的は何でしたか、この操作はどのようなシステムで使用され、この技術はいつ始まりましたか
yoyo_fun

4
明確にするために:初期値はマスクとANDされ、したがって「1」のマスクビットのみが元のビットを初期値から保持します(ビット単位で「1と1 = 1」と「0と1 = 0」 )、および初期値の他のビットは、(ビットごとに)「0 and 0 = 0」および「1 and 0 = 0」として0に設定されます)(「And」は、「最初のビットANDビットは1に設定され、結果は1です。他のすべての結果は0 "になります。(または、1番目のビットが1の場合、または2番目のビットが1の場合、結果は1になります)。en.wikipediaを
オリビエデュラック

2
@JenniferAnderson:論理ビットマスクとは別に、実際のマスクは電子機器で使用されます。はんだマスクは、PCBにはんだペーストを堆積するために使用されるステンシル(カード)です。マスクをPCBに置き、スキージを使用してマスク上にはんだペーストを塗り付けます。その後、マスクの穴がペーストを通過させて、はんだペーストが必要な領域のみを正確に覆います(youtube.com/watch?v=EqJN1CTCOQs) 。チップ製造では、マスクを使用してシリコン上に構造を構築またはエッチングします。この「マスク」という言葉の使用は、印刷業界から来ています。
スリーブマン

4
@JenniferAnderson:英語で「仮面」という言葉を使って何かをカバーすることは、より一般的で、おそらくずっと古いものです。たとえば英語では、香水は悪臭を隠すために使用できると言います。
スリーブマン

39

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

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

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

ステンシル

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

写真マスク

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

フォトリソグラフィーマスク

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

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

前述したように、ビットマスクはプロセッサの生産性を大幅に向上させるため、非常に古いものです。4ビットプロセッサでは、プロセッサを4倍高速化できます。8ビットプロセスの場合、または8倍高速にすることができます(もちろん、ビット単位の操作のみ)。

これの1つの魅力的な使用法はチェスエンジンです。チェス盤には64個のマスがあります。最新のエンジンには64ビット整数があります。これは非常に便利な運であるため、チェスエンジンはしばしばそれを活用します。それらには、ピースの位置を含むいわゆる「ビットボード」があります。これにより、1ステップですべてのポーンの動きを探すなど、あらゆる種類の最適化を行うことができます。


33

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

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

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


12
「塗装テープ」という言葉を聞いたことがない。これが私が「マスキングテープ」と呼ぶものだと思います。
テレム

12
@thelem:少なくとも米国では、「マスキングテープ」という用語は、簡単に破れる布ベースのテープを指します。ペイントに使用すると、やや「ファジー」なエッジが生成されます。このようなテープは他の多くの目的に使用されるため、塗装に適した(ただし、より高価で、他の目的にはあまり適さない)新しいテープは「ペインターテープ」と呼ばれます。
supercat

2
@Barmarハードウェアストアのペインティングセクションに行った人は誰でも駆け抜けることでしょう。
クリリス

5
私は画家ではありませんが、画家のテープとマスキングテープは非常に異なるタイプのテープであることを知っています。「マスキングテープは、不透明のために使用され、書きやすいテープの一種です」と言っているだけかもしれません。
バルバカ

2
ローカル(オーストラリア)の巨大なハードウェアストアのWebサイトを検索してみましたが、「ペイントテープ」の最初のヒットは「マスキングテープ」とラベル付けされた製品です。;)地域間の古き良き用語の違い、私は疑います。人々は、彼らが住んでいる場所に応じて、ガファーテープとして数えるものについて本当にうるさいです。
トレイカズ

10

ビット・マスクと同様であり、スクリーン印刷。結果に引き継ぐ特定のビット位置を選択します。

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

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


3

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

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

ビットをオンにするOR結合またはビットをオフにするAND結合のビットパターンの表示を見ると、マスクのように見えます。

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


2
フラグ値のビットマップは、フラグの配列boolや、各フラグを別々のバイトに持つ他の方法よりも、フラグのセットを渡す適切で効率的な方法です。それは効率的のようなものを行うことが可能となるif (x & (FLAG_A | FLAG_B))の代わりにif (xflags[FLAG_A] || xflags[FLAG_B])。特に、マスクが定数でない場合。マスクを整数として渡すことができるのは、チェックするフラグのリストを渡すよりもはるかに安価です。したがって、メモリとキャッシュが無制限であっても、場合によってはビットセットとマスクを使用する方がはるかに効率的です。
ピーターコーデス

まだ役に立たないとは言わなかった。起源はハードウェアレジスタと限られたメモリを扱うことにそのルーツがあるとちょうど言いました。問題に適切な場合は、ビットマスクを使用します。
ベリンロリチュ

1
私が言いたいのは、起源はおそらく古い低速のコンピューターのメモリとパフォーマンスに等しい部分であるということでした。
ピーターコーデス

1
同意した。Commodore 64をプログラミングした後、グラフィック、サウンド、シリアルおよびパラレルI / Oを処理するためにビットマスクを知る必要もありました。コントローラチップはメモリアドレスにマッピングされ、ピンはそのアドレス内のビットにマッピングされていました。ビットマスクがハードウェアインターフェイスに影響を与えたのか、またはその逆であったのかを議論できると思います。いずれにせよ、何か有用なことをするためにはそれらを知る必要がありました。
ベリンロリチュ

@BerinLoritsch答えてくれてありがとう。「ハードウェアレジスタが連続したビットセットにマップされた」とはどういう意味ですか?ハードウェアレジスタは互いに独立してアクセスされていませんか?
yoyo_fun

3

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

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


「すべてのバイナリコンピューターの基本的な命令」の場合は+1。人々はコンピューターと何か、そしてなぜそうなのかを知る必要があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.