- •Организация эвм и систем
- •Глава 6 Организация памяти
- •Глава 1. Структура современного компьютера
- •1.1 Основные понятия
- •1.2 Принцип действия компьютера
- •Цикл работы компьютера
- •1.3 Программное обеспечение компьютера
- •1.4 Надежность, производительность и показатели быстродействия
- •Производительность компьютера
- •Технико-эксплуатационные характеристики
- •1.5 Вычислительные системы и сети
- •Вопросы для самопроверки
- •Глава 2 представление информации в компьютере
- •5.2 Система команд. Форматы команд и способы адресации
- •5.3 Система прерываний и приостановок, состояние процессора
- •Характеристики системы прерываний
- •Организация перехода к прерывающей программе
- •5.4 Режимы работы процессора: однопрограммный, пакетный, разделения времени, реального времени
- •5.5 CisCиRisCкомпьютеры
- •Процессоры персональных компьютеров
- •5.6 Устройства управления
- •Устройства управления с хранимой в памяти логикой
- •5.7 Методы и средства повышения производительности процессоров персональных компьютеров
- •Суперскалярная обработка
- •Переименование регистров
- •Динамическое прогнозирование условных переходов
- •Контроллер памяти Контроллер pci
- •Вопросы для самопроверки
- •Глава 6. Организация памяти
- •6.1 Адресное пространство
- •6.2 Виды памяти
- •6.3 Оперативная память
- •Статическая и динамическая память
- •6.5 Внешняя память
- •6.6 Организация виртуальной памяти
- •Страничное, сегментное и странично-сегментное распределение
- •Свопинг
- •6.7 Защита памяти
- •Вопросы для самопроверки
- •Глава 7. Интерфейсы
- •7.1 Понятие интерфейса и его характеристики
- •7.1 Состав линий системной шины
- •Передача данных по проводным линиям связи По линиям связи современных интерфейсов преимущественно передаются низкочастотные дискретные одно - и биполярные сигналы (рисунок 7.Х).
- •Адрес верный
- •7.2 Подключение устройств
- •7.4 Интерфейсы внешней памяти
- •7.5 Малые интерфейсы (usb,ide,rs-232c,scsi)
- •Вопросы для самопроверки
- •Глава 8. Периферийные устройства компьютеров
- •8.1 Организация систем ввода-вывода. Каналы, контроллеры
- •Основные функции свв
- •Программный ввод-вывод
- •Прямой доступ в память
- •8.2 Клавиатура и мышь
- •8.3 Дисплеи
- •8.4 Принтеры
- •8.5 Накопители на магнитных дисках
- •Структура накопителя на жестких дисках
- •Структура и особенности накопителя на гмд
- •8.6 Накопители на компакт-дисках (cd-rom, cd-r, cd-rw, dvd)
- •8.7 Другие виды периферийных устройств
- •Вопросы для самопроверки
- •Какие особенности пу делают возможным организацию параллельной обработки и ввода-вывода?
- •Закон Амдала
- •Совместно используемая и распределенная память
- •Когерентность кэш-памяти
- •Наибольшее распространение получили следующие аппаратные механизмы, реализующие протокол когерентности кэш-памяти: это протоколы наблюдения и на основе справочника.
- •9.2 Конвейерные системы
- •Векторные регистры
- •9.3 Симметричные системы
- •9.4 Вычислительные системы со сверхдлинным командным словом
- •9.5 Другие виды мультипроцессорных систем
- •Машины с массовым параллелизмом
- •Нейрокомпьютеры
- •9.6 Проблемно-ориентированные системы
- •Вопросы для самопроверки
- •Глава 10. Организация вычислительного процесса
- •12.2 Системы автоматического контроля и диагностики
- •Контроль передач информации
- •Контроль арифметических операций
- •12.3 Защита памяти. Raid-массивы
- •12.4 Построение «безотказных» систем питания Вопросы для самопроверки
- •Список литературы
Суперскалярная обработка
Процессор называют скалярным, если одновременно на ступень декодирования может подаваться лишь по одной команде, а в процессоре предусмотрен единственный конвейер команд. Однако попытки увеличить производительность привели к тому, что в современных микропроцессорах обычно имеется несколько (от двух до четырех) конвейеров, что позволяет производить одновременную обработку большего числа команд. Такие процессоры принято называть суперскалярными.
В зависимости от количества используемых конвейеров современные суперскалярные процессоры бывают двух- и четырехпотоковыми. Эти названия происходят от числа «потоков» одновременно обрабатываемых команд. На рисунке 5.х показана структурная схема наиболее простого классического двухпотокового суперскалярного процессора. Команды из кэш-памяти команд поступают в буферные регистры, откуда передаются на ступень декодирования кода операции. Дальнейшее выполнение команды происходит на конвейере, который момент декодирования кода операции оказался свободным. [В современных процессорах, предназначенных для персональных компьютеров, эти конвейеры обычно неравноценны, поэтому команда для дальнейшего выполнения передается на тот конвейер, который способен ее выполнить.]
Но ни в одном из суперскалярных процессоров одновременно не может обрабатываться максимальное число команд, на которое он рассчитан, из-за возможных «заторов». Если по какой-либо причине команда в одном из конвейеров не может выполняться, т.е. возникает «затор», то приостанавливается и выполнение команды в другом конвейере, поскольку все команды должны завершать свое выполнение в строго определенном порядке.
Это упрощает структуру суперскалярного процессора, но не эффективно с точки зрения его производительности, так как производительность определяется средним числом команд, обрабатываемых за один такт, а число команд уменьшается из-за простоев конвейера.
Кэш-память
команд
Интерфейс
Буферные
регистры выборки
Кэш-память
данных
Блок
регистров
Декодирование
Выборка
операнда Выборка
операнда
Исполнение
Исполнение
Запись
результата Запись
результата
Рисунок 5.х Двухпотоковый суперскалярный процессор
Процессоры, допускающие работу одного из конвейеров при заторе в других, называют процессорами, обладающими архитектурой с неупорядоченной обработкой. Если разрешить выполнение команд в одном из конвейеров при возникновении «затора» в другом, то более поздние команды программы могут оказаться выполненными раньше предшествующих им. Для исключения неправильных результатов нужно сделать так, чтобы результаты этих операций не заносились в память, а содержимое регистров не модифицировалось в ошибочной последовательности, т.е. должны быть предусмотрены схемы и методы, позволяющие «восстановить» правильность вычислительного процесса.
Для реализации неупорядоченной обработки между ступенями декодирования и исполнения в конвейере размещают специальную буферную память, или «накопитель» команд. Если процессор определяет, что текущая команда не может выполняться, то он забирает из накопителя следующую команду и посылает ее в исполнительный блок. Этот накопитель заполняется командами последовательно, однако порядок формирования результатов может оказаться нарушенным, так как команды имеют разную длительность выполнения, а их исполнение может даже откладываться.
Часто задержки происходят из-за недостаточности аппаратных ресурсов. Например, в компьютере может быть предусмотрен только один порт записи в регистры, а при определенных обстоятельствах конвейеру может потребоваться выполнить две записи в регистровый файл одновременно. Это приводит к конфликту, в результате которого происходит приостановка выполнения команд в одном из конвейеров до тех пор, пока требуемое устройство (один из портов) не станет доступным. Подобную ситуацию называют конвейерным «пузырем» – он проходит по конвейеру, не вызывая никакой обработки, но занимает место в конвейере, а следовательно, снижается производительность обработки.
При наличии в компьютере нескольких конвейеров результаты даже последовательных команд могут формироваться в неупорядоченной последовательности. Пусть нужно выполнить две совершенно независимые команды умножения и сложения. Команда умножения попадает на конвейер первой. Вслед за ней на второй конвейер попадает команда сложения, но ее результат будет получен раньше, так как умножение требует нескольких тактов, а команда сложения одного. Следовательно, имеет место неупорядоченное завершениекоманд.
Если процессор обладает несколькими конвейерами, то неупорядоченное завершение команд неизбежно. При неупорядоченном завершении команд результат более поздней, но короткой операции может появиться раньше и «занять» регистр, предназначенный для результата предыдущей более длинной команды. Кроме того, необходимо обеспечить получение такого же результата, как и при строго последовательном выполнении команд. Эти проблемы обычно решаются на этапе компиляции программы, но для их решения могут быть использованы и специальные приемы – переименование регистров и переупорядочивание команд.