Memo & Trial
Trial Trial
Π― Ρ‚ΡƒΡ‚ покопался Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ кэша Apple M2, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ интСрСсныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Как ΡΡ‡ΠΈΡ‚Π°Π΅ΡˆΡŒ?
Memo Memo
Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ ΠΈ интСрСсный Π°Π½Π°Π»ΠΈΠ·. L1 Ρƒ M2 всё Π΅Ρ‰Ρ‘ довольно ΡƒΠ·ΠΊΠΈΠΉ – 128 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ Π½Π° ядро, Π½ΠΎ L2 Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ большС, Ρ‡Π΅ΠΌ Ρƒ M1, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ этим ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ Ρ†ΠΈΠΊΠ»Π°ΠΌ Ρ‡ΡƒΡ‚ΡŒ большС свободы ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ L3. Но самый Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ – Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» когСрСнтности кэша ΠΌΠ΅ΠΆΠ΄Ρƒ ядрами. Он сниТаСт ΡˆΡ‚Ρ€Π°Ρ„ Π·Π° Π»ΠΎΠΆΠ½ΠΎΠ΅ совмСстноС использованиС, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΡˆΡŒ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ интСнсивно ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ нСбольшими Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ состояния, Ρ‚Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡˆΡŒ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹ΠΉ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ слСди Π·Π° Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‚ΡΡ строки кэша; Ρƒ M2, благодаря Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ L2, всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ "Ρ‚Π°Π½Ρ†Ρ‹ с Π±ΡƒΠ±Π½ΠΎΠΌ", Ссли Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΡˆΡŒ большиС Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ядрами. Π’ Ρ†Π΅Π»ΠΎΠΌ – шаг Π²ΠΏΠ΅Ρ€Ρ‘Π΄, Π½ΠΎ настоящий Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ моТСшь ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ располоТСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ эти строки кэша.
Trial Trial
Π’Ρ‹ ΠΏΡ€Π°Π² насчСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ L2. Настоящая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС смоТСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это пространство, Π½Π΅ вызывая вытСснСний. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ, высокоуровнСвый ΠΊΠΎΠ΄ Ρ€Π΅Π΄ΠΊΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ польза Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°, Ссли Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ – ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ тСорСтичСскиС прСимущСства ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.
Memo Memo
Π’ΠΎΡ‡Π½ΠΎ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компилятор пСрСстанСт Π΄Π΅Π»Π°Ρ‚ΡŒ прСдполоТСния, свойствСнныС высокоуровнСвому ΠΊΠΎΠ΄Ρƒ, Π½Π°Ρ‡Π½Π΅ΡˆΡŒ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ прирост. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ самых ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… участков ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ массивов ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π΅ Π² 64 Π±Π°ΠΉΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, особСнно Π² критичСских Ρ†ΠΈΠΊΠ»Π°Ρ…. Π‘Π»Π΅Π΄ΠΈ Π·Π° счСтчиками вытСснСния; Ссли ΡƒΠ²ΠΈΠ΄ΠΈΡˆΡŒ скачок – Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΠΎΡ€Π° ΠΏΠΎΠ΄ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру Π΄Π°Π½Π½Ρ‹Ρ…. Π“Π»Π°Π²Π½ΠΎΠ΅ – Ρ‡Ρ‚ΠΎΠ±Ρ‹ рабочая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ Π² большом L2 кэшС ΠΈ Π½Π΅ Π²Ρ‹Π»Π΅Ρ‚Π°Π»Π° Π² L3.
Trial Trial
ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ. Если послС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ видишь высокий ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΎΠ² Π² L2, Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» кэша. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с раскладкой, ΠΏΠΎΠΊΠ° счётчик ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΎΠ² Π½Π΅ стабилизируСтся – это самый Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ Π²Ρ‹ΠΆΠΈΠΌΠ°Π΅ΡˆΡŒ максимум ΠΈΠ· L2 Π² M2.
Memo Memo
ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ присмотри Π·Π° этими счСтчиками. Если частота ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΎΠ² Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня ΡƒΠΏΠ°Π΄Π΅Ρ‚ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡˆΡŒ раскладку, Π·Π½Π°Ρ‡ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ вписались Π² ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ кэша. НС Π·Π°Π±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎ чистоту ΠΊΠΎΠ΄Π°, ΠΏΡ€Π°Π²Π΄Π°; чрСзмСрная оптимизация ΠΏΠΎΠ΄ ΠΎΠ΄ΠΈΠ½ микротСст ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части. ΠŸΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡΡ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΈ Π²Ρ‹ΠΆΠΌΠ΅ΡˆΡŒ максимум ΠΈΠ· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ кэша M2.