LINUX.ORG.RU

Добавить поддержку sse4 в AMD Phenom X4

 ,


1

2

Такой вопрос: имеем этот процессор.
Решил я попробовать vpp от fd.io, но он мне пишет, что мой cpu не поддерживает данный набор инструкций.
Такой вопрос: можно ли их как то добавить в процессор, если например модифицировать microcode.

★★★★★

Помню ещё в 90-е была программка которая CD привод для чтения добавляла режим записи. Может она уже и в процессоры умеет.

anonymous
()

Не вижу вопроса, что сказать то хотел.

anonymous
()
Ответ на: комментарий от anonymous

Это была не программка а прошивка для CD привода. Ряд производителей для унификации и экономии выпускали одинаковые пишущие CD приводы но одни с прошивкой разрешающей только чтение а другие с прошивкой разрешающей и чтение и запись. Такие приводы можно было научить писать всего лишь сменой прошивки

anonymous
()

Чё только кукурузники не удумают.

anonymous
()

Такой вопрос: можно ли их как то добавить в процессор, если например модифицировать microcode.

Вы это серьёзно? Конечно современная наука и производство «временами/местами» на грани фантастики, но чтобы можно было добавить «прошивкой»(микрокодом) новый набор инструкций... Или я пропустил «революцию в создании CPU»?

anymouze ★★
()

Может ты еще хочешь модифицировать микрокод, чтобы свою кукурузу в рязань превратить? А, тролль четырехзвездный?

anonymous
()

Добавить поддержку SSE4 при помощи специального микрокода - теоретически возможно, но ты столкнёшься со следующими трудностями: 1) размер микрокода ограничен и зависит от конкретного процессора. могу ошибаться (т.к. ты не сказал конкретный CPU ID), но если CPU ID твоего Phenom X4 - 0x100F41 - то размер твоего микрокода 960 байт = 0x3C0 2) сам микрокод, его структура и формат - проприетарны, поэтому ты не сможешь сам написать микрокод дающий поддержку SSE4. Но если тебе удастся найти похожий процессор с тем же размером микрокода и похожей архитектурой, но поддерживающий SSE4, ты можешь попытаться подгрузить его микрокод на свой процессор в надежде что SSE4 появится. Или модификацией твоего проприетарного UEFI/BIOS (у тебя же не опенсорсный coreboot/SeaBIOS) что более надёжно, или правкой таблиц эквивалентности в файле microcode_amd.bin из используемого твоим дистрибутивом amd-ucode. Подробнее о формате этого контейнера - например здесь: https://github.com/coreboot/coreboot/blob/4f16049f17a4dcbf329d6b30f0d00f0a7f5... но вместо

* [8-11] Size (n) in bytes of variable portion of container header
* [12-n] don't-care

там

* [12-(12+n)] таблица эквивалентности

вида
CPU_ID процессора - 8 нулей - ID в заголовке микрокода
CPU_ID процессора - 8 нулей - ID в заголовке микрокода
... последние 16 нулей как завершение (они тоже учитываются в составе числа n, таким образом минимально возможный размер таблицы эквивалентности: одна строка 0x10 + шестнадцать нулей 0x10 = 0x20)
если CPU_ID процессора соответствует ID в заголовке микрокода, то этот микрокод будет подгружен на этот процессор. соответственно, подменив CPU_ID в определённом месте на свой, можно заставить подгрузить конкретный микрокод на свой процессор. главное не забыть в другом месте удалить уже свой CPU_ID, т.к. одному CPU_ID должен соответствовать один микрокод. то есть лучше будет просто поменять местами два CPU ID

Ещё вариант, пытаться делать это не через микрокод а через другие способы разблокировки. Как там 4 ядро у некоторых процессоров АМД разблокировали? Ещё есть AMD HDT Debug connector, на некоторых матплатах даже распаянный, к нему можно подключить отладчик и пытаться разблокировать нужные тебе фичи если они там в железе есть но тупо выключены по каким-то причинам (как например в некоторых пеньках 4 под сокет 478 в железе процессора была поддержка 64-бит но искусственно выключена) Поищи в интернете AMD HDT Debug / Debugger, для начала можно немного почитать можно здесь - https://www.theregister.co.uk/2010/11/15/amd_secret_debugger/ и здесь - https://forums.overclockers.ru/viewtopic.php?t=144934

SakuraKun ★★★★★
()
Ответ на: комментарий от SakuraKun

Ну ты и аут, столлько настрочить в ответ на такую тупость.

anonymous
()

проще программу пропатчить

xmikex ★★★★
()
Ответ на: комментарий от i-rinat

Мне вот интересно, если эмуляция FPU в ядре есть, можно ли такое же прикрутить для SSE и сотоварищи? Чисто с теоретической точки зрения...

timdorohin ★★★★
()
Ответ на: комментарий от timdorohin

Я как-то ради интереса заводил подобное обсуждение тут на ЛОРе.
Решили, что оверхед будет наглухо убивать все плюсы эмуляции наборов инструкций.

devl547 ★★★★★
()
Ответ на: комментарий от devl547

FPU тоже эмулировали не ради производительности, а ради совместимости. Особенно если в дело вступают блобы...

timdorohin ★★★★
()
Ответ на: комментарий от anonymous

про исправление ошибок/«дыр» микрокодом знаю. про добавление инструкции (1-й), а тем более набора команд никогда не слышал.

anymouze ★★
()

Попробуй зубилом, молотком и паяльником. И киянкой в конце нежно-нежно пройтись.

targitaj ★★★★★
()
Ответ на: комментарий от timdorohin

можно ли такое же прикрутить для SSE и сотоварищи? Чисто с теоретической точки зрения...

Можно. Но проще будет такое в юзерспейсе сделать.

Цепляешься к процессу, как gdb цепляется, ловишь SIGILL и эмулируешь инструкции, которые процессор не осилил.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от anonymous

Он скор набивает, кто-то из недавно забаненых.

anonymous
()

Кроме шуток, я слышал, что под винду, например, есть специальные отладочные средства, которые не лету патчат код работающей программы и заменяют не поддерживаемые инструкции и заменяют их программной эмуляцией. Конечно, это все жутко тормозит, но все же кое-как работает.

Хотелось бы узнать, есть ли аналоги под линукс.

Khnazile ★★★★★
()

я за бан.

Deleted
()
Ответ на: комментарий от Khnazile

Кроме шуток, я слышал, что под винду, например, есть специальные отладочные средства, которые не лету патчат код работающей программы и заменяют не поддерживаемые инструкции и заменяют их программной эмуляцией. Конечно, это все жутко тормозит, но все же кое-как работает.

Если программа не модифицирует свой код на лету и не проверяет контрольную сумму кода, тогда что мешает на участках с не поддерживаемыми инструкциями сделать jmp(это если аналогичные инструкции не влезут в тот-же размер) на аналог с поддерживаемыми инструкциями? Ни каких жутких тормозов в таком случае быть не должно.

V1KT0P ★★
()

Такой вопрос: имеем этот процессор.
Решил я попробовать vpp от fd.io, но он мне пишет, что мой cpu не поддерживает данный набор инструкций.
Такой вопрос: можно ли их как то добавить в процессор, если например модифицировать microcode.

Ты этот VPP имеешь ввиду: https://github.com/FDio/vpp ?
Это после сборки он тебе такое говорит или ты бинарь готовый качал?

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

тогда что мешает

Статическая рекомпиляция — сложная штука. Каждая мелочь может превратить казалось бы простую задачу в нерешаемую.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Интересная штука, спасибо. Не думаю, что лично мне это будет когда-нибудь полезно, но все же хорошо знать, что такое есть.

Khnazile ★★★★★
()

Суровые линуксоиды не только пишут программы, но и добавляют инструкции в процессор самостоятельно!

А что сделал я ради линукса?

Deleted
()
Ответ на: комментарий от Deleted

да молодец! купил себе целый новый комп ради линукса!

sqq
()
Ответ на: комментарий от i-rinat

Статическая рекомпиляция — сложная штука. Каждая мелочь может превратить казалось бы простую задачу в нерешаемую.

Если там нет защиты и еще чего-то хитрого, то все просто. Вон под оффтопик на cheatengine патчат игры и ничего работает, даже я на лету для пары игр код патчил, а ведь это именно изменение поведения кода а не замена его на аналогичный код просто другими инструкциями.

V1KT0P ★★
()
Ответ на: комментарий от ne-vlezay

Да, после его сборки. Собирается всё нормально.

Я не знаю что такое VPP, но быстрое гугление показало что VPP использует DPDK который начиная с версии DPDK 17.08 специально ограничил минимально поддерживаемую архитектуру:
https://github.com/DPDK/dpdk/blob/11a1f847d2819c0ed2072f3cbdca5c7257e9bd63/do...

Increase minimum x86 ISA version to SSE4.2.
Starting with version 17.08, DPDK requires SSE4.2 to run on x86. Previous versions required SSE3.
http://patches.dpdk.org/patch/25444/
[dpdk-dev,01/18] mk: require SSE4.2 support on all x86 platforms
Версия DPDK 17.08 начала использоваться в VPP начиная с версии VPP 17.10: https://docs.fd.io/vpp/18.01/release_notes_1710.html
Так что если тебе просто попробовать, то возьми VPP 17.07: https://github.com/FDio/vpp/releases/tag/v17.07.01 она по идеи должна у тебя заработать. А понравится, так можешь пропатчить и вернуть поддержку SSE3.

V1KT0P ★★
()
Ответ на: комментарий от i-rinat

Ты пробовал реализовывать нечто подобное?

Нет, но вот беглое гугление показывает статью https://habr.com/post/310864/ где замена popcnt из SSE4.2 для AMD драйвера позволила использовавть DirectX12. Не вижу в этом ничего страшного и сложного, проблема будет разве что с ПО на котором висит протектор какой или подсчет контрольной суммы(хотя и это можно пофиксить).
А вот эпичное портирование бинаря Starcraft с x86 на ARM: https://habr.com/post/215375/
Главное это желание =).

V1KT0P ★★
()
Ответ на: комментарий от anonymous

20 лет
SSE4 был анонсирован 27 сентября 2006 года

<zanuda>Эээ... Я не смог округлить 12 до 20, извини конечно. Но 12 лет - тоже ничего так срок, тут вопросов нет.</zanuda>

Pinkbyte ★★★★★
()
Ответ на: комментарий от devl547

За подсказку спасибо!одну или набор?<ушёл в поиск>

anymouze ★★
()
Ответ на: комментарий от anonymous

давно пора, почти 20 лет прошло всё-таки

Phenom X4 - 2008 год, всего лишь 10 лет назад.
Phenom II/Athlon II - 2011 год, всего 7 лет назад.
Неплохие процессоры, зачем принудительно ограничивать если сборка без SSE4 уже и так была?

V1KT0P ★★
()
Ответ на: комментарий от i-rinat

Спасибо за поправку. Тем более анонимус не прав - тут даже если сильно тянуть за уши - не округляется :-)

Pinkbyte ★★★★★
()
Ответ на: комментарий от V1KT0P

беглое гугление показывает статью https://habr.com/post/310864/ где замена popcnt из SSE4.2 для AMD драйвера позволила использовавть DirectX12

Это ручная работа. И повезло, что там было место рядом, в которое можно прыгнуть относительным джампом.

А вот эпичное портирование бинаря Starcraft с x86 на ARM

Вот и я на него намекал. Я аналогичным образом конвертировал Android-версию Opera Mini с ARM на MIPS. И там были сложности. Вроде всё просто ноначалу. А потом: бац, бац, бац, бац-бац-бац, бац, бац... «Ну, а что вы хотели?»

i-rinat ★★★★★
()
Ответ на: комментарий от V1KT0P

Амд изначально ничего не хотела поддерживать, она хотела свои уникальные проприетарные симд, чтобы софт лучше работал только у неё. Что-то пошло не так. Сейчас предпринимает новые попытки завязать пользователей на себя. Других способов конкурировать то нет.

anonymous
()
Ответ на: комментарий от Aber

Блин, шо ж вы оффтопить провоцируете, демоны?! Тем не менее всё равно нет, хотя эту за эту попытку зачет

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.