background image

W świecie komputerowego tekstu

Zastanawialiście   się   kiedyś   jak   komputery   "widzą"   tekst?  Albo   dlaczego   różne 
urządzenia   elektroniczne   pod   kontrolą   różnych   systemów   operacyjnych   widzą   i 
rozumieją ten sam tekst?
To   zasługa   w   niemałej   części  American   National   Standards   Institute,   w   skrócie 
ANSI. Ta znana niegdyś jako American Standards Association organizacja utworzyła 
komitet   o   fascynującej   ;]   nazwie   X3,   którego   zadaniem   było   zestandaryzowanie 
sposobu  wymiany  tekstu  między  różnymi  urządzeniami.  Standard  ten  znany  jako 
ASCII  (American Standard Code for Information Interchange) wyparł stosowany 
wcześniej kod Baudota-Murraya i do dziś stanowi  podstawę  wymiany  informacji 
między urządzeniami elektronicznymi. Zupełnie przypadkiem Intel jest członkiem 
ANSI. ;)
Ale   jak   działa   ASCII?   -   ktoś   zapyta.   Już   wyjaśniam.   Historycznie   większość 
komputerów (nie wszystkie!) operowała na bajtach o wielkości 8 bitów. Zaistniała 
potrzeba stworzenia jednolitego sposobu reprezentowania tekstu w postaci bajtów. 
Jako że w czasie powstawania standardu dalekopisy były wciąż kawałkiem szalenie 
zaawansowanej techniki, ASCII musiało odpowiadać także na ich zapotrzebowania, 
takie jak np. przewijanie papieru i powrót do początku wiersza (tzw. powrót karetki). 
No i te nieszczęsne urządzenia, które miały tylko 7 bitów na bajt...
ASCII stworzyło zatem tablicę kodów dla wartości od 0 do 127 (7 bitów), które to 
reprezentowały zarówno komendy sterujące (przewiń papier, uderz w dzwoneczek 
przywołujący   operatora   urządzenia   -   nie   żartuję!   -   i   temu   podobne)   jak   i   znaki 
niezbędne   w   tekście:   litery,   cyfry,   znaki   przestankowe   i   szereg   mniej   istotnych. 
Wartości   128-255,   z   których   mogły   skorzystać   8-bitowe   urządzenia,   miały   kilka 
wariantów, dla większości pewnie znanych pod postacią stron kodowych w DOS. 
Tabela kodów jest łatwo osiągalna z poziomu wyszukiwarki Google, ale dla wygody 
umieściłem ją także poniżej.

background image

Sposób, w jaki rozdystrybuowano kody ASCII niesie ze sobą kilka interesujących 
właściwości. Po pierwsze, jak już wspomniałem, wszystkie "naturalne" kody (w tym 
litery i cyfry) znajdują się w przedziale 0-127, a więc mają zero na najstarszym bicie 
klasycznego, 8-bitowego bajtu. Co więcej wszystkie litery mają jedynkę na drugim 
najstarszym bicie.
Widzicie już dokąd zmierza ten wpis? :)
Każda kratka grafiki to bit. Biały - zero, czarny - jeden. W każdym rzędzie mamy 
zatem 16 bitów, czyli dwa bajty (dwa znaki informacji).

Konkursowe pytanie to grafika 16x6 punktów. Daje nam to w sumie 12 liter. Gdyby 
spojrzeć na trzeci  MSB  (most significant bit) od lewej, da się także zauważyć, że 
pierwszych 8 znaków to litery małe (jedynka na 3. bicie) a kolejne cztery to litery 
duże (zero w tym samym miejscu). Jaki to zatem tekst? Część z Was na pewno już 
wie: "pierwszySIMD". :)
Trzeba   sobie   zatem   odpowiedzieć   na   pytanie:   jaki   był   pierwszy   powszechnie 
oferowany przez Intel SIMD? I co w ogóle znaczy SIMD?

background image

SIMD   to   skrót   od  single   instruction,   multiple   data.   Idea   jest   następująca:   by 
przyspieszyć działanie urządzenia, wykonujmy identyczne operacje na wielu danych 
jednocześnie, a nie jedna po drugiej. Pierwotnie komputery wykonywały operacje 
szeregowo: weź dwie wartości, zsumuj, zapisz wynik; weź dwie kolejne, zsumuj,...
Jest   wiele   zadań,   które   wymagają   takich   samych,   powtarzalnych   operacji   na 
pokaźnych objętościowo danych. Układy wspierające SIMD pozwalają na pobranie 
nie dwóch, a większej liczby wartości (4, 8, 16,...), wykonanie na parach tej samej 
operacji   oraz   zapisanie   wyników.   Wszystko   to   jednocześnie!   Jeśli   zatem   nasza 
aplikacja (np. program do kompresji video) operuje w jednolity sposób na bardzo 
dużej ilości danych, wykorzystując SIMD możemy uzyskać poważne przyspieszenie 
w ich przetwarzaniu.
Pierwsze oferowane w procesorach x86 rozszerzenie SIMD to oczywiście rok 1996 i 
technologia MMX (ponoć pierwotnie nie był to żaden skrót, choć powszechnie mówi 
się o rozwinięciu MultiMedia eXtension). Podkreślenie w podpowiedzi, że chodzi o 
technologię Intela jest o tyle istotne, że rok wcześniej zadebiutowało rozszerzenie 
VIS w procesorach SPARC a dwa lata wcześniej MAX w procesorach PA-RISC od 
HP. Przeczy to wprost idei architektur RISC (do których należy także SPARC), ale 
ciężko wymagać od inżynierów konsekwencji. ;>
Czasy świetności RISCów już mocno przeminęły a architekturę PA-RISC wyparło 
Itanium  znane także jako  IA-64  od - nomen omen - Intela. Która to architektura, 
jeśli   wolno  mi   wyrazić   opinię,   jest  potwornie  uciążliwa  w  debugowaniu.   ;)  Dziś 
procesory RISC pozostają architekturą wyspecjalizowaną, niszową (zrezygnowało z 
nich nawet Apple), natomiast x86 z MMX i jego zmiennoprzecinkowymi następcami 
z   rodziny  SSE  święcą   triumf.   I   to   technologii   MMX   właśnie   poświęcone   było 
pierwsze zadanie specjalne. :]
Gratulacje   dla   wszystkich,   którzy   sobie   z   zadaniem   poradzili.   Mam   nadzieję,   że 
obeszło się bez siwych włosów. :) Bolesna chłosta czeka wszystkich tych, którzy 
chcieli   popsuć   zabawę   innym   publicznie   odpowiadając   lub   podpowiadając. 
Wstydźcie się! :P
Padało   wiele   różnych   odpowiedzi.   Część   z   grających   uznała,   że   wystarczy 
wpatrywać się w grafikę wystarczająco długo i nadejdzie olśnienie. Stąd zapewne 
takie   odpowiedzi   jak  fxk,   fyk,  RYK,   "i,  zygzaki,  schodki"   czy   "biały,   czerwony, 
czarny". :) Część ewidentnie nie lubi podpowiedzi, bo na pytanie dotyczące Intela 
odpowiadała   IBM   lub  AMD.   ;]   Wiele   osób   strzelało   wpisując   TLA  związane   z 
Intelem: QPI, C2D, GMA, DUO,... Część celowała bardziej ogólnie: x86 czy też w 
szalenie popularne CPU.
Wreszcie były i odpowiedzi zaskakujące. Część z nich to nazwy części ciała, których 
opublikować nie mogę. ;> Kolejna grupa to wyrazy zdziwienia. Trafiło się "haha!!!", 
"ale jaja!", popularne "LOL" i kilka wezwań o łaskę z nieba. Niektórzy z grających 
podzielili   się   opinią   na   temat   pytania,   kilkoro   postanowiło  zadać   nam   pytanie
Odpowiadam na jedno z nich: nie, to nie jest alfabet Braille'a. :) Trafił się też link do 
akcji Pajacyk i, moje ulubione: "jakie ładne... co to?". :D


Document Outline