Karh09 20

20. Конвейерно изпълнение на инструкциите.


страницата се нуждае от дописване/преглеждане


При създаването на процесорите целта е била просто да има компютър който да смята. Трябва да е удобен за работа и тогава се развиват нещата свързани с ОС, входно изходните системи, периферните устройства. Правенето на по-производителни машини тръгва в две посоки:
1. да се направи нова архитектура – не фон нойманова. Правят се предложения които не намират достатъчно потенциял за развитието
2. другата посока е търсене средства за ускоряване на класическата фон нойманова арх. При което започва едно надлъгване с класическите принципи(изпълнението на инструкциите една след друга). Алгоритмите на фон ноймановите машини се базират на последователността на изпълнение на инструкциите(инструкцията се изпълнява до край и по никакъв начин не се пререждат инструкциите). Тази класическа арх се сблъсква с ускоряването на процесорите. Сега ще разгледаме как се ускоряват процесорите и как това дава конфликт с фон ноймановите арх. Хенри Форд създава революционен фабричен конвейер за сглобяване на автомобили. На поточната линия се слага едно шаси и върху него се работи на пунктове и хората чакат да им доиде поредния автомобил. На края на линията излиза готов автомобил. Това се опитва да се приложи на процесорите. Така и така отделяме поне 4 етапа в изпълнението на инструкцията и идеята е да се вкара конвейер в изпълнението на инструкциите. Тук е дадена схемата на изпълнението на идеалния конвейер. Всички обекти минават през едни и същи етапи. Конвейера трябва да се движи синхронно и се движи със закъснението на най-бавния етап. Няма взаимно влияние между обектите които са в различните стъпки. Времето за минаване през един етап е едно и също за всички етапи. Тук разглеждаме един обект да е една инструкция.
untitled61.JPG

Структура на конвейера

Как изглежда конвейера на процесора:
untitled62.JPG
Всички инструкции минават през 3 етапа:
• Извличане (изпълнява се от блока за управление на шината) - fetch
• Дешифриране (управляващо устройство) и изпълнение (АЛУ)
• Записване и write back
untitled63.JPG
tC - време на конвейера
tIM - време за извличане на инструкцията
tRF - време за извличане от регистъра
tALU - времето за операцията в АЛУ-то
tDM - време за запис в паметта
tRW - време за връщане обратно в регистъра

Конвейера прави по-бързо изпълнението на група инструкции(линеен участък). Не прави по-бързо изпълнението на една инструкция!
По-бърз конвейер се получава при 5-стъпково разделяна на изпълнението на инструкциите:
untitled64.JPG
Всички инструкции минават през 5 етапа:
• Извличане (изпълнява се от блока за управление на шината) - fetch
• Дешифриране (управляващо устройство)
• Изпълнение (АЛУ)
• Записване
• write back
Ако гледаме картинката по-горе когато подадем 5 последователни инструкции на конвейера на етапа t4 вече имаме пълна натовареност. И петте инструкции се обработват едновременно на различните етапи. Така ще получим резултатът от изпълнението и на петте след по-малко време, отколкото при предишния вариант с конвейер с 3 етапа.
Обяснения по следната схема:
untitled65.JPG
За различните регистри за етапите на инструкцията. Инструкцията трябва да се предвижва в няколко копия на инструкционния регистър. Трябва да има 4 копия на инструкционния регистър защото в изпълнение са 4 инструкции и се чете петата инструкция.

Проблеми с конвейера.

1. Може ресурсите от които се нуждае една инструкция да се използват от друга. Това се нарича структурен риск.
2. Може една инструкция да зависи от резултата от друга инструкция. Това се нарича риск на данните. Или да има условен преход.

Риск за данните.
(когато инструкциите зависят една от друга от страна на изчисление на данни)Стратегии за разрешаване:
1. Да се изчака да стане готов резултата, замръзва се конвейера, изкарва се резултата и се използва от инструкцията.
2. Байпас – когато тези данни прескачат през стъпалата да осгурят тази зависимост от данни.
3. Да се спекулира със зависимостта.

Какво е нужно да се изчисли при следващия програмен брояч?
При jump - при декодирането стават известни Opcode, offset и PC.
При условните преходи трябва да мине проверката на АЛУ-то.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License