Вы определенно не получаете много информации здесь. Хотя у свалок обычно нет всего необработанных данных CPU, вы должны хотя бы увидеть строку производителя. Хорошо, давайте посмотрим, что вам нужно с этим делать ...
Столбец CP
содержит номер логического процессора, поэтому вы знаете, что имеете дело с системой с 4 логическими процессорами. Может быть четырехъядерным, или, возможно, двухъядерным с HyperThreading.
F/M/S
является семейством/моделью/степпингом, которые являются обычным и довольно стандартным способом идентификации процессоров. Как AMD говорит:
Процессор Семейство идентифицирует один или несколько процессоров, как принадлежность к группе, которая обладает некоторым общим определением для программного обеспечения или аппаратных целей. Модель Модель указывает один экземпляр семейства процессоров. Шаг определяет конкретную версию конкретной модели. Таким образом, семья, модель и шаг, вместе взятые, образуют уникальный идентификатор или подпись для процессора.
Это наиболее полезно, если у вас есть производитель, когда вы идете искать эти вещи, потому что семейные номера довольно сумбурно, но, к счастью, это довольно ясно, что семья число 16 (10 в шестнадцатеричном формате) соответствует AMD процессор (который должен иметь строку производителя «AuthenticAMD»). В частности, это AMD K10, который является микроархитектурой Барселоны. Это означает, что нет HyperThreading - это просто встроенная четырехъядерная система.
Мы можем сузить его, посмотрев на модель. Было много разных моделей, основанных на ядре Barcelona, которые были по-разному обозначены как Athlon II, Opteron, Phenom, Phenom II, Sempron, Turion и V-Series. Ваша модель 4. Это то, где она становится довольно сложной, потому что я не знаю хорошего ресурса, в котором перечислены номера моделей и степпинги для разных процессоров. Вы должны обратиться непосредственно к производителю и пробраться через их руководства. Например, here is AMD's Revision Guide for the 10h Family. Если вы перейдете в раздел «Идентификация процессора» (отображается в качестве закладки в PDF-файле для меня), вы увидите что-то, что выглядит многообещающим, но информация, конечно же, не представлена в легко усваиваемой форме. Вы получаете длинные шестнадцатеричные значения, из которых вы должны извлекать отдельные биты, соответствующие семейству (8-11), модели (4-7) и шагу (0-3).
Я не делал все усилия, чтобы быть уверенным, я просто думаю, что это AMD Phenom II X4. X4 подходит для четырехъядерных процессоров, и из беглого взгляда кажется, что Phenom II - это модель 4.
В любом случае, возможно, вы, вероятно, остановились, потому что микроархитектура сообщает вам все, что вам нужно знать. Это ядро AMD Barcelona, которое не поддерживает инструкции Supplemental SSE3 (SSSE3) (три S's-не следует путать с SSE3, соглашения об именах смешны). SSSE3 был изобретен Intel, выпущенный с микроархитектурой Core 2.
AMD не применяет их до Bobcat/Bulldozer. Bulldozer было следующим поколением, семейство 21 (15 часов), для настольных компьютеров и серверов, а Bobcat было низкопористым сердечником для APU AMD.
SSSE3 действительно не предлагал много новых инструкций. Только 16, в основном предназначенные для работы с упакованными целыми числами, и большинство из них aren't very exciting. Дамп должен также сообщить вам код операции, вызвавшей сбой. Если нет, вам придется вернуться и понять это из байтового адреса кода. Это точно скажет вам, какая инструкция является проблемой. Я предполагаю, что вы используете PSHUFB, чтобы перетасовать байты на месте, что является одной инструкцией SSSE3, которая на самом деле очень полезна. Одно общее использование, которое я видел, - a fast population count algorithm (хотя есть и другие реализации, для которых не требуется SSSE3, которые почти одинаково быстрей, если не быстрее).
Предполагая, что вы компилируете с помощью MSVC, я действительно удивлен, увидев, что он испускает эту инструкцию. Чтобы получить его, вам нужно сказать компилятору, чтобы он нацелился на AVX, что остановит ваш код от работы на чем-то старше Sandy Bridge/Bulldozer. Я уверен, что если вы не хотите поднять минимальные системные требования, вы можете найти альтернативную последовательность инструкций, чтобы сделать то же самое. pshufd
, или movaps
+ shufps
Возможные кандидаты для обходных решений.
Спасибо за ваш вклад. Да, здание с визуальной студии. Это не компилятор, излучающий эти инструкции. Я проверил свой код вручную, используя intrinsics. AFAIR он стал примерно в два раза быстрее по сравнению с автоматической векторизации на AVX2: мои алгоритмы в основном обрабатывают целочисленные числа/бит-маски, гигабайты из них, и я закодировал множество бит-трюков, обрабатывающих эти значения __m128i. Я не считаю, что автоматическая векторизация способна делать оптимизации, сопоставимые с тем, что я здесь сделал. – Soonts
Как вы видите, совместимость с процессором является недостатком этого подхода: я был очень разочарован, когда я понял, что в течение последнего десятилетия уже нет такой вещи, как набор инструкций x86, Intel/AMD расходится. Похоже, я могу полагаться только на SSE 4.1 и ниже, и им уже 9 лет ... – Soonts
Как раз тогда, когда я думаю, что я догоняю, есть такая запись, которая усиливает, насколько мне еще нужно идти. Вы могли бы пойти прямо на хрюканье, но решили сделать его образовательным, и это преуменьшение. Написать книгу. Я куплю это. –