Как исправить ошибку «CPU does not have POPCNT» в Apex Legends
Недавние патчи разочаровали многих поклонников шутера Apex Legends, поскольку после обновления игра перестала запускаться на их компьютерах. Вместо входа в игровой аккаунт геймеры увидели ошибку «CPU does not have POPCNT» или родственную ей «CPU does not have SSSE 3», и это при том, что по системным требованиям игра подходила. Что теперь с этим делать, как исправить баг и получить возможность участвовать в королевской битве мы и рассмотрим.

Что означает ошибка «CPU does not have POPCNT» в игре Apex Legends
Для запуска софта необходимы определённые условия и даже если по всем параметрам компоненты устройства подходили, и ранее ничего не мешало старту, при обновлении были внесены изменения, в связи с чем, попутно и предъявлены новые требования к железу, а конкретнее к процессору.
Ошибка игры Apex Legends: процессор не поддерживается
Для начала разберём, о чём именно сообщает ошибка. В первом случае, когда вместо запуска игры появляется окно с сообщением «CPU does not have SSSE 3», речь о том, что ваш процессор не поддерживает SSSE 3. Ошибка с текстом «CPU does not have POPCNT», появившаяся спустя неделю после релиза, сообщает об отсутствии поддержки процессором POPCNT, без которой игра попросту не запустится. Так, в уведомлении о каждой из ошибок сказано, что ЦП не обладает нужными параметрами для работы с Apex Legends.
Теперь нужно прояснить, что такое SSSE 3 и POPCNT в процессоре. Каждый, кто хорошо знаком с «внутренностями» системного блока знает, что характеристики CPU не ограничиваются количеством вычислительных ядер и тактовой частотой, среди параметров главного компонента аппаратного обеспечения компьютера есть и набор поддерживаемых инструкций. Эволюция в мире компьютерных технологий подразумевает и появление новых версий наборов инструкций, включаемых в современные процессоры. Новые команды называются SSSE 3 (Supplemental Streaming SIMD Extension 3). Компания Intel, внедрившая их в свои продукты, четвёртому расширению к названию добавила S вместо увеличения номера. В SSSE 3 имеется 16 уникальных команд, работающих с упакованными целыми, каждая из которых поддерживает 64-битные (ММХ) и 128-битные (ХММ) регистры. Что касается POPCNT, параметр входит в состав SSE 4.2, он же есть и в SSE4A от AMD. Есть три вариации инструкции – для 16-, 32 и 64-битных регистров.
Эти же инструкции, применяемые производителями процессоров, используют и разработчики софта, в том числе компьютерных игр, в случае с Apex Legends это SSSE 3 и POPCNT, которые в обязательном порядке должны поддерживаться вашим CPU. Если процессор не исполняет эти инструкции, равно не подходит по минимальным требованиям, значит и на запуск Apex Legends рассчитывать не стоит. Так, внесённые разработчиками Apex Legends коррективы, совершенствующие игру, отсеяли немалое количество устройств, способных её потянуть, чем и была обусловлена ошибка. При этом проблема вовсе не на стороне разработчика, всё дело в новых требованиях, которые отправили в лигу аутсайдеров все процессоры ранних поколений.
Чтобы проверить, соответствует ли ваш процессор требованиям, можно воспользоваться специализированной утилитой CPU-Z. Во вкладке «ЦП» в разделе «Набор инструкций» вы увидите все наборы, используемые ЦП. Для игры Apex Legends нужна обновлённая инструкция SSSE 3, а не устаревшая SSE 3, а также SSE 4.2, тогда как поддержка SSE 4.1 уже не подойдёт.
Какой выбрать процессор, чтобы поиграть в Apex Legends
Исходя из вышесказанного, понятно, что решить проблему программным способом не получится, и, чтобы исправить ситуацию, действовать нужно на аппаратном уровне, а именно придётся апгрейдить свой компьютер, установив более современный процессор. Тогда и ошибка «CPU does not have SSSE 3» перестанет беспокоить, и вы получите доступ к Apex Legends.
Процессор Intel Core i9 10900X
Инструкции SSSE 3 поддерживаются следующими линейками процессоров и более новыми:
Набор инструкций SSE4.2 поддерживается, начиная с таких моделей процессоров:
Минимальным требованиям игры соответствуют Intel Core i3 6300 или AMD FX 4350, ну а пользователи, имеющие компьютеры с недостаточно мощными процессорами, к сожалению, не смогут насладиться баталиями шутера. Какой бы ни был по мощности ваш компьютер, если CPU не поддерживает необходимые инструкции для обработки большого количества данных, можно не пытаться запускать игру.
Что делать, если CPU подходит, но не открывается игра
Бывает и так, что железо по всем параметрам совместимо с Apex Legends, при этом софт всё же не хочет запускаться. Тогда речь идёт о баге, и исправить его часто удаётся самостоятельно, не томясь в ожидании патчей от разработчиков. Один из эффективных вариантов решений предполагает запуск игры в режиме совместимости:
Если этот способ не помог решить проблему, нужно обновить все основные драйверы устройств до актуальных версий. Также может помочь переустановка игрового софта, то есть полное удаление с последующей инсталляцией.
Способы исправить «процессор не имеет SSSE 3» в Apex Legends
Если ошибка с сообщением «CPU does not have SSSE 3» или «CPU does not have POPCNT» никуда не делась, есть ещё несколько действенных вариантов, как исправить положение.
Окно игровой платформы Origin со списком игр
Запустите Apex Legends и клиент Origin от имени администратора
Обновление Apex Legends для установки патча
Командная строка процессора Apex Legends
Активировать инструкции SSSE 3 и POPCNT для не поддерживающего их процессора не выйдет, поэтому если велико желание поиграть в данный шутер, а вышеописанные способы не возымели результата, придётся разориться на новый CPU. Маловероятно, что разработчики в дальнейшем внесут изменения в софт, которые позволят включить в список поддерживаемого оборудования старые модели устройств.
В шахматных программах широко используются «битовые доски» (битборды 1, 2) для представления фигур на доске. А так же и для других игр на той же доске 8×8, и даже для карточных игр. С битбордами часто проводят различные операции, например, найти первый установленный бит или посчитать количество установленных битов. Для этих операций придумано много «хитрых» алгоритмов, а на современных процессорах некоторые из этих операций доступны в расширенном наборе инструкций. Например, popcnt, доступный в SSE4.2 ABM. Также есть пара инструкций bsf/bsr, которые доступны уже давно, но из JIT-компилятора к ним нет никакого доступа.
Конечно, всё серьёзные шахматные программы пишут на C++, но для прототипирования каких-нибудь алгоритмов хочется использовать C#, потому что я с ним лучше знаком и у меня меньше шансов выстрелить себе в ногу. Но производительность тоже не хочется терять просто так, в C/C++ интересующие нас инструкции доступны так называемые встроенные функции. Я попробовал сделать подобное решение и для C#.
Для SIMD инструкций есть готовые библиотеки, а для манпуляций с битами — нет.
Детали реализации
Для начала нам надо убедиться, что метод скомпилирован: RuntimeHelpers.PrepareMethod(). А чтобы добраться до машинного кода, майкрософт заботливо предоставило нам метод RuntimeMethodHandle.GetFunctionPointer(). Но по этой ссылке в зависимости от рантайма может оказаться как сам метод, так и трамплин на него. Хорошо, что трамплин бывает только одного вида — JMP. Этим мы и воспользуемся:
Итак, адрес мы получили, попробуем записать туда что-нибудь. Надо учесть Call-Convention, благо на x86_64 он один (первые четыре аргумента в RCX, RDX, R8, R9, результат в RAX):
Пробуем… Ура, работает!
А вызывать мы его будем вручную из ассемблера, в итоге наш фоллбэк-метод будет заменён на такую штуку:
Всем этим занимается функция Patcher.PatchMethod, которую мы вызовем для всех методов, которые надо пропатчить.
Вот как это выглядит на живом примере (из PerfTest):
(если картинку не видно)
и после первого прохода:
(если картинку не видно)
Теперь остались мелочи: JIT может что-нибудь куда-нибудь очень сильно заинлайнить, или сделать tail-call оптимизацию, тогда адрес возврата не очень-то будет соответствовать вызову нашей функции. К сожалению, я не смог найти примеры таких агрессивных оптимизаций, но на всякий случай это тоже надо проверять. Зная место, откуда был совершён call, мы можем проверить, что он на самом деле вызывал. Тут тоже надо перепрыгнуть через все jmp-ы, и проверить, что они приведут нас в нужное место. А благодаря тому, что заменяющие инструкции мы поместили в самом начале патча в неизменном виде, сделать это очень легко:
Некоторые инструкции, например popcnt, доступны не на всех процессорах. Если вам важна скорость, то лучше такие процессоры вообще не использовать, но в библиотеке желательно оставить для них фолл-бэк. В интеловском мануале написано, что проверить наличие инструкции popcnt можно вызвав cpuid с eax=01H и проверить бит ECX.POPCNT[Bit 23]. Тут нам на помощь приходит stackoverflow-driven development, где можно найти готовый кусок кода для вызова cpuid из C#.
cpu does not have popcnt – как исправить?
25.03.2019 1,438 Просмотры
После выхода недавнего обновления игры Apex Legends многие пользователи стали получать сообщение об ошибке с формулировками «CPU does not have POPCNT» и «CPU does not have SSSE 3». Давайте посмотрим, как можно решить проблемы, связанные с получением такой ошибки Apex Legends.
Причины появления сообщений об ошибке
Первой ошибкой, которая появилась при обновлении Apex Legends, стала ошибка «CPU does not have SSSE 3». Она указывает пользователю на отсутствие инструкций дополнительных SSSE3 в используемом на ПК процессоре. Другими словами, он не может запустить приложения ввиду отсутствия алгоритма для его запуска. В подобной ситуации запуск приложения невозможен.
Проверка ЦП на присутствие в нём тех или иных инструкций
Для проверки соответствия вашего процессора требованиям игры, в первую очередь, вам понадобится знать его тип. Если вы не обладаете такой информацией, то её можно узнать с помощью встроенной в Windows утилиты «Диспетчер задач». После этого воспользуйтесь специальной программой CPU-Z. Для этого проделайте следующие действия:
Добавление дополнительных инструкций в ЦП
Игра Apex Legends предполагает наличие у пользователя, как минимум, процессора Intel Core i3 или AMD FX-4350. На более старых устройствах (как от Intel, так и от AMD) игра, к сожалению, не запустится.
Появление подобных ошибок на современных процессорах
Если ваш ЦП обладает необходимым набором инструкций, но при запуске Apex Legends всё равно появляются ошибки типа «CPU does not have POPCNT» и «CPU does not have SSSE 3», попробуйте следующее:
Если же и эти манипуляции оказываются бесполезными, то последним способом запуска Apex Legends является письмо в техническую поддержку игры. Возможно, вы получите необходимую для запуска информацию у самих разработчиков ввиду того, что игра всё ещё считается «сырой».
Ошибка CPU does not have SSSE 3/POPCNT в Apex Legends — как исправить
После недавних патчей, популярная игра Apex Legends перестала запускаться у десятков тысяч игроков. Так, при попытке входа в игру, пользователь получает ошибку «CPU does not have POPCNT» или «CPU does not have SSSE 3». Мы расскажем о причинах такого предупреждения, и проверим, есть ли хоть какие-то решения.
Почему возникает ошибка
Итак, для начала разберем блокировку «CPU does not have SSSE 3 (Supplemental SSE 3 Instructions)». Переводится ошибка как: Процессор не имеет SSSE 3 (дополнительной инструкции от SSE 3). Это означает, что ваш родной и горячо любимый процессор не располагает нужными инструкциями и Apex Legends на нем просто не запустится.
Apex Legends не запускается из-за SSSE3
Если говорить про второй тип ошибки «CPU does not have POPCNT», которая стала выскакивать через 1 неделю после релиза, то переводится она также: процессор не располагает инструкцией POPCNT. Видимо, с обновлением разработчики внесли некоторые изменения, по которым к списку «устаревших» добавились еще несколько типов процессоров.
Пользователи вообще, немного приуныли: поиграли нормально с недельку-вторую, а после дополнительного патча (13.02.2019) не смогли запуститься — потребовалась POPCNT. Кстати, данный параметр входит в состав SSE 4.2.
Ошибка CPU does not have POPCNT в AL
Как проверить свой процессор на наличие инструкций
В этом деле нет ничего сложного. Если вы сами собирали/покупали свой компьютер, то вы наверняка понимаете — узнать какой именно процессор у вас стоит можно через «Диспетчер задач». Узнать полный набор инструкций и прочие характеристики можно через поисковик.
Можно и обойти все эти движения и просто скачать полезную программку Speccy от Piriform или CPU-Z. С их помощью откройте вкладку «Центральный процессор», где будет указана вся информация, включая полный список инструкций. Сразу оговорюсь, не спутайте наличие «SSE 3» с «SSSE 3» — букв в требуемом параметре все-таки поболее.
Программа Speccy для Windows 10
Можно ли включить инструкции SSSE 3 и SSE 4.2?
В минимальных требованиях Апекса сказано, что он запускается на процессорах от Intel Core i3-6300 3,8 ГГц или от AMD FX-4350 4,2 ГГц. Если ваш железо слабее и не содержит указанных инструкций выход только один — нужно покупать более свежий процессор.
Добавить или включить такие параметры просто невозможно. В сети можно встретить множество советов, которые якобы дают возможность включить эти параметры. Народные умельцы рассказывают, что активировать SSSE 3 и SSE 4.2 можно через БИОС. Также встречаются упоминания о чудо-патчах, которые запускают отсутствующие инструкции, но, помимо лишней нагрузки на CPU, вы ничего не получите.
Процессор подходит, но ошибка «CPU does not have SSSE 3, POPCNT» осталась
Редко, но такое бывает: вы сверили все параметры и они вполне подходят под требования Apex Legends, но ошибка все равно выскакивает. В таком случае:
Поиграйте с настройками запуска
Во всем остальном остается только ждать патчей, которые, к слову, идут сейчас довольно часто. Разработчики Апекса еще не раз будут вносить серьезные коррективы в игру, потому как в плане оптимизации там есть куда расти. К примеру, новинка Metro Exodus идет без проблем среднем железе, а вот AL уже начинает сбоить.
Рекомендуем наш материал, по исправлению ошибки r5apex.exe в Апекс Легенд и гайд по оптимизации ФПС.
Заключение
Как видите, системным образом исправить ошибки «CPU does not have …» в Apex legends не получится — нужно обновление процессора. Если ошибка возникает на подходящем под параметры железе, нужно делать полный апдейт драйверов и переустанавливать сам Апекс. Если у вас именно такая ситуация — просьба отписать в комментарии.
Причины и решения ошибок CPU does not have POPCNT и SSSE 3
Знаменитый шутер Apex Legends привлек внимание огромного количества геймеров по всему миру. В большей степени его ценят за уникальный геймплей и динамику, в которую погружается каждый пользователь. Это проработанный продукт с потрясающей графикой, мимо которого сложно пройти. Примечательно также и то, что игра распространяется на бесплатной основе. Также игрокам нравится то, что разработчики не покидают свой проект и часто его обновляют, исправляют проблемы и добавляют нового контента. Тем не менее, очередное обновление не принесло радости некоторым игрокам.
При запуске Apex Legends на экране начала появляться ошибка «CPU does not have POPCNT» или «CPU does not have SSSE 3». При этом ранее можно было без проблем запускать Apex Legends и наслаждаться игровым процессом при довольно комфортных FPS. Но после обновления принять участие в знаменитой королевской битве стало невозможным. Почему подобное произошло и как с этим разобраться, мы поговорим ниже. Изначально нужно внукнуть в то, что означает сообщение «CPU does not have POPCNT и SSSE 3», а также, почему оно начало появляться после очередного обновления игрового клиента.
Что значит CPU does not have POPCNT и SSSE 3?
Нужно понять то, что для запуска любого софта, будь-то игра Apex Legends или же офисное приложение, нужны определенные условия. Есть программные требования к системе, которые должно удовлетворять. Ранее все работало, так как стандартные системные требования системы отвечали минимальным и даже старые ПК могли без проблем запускать Apex Legends. После обновления разработчик внес изменения, он попросту изменил минимальные требования к системе, в частности – к процессору.
После обновления для запуска игры появилось новое условие, установленный процессор должен поддерживать технологии POPCNT и SSSE 3. Если такая ошибка появляется на экране, то это говорит только о том, что процессор пользователя не поддерживает одну из них.
Что такое POPCNT и SSSE 3? Нужно начать с того, что характеристики процессора обуславливаются не только частотой и количеством ядер, как все привыкли считать. У каждого процессора также имеется свой собственный набор инструкций, которые он выполняет постоянно. С каждым обновлением чипов разработчики добавляли новый набор инструкций, ведь все должно эволюционировать и развиваться.
Можно говорить о том, что POPCNT и SSSE 3 являются инструкциями, которые есть в тех или иных процессорах. Новые процессоры имеют эти инструкции, устаревшие – нет. Инструкции SSSE 3 используются в процессорах Intel, а POPCNT – в процессорах AMD. Эти инструкции используются разработчиками софта, в том числе и командой Apex Legends. Если процессор не поддерживает их, то он не соответствует минимальным требованиям, а значит, запустить игру не получится. Эта проблема не может быть критической, так как данные инструкции не поддерживаются довольно старыми процессорами, большинство же чипов с ними работают хорошо.
Минимальные системные требования Apex Legends
После обновления минимальные системные требования были изменены. Это обусловлено тем, что технологии игры идут вперед, необходимо увеличивать качество графики, добавлять визуальные эффекты, увеличивать оригинальность игрового процесса. В результате минимальные требования увеличиваются, что логично. Сегодня они такие:
Если пользователь видит, что его процессор ниже по уровню, чем минимальные требования, то именно по этой причине он получает сообщение «CPU does not have POPCNT или SSSE 3». Возникает логичный вопрос о том, что делать в сложившейся ситуации? Ниже представлены некоторые способы решения проблемы.
Что теперь делать?
Если процессор очень старый и не имеет инструкций POPCNT или SSSE 3, то его необходимо обновлять. Нужно понимать, что инструкции были занесены в процессор производителем, их нельзя добавить, чип попросту не поддается модернизации. Если инструкций нет, то их и не будет, какие-бы действия не исходили со стороны пользователя. Здесь выход один – проводить модернизацию компьютера, менять процессор, в случае необходимости материнскую плату, оперативную память, видеокарту. Это не просто позволит играть в Apex Legends, это даст возможность играть с более высоким FPS и в другие игры, получая намного больше удовольствия от процесса.
Использовать режим совместимости
Случается так, что железо ПК подходит под минимальные требования разработчика, но проблема не исчезает, при запуске появляется все та же ошибка. Это может свидетельствовать о том, что произошел баг, его можно исправить самостоятельно, например, запустить Apex Legends в режиме совместимости.
Для этого нужно выполнить следующее:
Если этот способ не помогает решить проблему, необходимо обратить внимание на то, не требуют ли системные драйвера обновлений. Также может потребоваться полная переустановка игрового клиента или его обновление. Нужно всегда следить за тем, чтобы игровой клиент был обновлен до последней версии, если это не так, то могут возникать подобные проблемы с совместимостью.
Запуск игры от имени администратора
Когда у софта нет нужных прав, то могут возникать различные проблемы при запуске. Например, игровой клиент или консоль запуска попросту не могут увидеть полные характеристики устройства, поэтому выдают вышеупомянутую ошибку. Для решения этих проблем необходимо инициализировать запуск Apex Legends и клиент Origin от имени администратора. Для этого выполните следующие действия:
Эти способы позволят решить проблему и ошибка CPU does not have POPCNT больше не будет появляться. Однако нужно всегда помнить о том, что разработчик вынужден обновлять свой софт и модернизировать его, ориентируясь на более производительное железо. Если ПК уже устарел и ему более 10-ти лет, то следует задуматься над его обновлением.














