Как получить размер строки кэша в коммерческих ОС UNIX из программы на C / C ++? - PullRequest
0 голосов
/ 13 декабря 2010

Достаточно просто найти ответ для Windows, Linux и OSX в Интернете, но как насчет коммерческих операционных систем UNIX, таких как AIX (на POWER), HP-UX (на Itanium) и Solaris (на SPARC).Эксперимент с ложным кодом совместного использования строк кэша - не тот ответ, который я ищу.

Редактировать: Добавлены архитектуры ЦП.

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

Для Solaris (как для архитектуры SPARC, так и для архитектуры x86) вы можете использовать эту команду:

$ prtpicl -v -c cpu | grep -i cache-line-size
  :l1-dcache-line-size   0x40 
  :l1-icache-line-size   0x40 
  :l2-cache-line-size    0x40 
2 голосов
/ 13 декабря 2010

Если вы пытаетесь оптимизировать производительность, то тестирование именно то, что вам следует делать.Например, см. ATLAS .

Если вы не пытаетесь оптимизировать производительность, почему вы заботитесь о размере строк кэша, а также о количестве строк иассоциативность?

Какие архитектуры ЦП вам нужно поддерживать?

0 голосов
/ 13 декабря 2010

Вы можете взглянуть на библиотеку hwloc (лицензия BSD), которая предоставляет такую ​​информацию для различных систем и архитектур. Вы можете использовать инструмент командной строки lstopo или предоставленный API (см. документация ).

...