Вы находитесь на странице: 1из 19

Міністерство освіти і науки України

Національний технічний університет України


«Київський політехнічний інститут ім. Ігоря Сікорського»
Факультет інформатики та обчислювальної техніки
Кафедра обчислювальної техніки

ЛАБОРАТОРНА РОБОТА №1
З ДИСЦИПЛІНИ “Технології програмування спеціалізованих
процесорів”

Виконав
студент групи ІО-з91мн
Гріщенко К.С.

Перевірила
Клименко І.А.

Київ 2020
Цель работы:
Изучить работу ВС, построенную на основе буферной памяти данных и на
основе ассоциативной памяти. Определить характеристики указанных
систем.
Задание:
1. Изучить ВС с буферной памятью данных и с ассоциативной памятью. При
изучении обратить внимание на формат данных и специфику
программирования. Так же при изучении ВС с буферной памятью данных
обратить внимание на алгоритмы опроса буферной памяти.
2. Согласно семи младшим цифрам номера зачетной книжки,
представленного в двоичной системе счисления, определить свой вариант и
выбрать исходные данные для выполнения лабораторной работы из табл. 1 –
табл. 3.
Таблица 1. Набор функций
а2 а1 а0 Функции
0 0 0 f1,f2,f3
0 0 1 f1,f2,f4
0 1 0 f1,f3,f4
0 1 1 f2,f3,f4
1 0 0 f2,f3,f5
1 0 1 f1,f2,f5
1 1 0 f3,f4,f5
1 1 1 f1,f3,f5
Таблица 2. Количество устройств ввода
а4 а3 n
0 0 3
0 1 4
1 0 5
1 1 6
Примечание: размещение слов для ввода выполнить самостоятельно
учитывая особенности алгоритма
Таблица 3. Вывод на устройства
вывести функции Х, Х, Х на
а6 а5
устройства вывода, № устройства
0 0 1,2,3
0 1 1,3,4
1 0 2,3,4
1 1 1,2,4
Примечание: Для всех вариантов количество устройств вывода равно
четырем

f1=y2+by+2ab+4
f2=sqrt(b+5a+c2)+2ac
f3=a-b-ca+12sqrt(b2+a2)
f4=(a2+b2+c2+d2)ab
f5=скалярное умножение векторов размерностью 5.
Данные для всех функций задать самостоятельно.
2. Определить ЯПФ каждой функции.
3. Выполнить адресацию всех операций, учитывая, что все 3 функции будут
выполняться совместно.
4. Написать программу совместного выполнения всех функций
Примечание: для более эффективной работы порядок ввода должен
обеспечивать «горизонтальный» ввод, т.е. команды должны попадать в
систему по ярусам, а не по веткам. И лучше если реализовывать ввод по
ярусам всех трех (N) функций.

Выполнение работы:
1. Набрать в редакторе программу. Запустить ее на выполнение и проверить
правильность выполнения функций. В случае необходимости можно найти
ошибки, используя отладчик.
2. Исследование системы.
 Установить в «Набор операций» большие значения количества шагов
выполнения операций (примерно 30) и в «параметрах системы»
минимально возможные значения количества вычислительных устройств
(1) и размеров БПД и БПК (2). Запустить программу на автоматическое
выполнения при алгоритме опроса «Последовательный по порядку ввода»,
а затем «со свободной ячейкой БПД». Сделать выводы.
 Меняя размер буферов и количества процессоров добиться максимальной
производительности системы на программе. Определить количество
вычислительных блоков, при котором дальнейшее наращивание не дает
выигрыша в производительности.
 Уменьшая количество процессоров определить динамику уменьшения
производительности, определяя на каждом шаге Ку=Т1/Тi , где Т -
количество тактов выполнения программы.
 Повторить предыдущий пункт для системы с ассоциативной памятью,
разобраться в специфике системы и сравнить характеристики с системой с
буферной памятью данных. Сделать выводы.
3. Сделать выводы по работе.

Варіант - 9103
0001111
F1, F3, F5
Кількість аргументів - 4
Виконання: A B
C C D D
1. Формуємо граф задачі A B A
B B A A B
Y B A B
^2 A
D * * *
* - * * * *
4 *
+
- 12 sqrt + +
+ 2
* +
+ *
F +
+
1
F1

program lab1
constant
a=1
b=2
c=3
d1=1
d2=2
d3=3
d4=4
d5=5
e1=5
e2=4
e3=3
e4=2
e5=1
begin
1: mul a, c, !0 to 2
2: mul _, 2*, !0 to 8
3: sqr c, c, !0 to 5
4: mul a, 5*, !1 to 5
5: add _, _, !0 to 6
6: add _, b, !0 to 7
7: sqrt _, 0*, !1 to 8
8: add _, _, !1 to 27
9: sqr a, a, !0 to 11
10: sqr b, b, !1 to 11
11: add _, _, !0 to 12
12: sqrt _, 0*, !0 to 13
13: mul _, 12*, !0 to 17
14: sub a, b, !0 to 16
15: mul a, c, !1 to 16
16: sub _, _, !1 to 17
17: add _, _, !0 to 28
18: mul d1, e1, !0 to 23
19: mul d2, e2, !1 to 23
20: mul d3, e3, !0 to 24
21: mul d4, e4, !1 to 24
22: mul d5, e5, !1 to 26
23: add _, _, !0 to 25
24: add _, _, !1 to 25
25: add _, _, !0 to 26
26: add _, _, !0 to 29
27: out _, 1, !0 to 27
28: out _, 2, !0 to 28
29: out _, 3, !0 to 29
End

Компіляція
Эксперименты
1. Минимально возможные настройки
Deadlock: система застрягла: немає куди вигружати дані і немає вільних
процесорів.
Міняємо алгоритм опитування на «со свободной ячейкой БПД»
Таки да! Мы снова застряли!
Почему это происходит, хотя не должно происходить? А ответ прост: у нас
всего 2 ячейки памяти. Одной команде надо 2 операнда. И если в БПД
собрались данные для разных команд, и нужных данных среди них нету – то
всё. Собрать новую команду уже нельзя, убрать токены тоже некуда. Но, что
интересно, застревание происходит позже: алгоритму «по порядку ввода»
хватило ~60 тактов, а алгоритм «со свободной БПД» продержался где-то до
100-го такта.
2. Увеличиваем объем памяти (по 10).
За 477 тактов программа завершается.

3. Ставим 5 процессоров

За 254 такта программа завершается


4. Ставим 10 процессоров
211 тактов. Как видим, ускорение уже не особо существенное.
5. Ставим 1 процессор и определяем Ку

Результаты для буферной памяти


T Ky Ke
1 878 - -
2 477 1,84 0,92
5 254 3,46 0,69
10 211 4,16 0,42

6. Запускаем систему с ассоциативной памятью


Р=1

Р=2
Р=5

Р = 10
7. Подсчёт для системы с ассоциативной памятью

T Ky Ke
1 870 - -
2 880 0,99 0,49
5 249 3,49 0,7
10 211 4,12 0,41

Висновки

-Асоціативна пам'ять не дає значного присокрення


-Можливість отримати deadlock навіть за використання алгоритму з вільною
коміркою
Міністерство освіти і науки України
Національний технічний університет України
«Київський політехнічний інститут ім. Ігоря Сікорського»
Факультет інформатики та обчислювальної техніки
Кафедра обчислювальної техніки

ЛАБОРАТОРНА РОБОТА №2
З ДИСЦИПЛІНИ “Технології програмування спеціалізованих
процесорів”

Виконав
студент групи ІО-з91мн
Гріщенко К.С.

Перевірила
Клименко І.А.

Київ 2020
Цель работы:
Изучить принципы программирования циклов и условных переходов с
использованием команд управления и с учетом специфики выполнения
программ на ВС под управлением потоком данных.
Задание:
1. Изучить ВС с буферной памятью данных и с ассоциативной памятью. При
изучении обратить внимание на формат данных и специфику
программирования. Так же при изучении ВС с буферной памятью данных
обратить внимание на алгоритмы опроса буферной памяти.
2. Согласно семи младшим цифрам номера зачетной книжки,
представленного в двоичной системе счисления, определить свой вариант и
выбрать исходные данные для выполнения лабораторной работы из табл. 1 –
табл. 3.
Таблица 1. Набор функций
а2 а1 а0 Функции для вычисления
X:=a+b;
F:=1;
0 0 0
For i:=1 to n do
F:=f*x+3;
F:=1;
If a>0 then x:=a*b+2 else x:=3;
0 0 1
For i:=1 to n do
F:=f-x;
X:=a+b;
F:=1;
0 1 0
For i:=1 to n do
F:=(f+i)*(x-2);
F:=1;
0 1 1 For i:=2 to n do
F:=f*i; {f=n!}
X:=a-b+3;
F:=1;
1 0 0
For i:=1 to n do
F:=f*x; {f=x в степени n}
X:=a+2*b;
F:=2;
1 0 1
for i:=n downto 1 do
f:=(f+x)/2;
1 1 0 F:=45;
if a>b then x:=a-b else x:=b-a;
for i:=n downto 1 do
f:=f-x;
F:=15;
For i:=n downto 1 do
1 1 1
F:=f-i;
if f<=0 then f:=-f;
Примечание: Значениями a и b задаться самостоятельно.

Таблица 2. Количество итераций


а4 а3 N
0 0 3
0 1 4
1 0 5
1 1 6

Таблица 3. Устройство вывода


Вывести функцию F на устройства вывода,
а6 а5
№ устройства
0 0 1
0 1 2
1 0 3
1 1 4
Примечание: Для всех вариантов количество устройств вывода равно
четырем

2. Построить программу для ВС используя графическое отображение команд.


3. Выполнить адресацию всех операций.
4. Написать программу выполнения заданной функции.
Выполнение работы:
1. Набрать в редакторе программу. Запустить ее на выполнение и проверить
правильность выполнения функции. В случае необходимости можно найти
ошибки, используя отладчик.
2. Представить преподавателю результаты выполненной работы.
3. Сделать выводы по работе.

Варіант - 9103
0001111
Функція 7 (111)
F:=15;
For i:=n downto 1 do
F:=f-i;
if f<=0 then f:=-f;
Граф і код:
0 from 7 program lab27t
constant
14* n=6
13 a=1
b=2
0 from 4 begin
14 1: cmpme n, 1*, !0 to 2
15 - 2: xn _, 3*, !1 to 3
3: if 1, _, !0 to 6
0 to 11
3* 4: if 15, _, !0 to 15
16
5: ifnot 1, _, !0 to 12
6: sub _, 1*, !0 to 7
0* 7: x2 _, 3*, !0 to 13
17
8: x2 _, 4*, !0 to 9
< 9: x2 _, 5*, !0 to 10
19*
10: eq1 _, 0*, !1 to 11
11: eq1 _, _, !0 to 1
20
12: out _, 1*, !0 to 12

13: x2 _, 14*, !1 to 15
14: eq2 0*, _, !0 to 11
18
F 19
T 15: sub_, _, !0 to 8
0* 16: xn _, 3*, !0 to 17
17: cmpl _, 0*, !0 to 20
21 - 18: ifnot _, _, !0 to 8
19: if_, _, !1 to 21
0 to 8 0 to 8 20: x2 _, 19*, !1 to 18
21: sub 0*, _, !0 to 8

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