Article View: pl.comp.lang.asm
Article #2051Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-)
From: Michoo
Date: Mon, 11 Jan 2010 12:10
Date: Mon, 11 Jan 2010 12:10
59 lines
4002 bytes
4002 bytes
minięty czas pisze: > onegdaj ‟Michoo” rzecze: >> koszt całości jest niewielki, mimo, że lock zaburza trochę przetwarzanie >> strumieniowe (blokada magistrali) > raczej nie ma gwarancji, że jednemu wątkowi się powiedzie w pier- > wszym podejściu, chyba że w doborze instrukcji i ich ułożeniu uwzględnić > docelową architekturę, by wydawało się, że dzięki jednoczesnemu przetwa- > rzaniu kilku instrukcji przetworzy je w jednym cyklu. Przeczytaj dokumentację intela, ok? cmpxchg składa się z szeregu operacji mikrokodu oraz 2 dostępów do magistrali (wykonywanie tej instrukcji na rejestrach ma mało sensu). Faza 1: pobrania wartości z pod adresu i wykonanie porównania. Faza 2: zapisanie wyniku pod adres w pamięci LUB do rejestru. Ponieważ w 2 fazie nie zawsze jest zapis do pamięci pomiędzy nimi magistrala jest zwalniana - przy dużym, równoległym ruchu na procesorze 2 rdzeniowym wszystko się sypie w ułamku sekundy. Dodanie prefiksu lock powoduje zablokowanie dostępu do magistrali i danych w pamięci cache (cache coherency) na czas całej instrukcji. Czyli po prostu zapewnia ATOMOWE WYKONANIE instrukcji. Skoro atomowe, to ten kto pierwszy ją zaczął ten zatrzymał pipeline wszystkich innych na czas 2 dostępów do pamięci i wymusił u nich odświeżenie cache - jego nikt nie zatrzyma. > to co powyżej to jest właśnie blokada dostępu (czyli tzw. > ‘lock’), ale przeniesiona na poziom instrukcji procesora architektury > ‘cisc’, co nie oznacza, że automatycznie zawsze i w każdym przypadku ta- > ka instrukcja jest wykonywana bez dodatkowych kosztów, niewidocznych > dla programu. Napisałem, że koszta są - niewielkie. > więc wydaje się, że odpowiedniejszą nazwą dla tego typu > algorytmów byłaby ‘mutex—free’, czyli pozbycie się blokowania uniwersal- > nego na rzecz blokowania wewnątrzprocesorowego. jakby zmierzanie > do rozwiązań typu ‘clean box’, ale w rzeczywistości to jest zwykłe > ‘black box’… ;-) Jakbyś się dokształcił w kwestii tego jak działa arbitraż na magistrali, jak działa cache coherency protocol, jak wygląda zazwyczaj cykl rozkazowy, jak działa pipeline to byś doszedł do wniosku, że: a) wszystkie instrukcje są blokujące, bo w ich obrębie jest blokowana np. magistrala lub b) dodanie prefiksu lock sprawia, że jeden opcode jest tłumaczony na jedną instrukcję, a nie kilka. Potem moglibyśmy kontynuować dyskusję na temat zastosowań? > i jak by wyglądał taki algorytm na procesor ‘risc’…? Poczytaj specyfikację choćby arm7 (LDM). Tam jest zazwyczaj łatwiej, bo nie ma systemów wielordzeniowych i wystarcza zablokowanie przerwań do czasu ukończenia instrukcji. Jeżeli jest wiele procesorów/rdzeni/(dma) to już wchodzi jakiś arbitraż na magistrali i trzeba blokować równoległy do niej dostęp. -- Pozdrawiam Michoo
Technical Details
Message-ID:
<hif4fa$r17$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> <hi7otf$793$1@inews.gazeta.pl> <hi7rnu$g3v$1@news.mixmin.net> <hidkec$as1$1@news.onet.pl> <hietpm$h9g$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: Michoo <michoo_news@vp.pl> Newsgroups: pl.comp.lang.asm Subject: Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-) Date: Mon, 11 Jan 2010 13:10:26 +0100 Organization: http://onet.pl Lines: 59 Message-ID: <hif4fa$r17$1@news.onet.pl> References: <hi7d3a$u60$1@news.mixmin.net> <hi7otf$793$1@inews.gazeta.pl> <hi7rnu$g3v$1@news.mixmin.net> <hidkec$as1$1@news.onet.pl> <hietpm$h9g$1@news.mixmin.net> NNTP-Posting-Host: c2-211.icpnet.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1263211818 27687 62.21.2.211 (11 Jan 2010 12:10:18 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Mon, 11 Jan 2010 12:10:18 +0000 (UTC) User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706) In-Reply-To: <hietpm$h9g$1@news.mixmin.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit