Как стать автором
Обновить

(Само)идентификация процессоров. Часть первая. Сравнение архитектур

Время на прочтение 9 мин
Количество просмотров 24K
Блог компании Intel Assembler *Системное программирование *
Я работаю с программными моделями центральных процессоров в составе полноплатформенного симулятора. Занятие это, конечно же, очень интересное — приходится иметь дело с технологиями интерпретации, двоичной трансляции, виртуализации (об этом я уже писал здесь). Однажды моё внимание привлёк тот факт, что значительную часть времени я вожусь над единственной, казалось бы, не самой вычислительно интенсивной инструкцией. Причина в том, что типов процессоров существует много, и все они во многом похожи; однако при этом критически важно очень точно представлять различия между ними.
В этой статье я описываю, зачем и как процессоры умеют сообщать о своих возможностях, и как к этому вопросу подошли разные производители. В её продолжении я расскажу об эволюции и особенностях инструкции CPUID для Intel IA-32, например, почему её описание занимает в Intel SDM [1] около 40 страниц.


Читать дальше →
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 4

(Само)идентификация процессоров. Часть вторая. Волосатый CPUID

Время на прочтение 11 мин
Количество просмотров 47K
Блог компании Intel Assembler *Системное программирование *
В первой части я рассказал о необходимости идентификации расширений, присутствующих на конкретном процессоре. Это нужно для того, чтобы исполняющийся код (операционная система, компилятор или пользовательское приложение) смог надёжно определить, какие возможности аппаратуры он может задействовать. Также в предыдущей статье я сравнил несколько популярных архитектур центральных процессоров общего назначения. Возможности по идентификации между ними сильно разнятся: некоторые предоставляют полную информацию о расширениях ISA, тогда как другие ограничиваются парой чисел для различения вендора и ревизии.
В этой части я расскажу об одной инструкции архитектуры Intel IA-32 — CPUID, введённой специально для перечисления декларируемых процессором расширений. Немного о том, что было до её появления, что она умеет сообщать, какие неожиданности могут поджидать и какой софт позволяет интерпретировать её вывод.


Источник изображения: [1]
Читать дальше →
Всего голосов 49: ↑48 и ↓1 +47
Комментарии 18

Процессоры, ядра и потоки. Топология систем

Время на прочтение 12 мин
Количество просмотров 264K
Блог компании Intel Системное программирование *Параллельное программирование *
Туториал
В этой статье я попытаюсь описать терминологию, используемую для описания систем, способных исполнять несколько программ параллельно, то есть многоядерных, многопроцессорных, многопоточных. Разные виды параллелизма в ЦПУ IA-32 появлялись в разное время и в несколько непоследовательном порядке. Во всём этом довольно легко запутаться, особенно учитывая, что операционные системы заботливо прячут детали от не слишком искушённых прикладных программ.



Используемая далее терминология используется в документации процессорам Intel. Другие архитектуры могут иметь другие названия для похожих понятий. Там, где они мне известны, я буду их упоминать.

Цель статьи — показать, что при всём многообразии возможных конфигураций многопроцессорных, многоядерных и многопоточных систем для программ, исполняющихся на них, создаются возможности как для абстракции (игнорирования различий), так и для учёта специфики (возможность программно узнать конфигурацию).
Читать дальше →
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 18

Забытое слово: environment

Время на прочтение 2 мин
Количество просмотров 12K
Ненормальное программирование *
Давным-давно, когда компьютеры были большими, а программы маленькими, использовалось такое важное понятие, как Environment. Этот хороший термин уже утратил зарезервированный смысл, но не потерял своей актуальности. В связи с широким использованием виртуализации, информация об операционном окружении стала предметом обсуждения и в чем-то даже спортивного интереса среди программистов. Поучаствовать в этом мы решили с «железным» аргументом — инструкцией CPUID.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 1

Простой пример визуализации результатов работы инструкции CPUID

Время на прочтение 4 мин
Количество просмотров 9.3K
Программирование *
Было время, когда много полезной информации о новых процессорах можно было выудить из документа «Intel Processor Identification and the CPUID Instruction». Сей мануал регулярно обновлялся и был полон описаниями инноваций, буквально переполнявших компанию Intel. К сожалению, с мая 2012 года описание инструкции CPUID перекочевало в многотомник «Intel 64 and IA-32 Architectures Software Developer’s Manual», а ссылка на указанный документ форвардится на один из томов ярбуха (конкретно – Vol. 2A).

С этого момента уследить за новшествами стало сложнее. Возникла мысль с помощью несложной утилиты визуализировать результаты работы CPUID с тем, с тем чтобы мониторить внедрение новинок и быть в курсе.
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 3

Как мы добавляли CPU флаги Intel SGX в libvirt

Время на прочтение 8 мин
Количество просмотров 2.5K
Блог компании G-Core Labs Информационная безопасность *Системное администрирование *Облачные вычисления *Облачные сервисы *
Туториал
✏️ Технотекст 2021
С момента публикации статьи о внедрении Intel SGX в наше публичное облако прошло несколько месяцев. За это время решение было существенно доработано. В основном улучшения касаются устранения мелких багов и доработок для нашего же удобства.



Есть, однако, один момент, о котором хотелось бы рассказать подробнее.
Поехали!
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 1