ABM
ABM, Advanced Bit Manipulation, е терминология, свързана с възможностите на AMD за броене на битове. Обозначението ABM в дадена база данни трябва да се сведе до точните инструкции и CPUID битове, изисквани от софтуера.
Какво трябва да знаете
ABM, Advanced Bit Manipulation, е терминология, свързана с възможностите на AMD за броене на битове. Обозначението ABM в дадена база данни трябва да се сведе до точните инструкции и CPUID битове, изисквани от софтуера.
Как работи
Този етикет обикновено се свързва с LZCNT и POPCNT в описанията на функциите на AMD. Те броят съответно водещите нули и установените битове, но приложенията трябва да ги изброяват според спецификацията на CPUID на производителя. LZCNT има кодираща връзка с BSR и се различава по поведението при нулев вход и флаговете.
Къде е полезно
Дадена числова подпрограма може да се нуждае от LZCNT за определяне на порядък, докато подпрограма за битови масиви се нуждае от POPCNT за броене на принадлежност. Те решават различни проблеми и не могат да се заместват взаимно само защото обобщено описание ги групира заедно.
Как се проверява поддръжката и активирането
Проверете разширената спецификация на CPUID на AMD за ABM/LZCNT при 80000001H:ECX бит 5 и проверете POPCNT при 01H:ECX бит 23 за действителните изисквания на програмата. Потвърдете специфичната за производителя интерпретация чрез съответното ръководство за архитектурата.
Проверявайте точната инструкция и формата на операнда, вместо да правите изводи за поддръжка от съседно разширение. Скаларните целочислени функции обикновено използват регистри с общо предназначение; кодиране, свързано с вектори, не означава автоматично изискване за векторно състояние.
Какво не гарантира тази функция
ABM не е BMI1 или BMI2. Търговското обозначение от производителя не бива да се превръща в предположение, че съществува всяка инструкция за манипулиране на битове. Изпълнението на кодирането на LZCNT на неподдържан процесор може да се държи като друга инструкция, вместо да предизвика явна грешка.
Съвместимост и производителност на практика
Коректността зависи както от граничните случаи, така и от скоростта. Нулев вход, препълване, флагове за пренос, ширина на операнда, подравняване и подреждане на паметта могат да променят семантиката. Предпочитайте компилаторни или библиотечни интерфейси, които документират тези подробности и предоставят поддържан резервен вариант (fallback).
Практически контролен списък за проверка
- Запишете точния модел на процесора или платформата, както и използваните версии на приложението, операционната система и средата за изпълнение. Запазете точния текст на действителната грешка или изискване.
- Проверете документацията от производителя за този точен модел, след което инспектирайте действителните възможности и активираното състояние в средата, където работи програмата.
- Сравнете всяко изискване на избрания двоичен файл или бекенд. Подобно наименувана функция, псевдоним или общ технологичен етикет не са достатъчни.
- Потвърдете, че приложението е избрало планираната реализация. Използвайте неговата документирана диагностика и поддържан резервен вариант, когато изискванията не са изпълнени.
- Правете по една поддържана промяна наведнъж и повтаряйте същото работно натоварване. Запазете достъпни оригиналната конфигурация и плана за възстановяване.
Ако функцията е посочена, но софтуерът не може да я използва
Започнете с точния компонент, който дава грешка. Хардуерната база данни описва записаните възможности; операционната система или хипервайзорът могат да предоставят различна ефективна среда. Грешка за невалидна инструкция (illegal-instruction) също изисква разследване на действителната сриваща се инструкция и компилацията на двоичния файл, тъй като повреда или несвързана неподдържана инструкция може да предизвика подобен симптом.
Инсталирайте версията на приложението, драйвера или средата за изпълнение, която се поддържа за точната платформа, и използвайте документираната от производителя базова или резервна компилация, ако е необходимо. Софтуерна актуализация не може да създаде инструкция, която липсва в процесора. Промените във фърмуера и политиките за сигурност трябва да следват процедурата на производителя на системата и план за възстановяване, а не общи съвети за оптимизация.
Източници и обхват на това обяснение
AMD CPUID Specification, публикация 25481 · Intel 64 and IA-32 Architectures Software Developer's Manual
Тези източници установяват архитектурното поведение и софтуерните изисквания. Те не проверяват независимо всяка стойност на параметър на свързана страница за хардуерен модел. За поддръжка на даден модел използвайте данните от производителя на съответната страница и проверете ефективната системна конфигурация. Тази статия не предоставя бенчмарк, сертификация или дата на независим преглед.
Източници и проверка
Редакционна собственост: Feex. Не е записана дата на независим преглед. Как проучваме.
- AMD CPUID Specification, публикация 25481 · Архивирана архитектурна справка за установените функции на AMD CPUID и дефиниции на битове. Използвайте актуалното справочно ръководство за програмиране на процесора за разширения, специфични за по-късни поколения.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Томове 1 и 2 описват посочените семейства инструкции и CPUID; Том 3 описва състоянието, страницирането, VMX и контролите за защита. Документацията за архитектурата не гарантира поддръжка за конкретен модел.
Беше ли полезна тази статия?
Достатъчно е "да" или "не". Изберете причина, ако желаете, или добавете кратка бележка.
Благодарим ви. Това ни помага да подобрим тази страница.