Article View: pl.comp.lang.asm
Article #2060Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-)
From: Andrzej Grażyński
Date: Sat, 20 Mar 2010 16:33
Date: Sat, 20 Mar 2010 16:33
47 lines
3962 bytes
3962 bytes
minięty czas pisze: > onegdaj ‟Andrzej Grażyński” rzecze: >> , przenoszą, z istotnymi różnicami: >> 0. Blokada realizowana jest w sposób sprzętowy > 1. :-> >> 1. Nakładanie i zdejmowanie blokady nie jest odrębną częścią algorytmu >> rozwiązywania zadania, jest elementem atomu wchodzącego w skład tego >> algorytmu >> 2. Blokada nakładana jest na czas wykonywania jednej instrukcji >> 3. Istnieje gwarancja zdjęcia blokady, bo wykonywanie instrukcji musi >> się zakończyć (jeśli tak nie jest, mamy ogólną awarię sprzętową, co jest >> katastrofą dla całego systemu). >> 4. Nie istnieją problemy typowe dla synchronizacji, np. deadlock >> 5. Nie ma gwarancji uzyskania wyłącznego dostąpu do zasobu, nie ma więc >> gwarancji wykonania żądanej operacji. > od czasu podania przez ciebie skrótów zatrudniłem ‟Google” za reklamy > z ‘vatem’ :-) i wynikło, że te skróciki mówią tylko różnych typach da- > nych przenoszonych po fakcie zajcia warunku. > teraz sobie pomyśl co się będzie działo dla dowolnie dużej liczby syn- > chronicznie pracujących procesorów, gdy wszystkie wykonałyby dowolną > z tych instrukcji na tej samej danej w równoległym algorytmie. nadal > się skaluje bez kosztów? ;-) A co by się działo, gdy każdy z tych procesorów realizował proces bazujący na klasycznych blokadach? Algorytm nieblokujący musi być przygotowany na to, że nie uda mu się wykonanie pewnej operacji operującej na chronionym zasobie. Oczywiście mógłby w pętli próbować aż do skutku, ale to jest jeszcze gorsze niż klasyczne blokady (które wynaleziono właśnie po to, by takich pętli unikać). Jeśli proces nie ma w danej chwili nic lepszego do roboty (a zwykle jednak ma), to może odczekać LOSOWY interwał czasu i spróbować ponownie. Ta LOSOWOŚĆ ma chronić przed tym by np. kilkadziesiąt procesorów w jednej chwili chciało wykonać np. CMPXCHG na tym samym słowie pamięci Jednym z paradygmatów przetwarzania równoległego jest dystans informacyjny, czyli odległość w czasie między ustaleniem JAKĄ OPERACJĘ należy wykonać, a zapotrzebowaniem na WYNIKI tej operacji, na przykład ustalenie klucza wczytywanego rekordu, a zapotrzebowaniem na zawartość tego rekordu. Zapoczątkowujemy asynchroniczne czytanie, a gdy dochodzimy do momentu, gdy zawartość wspomnianego rekordu staje się istotna, upewniamy się, że wczytywanie się zakonczyło albo czekamy na jego zakończenie. Jeżeli rozpatrzymy przypadek nieblokującego dodawania rekordu na szczyt listy, to istnieje dystans czasowy między wyprodukowaniem rekordu a momentem, kiedy MUSI się ów rekord znaleźć w tej liście. W trakcie tego interwalu proces może robić inne pożyteczne rzeczy i okresowo probować dodać rekord do listy. Nie marnuje się czasu na oczekiwanie na blokadzie.
Technical Details
Message-ID:
<ho2te4$qc3$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mailReferences:
<hi7d3a$u60$1@news.mixmin.net> <hnlvpl$tkc$1@news.onet.pl> <hntddv$kql$1@news.mixmin.net> <hnvg1a$7am$1@news.onet.pl> <ho2h8p$tl3$1@news.mixmin.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail From: Andrzej Grażyński <grazynsk@petex.com.pl> Newsgroups: pl.comp.lang.asm Subject: Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-) Date: Sat, 20 Mar 2010 17:33:59 +0100 Organization: http://onet.pl Lines: 47 Message-ID: <ho2te4$qc3$1@news.onet.pl> References: <hi7d3a$u60$1@news.mixmin.net> <hnlvpl$tkc$1@news.onet.pl> <hntddv$kql$1@news.mixmin.net> <hnvg1a$7am$1@news.onet.pl> <ho2h8p$tl3$1@news.mixmin.net> NNTP-Posting-Host: 178.56.15.27 Mime-Version: 1.0 X-Trace: news.onet.pl 1269102854 27011 178.56.15.27 (20 Mar 2010 16:34:14 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Sat, 20 Mar 2010 16:34:14 +0000 (UTC) User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) In-Reply-To: <ho2h8p$tl3$1@news.mixmin.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit