- •Организация эвм
- •1. Принципы джона фон нейман. Поколения эвм
- •1.1. Принципы Джона фон Нейман
- •1.2. Поколения эвм: от ламп к интегральным микросхемам
- •1.2.1. Первое поколение эвм (1948 — 1958гг.)
- •1.2.2. Второе поколение эвм (1959 — 1967 гг.)
- •1.2.3. Третье поколение эвм (1968 — 1973 гг.)
- •Четвертое и пятое поколения эвм (1974 — настоящее время)
- •2. Архитектура технических средств
- •2.1.Микропроцессор
- •2. Краткие сведения об остальных компонентах компьютера
- •2.3. Функциональное назначение
- •2.4. Использование разъемов расширения
- •2.5. Совместимость блоков расширения
- •3. Классификация компьютеров по областям применения
- •3.1. Персональные компьютеры и рабочие станции
- •3.3. Серверы
- •3.4. Мейнфреймы
- •3.5. Кластерные архитектуры
- •4. Система прерываний
- •4.1. Общие сведения
- •4.2. Обработка прерываний.
- •4.3. Программирование контроллера прерываний
- •4.4. Обработка прерываний в реальном режиме
- •5. Иерархия памяти
- •5.1. Организация кэш-памяти
- •5.1.1. Где может размещаться блок в кэш-памяти?
- •5.1.2. Как найти блок, находящийся в кэш-памяти?
- •5.1.3. Какой блок кэш-памяти должен быть замещен при промахе?
- •5.1.4. Что происходит во время записи?
- •5.2.2. Развитие оперативной памяти
- •5.2.3. Установка оперативной памяти
- •5.3. Виртуальная память и организация защиты памяти
- •5.3.1. Концепция виртуальной памяти
- •5.3.2. Страничная организация памяти
- •5.3.3 Сегментация памяти
- •6. Организация ввода/вывода
- •6.1. Системные и локальные шины
- •6.2. Стандарты шин
- •6.3. Устройства ввода/вывода
- •6.3.1. Магнитные и магнитооптические диски
- •6.3.2. Дисковые массивы и уровни raid
- •6.3.3. Устройства архивирования информации
- •7. Многопроцессорные и многомашинные системы
- •7.1. Классификация эвм параллельной обработки
- •7.2. Модели связи и архитектуры памяти
- •8. Конвейерная обработка
- •8.1. Параллелизм и конвейеризация
- •8.2. Оценка производительности идеального конвейера
- •8.3. Конфликты в конвейере и способы минимизации их влияния на производительность процессора
- •8.3.1. Структурные конфликты
- •8.3.2. Конфликты по управлению
- •8.3.3. Конфликты по данным
- •9. Периферийные устройства
- •9.1. Принтеры
- •9.2. Мыши
- •9.3. Модемы
- •9.4. Сканеры
- •9.5. Накопители на жестких магнитных дисках
- •9.6. Накопители на гибких магнитных дисках
- •9.7. Накопители на компакт-дисках
- •9.8. Магнитооптические диски
- •9.9. Стримеры
- •9.10. Дигитайзеры
- •9.11. Плоттеры
- •9.12 Видеобластеры
- •9.13. Звуковые платы
- •9.14. Акустические системы
- •9.15. Трекболы
- •9.16 Джойстики
- •9.17. Источники бесперебойного питания.
- •Оглавление
8.3.2. Конфликты по управлению
Возникают при конвейеризации команд переходов и других команд, изменяющих значение счетчика команд.
Суть конфликтов этой группы наиболее удобно проиллюстрировать на примере команд условного перехода. Пусть в программе, представленной в табл. 8.1, команда «i+1» является командой условного перехода, формирующей адрес следующей команды в зависимости от результата выполнения команды «i». Команда «i» завершит свое выполнение в такте 5. В то же время команда условного перехода уже в такте 3 должна прочитать необходимые ей признаки, чтобы правильно сформировать адрес следующей команды. Если конвейер имеет большую глубину (например, 20 ступеней), то промежуток времени между формированием признака результата и тактом, где он анализируется, может быть еще большим. В инженерных задачах примерно каждая шестая команда является командой условного перехода, поэтому приостановки конвейера при выполнении команд переходов до определения истинного направления перехода существенно скажутся на производительности процессора.
Наиболее эффективным методом снижения потерь от конфликтов по управлению служит метод предсказания переходов. Суть данного метода заключается в том, что при выполнении команды условного перехода специальный блок микропроцессора определяет наиболее вероятное направление перехода, не дожидаясь формирования признаков, на основании анализа которых этот переход реализуется. Процессор начинает выбирать из памяти и выполнять команды по предсказанной ветви программы (так называемое исполнение по предположению, или «спекулятивное» исполнение). Однако так как направление перехода может быть предсказано неверно, то получаемые результаты с целью обеспечения возможности их аннулирования не записываются в память или регистры (то есть для них не выполняется этап WB), а накапливаются в специальном буфере результатов.
Если после формирования анализируемых признаков оказалось, что направление перехода выбрано верно, все полученные результаты переписываются из буфера по месту назначения, а выполнение программы продолжается в обычном порядке. Если направление перехода предсказано неверно, то буфер результатов очищается. Также очищается и конвейер, содержащий команды, находящиеся на разных этапах обработки, следующие за командой условного перехода. При этом аннулируются результаты всех уже выполненных этапов этих команд. Конвейер начинает загружаться с первой команды другой ветви программы. Так как конвейерная обработка эффективна при большом числе последовательно выполненных команд, то перезагрузка конвейера приводит к значительным потерям производительности. Поэтому вопросам эффективного предсказания направления ветвления разработчики всех микропроцессоров уделяют большое внимание.
Методы предсказания переходов делятся на статические и динамические.
При использовании статических методов до выполнения программы для каждой команды условного перехода указывается направление наиболее вероятного ветвления. Это указание делается или программистом с помощью специальных средств, имеющихся в некоторых языках программирования, по опыту выполнения аналогичных программ либо результатам тестового выполнения программы, или программой-компилятором по заложенным в ней алгоритмам.
Методы динамического прогнозирования учитывают направления переходов, реализовывавшиеся этой командой при выполнении программы. Например, подсчитывается количество переходов, выполненных ранее по тому или иному направлению, и на основании этого определяется направление перехода при следующем выполнении данной команды.
В современных микропроцессорах вероятность правильного предсказания направления переходов достигает 90-95%.