Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2004
Тип роботи:
Задача
Предмет:
Архітектура комп'ютерів

Частина тексту файла (без зображень, графіків і формул):

На правах рукопису ВІКТОР ТРОЦЕНКО АРХІТЕКТУРА КОМП’ЮТЕРА. ЗАДАЧІ Категорична заборона на будь-яке недозволене автором використання і розмноження 2004 ЗМІСТ Задача 01 3 Задача 02 3 Задача 03 3 Задача 04 4 Задача 05 4 Задача 06 5 Задача 07 5 Задача 08 6 Задача 09 6 Задача 10 7 Задача 11 7 Задача 12 7 Задача 13 8 Задача 14 8 Задача 15 9 Задача 16 9 Задача 17 9 Задача 18 10 Задача 19 10 Задача 20 10 Задача 21 11 Задача 22 11 Задача 23 12 Задача 24 12 Задача 25 12 Задача 26 13 Задача 27 13 Задача 28 14 Задача 01 Навести мовою асемблер DLX машини приклад циклічної програми та прокоментувати цю програму Відповідь ;************************************************************** ;* * ;* Example DLX code without the use of loop unrolling and * ;* rescheduling. * ;* Assumtions: * ;* R1 initially holds the value 0 * ;* A is an integer array, stored beginning at address 0 * ;* B is an integer array, stored beginning at address 4000 * ;* * ;************************************************************** Loop: lw r2,0(r1) ;get next A value lw r3,40(r1) ;get next B value add r2,r2,r3 ;update A sw 1000(r1),r2 ;store new A addi r1,r1,#4 ;update counter subi r4,r1,#4000 ;check to see if done bnez r4,Loop ;repeat loop if not done trap 0 ;end, return of control to monitor Задача 02 Прокомпілювати while-цикл до RICS-коду за умови, що i, j, k зберігаються у регістрах $s3, $s4, $s5 відповідно, а базу масиву save зберігає $s5 Відповідь Далі символом “доллар” починають позначення регістрів (MIPS асемблер). Первісний цикл мови Сі має вид: while (save[i] == k) i = i + j; Першим кроком завантажуємо до тимчасового регістра, а саме Loop: add $t1, $s3, $s3 # Temp reg $t1 = 2 * i   add $t1, $t1, $t1 # Temp reg $t1 = 4 * i   add $t1, $t1, $s6 # $t1 = address of save[i]   lw $t0, 0($t1) # Temp reg $t0 = save[i]  Наступна інструкція має виконати тест циклу з виходом, якщо . bne $t0, $s5, Exit # go to Exit if save [i] != k  Ще одна інструкція має додати j до і: add $s3, $s3, $s4 # i = i + j  Завершення чергової ітерації циклу, як правило спричинює його повторювання від початку. Тому наступною є інструкція J Loop # go to Loop  Exit:     Задача 03 Навести приклад суперскалярної диспетчеризації програмного коду, наданого фрагментом : Loop: LW R3, 0(R1) ; елемент масиву   ADDU R3, R3, R2 ; додати скаляр з регістру R2   SW 0(R1), R3 ; записати результат   ADDI R1, R1, #-4 ; декремент покажчика   BNE R1, #0, Loop ; перейти, якщо R1 != 0   Відповідь Перші три інструкції скалярного коду мають залежність даних так само, як і останні дві. Припустимо, що операції load/store виконує другий конвеєр суперскалярної машини. Тоді диспетчеризований суперскалярний код, де скасовано зазначені залежності даних, набуде після автоматичної диспетчеризації наступного виду: АЛП або інструкція переходу Інструкція пересилання даних Такти  Loop:  LW R3, 0(R1) 1   ADDI R1, R1, #-4  2   ADDU R3, R3, R2  3   BNE R1, #0, Loop SW 0(R1), R3 4  Потрібні часові витрати скоротилися з 5-ти до 4-х тактових інтервалів. Переставлено місцями дві інструкції додавання аби вичерпати небезпеку існуючі у скалярному коді залежності даних. При цьому лише на 4-му такті вдалося завантажити обидва конвеєри. Ідеальний (без врахування несумісності конвеєрів та залежностей даних) випадок забезпечив би часові витрати із значенням 0.5 такту на інструкцію при використанні двох конвеєрів. Ми отримали реальне значення 0.8 = 4/5 такти на одну інструкцію. Задача 04 Навести приклад суперскалярної диспетчеризації програмного коду з розгортуванням циклів, якщо надано наступний фрагмент недиспетчеризованого скалярного коду процесора MIPS (класу DLX): Loop: LW $T0, 0($S1) ; елемент масиву   ADDU $T0, $T0, $S2 ; додати скаляр з регістру $S2   SW $T0, 0($S1) ; записати результат   ADDI $S1, $S1, - 4 ; декремент покажчика   BNE $S1, $zero, Loop ; перейти, якщо $S1 != 0  Тут символом “доллар” починають позначення регістрів. Літеру Т у своїй назві містять регістри тимчасового збереження локальних змінних фрагменту програми. Через $zero позначено регістр із номером нуль, який завжди містить нуль. Жирним шрифтом позначено регістри, зміна вмістимого яких обумовлює залежність поміж інструкціями за даними Відповідь Перші три інструкції скалярного коду мають залежність даних так само, як і останні дві. Припустимо, що операції load/store виконує другий конвеєр суперскалярної машини. Тоді диспетчеризований суперскалярний код, де скасовано зазначені залежності даних, набуде після автоматичної диспетчеризації з розгортуванням циклів наступного виду: АЛП інструкція або інструкція переходу Інструкція пересилання даних load / store Такти  Loop: ADDI $S1, $S1, 16 LW $T0, 0($S1) 1    LW $T1, 12($S1) 2   ADDU $T0, $T0, $S2 LW $T2, 8($S1) 3   ADDU $T1, $T1, $S2 LW $T3, 4($S1) 4   ADDU $T2, $T2, $S2 SW $T0, 0($S1) 5   ADDU $T3, $T3, $S2 SW $T1, 12($S1) 6    SW $T2, 8($S1) 7   BNE $S1, $zero, Loop SW $T3, 4($S1) 8  Зауважимо, що тут дванадцять з 14-ти інструкцій виконуються в суперскалярній моді і лише дві інструкції – в скалярній моді. Потрібні часові складають для цілого фрагменту 8 тактових інтервалів. Розгорнуто 4-и цикли. Без розгортання часові витрати наближаються до 20 тактових інтервалів. Платнею за прискорення є використання 4-х регістрів тимчасового зберігання замість одного, як у попередній задачі (регістр R3). Задача 05 Користуючись поданими таблицею даними, показати, що не можна коректно оцінювати продуктивність комп’ютерної системи за допомогою арифметичного середнього нормалізованого часу виконання тестових програм Час машини А (сек) Час машини В (сек) Нормалізовано до А Нормалізовано до В          Програма 1 1 10 ? ? ? ?  Програма 2 1000 100 ? ? ? ?  Арифметичне середнє ? ? ? ? ? ?  Геометричне середнє ? ? ? ? ? ?   Відповідь Виконаємо потрібні розрахунки і наповнемо таблицю, як це показано нижче. Час машини А Час Машини В Нормалізовано до А Нормалізовано до В     А В А В  Програма 1 1 сек 10 сек 1 10 0.1 1  Програма 2 1000 сек 100 сек 1 0.1 10 1  Арифмет. середнє 500.5 сек 55 сек 1 5.05 5.05 1  Геометр. середнє 31.6 сек 31.6 сек 1 1 1 1  Аналіз отриманих результатів За усіма значеннями геометричних середніх обидві машини є рівноцінними. При нормалізації до А за арифметичним середнім кращою є машина А (менше значення). При нормалізації до В за арифметичним середнім кращою є машина В. При нормалізації розмірність часу зникає, що спотворює результати порівняння. Тут можлива будь-яка відповідь! Висновок Можна порівнювати лише характеристики, які не втрачають при обрахунку розмірність часу, в нашому випадку - це є арифметичні середні, а саме 500,5 сек та 55 сек. Зрозуміло, що кращою в останньому зазначеному сенсі є машина В (за умови, що до тесту залучено обидві програми). Загалом, лише час виконання прикладної або тестової програми може репрезентувати продуктивність комп’ютерної системи. Задача 06 Маємо дві реалізації тої самої ISA (instruction set architecture). Машина А має довжину тактового інтервалу 1 нс та CPI (clocks per instruction) 2,0 на деякій програмі. Машина В має довжину тактового інтервалу 2 нс та CPI=1,2 на тій самій програмі. Яка машина є швидшою та у скільки разів? Відповідь Зрозуміло, що обидві машини виконують ту ж саму кількість інструкцій, наприклад І. Спочатку визначимо кількість тактів, що використовує кожна машина на виконання програми. Маємо CPU clock cycles A = I * 2,0; CPU clock cycles B = I * 1,2. Розрахуємо час виконання програми на кожній машині. CPU time A = CPU clock cycles A * Clock cycle time A = I * 2,0 * 1 ns = 2* I ns. CPU time B = CPU clock cycles B * Clock cycle time B = I * 1,2 * 2 ns = 2,4* I ns. Ясно, що машина А є швидшою в Execution time B / Execution time A = CPU performance A / CPU performance B = (2,4 * I ns) / ( 2 * I ns) = 1,2. Дійшли висновку, що А швидше від В в 1,2 рази. Задача 07 Проектувальник компілятора намагається зробити вибір на користь одного з двох можливих варіантів компіляції деякого оператора мови програмування високого рівня. При цьому використовуються інструкції класів А, В, С, які розрізняються потрібною кількістю тактових інтервалів на виконання. Варіанти компіляції подано наступною таблицею: Варіант компіляції Кількість інструкцій відповідного класу   А В С  1 2 1 2  2 4 1 1  При цьому проектувальник апаратури спроможний забезпечити наступну витрату тактових інтервалів у кожному класі інструкцій. Клас інструкції СРІ для класу інструкції  А 1  В 2  С 3  Який варіант є кращим та яке значення середнє СРІ забезпечує кожний варіант? Відповідь Варіант 1 виконує 2 + 1 + 2 = 5 інструкцій. Варіант 2 виконує 4 + 1 + 1 = 6 інструкцій. На перший погляд, варіант 1 є швидшим. Розглянемо питання ретельніше. Визначимо кількість тактових інтервалів, витрачених обробкою кожного варіанту. Маємо CPU clock cycles = . Відповідно у першому та другому варіантах отримаємо, що CPU clock cycles 1 = (2х1) + (1х2) + (2х3) = 10 cycles; CPU clock cycles 2 = (4х1) + (1х2) + (1х3) = 09 cycles. Виходить, що варіант 2 є скорішим. Тобто варіант 2 без втрати продуктивності можна виконувати на повільнішому CPU, хоча він і містить більше інструкцій. Визначимо ще середнє значення кількості тактових інтервалів на виконання однієї інструкції в кожному варіанті коду. CPI = CPU clock cycles / Instruction count CPI 1= CPU clock cycles 1 / Instruction count 1 = 10 / 5 = 2; CPI 2 = CPU clock cycles 2 / Instruction count 2 = 9 / 6 = 1,5. Тобто, перевага виникає тоді, коли забезпечено менше середнє значення СРІ. Задача 08 Визначити MIPS-рейтінг (Million Instruction Per Second) для оптимізованого та неоптимізованого варіантів коду. Припустити, що використовується оптимізуючий компілятор для машини з архітектурою load/store за наведеними нижче програмними статистиками: Тип інструкції Питома вага Тактів на виконання  ALU ops 43% 1  Loads 21% 2  Stores 12% 2  Branches 24% 2   Оптимізуючий компілятор скорочує в програмі (тобто оптимізує цю програму) 50% ALU-інструкцій, хоча неспроможний зменшити кількість інструкцій load, store, branch. Припустити також, що в машині реалізовано 2нс тактовий інтервал (500 MHz частота тактування) та для неоптимізованої програми досягнуто значення CPI=1,57 Відповідь Відомо, що неоптимізоване значення MIPS unoptimized = 500MHz / (1.57 * 106) = 318.5 Продуктивність неоптимізованого коду: CPU TimeUnoptimized = IC Unoptimized * 1.57 * (2 * 10-9) = 3.14 * 10-9 * IC unoptimized. Для оптимізованого коду: CPI optimized = [( 0.43 / 2) *1 + 0.21 * 2 + 0.12 * 2 + 0.24 * 2)] / (1- (0.43 / 2)) = 1.73. Тут враховано, що половина АЛП інструкцій “викреслено” оптимізацією і що загальна кількість інструкцій впала. Тому, MIPS optimized = 500 MHZ / 1.73 * 106 = 289.0. Продуктивність оптимізованого коду є: CPU Time Optimized = ( 0.785 * IC unoptimized ) * 1.73 * ( 2 * 10-9 ) = 2.72 * 10-9 * IC unoptimized Висновок: оптимізований код в 3.14 / 2.72=1.15 рази швидший, проте його MIPS рейтинг менший, а саме 289 проти 318! Якість критерія MIPS є незадовільною! Задача 09 Розглянемо машину з трьома класами інструкцій та значеннями СРІ, як то подано наступною таблицею: Клас інструкції СРІ для класу інструкції  А 1  В 2  С 3  Припустимо також, що ще однією таблицею подано результати компіляції деякої програми Джерело коду Кількість інструкцій ( в мільйонах) відповідного класу   А В С  Компілятор 1 5 1 1  Компілятор 2 10 1 1  Нехай машина має тактову частоту 500 Ми. Який компілятор подає більш швидкий код в термінах MIPS (Million Instruction Per Second)? Який час виконання має кожний код? Відповідь Перед усім визначимо час виконання кожного з двох прокомпільованих варіантів програм за допомогою наступних рівнянь: Execution time = CPU clock cycles / Clock rate. СPU clock cycles = . Далі отримуємо, що CPU clock cycles 1 = (05 * 1 + 1 * 2 + 1 * 3) * 10 9 = 10 * 10 9 CPU clock cycles 2 = (10 * 1 + 1 * 2 + 1 * 3) * 10 9 = 15 * 10 9 Тоді Execution time 1 = 10 * 10 9 / 500 * 10 6 = 20 sec Execution time 1 = 15 * 10 9 / 500 * 10 6 = 30 sec Тобто, компілятор 1 генерує більш швидкий програмний код. Зараз прорахуємо MIPS рейтинг. MIPS = Instruction count / Execution time * 10 6 MIPS 1 = (05 + 1 + 1) * 10 9 / 20 * 10 6 = 350, MIPS 2 = (10 + 1 + 1) * 10 9 / 30 * 10 6 = 400. Виходить, що компілятор 2 має вищий MIPS рейтинг, проте генерує повільніший код! Задача 10 Визначити середнє значення прискорення, що забезпечує конвеєрний варіант інформаційного тракту у порівнянні з неконвеєрним за умови, коли в неконвеєрній реалізації довжина одно тактового циклу складає 10 нс, а питома вага чотирициклових АЛП-інструкцій та умовних переходів і п'яти циклових операцій load/store дорівнює, відповідно, 40, 20 і 40 відсотків. Припустити, що складна конвеєрна реалізація збільшує довжину однотактового циклу на 10 відсотків. Відповідь Середній час виконання фрагменту програми складає: 10 нс * (( 40% + 20% ) * 4 + 40% * 5) = 44 нс. Довжина циклу у конвеєрному варіанті: 10 нс + 1нс =11 нс. Прискорення: 44 нс : 11нс = 4. Задача 11 Визначити середнє значення прискорення , яке забезпечує конвеєрний (багато цикловий) варіант інформаційного тракту в порівнянні з прототипним (неконвеєрним, одно цикловим), за умови, що тракт утворено низкою послідовно з"єднаних вузлів із відповідною швидкодією 10 нс, 8 нс, 10 нс, 10 нс, 7 нс. При цьому складна конвеєрна реалізація вимагає збільшення тривалості опрацювання у кожному вузлі на 1 нс Відповідь Середній час на виконання однієї інструкції в неконвеєрному варіанті дорівнює: 10+8+10+10+7=45нс. У конвеєрному варіанті довжина циклу становить: 10+1=11нс. Інструкція в конвеєрі виконується за один цикл (без врахування початкової затримки), тому конвеєр забезпечує прискорення в 45:11=4.1 рази. Задача 12 Проаналізувати вартість втрат ( в скільки разів зменшено швидкодію в порівнянні з ідеальним випадком) за рахунок існування структурної залежності типу load для конвеєрного варіанту скалярного DLX процесора. Припустити, що машина містить нойманівську головну пам’ять. Питома вага посилань на дані складає 40 відсотків у суміші інструкцій. CPI ідеальної машини дорівнює 1, а машина із структурною залежністю має прискорений в 1.05 рази цикл. Відповідь Середній час виконання інструкції: Ідеальна машина не має пригальмувань конвеєра, тому для неї СРІ=1, А середній час виконання інструкції становить AverageInstructionTime=CPI*ClockCycleTimeIdeal. Середній час виконання інструкції у машині із структурними залежностями є: AverageInstructionTime=CPI*ClockCycleTime= [(1+0.4*1)*СlockCycleTimeIdeal] : 1.05 = 1.3 * ClockCycleTimeIdeal. Зрозуміло, що досягається (в ідеалі) прискорення в 1.3 рази. Задача 13 Обгрунтувати доцільність диспетчеризації машинного коду компілятором з метою скасування залежності даних. При цьому розглянути результат компіляції наступної послідовності Сі-операторів: a = b + c; d = e * f; за умови, що латентність завантаження дорівнює одиниці Відповідь Подамо диспетчеризований компілятором код: LW Rb,b LW Rc,c LW Re,e ; swap instruction to avoid stall ADD Ra,Rb,Rc LW Rf,f SW a,Ra ; store/load exchanged to avoid stall SUB Rd,Re,Rf SW d,Rd Обидва защіплювання конвеєра LW Rc, c з ADD Ra,Rb та LW Rf, f з SUB Rd,Re,Rf скасовано. Задача 14 Визначити, який процесор є швидшим у наступній ситуації. Існує альтернатива у виконанні інструкції умовного переходу: - CPU A: код умови визначають окремою інструкцією порівняння, потім виконують ще одну інструкцію умовного переходу, яка тестує код умови; - CPU B: порівняння виконується у складі єдиної інструкції умовного переходу. В обидвох CPU інструкція умовного переходу виконується за два тактових імпульси, інші інструкції - за один тактовий імпульс. В CPU A питома вага інструкцій умовного переходу складає 20% та ще 20% від загальної кількості команд належать інструкціям порівняння, що забезпечують умовні переходи. В CPU A робота інструкції умовного переходу є менш складною в порівнянні із роботою команди умовного переходу в CPU B. Тому в CPUA тактова частота збільшена в 1,25 рази в порівнянні з CPUB Відповідь Визначимо характеристику СРІ для процесора А: CPIA=0.20*2+0.80*1=1.2. Тоді продуктивність процесора А: CPUtimeA=IC*1.2*ClockCycleTimeA. Знайдемо ClockCycleTimeB=1.25*ClockCycleTimeA тому, що А має більше значення тактової частоти. Порівняння не виконуються в процесорі В, саме тому 20%*80% або 25% інструкцій є тут умовні переходи, що виконуються за 2 такти, а решта інструкцій – за один такт. Тому CPIB=0.25*2+0.75*1=1.25. Процесор В не виконує порівнянь. Тому його програма має меншу кількість інструкцій, а саме: ICB=0.8*ICA. Зараз можна визначити продуктивність процесора В: СPUtimeB = ICB*CPIB*ClockCycleTimeB = 0.8*ICA*1.25*(1.25*ClockCycleTimeA) = 1.25*ICA*ClockCycleTimeA. За розглянутих умов процесор А з коротшим тактовим інтервалом є швидшим в порівнянні із процесором В з меншою довжиною програми. Задача 15 Визначити MIPS-рейтинг (Million Instruction Per Second) для оптимізованого та неоптимізованого варіантів коду. Припустити, що використовується оптимізуючий компілятор для машини з архітектурою load/store за наведеними програмними статистиками: Тип інструкції Питома вага Тактів на виконання ALU ops 43% 1 Loads 21% 2 Stores 12% 2 Branches 24% 2 Оптимізуючий компілятор скорочує в програмі (тобто оптимізує цю програму) 50% ALU-інструкцій, хоча неспроможний зменшити кількість інструкцій load, store, branch. Припустити також, що в машині реалізовано 2нс тактовий інтервал (500 MHz частота тактування) та для неоптимізованої програми досягнуто значення CPI=1,57 Відповідь Відомо, що неоптимізоване значення MIPS unoptimized = 500MHz / (1.57 * 106) = 318.5 Продуктивність неоптимізованого коду: CPU TimeUnoptimized = IC Unoptimized * 1.57 * (2 * 10-9) = 3.14 * 10-9 * IC unoptimized. Для оптимізованого коду: CPI optimized = [( 0.43 / 2) *1 + 0.21 * 2 + 0.12 * 2 + 0.24 * 2)] / (1- (0.43 / 2)) = 1.73. Тут враховано, що половина АЛП інструкцій “викреслено” оптимізацією і що загальна кількість інструкцій впала. Тому, MIPS optimized = 500 MHZ / 1.73 * 106 = 289.0. Продуктивність оптимізованого коду є: CPU Time Optimized = ( 0.785 * IC unoptimized ) * 1.73 * ( 2 * 10-9 ) = 2.72 * 10-9 * IC unoptimized Висновок: оптимізований код в 3.14 / 2.72=1.15 рази швидший, проте його MIPS рейтинг менший, а саме 289 проти 318! Якість критерію MIPS є незадовільною! Задача 16 Визначити в скільки разів досягнуто середнє прискорення в машині з кешем в порівнянні з безкешовою машиною. Припустити, що кеш в 10 разів швидший від головної пам’яті. Нехай в 90% випадків CPU обмінюється інформацією з кешем. Відповідь Розрахунки є тривіальними. Їх можна виконати безпосередньо або за допомогою закону Амдаля. Досягається прискорення в 5,3 рази. Задача 17 Дослідити прискорення, отримане за рахунок використання прискореного в 10 разів обладнання, за умови, що нове обладнання використовується тільки на 40% часового інтервалу опрацювання задачі Відповідь Використовуємо закон Амдаля. Тоді: Частка покращення = 0.4; Прискорення покращення = 10; Прискорення загальне = 1 / [0.6 + ( 0.4 / 10 ) ] = 1.56. Тобто, досягнуто прискорення не в 10, а лише в 1.56 рази. Задача 18 Дослідити прискорення, отримане за рахунок застосування форсованого в 10 разів пристрою обчислення кореня квадратного для операндів з рухомою комою або ж, альтернативно, за рахунок дворазового прискорення виконання усіх операцій рухомої коми. При цьому має місце наступна статистика. Питома вага часу виконання операції обчислення кореня у деякій неприскореній тестовій програмі складає 20%. А загалом операції з рухомою комою забирають також у неприскореному варіанті даної тестової програми 50% часу її виконання Відповідь Прискорене в 10 разів виконання лише операції обчислення кореня надає результат: Прискорення тільки_корінь = 1/[(1-0.2)+0.2/10] = 1/0.82 = 1.22 Прискорення виконання програми за рахунок подвоєного прискорення усіх рухомих операцій надає результат: Прискорення усі_рухомі_операції = 1/[(1-0.5) + 0.5/2.0] = 1/0.75 = 1.33 Останній результат є кращим. Висновок – система завжди має лишатися раціонально (розумно) збалансованою в сенсі швидкодії окремих її пристроїв. Задача 19 Визначити прискорення, що отримає машина в ідеальному випадку, за умови 100-відсоткового влучення до кеша. Припустити, що машина має CPI=2, коли всі її звернення до пам’яті задовольняє кеш. В тестовій програмі всі вибирання даних є типу load/store і вибирання даних виконують 40% інструкцій програми. "Покарання" за невлучення до кешу складає 25 циклів(тактових імпульсів), а відсоток невлучень до кеша дорівнює двом Відповідь Перед усім визначимо продуктивність машини, що завжди влучає до кешу: CPUexecutiontime= ( CPUclockcycles+Memorystallcycles)*Clockcycles = ( IC*CPI+0)*Clockcycles = IC*2.0*Clockcycl. Зараз для машини з реальним кешем визначимо значення пригальмування при зверненні до головної пам’яті: МемoryStallCycles= IC * MemoryReferencePerInstruction * MissRate * MissPenalty = IC*(1+0.4)*0.02*25=IC*0.7 Тут множник (1+ 0.4) віддзеркалює одне вибирання кожною інструкцією себе та 0.4 вибирання даних. Загальна продуктивність в реальному випадку складає: CPUexecutionTimeCache= (IC*2.0+IC*0.7) * ClockCycle = 2.7 * IC * ClockCycle Відношення продуктивностей є інверсним до відношення значень часу виконання. Тому CPUexecutTimeCache/CPUexecutTime=(2.7*IC*ClockCycle)/(2.0*IC*ClockCycle) = 1.35 Задача 20 Припустимо, що розглядається вдосконалення машини через додавання апаратури виконання векторних операцій. Обчислення в векторному режимі виконуються на порядок (в 10 разів) скорше, ніж у нормальному скалярному режимі. Будемо називати питому вагу часу, коли машина знаходиться у векторному режимі (проти нормального, скалярного режиму) відсотком векторизації (percentage of vectorization). Подати графік залежності прискорення обчислень (функція) в залежності від відсотка векторизації (аргумент). Який відсоток векторизації забезпечує прискорення в 2 рази? Який відсоток часу виконання треба залишатися у векторній моді, аби досягнути дворазового прискорення? Який відсоток векторизації потрібен, аби досягнути половини максимального прискорення, яке є теоретично досяжним через уведення векторної моди? Нехай визначений в деякий спосіб відсоток векторизації для певної програми дорівнює 70%. Група розробки апаратних засобів каже, що спроможна подвоїти швидкодію векторного обладнання, але із значними додатковими інженерними інвестиціями. Ви знаєте, що група розробки компіляторів спроможна збільшити питому вагу перебування програми у векторній моді і це треба розглядати як дійову альтернативу коштовному апаратному вдосконаленню. На скільки (суто програмно, в спосіб більш раціонального компілювання) треба підвищити питому вагу векторної моди протягом часу виконання неприскореної програми, аби досягнути того ж самого прискорення, як і при подвоєнні швидкодії векторної апаратури? Без відповіді Задача 21 Ваша компанія має деяку тестову програму (benchmark), яка обгрунтовано презентує ваш типову прикладну програму. Ваш вбудований процесор (embedded processor) з рейтінгом 120 MIPS (саме його ви плануєте використовувати) не містить вузла з рухомою комою, тому мусить емулювати кожну рухому операцію послідовністю цілих інструкцій. Сторонній виробник пропонує вам сумісний щодо вашого процесора копроцесор рухомої коми, аби підняти продуктивність. Копроцесор виконує рухомі операції апаратно, тобто без емуляції, тобто, швидше. Комбінація процесор/копроцесор подає рейтинг 80 MIPS на цьому тесті. Треба застосовувати лише наступні символи під час подання відповідей на питання (1-5) цієї задачі: I — кількість цілих інструкцій, що виконує тестова програма, F— кількість рухомих інструкцій, що виконує тестова програма, Y— кількість цілих інструкцій на емуляцію однієї рухомої операції, W— час виконання тесту без копроцесора, B— час виконання тесту з копроцесором. Написати рівняння для MIPS рейтінга для кожної з конфігурацій (є копроцесор, нема копроцесора) із використанням лише поданих вище символів. Для конфігурації без копроцесора виміряно, що F = 8 106, Y = 50, a W = 4 секунди. Знайти I. Чому дорівнює B? Визначити MFLOPS рейтинг для конфігурації з копроцесором? Ваш колега по фірмі вирішив придбати копроцесор не дивлючись на те, що системі із копроцесором притаманна знижка MIPS рейтінгу у порівнянні з ізольованим процесором. Чи має ваш колега рацію? Відповідь треба довести (захистити). Без відповіді Задача 22 Однією з проблем, що виникає під час вимірювання MFLOPS рейтинга, є те, що не всі рухомі операції мають рівну часову складність, тобто, не усі вони мають той самий час виконання. Аби розв’язати зазначену проблему, вимірюють не прямий (натуральний) MFLOPS рейтинг, а його нормалізоване, зважене значення. Таблицею 1 подано, як автори так званого теста “Livermore Loops” (Livermore є містом, де розташовано центр військових ядерних досліджень США) кількістно визначають порівняльну складність операцій рухомої коми, аби нормалізувати ці операції. Іншими словами, натуральний (native) MFLOPS рейтинг є не тим самим, що нормалізований (normalized) MFLOPS рейтинг, на який посилаються у суперкомп’ютерній літературі. Останнє може стати несподіванкою для багатьох комп’ютерних інженерів. Дослідимо ефект від вимірювання зваженого MFLOPS рейтинга. Нехай тестова програма SPEC CFP2000 171.swim виконується на машині Compaq AlphaServer ES40 за 287 секунд. Число операцій з рухомою комою, що складають цей тест, подано таблицею 2. Чому дорівнює натуральний (не нормалізований) MFLOPS для 171.swim на Compaq AlphaServer ES40? З використанням конверсійної таблиці 1 треба знайти нормалізований MFLOPS рейтинг. Розробимо таку Сі програму, яка подає піковий (максимальний) MIPS рейтинг для машини. Викличемо цю програму на двох машинах, аби виміряти іхній піковий MIPS рейтинг. Потім викличемо SPEC CINT2000 176.gcc (знову таки на обидвох машинах). Як добре піковий MIPS прогнозує продуктивність для 176.gcc? Таблиця 1. Реальні проти нормалізованих операцій рухомої коми Додавання, віднімання, порівняння, множення 1 (1 нормалізована = 1 реальна)  Ділення, корень квадратний 4 (4 нормалізовані = 1 реальна)  Функції (Експонента, синус, . . .) 8 (8 нормалізованих = 1 реальна)  The number of normalized floating-point operations per real operation in a program used by the authors of the Livermore FORTRAN kernels, or “Livermore Loops,” to calculate MFLOPS. A kernel with one Add, one Divide, and one Sin would be credited with 13 normalized floating-point operations. Native MFLOPS won’t give the results reported for other machines on that benchmark. Таблиця 2. Рухомі операції в тесті SPEC CFP2000 171.swim. load 77,033,084,546  store 22,823,523,329  copy 4,274,605,803  add 41,324,938,303  sub 21,443,753,876  mul 31,487,066,317  div 1,428,275,916  convert 11,760,563  
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!