Article View: pl.comp.lang.asm
Article #2052Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-)
From: minięty czas
Date: Tue, 12 Jan 2010 02:18
Date: Tue, 12 Jan 2010 02:18
71 lines
4829 bytes
4829 bytes
onegdaj ‟Michoo” rzecze:
> 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.
jesteś zwykłym trolem, który przepisuje przepisane wiadomości i do-
łącza tylko tekst „czytaj to!” (“README.TXT”). byłeś już w plonkowni-
cy, ale chwilowo to zignorowałem, bo odpowiedziałeś na mój tekst techni-
cznie —nigdy więcej. :-)
nie rozumiesz całości podanego przez siebie przykładu, a pouczanie
innych do czytania tego co ty i nie rozumienia w taki sam sposób sobie
daruj… :-> he‐he‐he…
PLONK2
--
qo |) CPL<=dataDPL CPL==/>=codeDPL:conform'/nc';max=CPL! AV0ID bHp
_x/ , CPL<=TSS,gateDPL CPL>=/==dest_DPL:/(jmp&nc') ,RPL!- #GP -o0o
| ng __ -- __ -- __ -- __ -- __ -- __ -- __ -- __ -x86-, EV3RY o0o
,__ -- __ -- Current/Requested/DescriptorPrivilegeLevel C/R/DPL , d4y m:#=
Technical Details
Message-ID:
<higm57$80s$1@news.mixmin.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.straub-nv.de!news.mixmin.net!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> <hif4fa$r17$1@news.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.straub-nv.de!news.mixmin.net!not-for-mail From: minięty czas <crav@surfy.net> Newsgroups: pl.comp.lang.asm Subject: Re: ‘lock–free’ aka odżywianie grupy asemblerowców :-) Date: Tue, 12 Jan 2010 02:18:16 +0000 (UTC) Organization: opRWTng Message-ID: <higm57$80s$1@news.mixmin.net> 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> <hif4fa$r17$1@news.onet.pl> Mime-Version: 1.0 Injection-Date: Tue, 12 Jan 2010 02:18:16 +0000 (UTC) Injection-Info: news.mixmin.net; posting-host="f2c078953fadb523ea4468cc1793f000"; logging-data="8220"; mail-complaints-to="abuse@mixmin.net" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit