МЕТОДИ ВИКОРИСТАННЯ SIMD ІНСТРУКЦІЙ НА X86 СУМІСНИХ ПРОЦЕСОРАХ СТАРШОГО ПОКОЛІННЯ
DOI:
https://doi.org/10.26906/SUNZ.2021.4.044Ключові слова:
арифметична операція, векторна інструкція, набір інструкцій процесора, операнд константи, оптимізація процесу обробки даних, паралелізм на рівні інструкцій, паралельне обчисленняАнотація
Розглянуто використання векторних SIMD інструкцій на x86 сумісних процесорах для покращення ефективності обчислення та обробки даних. Застосування векторного набору інструкцій дозволяє збільшити кількість операцій виконуваних за такт, при цьому зменшення розгалужень у алгоритмах позитивно влипає на швидкість виконання програми за рахунок меншого навантаження на модуль передбачення умовних переходів у процесорі. До цього часу існує програмне забезпечення, що виконується на x86 архітектурі процесорних ядер, даний факт не завжди дає змогу використовувати новітні векторні інструкції починаючи з SSE4.1. Головним недоліком попередніх реалізацій векторних наборів інструкцій – це відсутність логічних і арифметичних операцій з деякими типами даних, особливо це спостерігається у операціях з цілими числами. Використання особливості бінарної реалізації цілих чисел зі знаком і без знаку, дозволяє компенсувати відсутність логічних операцій для цих типів даних. Експлуатація вироджених та непрямих властивостей деяких інструкцій допомагає, як компенсувати відсутність арифметичних операцій з необхідними типами даних або операцій для цілих чисел іншої розрядності, так і оптимізувати виконання математичних операцій таких, як знаходження суми, різниці, множення та скалярного добутку. арифметична операція, векторна інструкція, набір інструкцій процесора, операнд константи, оптимізація процесу обробки даних, паралелізм на рівні інструкцій, паралельне обчислення.Завантаження
Посилання
Christer Ericson, “Real-time Collision Detection” – The Morgan Kaufmann Series, 2004. pp. 543–545.
Daniel Kusswurm, “Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX”, 2014. – pp. 179-187.
David H. Eberly, “GPGPU Programming for Games and Science”, 2014. – 93 p.
Paul Besl, “A case study comparing AoS (Arrays of Structures) and SoA (Structures of Arrays) data layouts for a computeintensive loop run on Intel Xeon processors and Intel Xeon Phi product family coprocessors”. In: Intel Article 392271, 2015.
G. Ren, P. Wu and D. A. Padua, “A preliminary study on the vectorization of multimedia applications for multimedia extensions”, in Proc. LCPC 03, 2003. – pp. 420–435.