С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 28

Определить размер кеша инструкций первого уровня с помощью ассемблерной вставки

04.05.2015, 07:35. Показов 2442. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не знал в каком разделе создать тему, но думаю этот вопрос будет понятен программистам С++.
Встала такая задача: определить размер кеша инструкций первого уровня. После поиска информации в инете нашел asm инструкцию CPUID ( использование asm кода обязательно). Сделал все как было сказано в гайде, но возвращаемое значение не соответствует действительности, помогите разобраться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
int my()
{
    int i;
    _asm
    {
            mov eax, 2
            cpuid
            shr edx, 15
            mov i, edx
    }
    return i;
}
int main()
{
    int size = my();    
    std::cout << size;
    _getch();
}
процессор Intel, программа Speccy выдает следующее значение : Кэш инструкций L1 4 x 32 КБ
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2015, 07:35
Ответы с готовыми решениями:

Используя cpuid, определить размер кеша второго уровня
Здесь выводить маркировка , а нужно вывести размер кеша 2-ого уровня. Помогите пожалуйста , вот код мой: Public Class Form1 ...

Сортировку массива с помощью ассемблерной вставки
Ассемблерная вставка в &quot;Делфи&quot;. Необходимо написать сортировку массива на делфи и с помощью ассемблерной вставки отсортировать тот же...

Обменять значения элементов массивов с помощью ассемблерной вставки
Доброго времени суток. имеется задача необходимо: Обменять значения элементов массивов char x и *y; при выборке значения из массива *y...

3
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2015, 08:51
Ты неверно интерпретируешь результаты. Почитал бы, что ли, про CPUID. Результат возвращается в 4-х регистрах: EAX, EBX, ECX, EDX. Каждый байт, кроме младшего в EAX, передаёт свой параметр. Для кэша инструкций L1:

06H Cache 1st-level instruction cache: 8 KBytes, 4-way set associative, 32 byte line size
08H Cache 1st-level instruction cache: 16 KBytes, 4-way set associative, 32 byte line size
09H Cache 1st-level instruction cache: 32KBytes, 4-way set associative, 64 byte line size

И не гарантируется, в каком именно регистре это будет, надо все проверять.
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 28
04.05.2015, 08:57  [ТС]
Видимо мы читаем разные источники, я прочитал, что информация о кеше инструкций возвращается в регистре EDX в битах 15-8
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2015, 09:01
Ну может, у какого-то конкретного процессора так. Даже в этом случае ты неправильно делаешь, одного сдвига было бы мало, надо маску ещё.
Читай документацию Intel: http://www.intel.com/content/w... nuals.html
Там про CPUID очень много написано и все таблицы приведены.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2015, 09:01
Помогаю со студенческими работами здесь

Получение значения элемента массива с помощью ассемблерной вставки
У меня есть функция int kontr(char* str1, int len) { __asm{ lea esi, ; xor ebx, ebx; mov eax, ; //ну и дальше } ...

Используя команду cpuid, определить размер КЭШа команд первого уровня
Используя команду cpuid, определить размер КЭШа команд первого уровня. Возможно у кого-то есть какие мысли и подходит ли сюда подобная...

Вычисление кусочной функции с помощью ассемблерной вставки в код на Pascal
Итак суть задания. В соответствии с заданием, вычисления у1 и у2 запрограммируйте на языке Ассемблера, вычисление у - на языке Паскаль....

Нужно с помощью ассемблерной вставки изменить массив на обратный порядок
Нужно с помощью ассемблерной вставки изменить массив на обратный порядок Вот попытался, но не меняет местами. var m: array of...

С помощью ассемблерной вставки найти отрицательные элементы в массиве, и среднее положительных элементов
Создать массив X. Определить среднее арифметическое положительных чисел, из отрицательных создать массив Y. При этом максимальное и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru