Perché le maschere di bit sono chiamate "maschere" e quale scopo servono?


79

Perché le "maschere di bit" si chiamano così?

So che sono principalmente usati per operazioni bit per bit e l'uso di maschere di bit è più efficiente dell'uso di variabili separate.

Tuttavia la mia domanda è: perché e quando sono state inventate le maschere? Sono stati usati sin dai primi tempi dell'informatica? Esistono altri tipi di "maschere" oltre alle maschere di bit nel dominio IT?


14
La fotolitografia (utilizzando la luce UV per incidere le caratteristiche nei wafer di silicio) utilizza un "fotomaschera" per bloccare selettivamente la sorgente di luce UV in modo che le aree esposte di silicio abbiano lo schema corretto.
Levi,



14
Hai mai fatto un lavoro di pittura e hai usato il nastro adesivo?
gnasher729,

1
Un altro tipo di maschere: il rilevamento perfetto della collisione dei pixel consiste nel rilevare sovrapposizioni di maschere 2D.
aluriak,

Risposte:


101

Una maschera (della varietà facciale) è qualcosa che copre alcune parti del tuo viso e lascia trasparire altre parti. La terminologia viene utilizzata per analogia nell'informatica: una maschera di bit copre (filtra) alcuni bit in un set di bit e consente ad altri di passare.

Esistono altri tipi di "maschere" oltre alle maschere di bit nel dominio IT?

Appena al di sopra della mia testa, le maschere vengono utilizzate frequentemente nell'elaborazione delle immagini. È un concetto simile: si crea un'immagine in bianco e nero che mostra la forma di cosa mascherare e cosa lasciar passare.


33
Anche le subnet mask sono piuttosto comuni .
Matthieu M.,

38
@MatthieuM. ma le subnet mask non sono anche maschere di bit? Sono utilizzati per filtrare l'indirizzo di rete e l'indirizzo host.
yoyo_fun,

22
@JenniferAnderson Un'immagine in bianco e nero non è solo una maschera di bit?
Bergi,

8
Le maschere di immagini fisiche vengono utilizzate nella produzione di chip di silicio, come parte di una tecnica che si è evoluta dalla fotografia tradizionale e dalla stampa di processo. en.wikipedia.org/wiki/Fotolitografia
Jander,

20
Mascherare è anche un termine artistico per proteggere un'area dal cambiamento, consentendo nel contempo il cambio di un'altra. È spesso usato in pittura. Ecco a cosa serve il nastro adesivo: quindi non dipingi sulle cose su cui non vuoi dipingere mentre continui a dipingere sulle cose su cui vuoi dipingere.
Nate Diamond,

54

Una maschera bit viene utilizzata per mascherare alcuni bit di un campo bit mentre ne espone altri:

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

Questo è stato usato prima dell'elaborazione in elettronica con porte logiche (AND, OR ...) o transistor o in elettromeccanica con relè.


6
"Una maschera di bit viene utilizzata per mascherare alcuni bit di un campo mentre ne espone altri:" Non ci ho mai pensato in questo modo, ma ha molto senso. Grazie per la spiegazione :)
yoyo_fun,

1
@mouvicel puoi indicarmi alcuni link su come le maschere di bit sono state utilizzate in elettronica con porte logiche. Qual era lo scopo, in che tipo di sistemi venivano utilizzate queste operazioni e quando è iniziata questa tecnica?
yoyo_fun,

4
per chiarire: il valore iniziale è ANDed con la maschera, e quindi solo i bit della maschera su "1" mantengono i bit originali dal valore iniziale (come, bit a bit, "1 e 1 = 1" e "0 e 1 = 0" ) e gli altri bit del valore iniziale sono impostati su 0 come (bit a bit) "0 e 0 = 0" e "1 e 0 = 0") (perché "E" dice che "solo quando il primo bit E il 2 ° i bit sono impostati su 1, il risultato è 1. tutti gli altri risultati in 0 ". (O significa: o con il 1 ° bit esso 1 O il 2 ° bit è 1 sarà il risultato 1. ecc.) vedere en.wikipedia. org / wiki /…
Olivier Dulac,

2
@JenniferAnderson: Oltre alle maschere di bit logiche, nell'elettronica vengono utilizzate maschere reali: una maschera di saldatura è uno stencil (un pezzo di carta) che viene utilizzato per depositare la pasta di saldatura sui PCB. Metti la maschera sul PCB, usi un tergipavimento per spalmare la pasta per saldatura sulla maschera, quindi i fori nella maschera faranno passare la pasta per coprire accuratamente solo le aree necessarie per la pasta per saldatura ( youtube.com/watch?v=EqJN1CTCOQs ) . Nella produzione di trucioli vengono utilizzate maschere per costruire o incidere strutture sul silicio. Questo uso della parola "maschera" viene dall'industria della stampa.
Slebetman,

4
@JenniferAnderson: L'uso della parola "maschera" in inglese per indicare qualcosa è più generale e probabilmente molto più antico. Ad esempio in inglese diciamo che il profumo può essere usato per mascherare il cattivo odore.
Slebetman,

39

Le maschere di bit sono terribilmente vecchie. Non sono stato in grado di trovare un riferimento al primo, ma erano sicuramente popolari con l'avvento dei processori a 8 bit e probabilmente sono stati utilizzati anche nei processori a 4 bit.

L'idea alla base delle maschere di bit è sfruttare il parallelismo bit a bit. Un computer a 8 bit può eseguire la stessa operazione bit per bit a 8 bit contemporaneamente se sono impacchettati in una singola parola nativa (il che significa che si adatta a un registro).

Il nome deriva dal mascheramento, che è un approccio generale per coprire le aree con cui non si desidera interagire. Ad esempio, considera questo stencil per mascherare le aree di un muro (lo stencil è stato spostato dopo la pittura per mostrare il motivo)

stencil

Le maschere vengono utilizzate anche in fotografia, dove vanno con il termine "schivare" anziché "stencil". È possibile utilizzare una maschera per oscurare parte della luce durante la stampa per schiarire un'area.

Maschere fotografiche

Il termine è anche usato direttamente nella fotolitografia, che è la tecnica utilizzata per realizzare circuiti integrati. La maschera impedisce alla luce di raggiungere il fotoresist dipinto sul chip, il che crea motivi che in seguito conducono ai motivi di rivestimento sul chip. (L'immagine sotto è una delle maschere per il processore Intel 8080A , se sei curioso)

Maschera per fotolitografia

Allo stesso modo, nel bit masking, stai selezionando le parti della parola su cui vuoi operare, mascherando tutto il resto dei bit. Nell'esempio seguente, utilizzo l'operazione "e" per mascherare l'ingresso in modo tale che solo il 3 °, 4 ° e 8 ° bit vengano visualizzati. Il resto è "mascherato" in modo che siano 0. La maschera che uso è 00110001. Lo mostro di seguito con #rappresentare 0 e .rappresentare 1 perché ciò rende l'aspetto visivo della maschera di bit simile a quello delle maschere fisiche sopra e mostra una riga di "bit selezionati" che mostra i bit dell'output che non sono stati mascherati ( "bit selezionati" non è in realtà un'operazione logica che si verifica ... il processore passa proprio dall'input AND maschera all'output in un solo passaggio, ma penso che chiarisca l'immagine visiva)

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

Come ho già detto, il bitmasking è terribilmente vecchio perché aumenta notevolmente la produttività del processore. Su un processore a 4 bit, può rendere il processore 4x più veloce. Su un processo a 8 bit, oppure può renderlo 8 volte più veloce (ovviamente solo sulle operazioni bit a bit).

Un uso affascinante per questo sono i motori di scacchi. La scacchiera ha 64 quadrati. I motori moderni hanno numeri interi a 64 bit. Questo è un po 'di fortuna terribilmente conveniente, quindi i motori di scacchi spesso lo sfruttano. Hanno i cosiddetti " bitboard " che contengono le posizioni dei pezzi. Ciò ti consente di eseguire tutti i tipi di ottimizzazioni, come la ricerca di tutte le mosse del pedone in un unico passaggio.


33

Nel suo uso più generale in inglese, una maschera è un dispositivo che nasconde qualcosa. La serigrafia è citata in un'altra risposta. Il nastro adesivo 'maschera' qualcosa per evitare di dipingerlo, ecc. La Maschera per saldatura su una scheda PC 'maschera' l'area da saldare dall'area da non saldare.

Nel caso del "mascheramento dei bit", alcuni bit vengono "nascosti" o ignorati in modo che altri più interessanti possano essere più facilmente manipolati o semplicemente visualizzati.

Il mascheramento dei bit non è semplicemente una tecnica "vecchia", è un'operazione primitiva nella maggior parte, se non in tutte le istruzioni della macchina, per quanto ne so dai primi processori. In genere questo è nella forma di "usa il modello di bit in questo registro per mascherare i bit in qualche altro registro".


12
Non ho sentito il termine "nastro di pittura". Presumo che questo sia ciò che definirei "nastro per mascheratura".
entro il

12
@thelem: il termine "nastro per mascheratura", almeno negli Stati Uniti, si riferisce a un nastro a base di tessuto facilmente strappabile. Quando viene utilizzato per la pittura, produce un bordo un po '"sfocato". Poiché tale nastro viene utilizzato per molti altri scopi, i nastri più recenti che sono migliori per la pittura (ma sono più costosi e possono essere meno adatti per altri scopi) sono chiamati "nastro del pittore".
Supercat,

2
@Barmar Chiunque sia andato nella sezione di pittura del negozio di ferramenta si sarà imbattuto in loro.
Chrylis

5
Non sono un pittore e so che il nastro del pittore e il nastro per mascheratura sono due tipi molto diversi di nastro. Forse sto solo dicendo che "Il nastro per mascheratura è un tipo di nastro utilizzato per la sua opacità ed è facile da scrivere".
Valbaca,

2
Ho provato a cercare nel sito web del negozio di ferramenta locale (Australia) e il primo successo di "nastro adesivo" è un prodotto etichettato come "nastro adesivo", quindi immagino che sia quello. ;) Ho buone differenze terminologiche tra le varie regioni, sospetto. Le persone sono molto esigenti su ciò che conta anche come nastro per gaffer, a seconda di dove vivono.
Trejkaz,

10

Una maschera bit è simile alla stampa serigrafica . Si seleziona una determinata posizione di bit da assumere nel risultato:

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

Un altro significato di maschera è una pagina in un'interfaccia utente grafica in cui l'utente può inserire dati.


3

Le maschere di bit sono state inventate per un paio di motivi:

  • I registri hardware sono stati mappati su un insieme contiguo di bit
  • Lo spazio di memoria era molto limitato in un passato non troppo lontano

Quando vedi come vedi il modello di bit che stai ORing per attivare un bit o ANDing per disattivare i bit, sembra una maschera.

La maschera più comune (basata su maschere di bit) è una maschera di immagine (vedere il link che ho incluso all'inizio).


2
Una bitmap di valori flag è ancora un modo appropriato ed più efficiente per passare un set di flag rispetto a un array boolo in qualche altro modo di avere ciascun flag in un byte separato. Ciò rende possibile fare in modo efficiente cose come if (x & (FLAG_A | FLAG_B))invece di if (xflags[FLAG_A] || xflags[FLAG_B]). Soprattutto se la maschera non è una costante; essere in grado di passare una maschera come numero intero è molto più economico del passare un elenco di flag da controllare. Quindi, anche se la memoria e la cache fossero illimitate, sarebbe comunque molto più efficiente usare bitets e maschere in alcuni casi.
Peter Cordes,

Non ho mai detto che non fosse ancora utile. Ho appena detto che le origini hanno le loro radici nella gestione dei registri hardware e della memoria limitata. Uso ancora le maschere di bit quando sono appropriate al problema.
Berin Loritsch,

1
Quello che intendevo dire era che le origini sono probabilmente parti uguali di memoria e prestazioni su vecchi computer lenti.
Peter Cordes,

1
Concordato. Dopo aver programmato un Commodore 64, era anche necessario conoscere le maschere di bit per eseguire operazioni con grafica, audio, I / O seriale e parallelo. I chip del controller sono stati mappati su indirizzi di memoria con pin associati a bit all'interno di quell'indirizzo. Immagino che potresti discutere se la maschera di bit abbia influenzato l'interfaccia hardware o viceversa. Ad ogni modo, dovevi conoscerli per fare qualcosa di utile.
Berin Loritsch,

@BerinLoritsch Grazie per la risposta. Potresti spiegare cosa intendi con "I registri hardware sono stati mappati su un insieme contiguo di bit"? I registri hardware non sono accessibili indipendentemente l'uno dall'altro?
yoyo_fun,

3

Un altro tipo di maschera fisica nell'IT è il photomask litografico usato per incidere solo una parte di un wafer di silicio. Non era utilizzato per fabbricare i primi computer, ma chiunque lavorasse nel settore negli ultimi cinquant'anni ne sarebbe stato al corrente.

Non so quando è apparso il termine esatto "maschera di bit", ma l'operazione stessa è solo un bit per bit, che è un'istruzione di base di ogni computer binario.


+1 per "istruzioni di base in ogni computer binario". Le persone hanno bisogno di sapere cosa sono i computer e perché sono così.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.