Я хочу найти кеш-кеш кеша L1 или L2 с использованием ассемблера x86. Я слышал, что регистры cpuid и MSR имеют системные данные. Может ли кто-нибудь помочь мне, как я могу получить размеры, пожалуйста.Как найти размер кэша процессора для процессора x86
ответ
Вот минимальный пример того, как вы бы идти о поиске его помощью CPUID инструкции:
#include <stdio.h>
#include <limits.h>
#define cpuid(id) __asm__("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(id), "b"(0), "c"(0), "d"(0))
#define b(val, base, end) ((val << (__WORDSIZE-end-1)) >> (__WORDSIZE-end+base-1))
int main(int argc, char **argv)
{
unsigned long eax, ebx, ecx, edx;
cpuid(0);
printf("identification: \"%.4s%.4s%.4s\"\n", (char *)&ebx, (char *)&edx, (char *)&ecx);
printf("cpu information:\n");
cpuid(1);
printf(" family %ld model %ld stepping %ld efamily %ld emodel %ld\n",
b(eax, 8, 11), b(eax, 4, 7), b(eax, 0, 3), b(eax, 20, 27), b(eax, 16, 19));
printf(" brand %ld cflush sz %ld*8 nproc %ld apicid %ld\n",
b(ebx, 0, 7), b(ebx, 8, 15), b(ebx, 16, 23), b(ebx, 24, 31));
cpuid(0x80000006);
printf("L1 cache size (per core): %ld KB\n", b(ecx, 16, 31));
return(0);
}
Вы можете использовать инструкцию CPUID. Если вы установите регистр EAX на определенные значения, вы можете получить необходимую информацию в регистрах EAX, EBX, ECX и EDX.
Информация о вас может быть получена this guide от AMD.
Как предлагает Soravux, принципиальная схема CPUID
- это то, что вы хотите посмотреть. (Возможно, вам стоит взглянуть на CPUID
, например, на Руководство разработчика программного обеспечения Intel 64 и IA-32, том 2A, here).
Функции, которые вас, скорее всего, будут интересовать, следующие: CPUID.EAX=02h
и/или CPUID.EAX=04h
(в зависимости от ваших конкретных потребностей). Эти функции дают довольно много результатов, поэтому я не буду подробно останавливаться на этом, но руководства Intel и AMD должны содержать все, что вам нужно.
- 1. Как получить размер кэша процессора в Linux
- 2. Очистка кэша процессора без инсталляции кэша?
- 3. чтение содержимого кэша процессора
- 4. Могу ли я сбросить/изменить содержимое x86 кэша процессора/TLB
- 5. Минимальное количество кадров, необходимых для процессора x86
- 6. Измерение частоты процессора (x86/x64)
- 7. Размер регистра центрального процессора
- 8. Как найти топологию процессора?
- 9. Как найти грузоподъемность процессора?
- 10. Профилирование кэша процессора для кода C# .net?
- 11. Как проверить исключения процессора в эмуляторе x86?
- 12. Как оптимизировать код процессора для графического процессора?
- 13. Размер кэша процессора, о котором сообщает/sys/device/и dmidecode
- 14. Найти время загрузки процессора
- 15. Команда для получения размера кэша L2 процессора Sparc и x86 с Solaris
- 16. Изоляция процессора процессора процессора в Windows
- 17. Состояние кэша Apache GZIPs, это трата процессора?
- 18. понимание кэша процессора с использованием программы C
- 19. Linux x86 Платформа команд процессора Confusion
- 20. Определить размер слова моего процессора
- 21. Будет ли строка кэша кэша процессора после сравнения и свопинга?
- 22. Целесообразность использования графического процессора как процессора?
- 23. Найти использование процессора быстрым процессом
- 24. Найти скорость процессора устройства iOS
- 25. Как размер регистра влияет на производительность процессора?
- 26. Найти использование процессора для потока в Linux
- 27. java-программа, которая определяет размер процессора пользователей?
- 28. Как вы профилируете приложение .net с учетом влияния кэша процессора?
- 29. Архитектура процессора smarphone для Android x64 vs x86
- 30. Почему эмулятор x86 для Android имеет медленный рендеринг графического процессора?