NVidia ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ
GPU. Π’Π΅Ρ
ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°ΡΡΠΉ, ΡΠ°ΠΊ ΡΡΠΎ Ρ ΠΎΠΆΠΈΠ΄Π°Ρ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Volta ΡΡΡΠΊΠ½ΡΠ»ΠΎ ΡΠΆΠ΅ 7 Π»Π΅Ρ.
https://nvidianews.nvidia.com/news/nvidia-blackwell-platform-arrives-to-power-a-new-era-of-computing
https://www.anandtech.com/show/21310/nvidia-blackwell-architecture-and-b200b100-accelerators-announced-going-bigger-with-smaller-data
https://3dnews.ru/1101915/nvidia-predstavila-samiy-moshchniy-protsessor-v-mire-blackwell-b200-kotoriy-otkroet-put-k-gigantskim-neyrosetyam
https://nvidianews.nvidia.com/news/nvidia-blackwell-platform-arrives-to-power-a-new-era-of-computing
https://www.anandtech.com/show/21310/nvidia-blackwell-architecture-and-b200b100-accelerators-announced-going-bigger-with-smaller-data
https://3dnews.ru/1101915/nvidia-predstavila-samiy-moshchniy-protsessor-v-mire-blackwell-b200-kotoriy-otkroet-put-k-gigantskim-neyrosetyam
NVIDIA Newsroom
NVIDIA Blackwell Platform Arrives to Power a New Era of Computing
Powering a new era of computing, NVIDIA today announced that the NVIDIA Blackwell platform has arrived β enabling organizations everywhere to build and run real-time generative AI on trillion-parameter large language models at up to 25x less cost and energyβ¦
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π·Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΠ±Ρ Π΅ΡΡΡ ΠΈ ΠΏΠΎΠ΄ ΠΏΠΈΡΠΎΠ½: https://habr.com/ru/companies/tochka/articles/798577/
Π§ΡΠΎ, Π²ΠΏΡΠΎΡΠ΅ΠΌ, Π½Π΅ ΡΠ°ΠΊ ΠΈ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ - ΠΊ Π‘/Π‘++ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ ΠΏΡΠΈΠΊΡΡΡΠΈΠ²Π°ΡΡΡΡ Π»ΠΈΠ±ΠΎΠΉ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΈ Ρ.Π΄., ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ Π»ΠΎΠΊΠ΅ Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΡΠΎΠΊ ΠΠ‘
Π§ΡΠΎ, Π²ΠΏΡΠΎΡΠ΅ΠΌ, Π½Π΅ ΡΠ°ΠΊ ΠΈ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ - ΠΊ Π‘/Π‘++ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ ΠΏΡΠΈΠΊΡΡΡΠΈΠ²Π°ΡΡΡΡ Π»ΠΈΠ±ΠΎΠΉ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΈ Ρ.Π΄., ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ Π»ΠΎΠΊΠ΅ Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΡΠΎΠΊ ΠΠ‘
Π₯Π°Π±Ρ
await anywhere, Π²Π·Π³Π»ΡΠ΄ Π½Π° ΡΡΠ΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΠ΅Π΄Π°Π»ΠΈ: sync vs async vs β¦
ΠΡΠ±ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΎΠΊ ΠΆΠΈΠ·Π½ΠΈ, Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΊΠ»Π°ΡΡΠ½ΠΎΠ΅, Π½Π°Π΄ΡΠΆΠ½ΠΎΠ΅ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅. /Json Statement/ Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½Π°ΡΠΈΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ΄Π΅Π»Π°Π»ΠΎ ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π·Π΄ΠΎΡ
, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΠ°ΠΊΠ°ΠΏΡ...
AMD ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π½Π° Zen5. ΠΡΠΏΡΡΠΊ Π½Π°ΡΠ½ΡΡΡΡ ΡΠΆΠ΅ Π² ΠΈΡΠ»Π΅, ΡΠ΅Π½Ρ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ.
Π§ΡΠΎ ΠΠ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Zen4: ΡΠΈΡΠ»ΠΎ ΡΠ΄Π΅Ρ, ΡΠ°ΡΡΠΎΡΡ, ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠ΅ΡΠ΅ΠΉ, ΡΠΈΠΏΡΠ΅Ρ(Ρ).
IPC Π²ΡΡΠΎΡΠ»Π° Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½Π° 16%. SIMD engines ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π΄ΠΎ 512 Π±ΠΈΡ, ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² AVX-512 Π²ΡΡΠ°ΡΡΠ΅Ρ Π½Π° Π΄Π΅ΡΡΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ².
ΠΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠ·ΠΈΠ»ΠΎΡΡ Π² 1.5 ΡΠ°Π·Π° (170 -> 120, 105 -> 65 W). CCD ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° 4 Π½ΠΌ (Π² Zen4 Π±ΡΠ»ΠΎ Π½Π° 5 Π½ΠΌ), ΠΈ ΠΏΠΎΡ ΠΎΠΆΠ΅ ΡΡΠΎ Π²ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π±ΡΠ»ΠΎ ΠΏΡΡΠ΅Π½ΠΎ Π½Π° ΠΎΠ±ΡΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠ΄Π΅Ρ. Π‘ +16% IPC ΠΎΠ½ΠΈ ΠΈ ΡΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½Ρ Ρ Raptor Lake.
IOD ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° 6 Π½ΠΌ, ΠΈ Π² Π½ΡΠΌ Π²ΡΡ ΡΠΎ ΠΆΠ΅ RDNA2 Π²ΠΈΠ΄Π΅ΠΎΡΠ΄ΡΠΎ. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΡΠΈΠΏΡΠ΅Ρ, Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π°Ρ, ΡΠ΅ΠΌ Ρ Raptor Lake, ΡΠ°Π±ΠΎΡΠ° Ρ DDR5 ΠΏΠ°ΠΌΡΡΡΡ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π±ΠΈΡΠΎΠΌ ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ Zen.
(Π·Π°Π²ΡΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½Ρ ΠΏΠΎΡΡ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΠΉ ΠΎΠ± ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΡ Π² ΠΌ/Π° Zen5)
Π§ΡΠΎ ΠΠ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Zen4: ΡΠΈΡΠ»ΠΎ ΡΠ΄Π΅Ρ, ΡΠ°ΡΡΠΎΡΡ, ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠ΅ΡΠ΅ΠΉ, ΡΠΈΠΏΡΠ΅Ρ(Ρ).
IPC Π²ΡΡΠΎΡΠ»Π° Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½Π° 16%. SIMD engines ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π΄ΠΎ 512 Π±ΠΈΡ, ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² AVX-512 Π²ΡΡΠ°ΡΡΠ΅Ρ Π½Π° Π΄Π΅ΡΡΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ².
ΠΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠ·ΠΈΠ»ΠΎΡΡ Π² 1.5 ΡΠ°Π·Π° (170 -> 120, 105 -> 65 W). CCD ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° 4 Π½ΠΌ (Π² Zen4 Π±ΡΠ»ΠΎ Π½Π° 5 Π½ΠΌ), ΠΈ ΠΏΠΎΡ ΠΎΠΆΠ΅ ΡΡΠΎ Π²ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π±ΡΠ»ΠΎ ΠΏΡΡΠ΅Π½ΠΎ Π½Π° ΠΎΠ±ΡΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠ΄Π΅Ρ. Π‘ +16% IPC ΠΎΠ½ΠΈ ΠΈ ΡΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½Ρ Ρ Raptor Lake.
IOD ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° 6 Π½ΠΌ, ΠΈ Π² Π½ΡΠΌ Π²ΡΡ ΡΠΎ ΠΆΠ΅ RDNA2 Π²ΠΈΠ΄Π΅ΠΎΡΠ΄ΡΠΎ. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΡΠΈΠΏΡΠ΅Ρ, Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π°Ρ, ΡΠ΅ΠΌ Ρ Raptor Lake, ΡΠ°Π±ΠΎΡΠ° Ρ DDR5 ΠΏΠ°ΠΌΡΡΡΡ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π±ΠΈΡΠΎΠΌ ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ Zen.
(Π·Π°Π²ΡΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½Ρ ΠΏΠΎΡΡ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΠΉ ΠΎΠ± ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΡ Π² ΠΌ/Π° Zen5)
AnandTech
AMD Unveils Ryzen 9000 CPUs For Desktop, Zen 5 Takes Center Stage at Computex 2024
During AMD's Computex 2024 kick-off keynote, AMD's CEO, Dr. Lisa Su, officially unveiled and announced the company's next generation of Ryzen processors. Today marks the first unveiling of AMD's highly anticipated Zen 5 microarchitecture via the Ryzen 9000β¦
π₯2
Π‘Π²Π΅ΠΆΠ΅Π½ΡΠΊΠΈΠ΅ ΠΌΠ°Π½ΡΠ°Π»Ρ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ.
Π ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π½Π° ΡΡΡΡΠΊΠΈΠΉ (Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ ΠΊΠΎΠΌΡ Π½Π°Π΄ΠΎ). ΠΠ»ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ½ΠΈΠ³ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ.
#Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Π ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π½Π° ΡΡΡΡΠΊΠΈΠΉ (Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ ΠΊΠΎΠΌΡ Π½Π°Π΄ΠΎ). ΠΠ»ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ½ΠΈΠ³ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ.
#Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
β€5
π12π₯3
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΎΠ±Π·ΠΎΡΡ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Zen5.
Π‘Π»Π°ΠΉΠ΄Ρ ΠΎΡ AMD Ρ ΠΈΠ½ΡΠΎΠΉ ΠΎ ΠΌ/Π° ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠ°, Π΄Π°ΡΡΠ΅Π΅ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉ.
Zen4's AVX512 Teardown ΠΎΡ Mystical (Π°Π²ΡΠΎΡΠ° y-cruncher).
Zen5's AVX512 Teardown + More... ΠΎΡ Π½Π΅Π³ΠΎ ΠΆΠ΅. ΠΡΠ°ΡΠΊΠΎ - Π²ΡΠ΅ SIMD ALU Π±ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Ρ 256 Π΄ΠΎ 512 Π±ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° AVX-512 ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎ 2-ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ²Ρ Π½Π° Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ SIMD/FPU ΠΊΠΎΠ΄Π΅ (ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΌ, 128/256-Π±ΠΈΡΠ½ΠΎΠΌ) - Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ². ΠΠ»ΡΡ, Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² SIMD ALU 1-ΡΠ°ΠΊΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π°ΡΡ Π΄ΠΎ 2 ΡΠ°ΠΊΡΠΎΠ².
ΠΠ΄Π΅ΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ ΠΎΠ±Π·ΠΎΡΡ Zen5 Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (ΡΠΊΠΎΡΠΎΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ).
Π‘Π»Π°ΠΉΠ΄Ρ ΠΎΡ AMD Ρ ΠΈΠ½ΡΠΎΠΉ ΠΎ ΠΌ/Π° ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠ°, Π΄Π°ΡΡΠ΅Π΅ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉ.
Zen4's AVX512 Teardown ΠΎΡ Mystical (Π°Π²ΡΠΎΡΠ° y-cruncher).
Zen5's AVX512 Teardown + More... ΠΎΡ Π½Π΅Π³ΠΎ ΠΆΠ΅. ΠΡΠ°ΡΠΊΠΎ - Π²ΡΠ΅ SIMD ALU Π±ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Ρ 256 Π΄ΠΎ 512 Π±ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° AVX-512 ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎ 2-ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ²Ρ Π½Π° Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ SIMD/FPU ΠΊΠΎΠ΄Π΅ (ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΌ, 128/256-Π±ΠΈΡΠ½ΠΎΠΌ) - Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ². ΠΠ»ΡΡ, Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² SIMD ALU 1-ΡΠ°ΠΊΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π°ΡΡ Π΄ΠΎ 2 ΡΠ°ΠΊΡΠΎΠ².
ΠΠ΄Π΅ΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ ΠΎΠ±Π·ΠΎΡΡ Zen5 Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (ΡΠΊΠΎΡΠΎΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ).
π5β€4
β‘οΈΠΠΈΠ΄Π΅ΠΎ When Nanoseconds Matter: Ultrafast Trading Systems
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π»Π΅ΠΊΡΠΈΡ ΠΎΡ David Gross ΠΈΠ· Optiver ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΎΡΠ³ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ:
- ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ L3 ΠΎΡΠ΄Π΅ΡΠ±ΡΠΊ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°ΡΡ Π² Π½Π΅ΠΌ.
- Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΊΠΎΠ΄Π΅ SPMC bounded ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π² shared memory.
- ΠΈΠ΄Π΅Ρ spawn'ΠΈΡΡ perf ΠΏΡΡΠΌΠΎ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
- Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ likely/unlikely/cold ΡΠ΅ΠΊΡΠΈΡΡ Π² ΠΊΠΎΠ΄Π΅.
- ΡΠΏΠΎΠΌΠ½ΡΠ½ΡΠ» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΡΠΈΠ³ΡΡΡ Π΄Π°ΡΡ kernel bypass ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ΅ΡΡΡ.
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ clang xray Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅.
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π»Π΅ΠΊΡΠΈΡ ΠΎΡ David Gross ΠΈΠ· Optiver ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΎΡΠ³ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ:
- ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ L3 ΠΎΡΠ΄Π΅ΡΠ±ΡΠΊ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°ΡΡ Π² Π½Π΅ΠΌ.
- Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΊΠΎΠ΄Π΅ SPMC bounded ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π² shared memory.
- ΠΈΠ΄Π΅Ρ spawn'ΠΈΡΡ perf ΠΏΡΡΠΌΠΎ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
- Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ likely/unlikely/cold ΡΠ΅ΠΊΡΠΈΡΡ Π² ΠΊΠΎΠ΄Π΅.
- ΡΠΏΠΎΠΌΠ½ΡΠ½ΡΠ» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΡΠΈΠ³ΡΡΡ Π΄Π°ΡΡ kernel bypass ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ΅ΡΡΡ.
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ clang xray Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅.
YouTube
When Nanoseconds Matter: Ultrafast Trading Systems in C++ - David Gross - CppCon 2024
https://cppcon.orgβ
CppCon 2024 Early Access: https://cppcon.org/early-access
Access All 2024 Session Videos Ahead of Their Official Release To YouTube. At least 30 days exclusive access through the Early Access system. Videos will be released to the CppConβ¦
CppCon 2024 Early Access: https://cppcon.org/early-access
Access All 2024 Session Videos Ahead of Their Official Release To YouTube. At least 30 days exclusive access through the Early Access system. Videos will be released to the CppConβ¦
π2β€1π₯1
Forwarded from ΠΠ°ΠΏΠΈΡΠΊΠΈ CPU designer'a (ΠΠΈΠΊΠΎΠ»Π°ΠΉ)
ΠΠΎΠ΄Π±ΠΎΡΠΊΠ° ΠΌΠΈΠΊΡΠΎΠ°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ
Π±Π»ΠΎΠΊ-Π΄ΠΈΠ°Π³ΡΠ°ΠΌ ΡΠ΄Π΅Ρ ΠΎΡ Intel, AMD, ARM, Ampere.
Block Diagrams: http://bit.ly/32qLLew
ΞΌarch Cheat Sheet: http://bit.ly/2JTplfJ
ΠΠ»Ρ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ΄ΡΠΎ Apple A15 (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠ΅) Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° Π±Π°Π·Π΅ RISC-V ΠΎΡ Sifive P870 Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»ΠΈ Syntacore SCR7/9.
Block Diagrams: http://bit.ly/32qLLew
ΞΌarch Cheat Sheet: http://bit.ly/2JTplfJ
ΠΠ»Ρ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ΄ΡΠΎ Apple A15 (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠ΅) Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° Π±Π°Π·Π΅ RISC-V ΠΎΡ Sifive P870 Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»ΠΈ Syntacore SCR7/9.
π4π₯2
Forwarded from this->notes.
#cpp
ΠΡΠ΅ΠΌΡ -- Π΄Π΅Π½ΡΠ³ΠΈ.
Π‘ΡΠ°Π½Π΄Π°ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡ [ΡΠΏΡΠΎΡΠ°Ρ], ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ, ΡΡΠΎ ΡΠΆΠ΅ Π΅Π³ΠΎ Π΄Π΅Π»ΠΎ.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ.
O0 (ΠΎ Π½ΠΎΠ»Ρ)
ΠΠ°Π·Π°. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ. Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π°.
O1
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π· ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°: dead code elimination, constant propagation, basic inlining.
Π£ GCC ΡΡΡ ΡΠΆΠ΅ 48 ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π΄ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Π΄ΡΡΠ³ ΠΎΡΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΠ³ΠΈΠ½Π°Π»Π°ΠΌ).
O2
Π‘Π°ΠΌΡΠΉ Π½Π°ΡΠΎΠ΄Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π±Π΅Π· speed-space ΡΡΠ΅ΠΉΠ΄ΠΎΡΠ°: unroll loops, vectorization, strict aliasing.
O3
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΡΠΎΠΌΠ°Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΡ ΡΠ°Π΄ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ. ΠΠΎΠ»Π΅Π΅ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠΈΠΊΠ»Ρ, Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠΌ, Π±ΠΎΠ»ΡΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΡΠ΅ΠΌ. ΠΠ·-Π·Π° ΡΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄ΡΠ²Π°ΡΡΡΡ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ°Π΄Π°ΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ (ΠΏΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ instruction cache Π²Ρ ΡΡΠ°Π½Π΅ΡΠ΅ ΡΠ°ΡΠ΅ ΠΊΠ΅ΡΠΌΠΈΡΡΠΈΡΡ).
ΠΡΠ»ΠΈ ΡΠ²Π»Π΅ΠΊΠ°Π΅ΡΠ΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠ΄ Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠ½ΠΎ Π² ΠΏΠ»ΡΡΠ΅. ΠΠ΅ Π·Π°Π΄Π΅Π²Π°Ρ Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅.
Ofast
ΠΠ°ΠΊ O3, Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠΎΡΠ΅ΠΌΡ ΠΎΠΏΠ°ΡΠ½ΡΠ΅? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π·Π° ΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² Beware of fast-math.
Og (ΠΎΡΠ΄ΠΆΠΈ)
Og = O0 + Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· O1, Π½Π΅ ΡΡ ΡΠ΄ΡΠ°ΡΡΠΈΠ΅ debug experience.
Os
Os = ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· O2, Π½Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° + Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’ΡΠ΅ΠΉΠ΄ΠΎΡΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π² ΠΌΠ΅ΡΡ.
Oz
ΠΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΠΌΠΎΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Oz. ΠΠ°ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ°Π΄ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΡ. ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π² embedded ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊ.
ΠΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»-Π²ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠΎΠ»-Π²ΠΎΠΌ Π±Π°ΠΉΡΠΎΠ².
ΠΠ΅Π±Π°Π³Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠΆΠ΅ ΡΠΆΠ΅ Π½Π΅ΡΠ΅Π°Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΠ½ΠΎ. ΠΠΎ ΠΊΠ°ΠΊ Π΅ΡΡΡ.
ΠΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ LTO (ΠΈ ThinLTO) ΠΈ PGO. ΠΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ -march=... ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎΠΆΠ΅Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡΠΎΠΌ..
ΠΠΎΠΊΠ»Π°Π΄ Π² ΡΠ΅ΠΌΡ: What GCC optimization level is best for you?
Π Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΡΠΎ ΡΠ°ΠΌΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ LLVM Π² ΡΠ°Π·Π½ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΎΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄ Π²Π°ΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π½ΡΠΆΠ΄Ρ, Ρ.ΠΊ. ΡΡΠ΅ΠΉΠ΄ΠΎΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅.
ΠΡΠ΅ΠΌΡ -- Π΄Π΅Π½ΡΠ³ΠΈ.
Π‘ΡΠ°Π½Π΄Π°ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡ [ΡΠΏΡΠΎΡΠ°Ρ], ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ, ΡΡΠΎ ΡΠΆΠ΅ Π΅Π³ΠΎ Π΄Π΅Π»ΠΎ.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ.
O0 (ΠΎ Π½ΠΎΠ»Ρ)
ΠΠ°Π·Π°. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ. Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π°.
O1
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π· ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°: dead code elimination, constant propagation, basic inlining.
Π£ GCC ΡΡΡ ΡΠΆΠ΅ 48 ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π΄ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Π΄ΡΡΠ³ ΠΎΡΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΠ³ΠΈΠ½Π°Π»Π°ΠΌ).
O2
Π‘Π°ΠΌΡΠΉ Π½Π°ΡΠΎΠ΄Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π±Π΅Π· speed-space ΡΡΠ΅ΠΉΠ΄ΠΎΡΠ°: unroll loops, vectorization, strict aliasing.
O3
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΡΠΎΠΌΠ°Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΡ ΡΠ°Π΄ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ. ΠΠΎΠ»Π΅Π΅ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠΈΠΊΠ»Ρ, Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠΌ, Π±ΠΎΠ»ΡΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΡΠ΅ΠΌ. ΠΠ·-Π·Π° ΡΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄ΡΠ²Π°ΡΡΡΡ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ°Π΄Π°ΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ (ΠΏΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ instruction cache Π²Ρ ΡΡΠ°Π½Π΅ΡΠ΅ ΡΠ°ΡΠ΅ ΠΊΠ΅ΡΠΌΠΈΡΡΠΈΡΡ).
ΠΡΠ»ΠΈ ΡΠ²Π»Π΅ΠΊΠ°Π΅ΡΠ΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠ΄ Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠ½ΠΎ Π² ΠΏΠ»ΡΡΠ΅. ΠΠ΅ Π·Π°Π΄Π΅Π²Π°Ρ Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅.
Ofast
ΠΠ°ΠΊ O3, Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
--ffast-math.ΠΠΎΡΠ΅ΠΌΡ ΠΎΠΏΠ°ΡΠ½ΡΠ΅? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π·Π° ΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² Beware of fast-math.
Og (ΠΎΡΠ΄ΠΆΠΈ)
Og = O0 + Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· O1, Π½Π΅ ΡΡ ΡΠ΄ΡΠ°ΡΡΠΈΠ΅ debug experience.
Os
Os = ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· O2, Π½Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° + Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’ΡΠ΅ΠΉΠ΄ΠΎΡΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π² ΠΌΠ΅ΡΡ.
Oz
ΠΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΠΌΠΎΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Oz. ΠΠ°ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ°Π΄ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΡ. ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π² embedded ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊ.
ΠΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»-Π²ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠΎΠ»-Π²ΠΎΠΌ Π±Π°ΠΉΡΠΎΠ².
ΠΠ΅Π±Π°Π³Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠΆΠ΅ ΡΠΆΠ΅ Π½Π΅ΡΠ΅Π°Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΠ½ΠΎ. ΠΠΎ ΠΊΠ°ΠΊ Π΅ΡΡΡ.
ΠΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ LTO (ΠΈ ThinLTO) ΠΈ PGO. ΠΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ -march=... ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎΠΆΠ΅Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡΠΎΠΌ..
ΠΠΎΠΊΠ»Π°Π΄ Π² ΡΠ΅ΠΌΡ: What GCC optimization level is best for you?
Π Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΡΠΎ ΡΠ°ΠΌΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ LLVM Π² ΡΠ°Π·Π½ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΎΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄ Π²Π°ΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π½ΡΠΆΠ΄Ρ, Ρ.ΠΊ. ΡΡΠ΅ΠΉΠ΄ΠΎΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅.
β€1π1
Forwarded from ΠΠ»ΠΎΠ³*
#prog #article
Advent of compiler optimizations β ΡΠ±ΠΎΡΠ½ΠΈΠΊ Π΄Π΅ΠΊΠ°Π±ΡΡΡΠΊΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π² Π΄Π΅Π½Ρ (Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅), Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ². ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ ΠΡΡΡΠΎΠΌ ΠΠΎΠ΄Π±ΠΎΠ»ΡΠΎΠΌ (Π΄Π°-Π΄Π°, ΡΠΎΡ ΡΠ°ΠΌΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ godbolt.org).
Advent of compiler optimizations β ΡΠ±ΠΎΡΠ½ΠΈΠΊ Π΄Π΅ΠΊΠ°Π±ΡΡΡΠΊΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π² Π΄Π΅Π½Ρ (Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅), Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ². ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ ΠΡΡΡΠΎΠΌ ΠΠΎΠ΄Π±ΠΎΠ»ΡΠΎΠΌ (Π΄Π°-Π΄Π°, ΡΠΎΡ ΡΠ°ΠΌΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ godbolt.org).
π2π₯1
Forwarded from ΠΠ°ΠΏΠΈΡΠΊΠΈ CPU designer'a
ΠΠ΅ΠΊΡΠΈΡ ΠΎ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ΅ x86-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Intel Skylake.
Π Π°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ out-of-order CPU: ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ x86-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΠΌΠΈΠΊΡΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Β΅ops), Π²Π½Π΅ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ΅ΠΊΡΠΎΡ: ΠΡΡΡ ΠΠΎΠ΄Π±ΠΎΠ»Ρ
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Compiler Explorer, C++-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·Π°ΡΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ².
Π Π°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ out-of-order CPU: ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ x86-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΠΌΠΈΠΊΡΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Β΅ops), Π²Π½Π΅ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ΅ΠΊΡΠΎΡ: ΠΡΡΡ ΠΠΎΠ΄Π±ΠΎΠ»Ρ
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Compiler Explorer, C++-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·Π°ΡΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ².
π2πΎ1