eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSpójność cache L1 w x86 pomiędzy rdzeniami
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2015-05-19 19:31:36
    Temat: Spójność cache L1 w x86 pomiędzy rdzeniami
    Od: Sebastian Biały <h...@p...onet.pl>

    Mam takie pytanie z lekka akademickie.

    Mamy architekturę x86. Dowolnego producenta, z gatunku bardziej
    współczesnych.

    Każdy rdzeń ma osobne cache L1.

    Wyobraźmy sobie że mamy procesor caly dla siebie. Nie ma systemu
    operacyjnego.

    Uruchamiam dwa cory. W pamięci znajduje się jeden int. Pierwszy core
    czeka chwile i ustawia wartość tego inta na 1 po czym wpada w ciasną
    pętlę bez wyjścia.

    Drugi core sprawdza w ciasnej pętli wartość tej komórki pamięci i jak
    jest "1" to coś robi.

    Pytanie: jeśli nie zastosuje żadnych barier pamięci, to czy cache core2
    po jakimś czasie zostanie zaktualizowane zazwartością cache core1? Jest
    to mętnie opisane i zazwyczaj w kontekscie barier pamięci. Mnie
    natomiast interesuje czy procesor sam z siebie dokonuje synchronizacji
    cache L1. Zakładam że nie, ale to jest x86 i wiele pewno zrobiono dla
    kompatyblinosci z kiepskim softem :/

    PS. Mniej więcej podobny problem istnieje w prawdziwym sofcie - flaga
    zmienia stan miliony cykli później niż jej ustawienie. Kod nie posiada
    barier pamięci - a mnie interesuje kto ją "zsynchronizował"- czy OS czy
    się samo zrobiło.


  • 2. Data: 2015-06-09 08:22:03
    Temat: Re: Spójność cache L1 w x86 pomiędzy rdzeniami
    Od: Wojciech Muła <w...@g...com>

    On Tuesday, May 19, 2015 at 7:31:38 PM UTC+2, Sebastian Biały wrote:
    > Pytanie: jeśli nie zastosuje żadnych barier pamięci, to czy cache core2
    > po jakimś czasie zostanie zaktualizowane zazwartością cache core1? Jest
    > to mętnie opisane i zazwyczaj w kontekscie barier pamięci. Mnie
    > natomiast interesuje czy procesor sam z siebie dokonuje synchronizacji
    > cache L1. Zakładam że nie, ale to jest x86 i wiele pewno zrobiono dla
    > kompatyblinosci z kiepskim softem :/

    Jest synchronizacja, to się nazywa snooping: "When operating in an MP system,
    [...] processors have the ability to snoop other processor's accesses to system
    memory and to their internal caches. They use this snooping ability to keep
    their internal caches consistent both with system memory and with the caches
    in other processors on the bus" (za System Programming Guide).

    w.


  • 3. Data: 2015-06-09 18:19:33
    Temat: Re: Spójność cache L1 w x86 pomiędzy rdzeniami
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2015-06-09 08:22, Wojciech Muła wrote:
    > Jest synchronizacja, to się nazywa snooping

    Wiem, czytalem ogromną ilość opisów jak działają protokoły spójności
    cache i problem jest mocno zawiły. W żadnym nie natrafiłem na informacje
    po jakim *czasie* L1 są synchronizowane albo np. po jakim czasie zapis
    pamięci w CPU0 widoczny jest w CPU1. Wszyscy mowią o memory ordering ale
    nikt nie mówi jak szybo widać zmiany :). Albo jest to czas pomijalnie
    mały albo czytałem złe dokumenty.


  • 4. Data: 2015-06-10 10:24:44
    Temat: Re: Spójność cache L1 w x86 pomiędzy rdzeniami
    Od: Wojciech Muła <w...@g...com>

    On Tuesday, June 9, 2015 at 6:19:38 PM UTC+2, Sebastian Biały wrote:
    > On 2015-06-09 08:22, Wojciech Muła wrote:
    > > Jest synchronizacja, to się nazywa snooping
    >
    > Wiem, czytalem ogromną ilość opisów jak działają protokoły spójności
    > cache i problem jest mocno zawiły. W żadnym nie natrafiłem na informacje
    > po jakim *czasie* L1 są synchronizowane albo np. po jakim czasie zapis
    > pamięci w CPU0 widoczny jest w CPU1. Wszyscy mowią o memory ordering ale
    > nikt nie mówi jak szybo widać zmiany :). Albo jest to czas pomijalnie
    > mały albo czytałem złe dokumenty.

    Snooping działa w chwili odczytu, więc można przyjąć że pomijalnie. Na x86
    domyślnie nie masz problemu z orderingiem, bo wszystkie dostępy są
    serializowane (wyjątkiem są operacje SSE).

    Ale faktycznie, ciekawie to by było na PowerPC gdzie wszystkie dostępy są
    weak-ordered. Muszę doczytać. :)

    w.


  • 5. Data: 2015-06-10 11:45:12
    Temat: Re: Spójność cache L1 w x86 pomiędzy rdzeniami
    Od: Roman W <b...@g...pl>

    On Wed, 10 Jun 2015 01:24:44 -0700 (PDT), Wojciech
    Muła<w...@g...com> wrote:
    > Snooping działa w chwili odczytu, więc można przyjąć że pomijal=
    > nie.

    Co to znaczy pomijalnie? Rzędu nanosekund?

    RW


  • 6. Data: 2015-06-10 21:27:04
    Temat: Re: Spójność cache L1 w x86 pomiędzy rdzeniami
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2015-06-10 10:24, Wojciech Muła wrote:
    > Na x86
    > domyślnie nie masz problemu z orderingiem, bo wszystkie dostępy są
    > serializowane (wyjątkiem są operacje SSE).

    Nie wszystkie. Np. load przeplata się ze store jesli dotyczą róznych
    komorek pamięci. x86 też ma pułapki.

    http://preshing.com/20120515/memory-reordering-caugh
    t-in-the-act/

    http://stackoverflow.com/questions/20907811/x86-memo
    ry-ordering-loads-reordered-with-earlier-stores-vs-i
    ntra-processor-for

    Najbardziej zabawne że pytanie które zadalem wyszło wlaśnie z takiego
    przypadku pod lupą - pewne flagi ustawiane na cpux miały niedozwolony
    stan na cpuy. Podczas analizy okazało się dodatkowo że flagi te
    propagowały się do sąsiednich rdzeni zaskakująco długo i nie potrafie
    tego wyjasnić.

strony : [ 1 ]


Szukaj w grupach

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: