eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAtomowość operacji vs wieloprocesorowośćRe: Atomowość operacji vs wieloprocesorowość
  • X-Received: by 10.140.98.116 with SMTP id n107mr409584qge.11.1428586286225; Thu, 09
    Apr 2015 06:31:26 -0700 (PDT)
    X-Received: by 10.140.98.116 with SMTP id n107mr409584qge.11.1428586286225; Thu, 09
    Apr 2015 06:31:26 -0700 (PDT)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!m20no2110177iga.0!n
    ews-out.google.com!k20ni72qgd.0!nntp.google.com!z60no529164qgd.0!postnews.googl
    e.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 9 Apr 2015 06:31:26 -0700 (PDT)
    In-Reply-To: <8...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.83.76;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 178.36.83.76
    References: <1...@n...fucking.idea>
    <5...@g...com>
    <a...@g...com>
    <0...@g...com>
    <f...@g...com>
    <8...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <3...@g...com>
    Subject: Re: Atomowość operacji vs wieloprocesorowość
    From: "M.M." <m...@g...com>
    Injection-Date: Thu, 09 Apr 2015 13:31:26 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:207799
    [ ukryj nagłówki ]

    On Thursday, April 9, 2015 at 3:01:23 PM UTC+2, Adam Klobukowski wrote:
    > W dniu czwartek, 9 kwietnia 2015 13:20:44 UTC+2 użytkownik M.M. napisał:
    > > On Wednesday, April 8, 2015 at 11:21:16 PM UTC+2, Wojciech Muła wrote:
    > > > On Tuesday, April 7, 2015 at 5:28:46 PM UTC+2, Maciej Sobczak wrote:
    > > > > W dniu wtorek, 7 kwietnia 2015 10:18:29 UTC+2 użytkownik Wojciech Muła
    napisał:
    > > > >
    > > > > > > Czy operacje typu zapis/odczyt na pojedynczej komórce pamięci
    > > > > > > (32-bitowej na platformie 32-bitowej, 64-bitowej wna platformie
    > > > > > > 64-bitowej) są atomowe?
    > > > > >
    > > > > > Są atomowe.
    > > > >
    > > > > Dorzućmy może wymaganie na wyrównanie adresu do rozmiaru tej komórki,
    > > > > żeby nie było problemu z dostępem do danych przekraczających granicę
    > > > > słowa. Intuicja (na tzw. popularnych platformach) podpowiada, że wtedy
    > > > > będzie OK, ale techniczna prawda będzie tylko w dokumentacji procka.
    > > >
    > > > Tom 3A "8.1.1 Guaranteed Atomic Operations":
    > > >
    > > > The Intel486 processor (and newer processors since) guarantees
    > > > that the following basic memory operations will
    > > > always be carried out atomically:
    > > > * Reading or writing a byte
    > > > * Reading or writing a word aligned on a 16-bit boundary
    > > > * Reading or writing a doubleword aligned on a 32-bit boundary
    > > >
    > > > The Pentium processor (and newer processors since) guaran
    > > > tees that the following additional memory operations
    > > > will always be carried out atomically:
    > > > * Reading or writing a quadword aligned on a 64-bit boundary
    > > > * 16-bit accesses to uncached memory locations that fit within
    > > > a 32-bit data bus
    > > >
    > > > The P6 family processors (and newer processors since)
    > > > guarantee that the following additional memory operation
    > > > will always be carried out atomically:
    > > > * Unaligned 16-, 32-, and 64-bit accesses to cached memory
    > > > that fit within a cache line
    > > >
    > > >
    > > > Teraz chyba nie ma wątpliwości.
    > > >
    > >
    > > Jakie korzyści płyną z tego w praktyce?
    > >
    > > Jak mam przypisanie:
    > > zmienna_lokalna = zmienna_globalna;
    > > Zmienna globalna mogła zostać zmodyfikowana przez inny wątek/proces.
    > >
    > > Jeśli dostępu do zmienna_globalna nie obejmę sekcją krytyczną, to
    > > wiem że dane w zmiennej globalnej i tak będą spójne. Ale co w sytuacji, gdy
    > > wątek modyfikujący robi:
    > > zmienna_globalna += cos;
    > > albo
    > > zmienna_globalna *= cos;
    > > zmienna_globalna %= cos;
    > >
    > > Czy dane nadal będą spójne?
    > >
    > > Na pewno z powodu pamięci cache i tak zostaną te same problemy. Wątek
    > > odczytujący może otrzymać zmienna_globalna z opóźnieniem. Czyli wątek
    > > zapisujący i tak musi zrobić powolną operację zrzutu zmodyfikowanych
    > > danych. Nie lepiej od razu użyć sekcji krytycznej i mieć prostszy kod w
    > > analizie, nie wspominając o możliwości kompilacji na inne procesory, albo o
    > > uruchamianiu na klastrze.
    >
    > Nie wiesz też co z twojego kodu zrobi kompilator, może to zoptymalizować do 1
    odczytu i 1 zapisu.

    Zgadza się, dlatego (też) taki jestem ciekawy do czego jest to w
    praktyce potrzebne.

    >
    > Tak więc sekcja krytyczna albo mutex jest niezbędna.



    Pozdrawiam

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: