Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
...тута... в итоге пришли к тому, что asm знают 2.5 человека, и те предпочитают смотреть в сырцы...
3 янв 20, 20:48    [22053223]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Я тебе там про Cortex написал. Видел да?

Так какой прикажешь ассемблер учить?
3 янв 20, 21:24    [22053233]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
но здесь же тебе не мешает Cortex "смотреть ассемблерный код"
3 янв 20, 22:57    [22053253]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Мы с тобой по разному помимаем пользу от реверс инжиниринга.
3 янв 20, 23:01    [22053255]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
а это возможно? там просто поток инструкций, и польза одна - понять, ЧТО именно будет "хавать" процессор
3 янв 20, 23:54    [22053269]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4056
полудух,
Имеется ввиду польза в написании программного кода.
Так кода нет, то и польза вопроса нулевая.
Просто изучаем железо и архитектуру процессоров.
автор
Вы не можете написать программу так, чтобы она случайно заиспользовала не весь кеш и пострадала от этого.

+1
4 янв 20, 09:03    [22053318]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
PetroNotC Sharp
Так кода нет, то и польза вопроса нулевая.

чево Картинка с другого сайта.
4 янв 20, 13:31    [22053367]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4056
полудух,
Тут был пост интересный. С кодом по ссылке.
Глюки. Не вижу его.
Забей.
4 янв 20, 13:39    [22053371]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Хм... странно. Мне тоже утром показалось что кто-то писал развёрнутый пост по кешам.
4 янв 20, 14:20    [22053386]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6427
Тут много основ и ссылок на более подробные статьи.
https://stackoverflow.com/questions/16699247/what-is-a-cache-friendly-code
4 янв 20, 14:36    [22053390]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Anatoly Moskovsky, спасибо большое.

Эх некому занятся систематизацией знаний или написанием FAQ по тем вопросам которые уже здесь обсуждались.
4 янв 20, 14:37    [22053391]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
а вот если у меня есть 10 векторов с данными по 10кб каждый...
и в каждом цикле используется 1-2-3 из них, но разные
и есть всяких других данных гигабайты, из которых в каждом цикле собираются небольшие строки в несколько кб, включая те 1-2-3 вектора...
могу ли я эти 100кб векторов принудительно запихнуть в L3, например, как гарантированно постоянно используемые?
или это нецелесообразный про*б кэша?
или это сделает сам проц/компилятор?
4 янв 20, 16:04    [22053405]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
полагаю, он сам их положит куда надо, как часто используемые (и наверное даже в L2/L1 частично)
4 янв 20, 16:11    [22053407]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49336

полудух
могу ли я эти 100кб векторов *принудительно* запихнуть в L3, например, как гарантированно
постоянно используемые?

Можешь. Тем самым префетчем. Но толку от этого как от козла молока если через один тик
шедулера процессор будет отдан другой задаче, которая вытеснит их из кэша обратно.

Повторюсь: для максимального использования кэша надо в первую и главную очередь
пристрелить всех конкурентов и получить процессор в монопольное распоряжение.

Posted via ActualForum NNTP Server 1.5

4 янв 20, 17:10    [22053420]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
Dimitry Sibiryakov
Повторюсь: для максимального использования кэша надо в первую и главную очередь пристрелить всех конкурентов и получить процессор в монопольное распоряжение.

это ты так с false sharing борешься?
4 янв 20, 18:27    [22053441]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
полудух
а вот если у меня есть 10 векторов с данными по 10кб каждый...
и в каждом цикле используется 1-2-3 из них, но разные
и есть всяких других данных гигабайты, из которых в каждом цикле собираются небольшие строки в несколько кб, включая те 1-2-3 вектора...
могу ли я эти 100кб векторов принудительно запихнуть в L3, например, как гарантированно постоянно используемые?
или это нецелесообразный про*б кэша?
или это сделает сам проц/компилятор?

Компиллятор вряд-ли сделает тут что-то полезное. Все такие это больше в плоскости рантайма происходит.
Подумай вот над следующим. Я буду оперировать терминологией 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]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Нарисовал такую сравнительную шпаргалку по размерам регистров общего назначения, кеш линиям
а также сетевой пакет (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]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
bk0010
Member

Откуда:
Сообщений: 4895
Главное забыли: размер страницы (2Кб)

Сообщение было отредактировано: 5 янв 20, 22:24
5 янв 20, 22:23    [22053855]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6427
bk0010
Главное забыли: размер страницы (2Кб)

На интеле 4КБ или 4МБ.

Сообщение было отредактировано: 5 янв 20, 22:36
5 янв 20, 22:36    [22053857]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Хороший вопрос. Каким API мы можем посмотреть этот т.н. размер страницы?

Всегда ли это одно и тоже понятие или может быть их несколько для одной ОС ?
5 янв 20, 22:37    [22053858]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6427
Размер страницы задается при выделении памяти (параметром в mmap).
По умолчанию 4КБ (почти на всех архитектурах со страничной адресацией).
5 янв 20, 22:42    [22053859]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
полудух
Member [заблокирован]

Откуда: планета орков, г.Зверополис
Сообщений: 1296
mayton
Каким API мы можем посмотреть этот т.н. размер страницы?

getconf PAGE_SIZE
getconf PAGESIZE
5 янв 20, 22:52    [22053863]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
полудух,

У меня - 4096.

В рамках сбора статистики. Коллеги. Дайте сведенья что у вас и почем. Кеш-линии архитектурно тоже разные.
От 32 до 128 байт. Но умные статьи сообщают что популярным являет собой размер 64 байт. Подозреваю что
32 это что-то ну очень-очень старое.
5 янв 20, 22:57    [22053865]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
Изопропил
Member

Откуда:
Сообщений: 31415
mayton
Хороший вопрос. Каким API мы можем посмотреть этот т.н. размер страницы?
Всегда ли это одно и тоже понятие или может быть их несколько для одной ОС ?

для винды -
GetSystemInfo
GetLargePageMinimum

одновременно могут использоваться разные размеры страниц
5 янв 20, 23:34    [22053880]     Ответить | Цитировать Сообщить модератору
 Re: размер кэша - КАК его максимально использовать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 44702
Ребята-виндузятники. Поделитесь цифрами plz.
5 янв 20, 23:37    [22053883]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / C++ Ответить