🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2060

Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-)

#2060
From: Andrzej Grażyński
Date: Sat, 20 Mar 2010 16:33
47 lines
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-mail
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>

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