15_Архитектурные особенности современных ЭВМ (975812), страница 3
Текст из файла (страница 3)
Вероятность удачного предсказания ветвления у современных конвейерных ЭВМ может превышать 90%.1Такая зависимость между данными называется в научной литературе RAW (Read after Write – чтение после записи, т.е. программа пытается читать ещё не записанный операнд). Путём рассуждений можно понять,что существуют и две другие зависимости между данными: WAR (Write after Read – запись после чтения) иWAR (Write after Write – запись после записи).2Переставлять команды в программе для её более эффективного выполнения можно поручить и компилятору. Такие компиляторы называются оптимизирующими компиляторами, оптимизация машинного кода программы выполняется обычно на одном или нескольких дополнительных проходах компилятора перед получением объектного модуля. Необходимо, однако, заметить, что оптимизирующие компиляторы обычно реализуются для языков высокого уровня и не занимаются оптимизацией собственно машинного кода.
В то же времясовременные процессоры (например, семейства Pentium) могут сами при выполнении программы (динамически) переставлять её команды для повышения производительности работы конвейера.7Во-вторых, можно поочерёдно выбирать на конвейер команды из обеих ветвей условного перехода. Разумеется, в этом случае половина команд будет выполняться зря и их потом "недоделанными" придётся выбросить с конвейера. В литературе этот метод называется спекулятивным выполнением (режущее для российского уха название связано с неудачным выбором значения соответствующего английского термина speculative: лучше переводить его не как спекулятивный, а как умозрительный, имея в виду умозрительное, а не настоящее движение алгоритма сразу по двум ветвямусловного перехода, что противоречит сути вычислительного процесса).Далее, как мы уже отмечали ранее, конвейер весьма болезненно реагирует на прерывания, таккак при этом производится автоматическое переключение на другую программу и конвейер приходится полностью очищать от частично выполненных команд предыдущей программы.1Ещё одна неприятность, связанная с функционированием конвейера, подстерегает нас, когда впрограмме возникает аварийная ситуация (в русскоязычной литературе сокращённо АВОСТ).
Этоможет быть деление на ноль, выполнение привилегированной команда в режиме пользователя, попытка нарушения защиты памяти, неверный код операции и т.д. Заметим, что теперь обработчик прерывания аварийной ситуации часто не сможет однозначно определить то место (конкретную команду) в программе пользователя, где возникла эта ситуация.Действительно, аварийную ситуацию может вызвать любая команда, находящаяся на конвейере,это, естественно, вызывает трудности при отладке программ (появляются, как их называют в специальной литературе, "неопределённые" прерывания, т.е. прерывания с неопределённым местом ихвозникновения в программе).
Заметим, что при упоминавшемся выше спекулятивном способе выполнения на конвейере условных переходов вообще возможны "ложные" прерывания в той ветви условного перехода, которая на самом деле не должна была выполняться. Здесь часто приходится идти набеспрецедентный шаг и откладывать обработку такого "сомнительного" прерывания до того момента, пока команда условного перехода не сойдёт с конвейера, и можно будет определить, произошло ли это прерывание "на самом деле".Ситуация ещё более запутывается, если в компьютере есть несколько конвейеров, например,один конвейер выполняет команды плавающей арифметики, а другой – все остальные команды.2 Вэтом случае, например, команда, стоящая в некотором фрагменте программы второй, может завершиться раньше, чем команда, стоящая первой.
Спрашивается, с какой команды возобновить выполнение программы после возврата из прерывания? Вот и приходится в нужные моменты искусственнотормозить работу одного из конвейеров, чтобы не нарушался естественный порядок следованиякоманд в программе. Как видим, конструкторам центральных процессоров современных ЭВМ не позавидуешь ☺.На этом мы закончим наше краткое знакомство с архитектурными особенностями современныхЭВМ, ориентированными на повышение производительности их работы, и перейдём к сравнениюмежду собой ЭВМ разных классов.15.2. ЭВМ различной архитектурыОтметим сейчас одно важное обстоятельство.
До сих пор мы изучали, в основном, архитектуруцентральной части компьютера, т.е. центрального процессора и оперативной памяти. При этом практически не рассматривалась архитектура ЭВМ в целом, то есть способы взаимодействия центральнойчасти компьютера с периферийными устройствами, а также способы управления устройствами ввода/вывода со стороны центрального процессора. Такое "однобокое" изучение архитектуры ЭВМимело свою причину.
Дело в том, что, несмотря на большое разнообразие архитектур центральныхпроцессоров современных ЭВМ, различие в этих архитектурах всё же значительно меньше, чем в архитектурах компьютеров в целом. Теперь же нам пора обратить внимание на связь центральной частиЭВМ и её периферийных устройств. Другими словами, рассмотрим, как центральный процессор связан с "внешним миром", откуда он получает входные данные и выдаёт результаты счёта программ.1На супер-ЭВМ для целей более эффективного использования конвейера обработку большинства прерываний обычно поручают одному из каналов ввода/вывода (периферийных процессоров), что позволяет не прерывать работу конвейера центрального процессора.
Архитектуру ЭВМ с каналами ввода/вывода мы будемизучать далее в нашем курсе.2Например, на современных процессорах фирмы Intel работают три конвейера, на которых в разных стадиях выполнения может находиться около 30 команд.8Сейчас мы рассмотрим две основные архитектуры ЭВМ, которые в каком-то смысле являютсяпротивоположными, находятся на разных полюсах организации связи центральной части машины сеё периферийными устройствами. Сначала изучим способ организации связи между собой устройствкомпьютера, который получил название архитектуры с общей шиной.15.2.1. Архитектура ЭВМ с общей шинойЭта архитектура была разработана, когда появилась необходимость в массовом производстве относительно простых компьютеров (их тогда называли мини- и микро- ЭВМ [11]).
Основой архитектуры этого класса ЭВМ была, как можно легко догадаться из названия, общая шина.1 В первом приближении общую шину можно представить себе как набор электрических проводов (линий), снабженных некоторыми электронными схемами. В современных ЭВМ число линий в такой шине обычносоставляет около сотни. Все устройства компьютера в архитектуре с общей шиной соединяются между собой посредством подключения к такому общему для них набору электрических проводов – шине.
На рис. 15.3 показана схема соединения всех устройств компьютера между собой с помощью такой общей шины.АрбитрЦентральныйпроцессорДискОперативнаяпамятьПринтерО б щ а яш и н аКлавиатураДисплей......Рис. 15.3. Архитектура компьютера с общей шиной.В этой архитектуре шина исполняет роль главного элемента, связующей магистрали, по которойпроизводится обмен информацией между всеми остальными устройствами ЭВМ. Легко понять, что,так как обмен информацией производится по шине с помощью электрических сигналов, то в каждыймомент времени только два устройства могут выполнять такой обмен. Обычно одно из этих устройств является ведущим (инициатором обмена данными), а другое – подчинённым (ведомым).
Всеустройства компьютера связаны с общей шиной посредством специальных электронных схем, которые чаще всего называются портами ввода/вывода. Каждый такой порт имеет на шине уникальныйномер (в нашей архитектуре этот номер имеет формат i16). Обычно каждому устройства компьютера приписан не один порт, а несколько, так как они специализированные: по некоторым портам устройство может читать данные с шины, по другим – записывать (передавать) данные в шину, а есть иуниверсальные порты, как для чтения, так и для записи.При использовании общей шины многими устройствами могут возникать конфликты, когда дваили более устройств захотят одновременно обмениваться между собой данными. Для разрешения таких конфликтов предназначен арбитр шины – специальная электронная схема, которая обычно располагается на одном из концов этой шины. Разрешение конфликтов производится по принципу приоритетов устройств: при конфликте арбитром отдаётся предпочтение устройству с большим приоритетом.
В простейшем случае приоритеты устройствам явно не назначаются, а просто считается, чтоиз двух устройств то имеет больший приоритет, которое расположено на шине ближе к арбитру. Исходя из этого, более "важные" устройства стараются подключить к шине поближе к арбитру. Неправда ли, это несколько похоже на известный солдатский принцип "держись подальше от начальства и поближе к кухне" (неясно только, почему арбитр шины – это не начальник, как можно было быожидать, а кухня ☺).Разберём теперь схему обмена данными между двумя устройствами с помощью общей шины.Сначала ведущее устройство (инициатор обмена) делает так называемый запрос шины, т.е.