Maski bitowe są strasznie stare. Nie udało mi się znaleźć odniesienia do pierwszego, ale z pewnością były popularne dzięki pojawieniu się procesorów 8-bitowych i prawdopodobnie były również używane w procesorach 4-bitowych.
Ideą mask bitowych jest wykorzystanie równoległości bitowej. 8-bitowy komputer może wykonać tę samą bitową operację na 8 bitach jednocześnie, jeśli są one spakowane w jedno natywne słowo (co oznacza, że mieści się w rejestrze).
Nazwa pochodzi od maskowania, które jest ogólnym podejściem do ukrywania obszarów, z którymi nie chcesz wchodzić w interakcje. Weźmy na przykład ten szablon do maskowania obszarów ściany (szablon został przesunięty po malowaniu, aby pokazać wzór)
Maski są również używane w fotografii, gdzie określane są raczej terminem „unik” niż „szablon”. Możesz użyć maski, aby zasłonić część światła podczas drukowania, aby rozjaśnić obszar.
Termin ten jest również stosowany bezpośrednio w fotolitografii, która jest techniką stosowaną do tworzenia układów scalonych. Maska zapobiega przedostawaniu się światła do fotorezystu pomalowanego na chipie, który tworzy wzory, które później prowadzą do fińskich wzorów na chipie. (Poniższy obraz jest jedną z masek procesora Intel 8080A , jeśli jesteś ciekawy)
Podobnie w maskowaniu bitów wybierasz części słowa, na których chcesz operować, maskując wszystkie pozostałe bity. W poniższym przykładzie używam operacji „i” do maskowania danych wejściowych tak, aby wyświetlały się tylko 3, 4 i 8 bit. Reszta jest „zamaskowana”, więc są zerami. Maska, której używam, to 00110001
. Pokazuję to poniżej z #
reprezentowaniem 0 i .
reprezentowaniem 1, ponieważ dzięki temu wygląd maski jest podobny do maski fizycznej powyżej i pokazuję wiersz „wybranych bitów”, który pokazuje bity z wyjścia, które nie zostały zamaskowane ( „wybrane bity” nie są tak naprawdę logiczną operacją, która się dzieje… procesor tak naprawdę przechodzi od wejścia ORAZ maski do wyjścia w jednym kroku, ale myślę, że to wyjaśnia obraz)
Input 10010111
Mask ##..###. (aka 00110001)
-----------------------
(selected) 01 1
Input AND Mask 00010001
Jak wspomniałem, maskowanie bitów jest strasznie stare, ponieważ znacznie zwiększa wydajność procesora. W przypadku 4-bitowego procesora może on czterokrotnie przyspieszyć procesor. W przypadku procesu 8-bitowego lub może być 8-krotnie szybszy (oczywiście tylko w przypadku operacji bitowych).
Jednym z fascynujących zastosowań są silniki szachowe. Szachownica ma 64 pola. Nowoczesne silniki mają 64-bitowe liczby całkowite. Jest to wyjątkowo wygodne szczęście, więc silniki szachowe często go wykorzystują. Mają tak zwane „ płyty bitowe ”, które zawierają lokalizacje elementów. Pozwala to na wykonywanie różnego rodzaju optymalizacji, takich jak wyszukiwanie wszystkich ruchów pionka w jednym kroku.