-
Data: 2021-06-15 07:46:17
Temat: Re: Jak liczyć cykle na bajt?
Od: Wojciech Muła <w...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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.
Najnowsze wątki z tej grupy
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-05-01 twardy dysk stuka
- 2024-04-30 Oclenie alkalicznych akumulatorów
- 2024-04-30 Zniknął dźwięk na tylnym panelu
- 2024-04-30 Białystok => Inżynier DevOps (projekt JP) <=
- 2024-04-30 Kraków => Mid PHP Developer (Laravel) <=
- 2024-04-30 Katowice => Junior HelpDesk <=
- 2024-04-30 trzecia plec
- 2024-04-30 Katowice => Junior HelpDesk <=
- 2024-04-30 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-04-30 Białystok => Technical Leader (Java Background) <=
- 2024-04-30 Białystok => ERP Implementer <=
- 2024-04-30 Powerbank jednonapieciowy, a trzynapieciowy
- 2024-04-30 Który program do PIT-ów?
- 2024-04-30 Warszawa => Senior PHP Developer (Symfony) <=
- 2024-04-30 Warszawa => Konsultant funkcjonalny systemu Oracle E-Business Suite R1