Maszyny też się mylą. Przykładowe błędy hardware.

Na stronach niebezpiecznika oraz zaufanej trzeciej strony pojawiły się ostatnio artykuły o nowej podatności komputerowego hardware na atak – i jej wykorzystaniu. Podatność ta z grubsza polega na tym,że odpowiednio często nadpisywana komórka pamięci dzięki wyciekowi ładunku elektrycznego może oddziaływać na komórkę sąsiednią – i jeśli jest w niej coś ważnego dla bezpieczeństwa systemu, to może być nieciekawie. Atak jest możliwy dzięki temu,że możliwe jest określenie krytycznego obszaru pamięci i wykonanie z poziomu zwykłego użytkownika ataku na ten obszar.

Jak widać: polegamy na elektronice,ale niektórzy zapominają,że błędy się zdarzają.

Tego typu wymuszony błąd – wynikający ze struktury elektroniki nie jest jedynym błędem. Wcześniej niebezpiecznik wspominał o bitsquattingu i problemie oddziaływania promieniowania kosmicznego na pamięci komputerowe. O tych błędach można sobie spokojnie poczytać w tych serwisach. A tu podam inne przykłady.

W początkach lat 90-tych (dokładnie około 1994 roku) użytkownicy komputerów zostali zapoznani z przerażającym odkryciem. Ich procesory ówczesne procesory o częstotliwościach 60-100 Mhz źle wykonywały operację dzielenia. I nie była to oczywiście jakaś prosta operacja.

Przykładową operacją testową było wykonać następujące obliczenie:

962 306 957 033 / 11 010 046 = 87402,6282027341 (wynik poprawny)

962 306 957 033 / 11 010 046 = 87399,5805831329 (wynik błędny)

Był to tak zwany bug FDIV.

Jak pisał Scott Mueller swego czasu w staszych wydaniach swojej książki „Rozbudowa i naprawa komputerów” – w reakcji na to wydarzenie firma Intel zdecydowała się wymienić błędnie działające procesory. Inny, przykładowym problemem była awaria funkcji oszczędzania energii w procesorach EPA Energy Star skutkująca zawieszeniem komputera.

Kolejny przykład, który przestawię jest dużo bliższy współczesności. W serwisie stackexchange dyskutowano nad problemem błędów związanych z obliczeniami procesora. Jak  w trakcie dyskusji jeden z użytkowników zwrócił uwagę,że wyniki obliczeń zmiennoprzecinkowych w układach: Intel i7-3610QM i Nvidia GeForce GTX 660 nieco się różnią. Na przykład otrzymane wyniki:
-1.4906010142701069 Procesor
-1.4906010142701074 Karta graficzna
-1.4906010142701069 Procesor
-1.4906010142701074 Karta graficzna
Błąd wynika głównie z tego,że układy te najprawdopodobniej w różny sposób zaokrąglają. Różnice co gorsza mogą się kumulować… 4,01*10-14 % wartości to może mało,ale wystarczająco dużo obliczeń (zwłaszcza iloczynów) może doprowadzić do wystarczającego błędu by miało to znaczenie.Co z tym można zrobić – niewiele albo nic,bo sprawa jest kwestią zaokrągleń i rozmiaru pamięci.

Kolejny błąd tego typu to klasyczne,dobrze znane programistom przepełnienie bufora. Bo co się stanie,gdy maszynie każe się dodać dwie ośmiobitowe (już od dawna za proste – teraz są 32-64 bity) cyfry:
11111111 i 00000001 dwójkowo to by było 100000000 a w praktyce wynik bez nadmiarowego bitu będzie ośmiobitowa cyfra 00000000. A gdzie powędrowało 1 (nadmiarowy bit) z samego początku ?
Zostało zgubione albo co gorsza – trafiło w inne miejsce pamięci.

Warto tutaj wspomnieć,że rejestry pamięci cache procesora czy karty graficznej mogą być różnie zbudowane.

Ale mało i tego. Niektórzy „dla zwiększenia wydajności” lubią przetaktować sobie procesor. Oczywiście – można a czasem „trzeba”. Sama produkcja chipów jest taka,że spora część układów z „wafla” krzemowego może pracować zanim pojawią się błędy obliczeniowe ze znacznie większymi częstotliwościami taktowania, niż określa producent. Teoretycznie. W praktyce jednak, oznacza to również przyjęcie,że błędy procesora mogą zdarzać się częściej (mniejsza stabilność pracy), a sam procesor może nawalić szybciej. Plus może powodować różne problemy dopasowaniem częstotliwości pracy pamięci i procesora.Wreszcie – jeśli przesadzi się przy przetaktowaniu procesor może się spalić.  Nawet tak spektakularnie,jak przetaktowany układ raspberry pi:

Oczywiście – nie każdy, kto przetaktuje procesor uzna moją argumentację za słuszną. Wzrost efektywności może być bowiem większy jak przyrost problemów,a same problemy mogą być z pewnego punktu widzenia marginalne – i o tym też należy pamiętać.

Niestety,im mniejsze ścieżki mikroprocesorowe tym większego znaczenia nabiera również fizyczna degradacja układu mikrochipu.

Problem dodatkowo komplikują inne, niż wymienione na samym początku błędy pamięci. Nie tylko sąsiednie komórki pamięci i promieniowanie kosmiczne,nie można zapominać o błędach podczas odczytu. Same te problemy opisuje na przykład artykuł „DRAM errors in the Wild:A Large-Scale Field Study„.

Jak widać błąd procesora czy pamięci można raz na jakiś czas spotkać lub spowodować.

Czy to wszystko na co „stać” komputery ? Ależ nie. „Wąskim gardłem” każdego komputera jest magistrala płyty głównej obsługująca komunikację pomiędzy poszczególnymi układami. W starszych komputerach problemy z magistralą i błędami DMA były częstsze niż dziś,lecz wcale to nie znaczy,że dzisiaj takich błędów nie ma. Wciąż mogą się zdarzyć – choć rzadziej. A jeśli doszło by do „zakleszczenia” się między operacjami – urządzenie się „zawiesi” (utknie przy wykonywaniu instrukcji, która stała się bezsensowna.

Jednak, nie tylko komputery się tak mylą.Cała technika cyfrowa (zwłaszcza : wszystko co ma mikrokontroler) jest w końcu oparta dzisiaj na przepływach prądów, które pełnią rolę zera i jedynki – czyli sygnał i brak sygnału (czyt: odpowiedniego prądu).  Podobne błędy, jak w procesorach (i gorsze) spotkać można w robotach przemysłowych i setkach innych urządzeń Często winne są tu błędy programistyczne. Ale nie zawsze winni są programiści. Czasem winny jest konstruktor urządzenia.

A potem:

Dlaczego w takim razie polegamy na tym „zawodnym” sprzęcie ? Bo w większości przypadków nie dzieje się naprawdę nic złego. Przestawienie w wyniku promieniowania kosmicznego średnio 1 bitu na dzień w komputerze dysponującym 4 Gb zwykłej pamięci raczej zwykle nie powinno wywołać i tak katastrofy – choć może i obniża stabilność długotrwale funkcjonującego systemu.Realnie gdyby 1 osoba na 4 miliony ginęła dziennie pod kołami samochodów to (pomimo ogromu tragedii) jakoś by to nas nie ruszało w codziennym życiu – przynajmniej dopóki nie bylibyśmy to my,lub nasi krewni. Tak szczerze,w Polsce ofiar śmiertelnych wypadków drogowych w 2007 było średnio o prawie 60% więcej.

Z drugiej strony sprawa ewentualnych usterek systemów elektronicznych to wcale nie jest drobiazg. Coraz więcej nowych samochodów wyposażanych jest w nową elektronikę.  I bynajmniej jej awaria nie musi być tak niegroźna,jak na poniższym filmie:

Poważniejsze usterki mogą prowadzić nawet do katastrofy.Dlatego ważne jest zapewnienie nadmiarowości i innych środków bezpieczeństwa wszędzie tam,  gdzie bezpieczeństwo jest wymagane. I unikanie sytuacji,w które elementy systemu od którego wymagana jest poprawna praca ulegają przeciążeniu. Przeciążeniu nie tylko zresztą wynikającemu z warunków powiązanych z elektroniką. Itd.

Reklamy

Nie zaplanowana i planowana awaria w technice wynika często głównie z właściwości materiałowych

Do napisania tego tekstu skłoniło mnie prozaiczne zjawisko: Oto tani czajnik kupiony za kilkadziesiąt złotych (wiem – „chińszczyzna”,mimo że opis to ma Polski), mający jakieś kilka miesięcy już przerdzewiał przy dnie i cieknie.No niby nic,można kupić nowy,można kupić droższy – ale kwestia takich awarii jest właśnie rzeczą, którą w tym wpisie chciałbym omówić.

Wszystkie materialne przedmioty ulegają awarii prędzej czy później,to tylko kwestia czasu.Czy ten czas można jednak zaplanować – skrócić albo przedłużyć ? Istnienie metody zwanej jako „Planowe postarzanie produktu” odpowiada na to pytanie twierdząco: TAK.

No dobrze – ale jak wobec tego „zaprojektować” awarię wiertarki,dysku twardego,pęknięcie wiertła czy korozję ? Albo jak stworzyć coś,co w skrajnych warunkach przetrzyma mimo wszystko ?

Cóż, oprócz dopracowania pod względem pod względem projektu – rozmiarów obiektu i detali,kształtu i nie tylko – ważny jest właśnie dobór materiałów,a bardzo istotna jest tutaj właśnie inżynieria materiałowa. Powiedziałbym nawet,że ważniejsza. Jak to się dzieje i dlaczego tak jest ? Bezpośrednią przyczyną usterki jest to,że dany obiekt materialny przestaje wykonywać swoją dotychczasową funkcję. W jaki sposób ? Pod wpływem oddziaływania na materiał z którego jest zrobiony środowiska w jakim pracuje lub w jakie się dostał – wewnętrznego i zewnętrznego,co oznacza, że oprócz zjawisk nagłych o charakterze mechanicznym, usterka eksploatacyjna wynika z właściwości samego produktu. Wszystkie materiały bowiem podlegają zjawiskom fizycznym,wszystkie mają swoja strukturę itd. To jest ich siła i słabość.Przejdźmy jednak do przykładów.

W przypadku czajnika i wielu urządzeń znajdujących się w zwykłej wodzie albo co gorsza w jakichś jeszcze bardziej agresywnych środowiskach bardzo częstym problemem jest korozja. Jest ona rzecz jasna bardziej złożona niż się wydaje i nie opiera się tylko o problemy związane z wodą.Mamy wszak korozję chemiczną i elektrochemiczną, jest też wiele jej podrodzajów,których nie będę tłumaczył,bo artykuł w Wikipedii mimo jej wartości jako źródła wystarczy dla osób mało dociekliwych – a dla osoby dociekliwej nic co bym napisał nie wystarczy. Tym bardziej,że korozja wcale nie jest jedynym problemem. Ścieranie i tego rodzaju zjawiska są dużo powszechniejsze w maszynach pracujących na co dzień, do tego zmęczenie materiału, utlenianie, scuffing, spalling,pitting, fretting, zjawiska erozyjne, pełzanie, kawitacja, wpływ wysokiej temperatury na strukturę,inne niż typowa korozja i utlenianie zjawiska chemiczne itd…

Do tego/zamiast tego nieprawidłowa eksploatacja i przekroczenie np. wytrzymałości materiału i mamy np. coś takiego:

Ahttps://i2.wp.com/obrazki.elektroda.pl/1638044000_1348647005.jpg - załączone z elektroda.pl

Albo nawet i nie wiemy co się zepsuło. Dobór „standardowego materiału” jest kuszący dla konstruktora-mechanika,co nie zmienia faktu,że jest to rozwiązanie obarczone ryzykiem związanym z totalną niewiedzą na temat zachowania produktu. Niekiedy taka niewiedza – albo zła wola oznacza wprost awarię w niedługim okresie czasu.

Rozważmy Chińskie spawarki,wiertarki itd.Zdarza się,że niektóre firmy Chińskie zastępują uzwojenia miedziane aluminiowymi. Niby to i to prąd przewodzi,ale gęstość prądu jakie wytrzymają uzwojenia bez awarii urządzenia jest mniejsza.Rozważmy części plastikowe w pralkach czy suszarkach które nadtapiają się albo pękają szybciej w ściśle określonym momencie – co to jest ? Jest to albo błąd materiałowy, albo świadome „sztuczne postarzanie”. Dobór materiału ma tu bardzo ważne znaczenie. Myślę,że podobne znaczenie może mieć również dobór „czasu życia” poszczególnych podzespołów u produktów które nie mają być naprawiane,z pewnej bowiem perspektywy może być zwykłym marnotrawstwem używanie za dobrych materiałów w podzespołach nie mających znaczenia ze względu na to,że wcześniej i tak inny podzespół nawali.

Popatrzmy jednak też na to z drugiej strony. Przemysł lotniczy, lotnictwo wojskowe czy turbina energetyczna czy to inne elementy mające pracować pod wysokim obciążeniem dotykają tej samej kwestii od drugiej strony – konieczne są jak najlepsze materiały,bo gdy czas życia produktu jest liczony w godzinach, konieczność częstego serwisowania jest droższym problemem,zaś konsekwencje niewłaściwego,za długiego terminu serwisowania mogą być tragiczne dla klienta i dla producenta.

Mówimy tu zatem o wycinku czegoś co większe firmy nazywają Product Lifecycle Management (PLM):

PLM - Wikipedia

A właściwie – czegoś co jest jego częścią,ale nie jest do niego oficjalnie zaliczane,ponieważ jako narzędzia CAD,CAE i CAM niektórzy traktują tylko klasyczne oprogramowanie z tych dziedzin takie jak oprogramowanie typu AutoCAD czy Inventor firmy Autodesk,Solidworks czy Catia fimy Dassault Systèmes czy NX (Unigraphics) firmy Siemens PLM Software,oraz odpowiednie narzędzia metody elementów skończonych (MES/FEM) Takie jak Ansys, Abaqus, Nastran itd.  – oraz wiele innych których nie wymieniłem.Oczywiście to są potężne i wartościowe narzędzia posiadające niekiedy wbudowane pewne dane materiałowe,niemniej lekceważenie baz materiałowych jak i procesów i zjawisk materiałowych w projektowaniu produktu i procesach PLM wciąż prawdopodobnie występuje w wielu firmach przemysłowych. Tymczasem stosując odpowiednie materiałowe bazy danych część problemów z produktami można by było przewidzieć,lub ich uniknąć…

Do czego zatem konkretnie zachęcam i na co zwracam uwagę (oprócz potrzeby zatrudniania inżynierów materiałowych w firmach) ? Do korzystania w procesie projektowania produktów z baz danych dostępnych komercyjne i niekomercyjnie takich jak baza NIMS, IMDS i wiele wiele innych. I mam wrażenie,że przydały by się bazy bardziej wydajne jeśli chodzi o złożone analizy pod kątem wymagań,cen itd. Co zaś mają zrobić mali producenci ? Na początek mogliby się nauczyć,że coś tańszego tak jak przykładowo stal St3 i podobne nie jest zawsze najlepszym rozwiązaniem – a może być wręcz receptą na szybką usterkę produktu i reklamację albo niezadowolonego klienta.Konsumenci zaś powinni uważać na zbyt tanie produkty,w „okazji” często ukryty jest „haczyk” w postaci gorszego wykonania lub materiału – choć oczywiście nie należy zawsze aż tak generalizować…