Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Конкурентне виконання машинних iнструкцiй

Автор:   •  Ноябрь 20, 2022  •  Лабораторная работа  •  418 Слов (2 Страниц)  •  150 Просмотры

Страница 1 из 2

 МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
«ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ІКТА
кафедра БІТ

[pic 1]

З В І Т

до лабораторної роботи №3

з курсу: «Архітектура комп’ютерних систем»

на тему:

«КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ»

Варіант №9

Виконав:

Прийняла:

Львів 2021

Мета: опанувати техніку паралельного виконання машинних інструкцій на рівні апаратури.

Завдання

Засобами архітектурного симулятора WinMIPS64 дослідити на прикладі фрагментів програмного коду можливості паралельного опрацювання машинних інструкцій на рівні апаратури та позитивні ефекти, що при цьому досягаються. За результатами проведених лабораторних досліджень оформити звіт та захистити його.

Виконання роботи

Для завдання дано наступний код програми:

;***************************************

;*** winMIPS64 //hazard3.s//      *****

;*** (c) 2003 CA226, DCU          *****

;***************************************

.text

div.d f7,f9,f10

mul.d f2,f4,f3

sub.d f7,f7,f4

ld    r1,78(r0)

add.d f4,f5,f6

halt

Спробуємо запустити перевірку коду з допомогою asm.exe:

[pic 2]

Контроль коду не знайшов жодних помилок тому продовжуємо нашу роботу. Запустимо цей код у програмі симуляторі WinMips64:

[pic 3]

Як результат, ми бачимо що наша програма відпрацювала за 33 цикли, виконуючи 6 інструкцій, тому на одну інструкцію припадає 5,5 циклів для її виконання. Також бачимо, що присутні 22 пригальмовування RAW (Read after write).

У даному коді є проблеми, які не дозволяють паралельно виконувати усі потрібні функції. Так як функція ділення виконується за 28 кроків, адже це досить специфічний алгоритм виконання цієї задачі, то затримуючи змінні в регістрах, а саме працюючи з ними, інші функціїї не мають доступу до них. Наприклад, фунція sub чекає на комірку, яка зайнята функцією div. Так само mul займаючи досить багато часу, не дає доступу до комірки функціям sub і add.

Тому спробуємо порефакторити даний код змінивши послідовність початку виконання фунцій. Функцію ділення поставимо на 2 місце, mul на 4, sub на 1 та add на 3. І отримаємо наступний код програми:

...

Скачать:   txt (5.3 Kb)   pdf (1.1 Mb)   docx (1.1 Mb)  
Продолжить читать еще 1 страницу »
Доступно только на Essays.club