eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak liczyć cykle na bajt?Re: Jak liczyć cykle na bajt?
  • X-Received: by 2002:a05:6214:1843:: with SMTP id d3mr3315356qvy.60.1623735977235;
    Mon, 14 Jun 2021 22:46:17 -0700 (PDT)
    X-Received: by 2002:a05:6214:1843:: with SMTP id d3mr3315356qvy.60.1623735977235;
    Mon, 14 Jun 2021 22:46:17 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
    e.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2
    .proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnew
    s.google.com!google-groups.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Mon, 14 Jun 2021 22:46:17 -0700 (PDT)
    In-Reply-To: <s9fj3a$j92$1@news.icm.edu.pl>
    Injection-Info: google-groups.googlegroups.com; posting-host=178.43.4.126;
    posting-account=VFwkXwoAAADdT4-lLKRZrMYkTjizGoyn
    NNTP-Posting-Host: 178.43.4.126
    References: <0...@g...com>
    <20210526180907.75b69dd3@mateusz> <s9fj3a$j92$1@news.icm.edu.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <e...@g...com>
    Subject: Re: Jak liczyć cykle na bajt?
    From: Wojciech Muła <w...@g...com>
    Injection-Date: Tue, 15 Jun 2021 05:46:17 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:215484
    [ ukryj nagłówki ]

    On Saturday, June 5, 2021 at 12:19:23 PM UTC+2, slawek wrote:
    > Przy "dużych" CPU (takich jak Intel I9, w odróżnieniu od jakichś
    > popierdułek w rodzaju 8 bitowego ATmega8) jest jeszcze
    > ciekawiej:
    >
    > 1. Jest zegar, np. 3.5 GHz.
    > 2. Ale w trybie boost leci do 5GHz - jeżeli jeden rdzeń tylko pracuje.
    > 3. przetworzenie rozkazu może zająć kilka faktów (wczytanie
    > rozkazu, wczytanie danych, zapisanie danych)

    To jest szczegół techniczny, o którym należy zapomnieć. W rzeczywistości
    potoki są głębokie (co najmniej kilkanaście etapów). Dekodowanie rozkazów,
    ich scheduling na fizyczne jednostki wykonawcze i ich faktyczne
    wykonywanie są asynchroniczne. Procesor Skylake może obsługiwać ponad
    200 rozkazów w jednej chwili.

    Z punktu widzenia programisty istotne są tylko dwie liczby charakteryzujące
    instrukcje:
    - opóźnienie (latency) - po ilu cyklach zegara wynik instrukcji będzie dostępny,
    - przepustowość (throughput) - co ile cykli zegara można odpalać dany rozkaz.

    Np. mnożenie ma latency=3, ale throughput=1, co znaczy, że jak masz wykonać
    10 mnożeń, to ich wynik może być dostępny w najgorszym przypadku po 10*3
    cyklach, a w najlepszym po 3 + 9*1 cyklach.

    Albo latency=1, throughput=0.33 dla dodawania całkowitoliczbowego oznacza, że
    wynik będzie po cyklu, ale jak scheduler da radę i będą wolne jednostki wykonawcze,
    to trzy dodawania zostaną przekazane do wykonania w 1 cyklu.

    > 4. Ale jest pipeline i na jednym core jest na raz kilka rozkazów
    > (na różnych etapach realizacji)
    > 5. Są rozkazy SIMD i rejestry o długości tak z 2KB - teoretycznie
    > operacje na nich też są "w jednym cyklu"

    Nie istnieją takie duże rejestry SIMD. Największe obecnie to 64 bajty
    w AVX512 i niektórych implementacjach SVE; większość to 16 lub 32 bajty.
    Latency dla dużej części operacji wektorowych wynosi jeden cykl,
    bez cudzysłowu. Dlatego procesory się grzeją. :)

    w.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: