Hazard (elektronika)
Hazard (wyścig) – niekorzystne zjawisko w układach cyfrowych, którego podłożem jest niezerowy czas propagacji (przenoszenia) sygnałów. Hazardem nazywamy błędne stany na wyjściach układów cyfrowych, powstające w stanach przejściowych (przełączania) w wyniku nieidealnych właściwości używanych elementów. Przyczyną są różnice w wartości sygnału i czasie dotarcia do określonego miejsca układu, w zależności od drogi. Skutki hazardu zależą od samego układu.
Przykładowo teoretycznie jednoczesna zmiana wejść dla bramki AND z (0,1) na (1,0) może w rzeczywistości skutkować pojawieniem się krótkich impulsów. W rzeczywistości bowiem zmiana dwóch wejść nigdy nie jest jednoczesna i albo dokona się w sekwencji (0,1) – (0,0) – (1,0): brak wspomnianego impulsu, albo (0,1) – (1,1): impuls – (1,0). Hazard może doprowadzić do chwilowego przekłamania pracy automatu lub do powstania trwałego błędu.
Typy hazardów
Rozróżnia się dwa rodzaje hazardu:
Hazard statyczny – chwilowa zmiana stanu wyjściowego układu występująca przy zmianie stanu jego wejścia wtedy, gdy wyjście powinno zostać niezmienione. Powstaje na skutek nieidealnych właściwości przełączających układu. Dzielimy go na:
- Hazard jedynki (hazard statyczny w warunkach działania) – chwilowa zmiana wyjścia 1-0-1 wtedy, gdy wyjście to powinno zostać niezmienione w stanie 1.
- Hazard zera (hazard statyczny w warunkach niedziałania) – chwilowa zmiana wyjścia 0-1-0 wtedy, gdy wyjście to powinno pozostać niezmienione w stanie 0.
Hazard dynamiczny – kilkukrotna zmiana stanu wyjścia przy zmianie stanu wejścia wtedy, gdy wyjście to powinno zmieniać swój stan tylko jeden raz i w nim pozostać, np. przy zmianie 1-0 następuje zmiana 1-0-1-0, lub przy zmianie 0-1 następuje zmiana 0-1-0-1. Powstaje na skutek nieidealnych właściwości transmisyjnych układu.
Hazard statyczny można wyeliminować już na etapie projektowania układu, jednak realizowane jest to kosztem skomplikowania układu. Eliminacja hazardu statycznego powoduje równoczesną eliminację hazardu dynamicznego. Jedną z metod eliminacji jest wprowadzenie taktowania do układu i zrealizowanie go w postaci układu synchronicznego. Likwidacja hazardu może polegać również na wprowadzeniu do układu dodatkowej grupy (nie będzie to już wówczas postać minimalna takiej funkcji) zawierającej elementy sąsiadujących ze sobą grup w tablicy Karnaugha.
Wyścigi w oprogramowaniu
Wyścigi mogą także występować w programowaniu współbieżnym, gdy dwa wątki piszą do współdzielonej pamięci. Wynik działania programu może być losowy i zależny od czasu dostępu do współdzielonego zasobu[1].
Zobacz też
Przypisy
- ↑ Julian Pszczołowski: Przegląd metod synchronizacji w jądrach systemów uniksopodobnych oraz implementacja rogatek w systemie operacyjnym Mimiker. [dostęp 2021-009-08].
Bibliografia
- Wojciech Głocki: Układy cyfrowe. Wyd. 2. WSiP, 1998, s. 167-173. ISBN 83-02-06242-1. (pol.)
Media użyte na tej stronie
Autor: Oryginalnym przesyłającym był Sakurambo z angielskiej Wikipedii, Licencja: CC-BY-SA-3.0
Illustration of a logic race condition, showing how the delays incurred in each element affect the final output. Layout based on :Image:Logic race.gif and :Image:Logic race2.gif produced by User:Michagal and User:Jimmy the Snout and released under a GFDL license. Own work, created in Adobe Illustrator (log).