Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
1

Поддержка AVX-512 виндой

09.05.2019, 00:05. Просмотров 458. Ответов 17

Салют!

Есть ли у кого-нибудь инфа о том, начиная с какой версии Windows присутствует поддержка AVX-512?

Второй вопрос: возможно ли принудительно включить такую поддержку (в 10-ке, в частности), даже если процессор не поддерживает AVX-512?
Зачем? К примеру, чтобы можно было юзать SDE и т.п. штуки.

Ну и вопрос про SSE.
Ранние версии Windows не знали о SSE, ибо его тогда не было. Не знаю про Windows 2000, но NT 4.0 или 98 не должны были (ну, 95 и NT 3.51 уж точно). Соответственно, при переключении контекста максимум, что у них было – это fsave/frstor для сохранения состояние FPU/MMX. Никаких fxsave/fxrstor, а тем более xgetbv, xsave*/xrstor* не было и в помине. Понимаю, что сейчас это не очень актуально, тем не менее, получается, что возможности проверить поддержку SSE ОСью тогда не было. Проверялась поддержка только процессором, поэтому нигде про необходимость проверки поддержки SSE ОСью не пишут, пишут только про AVX[512]. И соответственно, использование софта с SSE на таких ОСях чревато глюками (аналогично использованию AVX, скажем, на XP, но тут проверку всё же сделать можно, благо появился xgetbv).
Мой ход мысли верный?
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2019, 00:05
Ответы с готовыми решениями:

4850 512 vs 9800 gtx 512 vs 9800 gtx+512 vs gts250 512
ну вем привет кого не видел из темы всё понятно что предпочтительнее спасибо

Производительность и безопасность железа, если ставить ОЗУ: 512 - 128 - 512
Отключается компьютер, принёс в магазин, где брал, они его почистили, начал работать, примерно...

Интернет канал 512/512 а от сервера выходит тока половина
На сервере стоит MicrotikOS 3.30. Настраиваю через Winbox. Сервер раздает инет через хаб на...

Совместимость и конфликты NCP 512 PC3200 и Elixir 512 PC2700

После добавление 1GB ОЗУ к 512+512 компьютер стал работать хуже.
У моего друга нет ин-нета, и он попросил меня задать этот вопрос. У него 512+512мб озу, он докупил...

17
Ethereal
7285 / 2134 / 290
Регистрация: 17.02.2013
Сообщений: 3,137
09.05.2019, 20:59 2
Цитата Сообщение от Jin X Посмотреть сообщение
Ну и вопрос про SSE.
Ранние версии Windows не знали о SSE, ибо его тогда не было. Не знаю про Windows 2000, но NT 4.0 или 98 не должны были (ну, 95 и NT 3.51 уж точно). Соответственно, при переключении контекста максимум, что у них было – это fsave/frstor для сохранения состояние FPU/MMX. Никаких fxsave/fxrstor, а тем более xgetbv, xsave*/xrstor* не было и в помине. Понимаю, что сейчас это не очень актуально, тем не менее, получается, что возможности проверить поддержку SSE ОСью тогда не было. Проверялась поддержка только процессором, поэтому нигде про необходимость проверки поддержки SSE ОСью не пишут
Пишут.

In order to allow SSE instructions to be executed without generating a #UD, we need to alter the CR0 and CR4 registers.

clear the CR0.EM bit (bit 2) [ CR0 &= ~(1 << 2) ]
set the CR0.MP bit (bit 1) [ CR0 |= (1 << 1) ]
set the CR4.OSFXSR bit (bit 9) [ CR4 |= (1 << 9) ]
set the CR4.OSXMMEXCPT bit (bit 10) [ CR4 |= (1 << 10) ]

Here is an asm example:

;now enable SSE and the like
mov eax, cr0
and ax, 0xFFFB ;clear coprocessor emulation CR0.EM
or ax, 0x2 ;set coprocessor monitoring CR0.MP
mov cr0, eax
mov eax, cr4
or ax, 3 << 9 ;set CR4.OSFXSR and CR4.OSXMMEXCPT at the same time
mov cr4, eax
ret


В общем после старта процессора он при попытке выполнить SSE-инструкцию выкидывает исключение #UD - Недопустимый код Opcode (UnDefined Opcode). Если Ос ничего не знает про SSE, а значит не сохраняет контекст SSE-регистров, то на ней все так и останется - попытка исполнить SSE-инструкцию даст #UD. А если Ос поддерживает SSE и сохраняет контекст SSE-регистров, то она выполнит вышеприведенный код и разрешит исполнение SSE-инструкций.

Добавлено через 4 минуты
All versions of Windows since Windows98 support SSE, as do Linux kernels since 2.2.
2
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
09.05.2019, 22:09  [ТС] 3
Цитата Сообщение от Ethereal Посмотреть сообщение
In order to allow SSE instructions to be executed without generating a #UD, we need to alter the CR0 and CR4 registers.
Любопытная история, спасибо за инфу

Добавлено через 29 минут
Цитата Сообщение от Ethereal Посмотреть сообщение
All versions of Windows since Windows98 support SSE
NT 4, значит, ещё не поддерживала, только 2000?

Добавлено через 8 минут
По поводу AVX-512:
1. В заголовочных файлах SDK 7-ки сочетания "AVX512" нет вообще (что неудивительно, учитывая, что AVX только в SP1 появился). В 8.1 тоже нет. В 10-ке есть. Получается, что только с 10-й винды началась поддержка AVX-512.
2. AVX-512 появился в 2015, а Windows 8.1 вышла в 2013. Ещё один аргумент в пользу того, что в 10-ке (которая вышла тоже в 2015).

Добавлено через 22 минуты
Остался вопрос вот в чём:
Цитата Сообщение от Jin X Посмотреть сообщение
Второй вопрос: возможно ли принудительно включить такую поддержку (в 10-ке, в частности), даже если процессор не поддерживает AVX-512?
Зачем? К примеру, чтобы можно было юзать SDE и т.п. штуки.
По идее, есть попасть в r0 (через драйвер, к примеру), то можно через xsetbv включить 5-7 биты, так ведь?
Причём, это нужно делать тоже из-под SDE, иначе будет #UD (т.е. если cpuid не указывает, что биты 5-7 валидные для установки в xcr0, то xsetbv выдаст #UD).
1
Ethereal
7285 / 2134 / 290
Регистрация: 17.02.2013
Сообщений: 3,137
10.05.2019, 05:06 4
Цитата Сообщение от Jin X Посмотреть сообщение
Цитата Сообщение от Ethereal Посмотреть сообщение
All versions of Windows since Windows98 support SSE
NT 4, значит, ещё не поддерживала, только 2000?
Эта фраза не из официальной документрации. Нашел гуглением по ключевым словам "version of Windows support SSE" в четвертом вывалившемся тексте. Вот тут http://softpixel.com/~cwright/programming/simd/sse.php Это не стопудово авторитетный источник. А вот действительно авторитетный источник да чтоб было однозначно ясно про NT4 и 2000 надо гуглить и гуглить.
1
10.05.2019, 05:06
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
10.05.2019, 12:37  [ТС] 5
Цитата Сообщение от Ethereal Посмотреть сообщение
А вот действительно авторитетный источник да чтоб было однозначно ясно про NT4 и 2000 надо гуглить и гуглить.
Да попробовать надо. У меня на VMware есть разные версии, вплоть до 3.11

Добавлено через 18 минут
Проверил. На 98 SE работает (причём, считает корректно при параллельном запуске десятка процессов), на NT 4.0 падает. В 2000, разумеется, работает тоже.
95-го у меня, как оказалось, нет, да и смысла не вижу его проверять, по любому не будет поддерживать.
3
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
13.05.2019, 23:26  [ТС] 6
Я тут потестил ещё...
Оказывается, AVX-512 всё же работает из-под SDE, но без отладчика.

А вот из-под связки SDE+x64dbg – нет. При загрузке проги в x64dbg отладик он встаёт на int3 внутри PinVM и тут происходит любопытная вещь:
– если проверить в этой точке cpuid и xgetbv, то они показывают, что AVX-512 (и другие неподдерживаемые реальным CPU инструкции) отсутствуют и ОС их не поддерживает;
– если код просто запустить (F9), то всё будет ок, всё будет работать, вот только отладчик не останавливает выполнение на entry point (даже если поставить туда int3 прямо в коде).

Оля просто тупо запускает прогу сразу, WinDbg вообще не работает. Как пользоваться отладчиком – х/з.
Причём, что любопытно, насколько я помню, раньше мне как-то удавалось запускать x64dbg из-под SDE и что-то там отлаживать.

Добавлено через 1 минуту
Вот тут нашёл инфу про отладку, но там только для VS: https://software.intel.com/en-us/art...el-sde#Windows
1
R71MT
8554 / 1616 / 326
Регистрация: 29.07.2014
Сообщений: 2,660
Записей в блоге: 5
14.05.2019, 00:12 7
Цитата Сообщение от Jin X Посмотреть сообщение
вот только отладчик не останавливает выполнение на entry point (даже если поставить туда int3 прямо в коде). Оля просто тупо запускает прогу сразу, WinDbg вообще не работает. Как пользоваться отладчиком – х/з.
у меня машина 32-битная, поэтому сказать что-то конкретное по теме не могу,
зато встречал ситуации, когда программный бряк (коим является int-3) не срабатывал по причине, что ему нет прав на запись в секцию кода (отладчик должен вписать опкод CCh в место бряка). Тогда спасают аппаратные точки-останова на чтение конкретного адреса памяти. То-есть как IP дойдёт до адреса EntryPoint, бряк сразу сработает.
2
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
14.05.2019, 00:38  [ТС] 8
Цитата Сообщение от R71MT Посмотреть сообщение
программный бряк (коим является int-3) не срабатывал по причине, что ему нет прав на запись в секцию кода
Там уже стоит int3 изначально, но аппаратный можно всё равно попробовать, не подумал об этом

Добавлено через 13 минут
Попробовал. Отладчик остановился, но cpuid опять показывает нули. А если просто запустить (без остановки entry point, хоть и из-под отладчика), то всё ок. Бред какой-то...
1
R71MT
8554 / 1616 / 326
Регистрация: 29.07.2014
Сообщений: 2,660
Записей в блоге: 5
14.05.2019, 00:47 9
Цитата Сообщение от Jin X Посмотреть сообщение
А если просто запустить, то всё ок.
прикольно.. (жаль не могу потестить на своей кляче)
1
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
14.05.2019, 00:51  [ТС] 10
Почему не можешь? x64dbg есть в 32 и 64-битной версии, SDE тоже работает из-под x86.
1
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
14.05.2019, 00:54  [ТС] 11
Вот, может, пригодятся
1
Вложения
Тип файла: zip 1.zip (3.1 Кб, 1 просмотров)
R71MT
8554 / 1616 / 326
Регистрация: 29.07.2014
Сообщений: 2,660
Записей в блоге: 5
14.05.2019, 08:42 12
Цитата Сообщение от Jin X Посмотреть сообщение
SDE тоже работает из-под x86.
что-то у меня не запускается с нагом "..не является приложением Win32",
хотя в РЕ-заголовке указано, что х32.

а на счёт исходников, мой процик не знает инструкций типа vpxorq,
поэтому fasm его не собирает (работает только cpuid-7).

CPUID моего камня
Код
Общая информация
---------------------------------
  Type          : Intel Celeron D
  Specification : Intel(R) Celeron(R) CPU 2.80GHz
  Номер модели  : 336J
  Кодовое имя   : Prescott
  Технология    : 90 нм
  Revision      : E0
  CPUID         : F.4.1
  Microcode     : MU0F4117

Instructions
--------------------------------
  Intel64 (EM64T)    : Да
  SSE/SSE2,3         : Да
  3DNow! Pro         : Да
  MMX Technology     : Да
  CLF - Cache Flush  : Да
  CX8 - CMPXCHG8B    : Да
  CX16 - CMPXCHG16B  : Да
  CMOV               : Да
  MON - Mwait        : Да
  SYSCALL            : Да

  IA-64 Technology   : Нет
  AVX                : Нет
  FPU128             : Нет
  SSE5               : Нет
  SSE4a              : Нет
  SSE4.2             : Нет
  SSE4.1             : Нет
  S-SSE3             : Нет
  3DNow! Technology  : Нет
  AMD MMX Technology : Нет
  Cyrix MMX          : Нет
  FMA                : Нет
  AES                : Нет
  OSXSAVE            : Нет
  POPCNT             : Нет
  RDTSCP             : Нет
1
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
14.05.2019, 09:52  [ТС] 13
Цитата Сообщение от R71MT Посмотреть сообщение
поэтому fasm его не собирает
А причём тут проц? Собирать же должен в любом случае. vxorq - это AVX-512, у меня его тоже нет. В том-то и суть, чтобы SDE смог его сэмулировать.

Цитата Сообщение от R71MT Посмотреть сообщение
не является приложением Win32
А винда какая? Там в заголовке версия 6.0 требуется.

p.s. Откуда у тебя на Интеле 3DNow! Pro (и что это за Pro вообще)?
Да, обновиться тебе не помешало бы (90 нм).
1
R71MT
8554 / 1616 / 326
Регистрация: 29.07.2014
Сообщений: 2,660
Записей в блоге: 5
14.05.2019, 12:16 14
Цитата Сообщение от Jin X Посмотреть сообщение
Собирать же должен в любом случае.
ну незнаю.. пишет "illegal instruction"
видимо со-стороны процессора должна быть хоть какая-то поддержка AVX,
а у меня её совсем нет.. даже 128

Цитата Сообщение от Jin X Посмотреть сообщение
p.s. Откуда у тебя на Интеле 3DNow! Pro (и что это за Pro вообще)?
вики...

3DNow Professional - торговое наименование, используемое для обозначения процессоров, сочетающих технологию 3DNow с полным набором инструкций SSE (например, SSE1, SSE2 или SSE3). Athlon XP был первым процессором с торговой маркой 3DNow Professional и первым продуктом в семействе Athlon, поддерживающим полный набор инструкций SSE1 (всего: 21 инструкция 3DNow; пять инструкций DSP расширения 3DNow; 19 MMX инструкции по расширению и 52 дополнительные инструкции SSE для полной совместимости с SSE1).


Поддержка AVX-512 виндой


Не по теме:

Цитата Сообщение от Jin X Посмотреть сообщение
Да, обновиться тебе не помешало бы (90 нм).
обновлялся уже 2-раз буками, да детки раскулачивают.
одна - в универ забрала, другой - в геймы гоняет сутками.
поэтому плюнул я на это дело, пока десктоп работает - не трогаю его (тем более у него в наличии lpt/com, к которым привязаны мои девайсы).

1
VTsaregorodtsev
606 / 563 / 85
Регистрация: 19.02.2010
Сообщений: 2,056
14.05.2019, 16:33 15
Цитата Сообщение от Jin X Посмотреть сообщение
NT 4, значит, ещё не поддерживала, только 2000?
У НТ4 было 6 сервиспаков. Пятый-шестой могли поддержку SSE добавить.

Цитата Сообщение от Jin X Посмотреть сообщение
По поводу AVX-512:
1. В заголовочных файлах SDK 7-ки сочетания "AVX512" нет вообще ... . В 8.1 тоже нет. В 10-ке есть. Получается, что только с 10-й винды началась поддержка AVX-512.
Аналогично предыдущему. Надо изучать, что конкретным ОСям добавляли те или иные апдейты.
Ибо поддержка AVX-512, ИМХО, совершенно не требует изменения SDK - ОСи надо всего лишь сохранять-восстанавливать этот регистровый набор при переключении выполняемых процессорным ядром задач/потоков.
1
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
15.05.2019, 16:57  [ТС] 16
Цитата Сообщение от R71MT Посмотреть сообщение
ну незнаю.. пишет "illegal instruction"
Может, у тебя старый fasm просто? Обнови попробуй. Всё ж поддержка AVX-512 только в версии 1.72 (от 10.10.2017) появилась.

Цитата Сообщение от R71MT Посмотреть сообщение
3DNow Professional - торговое наименование, используемое для обозначения процессоров
Это перевод? Что-то не нахожу такой статьи (с русским текстом)... Да и у тебя ж Intel, откуда там 3DNow! вообще?
p.s. Странно, что в sandpile.org/x86/cpuid.htm про это ничего нет (если это не "3DNow!P", конечно).

Картинка похожа на XP. Если это он, тогда понятно, почему SDE не пашет...

VTsaregorodtsev, возможно. Можно поискать, но я уже немного остыл к этому вопросу...
Да и смысл здесь в том, чтобы как-то определять поддержку SSE для старых ОСей.
Если версию ОС можно легко определить цифрами, то с сервис-паками – это лишний заморочь (мало где сейчас NT можно встретить, так что можно чисто для надёжности проверку версии оставить и всё... ну или вообще не заморачиваться).
Или даже ещё проще: в заголовке PE есть требования к версии ОС, прописать PE Console 5.0 (в жаргонах fasm'а) и всё

Добавлено через 8 минут
Или PE Console 4.10 (если нужна поддержка Win 98/ME)
1
R71MT
8554 / 1616 / 326
Регистрация: 29.07.2014
Сообщений: 2,660
Записей в блоге: 5
15.05.2019, 18:35 17
Цитата Сообщение от Jin X Посмотреть сообщение
Всё ж поддержка AVX-512 только в версии 1.72 (от 10.10.2017) появилась.
чтот упустил я этот момент..
и точно собирается исходник версией 1.73 (лежит у них дома)

Цитата Сообщение от Jin X Посмотреть сообщение
Что-то не нахожу такой статьи (с русским текстом)
это мой гугл перевёл с инглиша

Цитата Сообщение от Jin X Посмотреть сообщение
если это не "3DNow!P", конечно
видимо так оно и есть..

Цитата Сообщение от Jin X Посмотреть сообщение
тогда понятно, почему SDE не пашет...
1
Jin X
6706 / 1493 / 173
Регистрация: 14.12.2014
Сообщений: 2,888
Записей в блоге: 11
Завершенные тесты: 3
15.05.2019, 22:35  [ТС] 18
Цитата Сообщение от R71MT Посмотреть сообщение
Кстати, можно ради прикола попробовать поменять в заголовке версию на 5.1.
Вдруг будет работать на XP
2
15.05.2019, 22:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2019, 22:35

мне надо сделать выбор между radeon x1650pro ddr 2 , 512 mb и geeforce 7300 gt ddr2, 512 mb
мне нужно выбрать видеокарту для старого компа, самую лучшую 4650 мне не надо мне надо сделать...

Снять ограничение на ввод текста до 512 симоволов. в поле типа Memo после 512 символа идут иероглифы
Добрый день! Подскажите пожалуйста, как и где в форме задать ограничение на ввод текста до 512...

8700K AVX
Доброго времени суток. Вопрос в следующем : имею 8700k в разгоне до 4.8, avx - 2 , следовательно...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru