A_O_Melnik_Arkhitektura_komp_39_yuteriv
.pdf202
8.Hwu, W.-M. and Y. Patt [1986]. "HPSm, a high performance restricted data flow architecture having minimum functionality", Proc. 13th Symposium on Computer Architecture (June), Tokyo, 297-307.
9.Johnson, M. [1990]. Superscalar Microprocessor Design, Prentice Hall, Englewood Cliffs, N.J.
10.JOUPPI, N. P. A N D D. W. WALL [1989]. "Available instruction-level parallelism for superscalar and superpipelined processors", Proc. Third Conf. on Architectural Support for Programming Languages and Operating Systems, IEEE/ACM (April), Boston, 272-282.
11.Lam, M. [1988]. "Software pipelining: An effective scheduling technique for VLIW processors", SIGPLAN Conf. on Programming Language Design and Implementation, A C M (June), Atlanta, Ga., 318-328.
12.Mahlke, S. A., W. Y. Chen, W.-M. Hwu, B. R. Rau, and M. S. Schlansker [1992]. "Sentinel scheduling for VLIE and superscalar processors", Proc. Fifth Conf. on Architectural Support for Programming Languages and Operating Systems (October), Boston, IEEE/ACM, 238-247.
13.McFarling, S. [1993] "Combining branch predictors", WRL Technical Note TN-36 (June), Digital Western Research Laboratory, Palo Alto, Calif.
14.McFarling, S. and J. Hennessy [1986]. "Reducing the cost of branches", Proc. 13th Symposium on Computer Architecture (June), Tokyo, 396-403.
15.N1COLAU, A. A N D J. A. Fisher [1984]. "Measuring the parallelism available for very long instruction word architectures", IEEE Trans, on Computers C-33:ll (November), 968-976.
16.Pan, S.-T, K. So, and J. T. Rameh [1992]. "Improving the accuracy of dynamic branch prediction using branch correlation", Proc. Fifth Conf. on Architectural Support for Programming Languages and Operating Systems, IEEE/ACM (October), Boston, 76-84.
17.RAU, B. R., C D. GLAESER, A N D R. L. P1CARD [1982]. "Efficient code generation for horizontal architectures: Compiler techniques and architectural support", Proc. Ninth Symposium on Computer Architecture (April), 131-139.
18.Riseman, E. M. and C. C Foster [1972]. "Percolation of code to enhance parallel dispatching and execution", IEEE Trans, on Computers C-2L12 (December), 1411-1415.
19.SMITH, A. and J. LEE [1984]. "Branch prediction strategies and branch-target buffer design", Computer 17:1 (January), 6-22.
20. Smith, J. E. [1981]. "A study of branch prediction strategies", Proc. Eighth Symposium on Computer Architecture (May), Minneapolis, 135-148.
21. Smith, J. E. and A. R. Pleszkun [1988]. "Implementing precise interrupts in pipelined processors", IEEE Trans, on Computers 37:5 (May), 562-573. This paper is based on an earlier paper that appeared in Proc. 12th Symposium on Computer Architecture, June 1988.
22.Smith, M. D., M. Horowitz, and M. S. Lam [1992]. "Efficient superscalar performance through boosting", Proc. Fifth Conf. on Architectural Support for Programming Languages and Operating Systems (October), Boston, IEEE/ACM, 248-259.
23. Smith, M. D., M. Johnson, and M. A. Horowitz [1989]. "Limits on multiple instruction issue". 24. SOHI, G. S. [1990]. "Instruction issue logic for high-performance, interruptible, multiple functi-
onal unit, pipelined computers", IEEE Trans, on Computers 39:3 (March), 349-359.
25. SOHI, G. S. A N D S. Vajapeyam [1989]. "Tradeoffs in instruction format design for horizontal architectures", Proc. Third Conf. on Architectural Support for Programming languages and Operating Systems, IEEE/ACM (April), Boston, 15-25.
26. THORLIN, J. F. [1967]. "Code generation for PIE (parallel instruction execution) computers", Proc. Spring Joint Computer Conf. 27.
27. TOMASULO, R. M. [1967]. "An efficient algorithm for exploiting multiple arithmetic units", IBM J. Research and Development 11:1 (January), 25-33.
28. WALL, D. W. [1991]. "Limits of instruction-level parallelism", Proc. Fourth Conf. on Architectural Support for Programming Languages and Operating Systems (April), Santa Clara, Calif, IEEE/ A C M , 248-259.
203
29.Wall, D. W. [1993]. Limits of Instruction-Level Parallelism, Research Rep. 93/6, Western Research Laboratory, Digital Equipment Corp. (November).
30.WEISS, S. and J. E. Smith [1984]. "Instruction issue logic for pipelined supercomputers", Proc. 11th Symposium on Computer Architecture (June), Ann Arbor, Mich., 110-118.
31.WEISS, S. and J. E. SMITH [1987]. "A study of scalar compilation techniques for pipelined sup ercomputers", Proc. Second Conf. on Architectural Support for Programming Languages and Operating Systems (March), IEEE/ACM, Palo Alto, Calif., 105-109.
32.Yeh, T. and Y. N. Patt [1992]. "Alternative implementations of two-level adaptive branch predicti on", Proc. 19th Symposium on Computer Architecture (May), Gold Coast, Australia, 124-134.
33.YEH, T. AN D Y. N. Patt [1993]. "A comparison of dynamic branch predictors that use two levels of branch history", Proc. 20th Symposium on Computer Architecture (May), San Diego, 257-266.
5.12. Питання до розділу 5
1.Назвіть причини необхідності забезпечення ефективного виконання команд в процесорі.
2.Назвіть три класи конфліктів у конвеєрі команд та причини їх появи.
3.Які є дві групи структурних конфліктів?
4.Наведіть приклад структурних конфліктів, які виникають через потребу порушення такто вої частоти роботи конвеєра.
5.Наведіть приклад структурних конфліктів, які виникають у зв'язку з необхідністю очіку вання на звільнення ресурсів комп'ютера.
6.Чому розробники допускають наявність структурних конфліктів?
7.Яка причина створення процесорів з неконвеєрними функціональними пристроями?
8.На який час потрібно призупинити роботу конвеєра команд при появі структурних конф ліктів?
9.Які є способи вирішення структурних конфліктів?
10.Коли виникає конфлікт за даними?
11.Назвіть три можливі конфлікти заданими.
12.Поясніть суть конфлікту "читання після запису".
13.Поясніть суть конфлікту "запис після читання".
14.Поясніть суть конфлікту "запис після запису".
15.Які можливі конфлікти за даними?
16.Які є методи зменшення впливу залежностей між даними на роботу конвеєра команд?
17.Що дає призупинення роботи конвеєра при виявленні конфлікту за даними?
18.Що дає застосування випереджувального пересилання при виявленні конфлікту за даними?
19.Як реалізується в конвеєрі команд випереджувальне пересилання?
20.Чи завжди є можливим випереджувальне пересилання?
21.Приведіть приклади можливих та неможливих випереджувальних пересилань.
22.Що роблять, оптимізуючи компілятори, щоб не допустити конфліктів за даними?
23.Які є ознаки наявності конфліктів за даними?
24.Для яких частин програми є ефективною статична диспетчеризація послідовності команд під час компіляції?
25.Як здійснюється динамічна диспетчеризація послідовності команд у програмі під час ком піляції?
26.Поясніть суть методу перейменування регістрів.
27.Які є типи конфліктів керування?
28.Назвіть способи зниження втрат на вибірку команд переходу.
29.Поясніть суть способу обчислення виконавчої адреси команди переходу в ярусі декоду вання команди.
204
30.Поясніть суть способу використання буфера адрес переходів.
31.Поясніть суть способу використання буфера команд переходів.
32.Поясніть суть способу використання буфера циклу.
33.Назвіть способи зниження втрат на виконання команд умовного переходу.
34.Поясніть суть способу введення буфера попередньої вибірки з метою зниження втрат на виконання команд умовного переходу.
35.Поясніть суть способу дублювання початкових ярусів конвеєра з метою зниження втрат на виконання команд умовного переходу.
36.Поясніть суть способу затримки переходу з метою зниження втрат на виконання команд умовного переходу.
37.Поясніть суть способу статичного передбачення переходу з метою зниження втрат на ви конання команд умовного переходу.
38.Назвіть методи статичного передбачення умовного переходу.
39.Поясніть суть методу повернення, який застосовується при статичному передбаченні умовного переходу.
40.Поясніть суть методу профілювання, який застосовується при статичному передбаченні умовного переходу.
41.Поясніть суть методу статичного передбачення умовного переходу, за яким результат пе реходу визначається кодом операції команди переходу.
42.Поясніть суть методу статичного передбачення умовного переходу, за яким результат пе реходу визначається напрямом переходу.
43.Поясніть суть динамічного передбачення переходу.
44.Що таке таблиця історії переходів? Як вона реалізується?
45.Наведіть однорівневу схему передбачення переходу з формуванням адреси таблиці історії переходів в програмному лічильнику.
46.Наведіть однорівневу схему передбачення переходу з формуванням адреси таблиці історії переходів у регістрі глобальної історії.
47.Наведіть однорівневу схему передбачення переходу з комбінованим формуванням адреси таблиці історії переходів в програмному лічильнику та в регістрі глобальної історії.
48.Наведіть дворівневу схему передбачення переходу з використанням таблиці локальної
історії.
49.Наведіть структуру гібридної схеми передбачення переходу.
50.Проаналізуйте тотожність та розбіжність КДФК і суперскалярної архітектур.
51.Визначте місце суперскалярних і КДФК архітектур в ієрархії сучасних комп'ютерів.
52.Визначте та поясніть основні чинники, що обмежують ефективність КДФК архітектури.
53.Наведіть основні ідеї, покладені в основу архітектури ЕРІС.
Розділ 6
сАморитміьІшкона^
а&ра&шдотік
Операції обробки даних ініціюються відповідними командами обробки даних. До числа цих операцій входять:
•логічні операції (логічне множення, логічне додавання, інверсія і т. д.) над розряда ми слів, скалярами та векторами;
•операції зсуву (праворуч, ліворуч) над скалярами та векторами;
•операції відношення: менше, більше, рівне, менше-рівне, більше-рівне;
•арифметичні операції (додавання, віднімання, множення та ділення) над одиноч ними даними та векторами даних;
•операції обчислення елементарних функцій типу exp X, In X, Sin X, Cos X, arctg y/x, Sh X, Ch X, піднесення до степеня A m ;
•операції перетворення даних (перетворення із формату з фіксованою в формат з рухомою комою і навпаки, перетворення з двійково-десяткового коду в двійковий і на впаки і т. д.);
•операції реорганізації масивів і визначення їх параметрів: сортування, пошук мак симуму або мінімуму, вибір заданого масиву, зсув елементів масиву, стиск масиву;
•операції обробки символів та стрічок символів: пошук символу, зсув, заміна симво лів у стрічці, пакування стрічок символів, порівняння стрічок символів.
В останніх комп'ютерах у зв'язку з широким використанням засобів телекомунікацій та мультимедіа до складу основних операцій добавилися складні операції типу коду вання, компресії, шифрування тощо.
В даному розділі розглянемо основні алгоритми виконання вищеназваних операцій, не вникаючи в питання їх реалізації в комп'ютері.
6.1. Логічні операції
До складу команд обробки даних входить велика кількість команд, які ініціюють логічні операції. До їх числа входять операції булевої алгебри: логічне множення, до давання, додавання по модулю два, інверсія і т. д. При цьому логічні операції можуть виконуватись над окремими розрядами слова, над одиночними даними, а також над векторами даних.
Логічні операції передбачають побітову обробку даних. Коли говорять про логічну операцію над парою слів, то мається на увазі, що проводяться окремі операції над кож ною парою біт, які входять до цих слів.
Розділ 6
Операції обробки даних ініціюються відповідними командами обробки даних. До числа цих операцій входять:
•логічні операції (логічне множення, логічне додавання, інверсія і т. д.) над розряда ми слів, скалярами та векторами;
•операції зсуву (праворуч, ліворуч) над скалярами та векторами;
•операції відношення: менше, більше, рівне, менше-рівне, більше-рівне;
•арифметичні операції (додавання, віднімання, множення та ділення) над одиноч ними даними та векторами даних;
•операції обчислення елементарних функцій типу exp X, In X, Sin X, Cos X, arctg y/x, Sh X, Ch X, піднесення до степеня A m ;
•операції перетворення даних (перетворення із формату з фіксованою в формат з рухомою комою і навпаки, перетворення з двійково-десяткового коду в двійковий і на впаки і т. д.);
•операції реорганізації масивів і визначення їх параметрів: сортування, пошук мак симуму або мінімуму, вибір заданого масиву, зсув елементів масиву, стиск масиву;
•операції обробки символів та стрічок символів: пошук символу, зсув, заміна симво лів у стрічці, пакування стрічок символів, порівняння стрічок символів.
Востанніх комп'ютерах у зв'язку з широким використанням засобів телекомунікацій та мультимедіа до складу основних операцій добавилися складні операції типу коду вання, компресії, шифрування тощо.
Вданому розділі розглянемо основні алгоритми виконання вищеназваних операцій, не вникаючи в питання їх реалізації в комп'ютері.
6.1. Логічні операції
До складу команд обробки даних входить велика кількість команд, які ініціюють логічні операції. До їх числа входять операції булевої алгебри: логічне множення, до давання, додавання по модулю два, інверсія і т. д. При цьому логічні операції можуть виконуватись над окремими розрядами слова, над одиночними даними, а також над векторами даних.
Логічні операції передбачають побітову обробку даних. Коли говорять про логічну операцію над парою слів, то мається на увазі, що проводяться окремі операції над кож ною парою біт, які входять до цих слів.
206
6.1.1. Операція заперечення
Операція заперечення (інверсія, НЕ, N O T ) є операцією над одним операндом і озна чає, що біти із значенням "0" набувають значення "1" і навпаки. Для відображення дії ло гічної операції часто використовують так звані таблиці істинності. Табл. 6.1 є таблицею істинності для операції заперечення.
Таблиця 6.1
біт операнда |
біт результату |
0 |
1 |
1 |
0 |
Приклади:
N O T (1000 10100010 1100) = 0111 0101 1101 0011. N O T Q l l O 1011 1010 0111) = 0001 01000101 1000.
6.1.2. Логічне І
Ця операція (загальноприйняте позначення I, A N D ) передбачає наявність як міні мум двох операндів, назвемо 'їх X та Y. Вона виконує порозрядну кон'юнкцію змінних, тобто отримання одиниці лише тоді, коли всі вхідні змінні рівні одиниці. Відобразимо значення функції наступною таблицею істинності (табл. 6.2.)
Таблиця 6.2
бітХ |
бітУ |
біт результату |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|
|
Приклади виконання операції логічного множення приведено на рис. 6.1.
1101 0011 0010 1110 |
1100 0101 0010 1100 |
0011 0010 1111 0000 |
1100 1101 1111 0010 |
= 0001 0010 0010 0000 |
= 1100 0101 0010 0000 |
Рис. 6.1. Приклади виконання операції логічного множення
6.1.3. Логічн" АБО
Ця операція (загальноприйняте позначення АБО, ОЯ) також передбачає наявність як мінімум двох операндів X та У. Вона виконує порозрядну диз'юнкцію змінних, тобто отримання одиниці тоді, коли хоча б одна вхідна змінна рівна одиниці. Відобразимо зна чення функції наступною таблицею істинності (табл. 6.3).
Таблиця 6.3
бітХ |
біт Y |
біт результату |
0 |
0 |
0 |
0 |
1 |
1 |
207
1 |
0 |
1 |
1 |
1 |
1 |
|
|
|
Приклади виконання операції логічного додавання приведено на рис. 6.2.
( Ж |
1101 ООП 0010 1110 |
е ж |
11000101 0010 1100 |
|
ООП 0010 1111 0000 |
1100 1101 1111 0010 |
|||
|
|
|||
= 1111001111111110 |
= 1100 1101 1111 1110 |
|||
Рис. 6.2. Приклади виконання операції логічного додавання
6.1.4. Виключне АБО
Також цю операцію ще називають додавання за модулем два (ХОЯ), оскільки вона виконує порозрядне додавання вхідних змінних за модулем два. Ця операція виконуєть ся як мінімум над двома операндами X та У. Відобразимо значення функції наступною таблицею істинності (табл. 6.4).
Таблиця 6.4
бітХ |
біт У |
біт результату |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Приклади виконання операції логічного додавання за модулем два наведено на рис. 6.3.
т т ^ |
1101 0011 0010 1110 |
Л Х , ^ |
1100 0101 0010 1100 |
чїї) |
0011 0010 1111 0000 |
А \і І ) |
1100 1101 1111 0010 |
|
" |
||
= |
0001 0010 0010 0000 |
= |
1100 0101 0010 0000 |
Рис. 6.3. Приклади виконання операції логічного додавання за модулем два
6.2.Операції зсуву
6.2.1. Логічні зсуви
При виконанні логічного зсуву праворуч або ліворуч всі розряди слова зсуваються на один розряд у відповідну сторону, в перший розряд записується нуль, а останній роз ряд випадає (рис. 6.4). Зсуви досить часто використовуються як складові операції при виконанні багатьох алгоритмів обробки даних. Для формату представлення даних без знаків зсув на один розряд ліворуч еквівалентний множенню на два, а на один розряд праворуч - відповідно цілочисельному діленню на два.
208
СГ'
|
Логічний зсув ліворуч |
|
|
|
|
||
6 |
6 |
6 |
|
|
"0" |
||
|
Логічний зсув праворуч |
|
|
|
|||
Ь |
|
ь |
|
ь |
|
о - |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
Рис. 6.4. Логічний зсув ліворуч та праворуч
Команда логічного зсуву має наступні поля: код логічної операції зсуву праворуч або ліворуч, адреса операнда та код зсуву, який вказує величину зсуву, тобто кількість розрядів, на які має бути проведений зсув. Якщо операнд позначити через X, а код зсуву через У, то результат X виконання операції буде рівним X = X 2 + / у , де знак "+" відповідає зсуву ліворуч, а знак "-" - праворуч.
6 . 2 . 2 . Арифметичні зсуви
Арифметичні зсуви дуже подібні до попередніх (логічних), але вони мають таку особ ливість, як розмноження знака при зсуві праворуч та збереження знака при зсуві ліво руч (рис. 6.5).
• - ^ ^ |
|
Арифметичний зсув ліворуч |
|
|
|
|
Ч б |
с |
О |
О О « |
|||
0 |
|
|
Арифметичний зсув праворуч |
|
|
|
У |
О |
О |
О |
|
»• |
|
|
|
|||||
Рис. 6.5. Арифметичний зсув ліворуч та праворуч
Такі зсуви також мають зміст множення і ділення на два для формату представлення даних із знаками в оберненому та доповняльному кодах. Вони дозволяють після операції зсуву ліворуч зберегти знак представленого числа та після операції зсуву праворуч збе регти коректний результат ділення на два.
Команда арифметичного зсуву має наступні поля: код операції арифметичного зсуву праворуч або ліворуч, адреса операнда та код зсуву, який вказує величину зсуву, тобто кількість розрядів, на які має бути проведений зсув.
6 . 2 . 3 . Циклічні зсуви
Циклічний зсув передбачає, що розряди, які витісняються з одного боку операнда, дописуються з іншого його боку (рис. 6.6).
209
Ц и к л і ч н и й зсув ліворуч
Рис. 6.6. Циклічний зсув ліворуч та праворуч
Команда циклічного зсуву має наступні поля: код операції циклічного зсуву право руч або ліворуч, адреса операнда та код зсуву, який вказує величину зсуву, тобто кіль кість розрядів, на які має бути проведений зсув.
6.3.Операції відношення
6.3.1. Порівняння двійкових кодів на збіжність
Операція порівняння двійкових кодів на збіжність дає логічний результат, рівний одиниці, якщо коди збігаються. В інших випадках значення результату рівне нулю. Ви конувана функція визначається наступним булевим рівнянням:
п
Z = A N D ((X. A N D Y.) OR ( N O T ( X ) A N D NOT(Y.))),
i = 0
де і = 0, 1 ... n - номери розрядів чисел X та Y, які порівнюються, Z - розряд ре зультату.
6.3.2. Визначення старшинства двійкових кодів
Операції визначення старшинства двійкових кодів, тобто визначення, яке з двох чи сел є меншим, більшим, меншим-рівним, більшим-рівним, виконуються з використан ням двійкового віднімання.
Якщо це числа без знаків, то при відніманні першого числа від другого отриманий результат може бути більшим нуля, рівний нулю, або меншим нуля. Тоді, якщо отрима ний результат є більшим нуля, то перше число є більшим від другого, якщо отриманий результат рівний нулю, то числа рівні, а якщо отриманий результат є меншим нуля, то друге число є більшим від першого.
Якщо це числа із однаковими знаками, то при відніманні першого числа від другого отриманий результат може бути додатнім, рівним нулю, або від'ємним. Тоді якщо отри маний результат рівний нулю то числа рівні, при від'ємному результаті перше число є меншим другого, а друге відповідно більшим, а при додатному результаті перше число є більшим, а друге відповідно меншим від першого. Якщо ж це числа із різними знаками, то більшим є додатне число.
Н З г м . 371.
210
6.4.Арифметичні операції
Команди обробки даних також ініціюють виконання арифметичних операцій. Це операції додавання, віднімання, множення та ділення над числами, представленими в форматах з фіксованою та рухомою комою. При цьому арифметичні операції також мо жуть виконуватись як над скалярними даними, так і над векторами.
До арифметичних належать також наступні операції над одиночними операндами:
•взяття абсолютної величини від операнда;
•інверсія знака операнда;
•прирощення операнда на одиницю;
•зменшення операнда на одиницю.
Методи реалізації арифметичних операцій в комп'ютерах вибирають з врахуванням потрібної швидкодії, формату представлення чисел, системи числення та інших техні- ко-економічних і системних факторів. Критерієм вибору методу зазвичай є досягнен ня мінімальних затрат обладнання, максимальної швидкодії або оптимального співвід ношення затрат обладнання і швидкодії. Існує велика кількість алгоритмів виконання арифметичних операцій в комп'ютері. В даному розділі розглянемо лише основні алго ритми, а питання їх модифікації та реалізації будуть розглянуті в наступних розділах.
6.4.1. Додавання двійкових чисел без знаків
Додавання в двійковій системі числення відбувається подібно до звичайного дода вання в десятковій системі. Додаються два розряди, які розміщені у числі на одній по зиції. При виникненні переносу він передається в старший розряд і там додається. В загальному додавання можна описати наступними формулами:
S. = X XOR у. XOR с.
с._, = (х. AND у) OR (х. AND с.) OR (у. AND с.)
со = °
де: S. - і-тий розряд суми, х., у. - і-ті розряди першого та другого доданків відповідно, с - розряд переносу.
Ці формули отримані з наступної таблиці істинності (табл. 6.5).
Таблиця 6.5
с. |
X. |
У, |
S. |
|
1 |
і |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
