Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 2
з курсу „ Архітектура комп’ютерів”
Тема:
Нові типи даних в ММХ-технології.
Знакові та беззнакові дані. Циклічна арифметика.
Львів – 2005
Мета роботи: Вивчити та детально ознайомитися із синтаксисом та використанням команд зсувів MMX.
Тереотичні відомості
Типи даних
Команди технології MMX працюють з наступними типами даних:
* упаковані байти (вісім байтів в одному 64-розрядному регістрі)
* упаковані слова (чотири 16-розрядних слова в 64-розрядному регістрі)
* упаковані подвійні слова (два 32-розрядних слова в 64-розрядному регістрі)
* 64-розрядні слова.
По-англійському ці типи даних називаються, відповідно: packed byte, packed word, packed doubleword і quadword.
Дані зі знаком і без знака
В арифметиці з насиченням MMX-команди додавання, вирахування й упакування даних можуть обробляти числа з чи знаком без знака.
Дані зі знаком і без знака мають різний припустимий діапазон. Отже, якщо використовується арифметика з насиченням, то при виході результату операції за межі припустимого діапазону у вихідний операнд будуть записані різні значення в залежності від типу даних.
Циклічна арифметика (wraparound arithmetic)
Якщо команда використовує циклічну арифметику і результат операції виходить за двійкову розрядну сітку типу даних, що використовується, то "лишні" старші біти результату відкидаються. Тобто, якщо результат перевищує максимально молливе значення на [n] одиниць, то результатом вважається [мінімальне значення + n – 1].
MMX-команди зсуву виконують зсув кожного елемента даних (16-, 32- чи 64-розрядного слова) у вихідному операнде на величину, що задається вхідним операндом.
psll, psra, psrl
Команди psra (арифметичний зсув праворуч)
Команди psra виконують зсув елементів даних (16- чи 32-розрядних слів) у вихідному операнді на число біт, що задається вхідним операндом. Якщо зсувається додатнє число, то старші розряди, що звільнилися, заповнюються нулями, а якщо від’ємне, то одиницями.
Вхідний операнд може бути безпосереднім операндом або знаходитися чи MMX-регістрі чи в пам'яті. Вихідний операнд повинен знаходитися в MMX-регістрі.
Підтримуються команди: psraw, psrad.
Команди psrl (логічний зсув праворуч)
Команди psrl виконують зсув елементів даних (16-, 32- чи 64-розрядних слів) у вихідному операнді на число біт, що задається вхідним операндом. Старші розряди, що звільнилися, заповнюються нулями.
Вхідний операнд може бути безпосереднім операндом або знаходитися чи MMX-регістрі чи в пам'яті. Вихідний операнд повинен знаходитися в MMX-регістрі.
Підтримуються команди: psrlw, psrld, psrlq.
Завдання
Детально описати зміст заданих команд та результат їх виконання, якщо в
ММ2 : 80FF 7F80 777F 0001, а в ММ4 : 0001 8001 0002 8002.
11.
psrld MM4, 3
psrad MM2, 5
Виконання роботи
psrld MM4 , 3 - це MMX-команда, яка виконує логічний порозрядний зсув вправо елементів даних (в нашому випадку doubleword - 32 розряди) першого операнду (MM4) на кількість біт, що задається другим операндом (3). Старші розряди, що звільнилися, заповнюються нулями.
0001
8001
0002
8002
0000000000000001
1000000000000001
0000000000000010
1000000000000010
(
(
Зсув ( на 3 розряди виконується незалежно в межах блоків по 32 біти.
Результат:
0000000000000000
0011000000000000
0000000000000000
0101000000000000
0000
3000
0000
5000
psrad MM2 , 5 - це MMX-команда, яка виконує арифметичний зсув вправо елементів даних (doubleword - 32 розряди) першого операнду (MM2) на кількість біт, що задається другим операндом (5).
80FF
7F80
777F
0001
1000000011111111
0111111110000000
0111011101111111
0000000000000001
(
(
Зсув ( на 5 розрядів виконується незалежно в межах блоків по 32 біти.
Результат:
1111110000000111
1111101111111100
0000001110111011
1111100000000000
FC07
FBFC
03BB
F800
Висновок: Виконуючи дану лабораторну роботу, я вивчив та детально ознайомитися із синтаксисом та використанням команд зсувів для MMX-процесорів.