Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 вперед Ctrl→ все |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
...тута... в итоге пришли к тому, что asm знают 2.5 человека, и те предпочитают смотреть в сырцы... |
3 янв 20, 20:48 [22053223] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Я тебе там про Cortex написал. Видел да? Так какой прикажешь ассемблер учить? |
3 янв 20, 21:24 [22053233] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
но здесь же тебе не мешает Cortex "смотреть ассемблерный код" |
3 янв 20, 22:57 [22053253] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Мы с тобой по разному помимаем пользу от реверс инжиниринга. |
3 янв 20, 23:01 [22053255] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
а это возможно? там просто поток инструкций, и польза одна - понять, ЧТО именно будет "хавать" процессор |
3 янв 20, 23:54 [22053269] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7706 |
полудух, Имеется ввиду польза в написании программного кода. Так кода нет, то и польза вопроса нулевая. Просто изучаем железо и архитектуру процессоров.
+1 |
||
4 янв 20, 09:03 [22053318] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
чево ![]() |
||||
4 янв 20, 13:31 [22053367] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7706 |
полудух, Тут был пост интересный. С кодом по ссылке. Глюки. Не вижу его. Забей. |
4 янв 20, 13:39 [22053371] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Хм... странно. Мне тоже утром показалось что кто-то писал развёрнутый пост по кешам. |
4 янв 20, 14:20 [22053386] Ответить | Цитировать Сообщить модератору |
Anatoly Moskovsky Member Откуда: Odessa Сообщений: 6624 |
Тут много основ и ссылок на более подробные статьи. https://stackoverflow.com/questions/16699247/what-is-a-cache-friendly-code |
4 янв 20, 14:36 [22053390] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Anatoly Moskovsky, спасибо большое. Эх некому занятся систематизацией знаний или написанием FAQ по тем вопросам которые уже здесь обсуждались. |
4 янв 20, 14:37 [22053391] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
а вот если у меня есть 10 векторов с данными по 10кб каждый... и в каждом цикле используется 1-2-3 из них, но разные и есть всяких других данных гигабайты, из которых в каждом цикле собираются небольшие строки в несколько кб, включая те 1-2-3 вектора... могу ли я эти 100кб векторов принудительно запихнуть в L3, например, как гарантированно постоянно используемые? или это нецелесообразный про*б кэша? или это сделает сам проц/компилятор? |
4 янв 20, 16:04 [22053405] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
полагаю, он сам их положит куда надо, как часто используемые (и наверное даже в L2/L1 частично) |
4 янв 20, 16:11 [22053407] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52472 |
Можешь. Тем самым префетчем. Но толку от этого как от козла молока если через один тик шедулера процессор будет отдан другой задаче, которая вытеснит их из кэша обратно. Повторюсь: для максимального использования кэша надо в первую и главную очередь пристрелить всех конкурентов и получить процессор в монопольное распоряжение. Posted via ActualForum NNTP Server 1.5 |
||
4 янв 20, 17:10 [22053420] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
это ты так с false sharing борешься? |
||||
4 янв 20, 18:27 [22053441] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Компиллятор вряд-ли сделает тут что-то полезное. Все такие это больше в плоскости рантайма происходит. Подумай вот над следующим. Я буду оперировать терминологией Linux. Мне так удобнее. 0) Допустим у тебя есть Intel Core i7 с профилем железа как я привел выше на картинке. 1) Для конфигурации init.d и всех сервисов которые запускаются при старте мы используя taskset (или подобный функционал) ты защёлкиваешь affinity на ядрe Core=0. Графическое окружение и все офисные приложения также. 2) После этого согласно таск-менеджеру все системные процессы висят на Core-0. 3) Все твои пользовательские процессы запускаешь с affinity=1,2,3 Таким образом кеши L1/L2 для трех ядер будут твои. А для L3 будет необходимость (увы) частично шарить ресурсы ОС в 3-м слое L3. Ссылки по теме. http://man7.org/linux/man-pages/man1/taskset.1.html https://stackoverflow.com/questions/7759948/set-affinity-with-start-affinity-command-on-windows-7 |
||||
4 янв 20, 19:16 [22053459] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Нарисовал такую сравнительную шпаргалку по размерам регистров общего назначения, кеш линиям а также сетевой пакет (MTU) и единица операции различных подсистем I/O. 00 (byte) 00 01 (short/word) 00 01 02 03 (int/dword, IPv4, 32bit) 00 01 02 03 04 05 06 07 (long, double, 64bit, MMX register) 00 01 02 03 04 05 06 07 : 08 09 0A 0B 0C 0D 0E 0F (IPv6, MD5, 128 bit, XMM/SSE register) 00 01 02 03 04 05 06 07 : 08 09 0A 0B 0C 0D 0E 0F (AVX register, 256 bit) 10 11 12 13 14 15 16 17 : 18 19 1A 1B 1C 1D 1E 1F Single cache line (64 bytes, 512bit) ----------------- $ getconf LEVEL1_DCACHE_LINESIZE = 64 (AMD Ryzen-5/Linux 5.0.0) 00 01 02 03 04 05 06 07 : 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 : 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 : 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 : 38 39 3A 3B 3C 3D 3E 3F Network MTU (1500 bytes) ------------------------ ? I/O, Single page (512 bytes, 1K, 4K (database block, page)) ----------------------------------------------------------- $ getconf PAGESIZE = 4096 (AMD Ryzen-5/Linux 5.0.0) ? Сообщение было отредактировано: 5 янв 20, 23:42 |
5 янв 20, 21:57 [22053848] Ответить | Цитировать Сообщить модератору |
bk0010 Member Откуда: Сообщений: 5033 |
Главное забыли: размер страницы (2Кб)
Сообщение было отредактировано: 5 янв 20, 22:24 |
5 янв 20, 22:23 [22053855] Ответить | Цитировать Сообщить модератору |
Anatoly Moskovsky Member Откуда: Odessa Сообщений: 6624 |
На интеле 4КБ или 4МБ. Сообщение было отредактировано: 5 янв 20, 22:36 |
||||
5 янв 20, 22:36 [22053857] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Хороший вопрос. Каким API мы можем посмотреть этот т.н. размер страницы? Всегда ли это одно и тоже понятие или может быть их несколько для одной ОС ? |
5 янв 20, 22:37 [22053858] Ответить | Цитировать Сообщить модератору |
Anatoly Moskovsky Member Откуда: Odessa Сообщений: 6624 |
Размер страницы задается при выделении памяти (параметром в mmap). По умолчанию 4КБ (почти на всех архитектурах со страничной адресацией). |
5 янв 20, 22:42 [22053859] Ответить | Цитировать Сообщить модератору |
полудух Member Откуда: планета орков, г.Зверополис Сообщений: 1350 |
getconf PAGE_SIZE getconf PAGESIZE |
||||
5 янв 20, 22:52 [22053863] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
полудух, У меня - 4096. В рамках сбора статистики. Коллеги. Дайте сведенья что у вас и почем. Кеш-линии архитектурно тоже разные. От 32 до 128 байт. Но умные статьи сообщают что популярным являет собой размер 64 байт. Подозреваю что 32 это что-то ну очень-очень старое. |
5 янв 20, 22:57 [22053865] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31548 |
для винды - GetSystemInfo GetLargePageMinimum одновременно могут использоваться разные размеры страниц |
||||
5 янв 20, 23:34 [22053880] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51153 |
Ребята-виндузятники. Поделитесь цифрами plz. |
5 янв 20, 23:37 [22053883] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 вперед Ctrl→ все |
Все форумы / C++ | ![]() |