На тему молока в стеклянных бутылках:
Много где в Европе работает система "аренды" тары при покупки газировки, пива и т.д. При покупке напитка платится некая сумма сверху, потом при возврате бутылки в специальный автомат можно получить деньги обратно. Точнее обычно это не деньги, а чек, которым можно оплатить покупки в супермаркете.
Это не «стоны» Intel.
Это лично я, как один из создателей CPU моделей Intel, высказываю свое мнение о сложившейся ситуации. Мнение компании может отличаться от моего.
Я могу сказать, что проблему виртуализации это бы решило.
Получив это прерывание мы могли бы выполнить эту инструкцию в интерпретаторе и потом снова вернуться к прямому исполнению.
Я бы сказал, что в данном случае это не безопасно.
AVX наверно не лучший пример, вот Вам другой — AVX2. Ядро может знать о существовании AVX, но не подозревать о AVX2. При этом использование AVX2 будет абсолютно безопасным, но в /proc/cpuinfo оно отображено не будет.
Моя идея состоит в том, что на /proc/cpuinfo пологаться не стоит.
В /proc/cpuinfo может не быть всей информации о процессоре.
Например, если ядро у вас достаточно старое и не знает о существовании AVX, то оно разумеется не сможет отобразить AVX в /proc/cpuinfo даже, если железо его поддерживает.
66 f3 f2 0f 59 ff и 66 f2 f3 0f 59 ff здесь 66 игнорируется согласно 2.2.1. Использование f3 и f2 unpredictable behavior согласно:
Repeat prefixes (F2H, F3H) cause an instruction to be repeated for each element of a string. Use these prefixes only with string and I/O instructions (MOVS, CMPS, SCAS,LODS, STOS, INS, and OUTS). Use of repeat prefixes and/or undefined opcodes with other Intel 64 or IA-32 instructions is reserved; such use may cause unpredictable behavior.
В данном случае это уже не repeat префиксы. Они несут совсем другую смысловую нагрузку.
f2 66 0f 59 ff — это MULSD согласно 2.2.1 REX Prefixes:
When a REX prefix is used in conjunction with an instruction containing a mandatory prefix, the mandatory prefix must come before the REX so the REX prefix can be immediately preceding the opcode or the escape byte. For example, CVTDQ2PD with REX prefix should have REX placed between F3 and 0F E6. Other placements are ignored.
Не понял вашей аргументации, если честно. Тут говорится про REX префикс. В приведенном примере его просто нет.
Да нет же. AVX3 появится уже в Knights Landing. Вот, посмотрите сюда.
Intel AVX-512 will be first implemented in the future Intel® Xeon Phi™ processor and coprocessor known by the code name Knights Landing
На сколько я знаю, расширение SSE5, в котором появились XOP префиксы, было анонсировано даже раньше, чем AVX с VEX префиксами. Но AVX оказался более гибким и удобным, поэтому AMD оказалось вынужденным поддерживать AVX, тогда как Intel не стал поддерживать SSE5.
Мне все-таки кажется, что на это решение повлияло именно присутствие аналогичных и более совершенных инструкций. Тем более, что поддержка старых вариантов INC и DEC осталось во всех режимах, кроме 64-битного.
Сейчас в системе команд IA-32 больше тысячи инструкций. Однобайтных кодов всего 2^8 = 256, и все они уже давным давно заняты. Поэтому их действительно дефицит.
Например, когда-то байт 0x0f соответствовал инструкции POP CS, которая никогда не использовалась. Его начали использовать как код, соответствующий первому байту двухбайтовых инструкций, тем самым добавив еще 256 возможных кодировок.
Можно еще упомянуть о другом, схожем AES расширении для x86, предложенным компанией VIA Technologies — PadLock engine, которое между прочим появилось раньше, чем AESNI.
В таком случае, может стоить добавить в приложение некоторую функциональность, которая будет помогать человеку определить диагноз. Например, он может отметить, что у него кружится голова, его тошнит и т.д. А tool может подсказать, что возможно у него сердечный приступ.
Идея замечательная, надеюсь у вас получится. Желаю удачи. Но есть один вопрос:
все окружающие получат на свои смартфоны вместе с просьбой о помощи еще и инструкцию, как оказать помощь именно этому больному
Как сервис определит какая помощью нужна конкретно этому человеку? Ну допустим у кого-то случился сердечный приступ. Ему самому надо будет понять, что с ним произошло, потом написать это в сервис? Я просто действительно не представляю как вы хотите поддержать данную функциональность.
На тему молока в стеклянных бутылках:
Много где в Европе работает система "аренды" тары при покупки газировки, пива и т.д. При покупке напитка платится некая сумма сверху, потом при возврате бутылки в специальный автомат можно получить деньги обратно. Точнее обычно это не деньги, а чек, которым можно оплатить покупки в супермаркете.
Intel® 64 and IA-32 Architectures Software Developer’s Manual:
Могу тоже ее перевести.
Это лично я, как один из создателей CPU моделей Intel, высказываю свое мнение о сложившейся ситуации. Мнение компании может отличаться от моего.
Получив это прерывание мы могли бы выполнить эту инструкцию в интерпретаторе и потом снова вернуться к прямому исполнению.
AVX наверно не лучший пример, вот Вам другой — AVX2. Ядро может знать о существовании AVX, но не подозревать о AVX2. При этом использование AVX2 будет абсолютно безопасным, но в /proc/cpuinfo оно отображено не будет.
Моя идея состоит в том, что на /proc/cpuinfo пологаться не стоит.
Например, если ядро у вас достаточно старое и не знает о существовании AVX, то оно разумеется не сможет отобразить AVX в /proc/cpuinfo даже, если железо его поддерживает.
В данном случае это уже не repeat префиксы. Они несут совсем другую смысловую нагрузку.
Не понял вашей аргументации, если честно. Тут говорится про REX префикс. В приведенном примере его просто нет.
Но я лично не уверен, что это баг, есть подозрение, что это фича :)
Если кто-то может проверить — сообщите, было бы очень интересно.
На сколько я знаю, расширение SSE5, в котором появились XOP префиксы, было анонсировано даже раньше, чем AVX с VEX префиксами. Но AVX оказался более гибким и удобным, поэтому AMD оказалось вынужденным поддерживать AVX, тогда как Intel не стал поддерживать SSE5.
Например, когда-то байт
0x0f
соответствовал инструкцииPOP CS
, которая никогда не использовалась. Его начали использовать как код, соответствующий первому байту двухбайтовых инструкций, тем самым добавив еще 256 возможных кодировок.Как сервис определит какая помощью нужна конкретно этому человеку? Ну допустим у кого-то случился сердечный приступ. Ему самому надо будет понять, что с ним произошло, потом написать это в сервис? Я просто действительно не представляю как вы хотите поддержать данную функциональность.