Chapter_15 (1110567), страница 4
Текст из файла (страница 4)
До сих пор мы изучали, в основном, архитектуруцентральной части компьютера, т.е. центрального процессора и оперативной памяти. При этом практически не рассматривалась архитектура ЭВМ в целом, то есть способы взаимодействия центральнойчасти компьютера с периферийными устройствами, а также способы управления устройствами ввода/вывода со стороны центрального процессора. Такое "однобокое" изучение архитектуры ЭВМимело свою причину.
Дело в том, что, несмотря на большое разнообразие архитектур центральныхпроцессоров современных ЭВМ, различие в этих архитектурах всё же значительно меньше, чем в архитектурах компьютеров в целом. Теперь же нам пора обратить внимание на связь центральной частиЭВМ и её периферийных устройств. Другими словами, рассмотрим, как центральный процессор связан с "внешним миром", откуда он получает входные данные и выдаёт результаты счёта программ.1На супер-ЭВМ для целей более эффективного использования конвейера обработку большинства прерываний обычно поручают одному из каналов ввода/вывода (периферийных процессоров), что позволяет не прерывать работу конвейера центрального процессора.
Архитектуру ЭВМ с каналами ввода/вывода мы будемизучать далее в нашем курсе.2Например, на современных процессорах фирмы Intel работают три конвейера, на которых в разных стадиях выполнения может находиться около 30 команд.8Сейчас мы рассмотрим две основные архитектуры ЭВМ, которые в каком-то смысле являютсяпротивоположными, находятся на разных полюсах организации связи центральной части машины сеё периферийными устройствами.
Сначала изучим способ организации связи между собой устройствкомпьютера, который получил название архитектуры с общей шиной.15.2.1. Архитектура ЭВМ с общей шинойЭта архитектура была разработана, когда появилась необходимость в массовом производстве относительно простых компьютеров (их тогда называли мини- и микро- ЭВМ [11]). Основой архитектуры этого класса ЭВМ была, как можно легко догадаться из названия, общая шина.1 В первом приближении общую шину можно представить себе как набор электрических проводов (линий), снабженных некоторыми электронными схемами. В современных ЭВМ число линий в такой шине обычносоставляет около сотни.
Все устройства компьютера в архитектуре с общей шиной соединяются между собой посредством подключения к такому общему для них набору электрических проводов – шине. На рис. 15.3 показана схема соединения всех устройств компьютера между собой с помощью такой общей шины.АрбитрЦентральныйпроцессорДискОперативнаяпамятьПринтерО б щ а яш и н аКлавиатураДисплей......Рис.
15.3. Архитектура компьютера с общей шиной.В этой архитектуре шина исполняет роль главного элемента, связующей магистрали, по которойпроизводится обмен информацией между всеми остальными устройствами ЭВМ. Легко понять, что,так как обмен информацией производится по шине с помощью электрических сигналов, то в каждыймомент времени только два устройства могут выполнять такой обмен. Обычно одно из этих устройств является ведущим (инициатором обмена данными), а другое – подчинённым (ведомым). Всеустройства компьютера связаны с общей шиной посредством специальных электронных схем, которые чаще всего называются портами ввода/вывода.
Каждый такой порт имеет на шине уникальныйномер (в нашей архитектуре этот номер имеет формат i16). Обычно каждому устройства компьютера приписан не один порт, а несколько, так как они специализированные: по некоторым портам устройство может читать данные с шины, по другим – записывать (передавать) данные в шину, а есть иуниверсальные порты, как для чтения, так и для записи.При использовании общей шины многими устройствами могут возникать конфликты, когда дваили более устройств захотят одновременно обмениваться между собой данными. Для разрешения таких конфликтов предназначен арбитр шины – специальная электронная схема, которая обычно располагается на одном из концов этой шины. Разрешение конфликтов производится по принципу приоритетов устройств: при конфликте арбитром отдаётся предпочтение устройству с большим приоритетом.
В простейшем случае приоритеты устройствам явно не назначаются, а просто считается, чтоиз двух устройств то имеет больший приоритет, которое расположено на шине ближе к арбитру. Исходя из этого, более "важные" устройства стараются подключить к шине поближе к арбитру. Неправда ли, это несколько похоже на известный солдатский принцип "держись подальше от начальства и поближе к кухне" (неясно только, почему арбитр шины – это не начальник, как можно было быожидать, а кухня ☺).Разберём теперь схему обмена данными между двумя устройствами с помощью общей шины.Сначала ведущее устройство (инициатор обмена) делает так называемый запрос шины, т.е.
посылаетарбитру по специальным линиям шины сигнал о желании начать обмен данными. Если шина занята,1В некоторых книгах, посвящённых архитектуре ЭВМ, такую шину часто называют также внешней шиной. Это название призвано подчеркнуть, что в архитектуре таких компьютеров, наряду с этой внешней шиной,существуют и другие (внутренние) шины.9то устройство не получает сигнала о доступности шины и вынуждено ждать её освобождения, а еслишина свободна, то устройство производит операцию захвата шины в своё монопольное использование. Это означает, что для остальных устройств арбитр шины теперь будет выдавать признак занятости.После захвата шины ведущее устройство определяет, готово ли ведомое устройство для обменаданными. Для этого ведущее устройство посылает ведомому устройству специальный сигнал и ждётответа, или же читает из порта ведомого устройства его флаг готовности.
Определив готовностьведомого устройства, ведущее устройство начинает обмен данными. Каждая порция данных (в простейшем случае это один байт или одно слово) снабжается номером порта устройства-получателя.Окончив обмен данными, ведущее устройство производит освобождение шины. На этом операция обмена данными между двумя устройствами по общей шине считается завершённой.
Разумеется, арбитр следит, чтобы ни одно из устройств не захватывало шину на длительное время (например,устройство может сломаться, и оно поэтому "забудет" освободить шину, выведя весь компьютер изстроя). Все описанные выше операции с общей шиной (запрос, захват и т.д.) производятся по строгимправилам, эти правила обычно называются протоколом работы с общей шиной. Обычно все действия, связанные с обменом по шине одной порцией данных, называются циклом [работы] шины (говорят о циклах чтения и записи в память, цикле передачи сигнала прерывания и т.д.).Такова в простейшем изложении схема обмена данными по общей шине.
Рассмотрим теперь, каквидит общую шину нашего компьютера программист на Ассемблере. Как уже было сказано, у каждого периферийного устройства обязательно есть один или несколько портов с номерами, закреплёнными за этим устройством. Программист может обмениваться с портами байтами или словами (в зависимости от вида порта). Для записи значения в некоторый порт используется машинная командаout op1,op2Здесь операнд op1 определяет номер нужного порта и может иметь формат i8 (если номер портанебольшой и известен заранее) или быть регистром dx (если номер больше 255 или становится известным только в процессе счёта программы). Второй операнд op2 должен задаваться регистром al(если производится запись в порт байта) или ax (если производится запись в порт слова).
При выполнении такой команды значение регистра (байт или слово) посылается по общей шине в соответствующий порт.Для чтения данных в регистр из порта служит командаin op1,op2Здесь уже второй операнд op2 определяет номер нужного порта и может иметь, как и в предыдущей команде, формат i8 или быть регистром dx. Первый операнд op1 должен задаваться регистром al (если производится чтение из порта байта) или ax (если производится чтение слова). При выполнении этой команды значение (байт или слово) читается из заданного порта и по общей шине поступает в центральный процессор на указанный регистр. Далее мы рассмотрим небольшой пример сиспользованием этих команд.Итак, на нашем компьютере есть только очень простые команды для обмена байтом или словоммежду регистром центрального процессора и портом внешнего устройства.
Вспомним, что на изученной ранее учебной ЭВМ УМ-3 в нашем распоряжении были очень удобные для программиста команды ввода/вывода массивов целых или вещественных чисел. Почему же в архитектуре нашегокомпьютера команды ввода/вывода такие примитивные и неудобные для программиста? Ответ наэтот вопрос легко понять, если вспомнить, что общая шина связывает между собой очень разные устройства, для которых было необходимо найти общий и приемлемый для всех их формат передаваемых данных.
Ясно, что таким форматом может быть только один байт или одно слово – те минимальные порции данных, с которыми оперирует наш центральный процессор. Вот и приходится, например, для ввода целого числа с помощью команд in и out выполнять достаточно сложную программу.Уяснить для себя способ взаимодействия программы на Ассемблере и "внешнего мира" с помощью общей шины можно на таком образном примере. Программа ведёт своё "существование" вовнутренней части ЭВМ (в оперативной памяти и центральном процессоре), и не может покидать этойсвоей "резиденции".
Для связи с "внешним миром" у нашей программы имеется только одна возможность – это порты, которые можно рассматривать как своеобразные "почтовые ящики" на внутреннейстороне двери "резиденции" программы. В некоторые из этих ящиков-портов выполняемая програм-10ма может бросать свои короткие "телеграммы" для внешних устройств, из других ящиков можно доставать "телеграммы", приходящие от внешних устройств (длина каждой "телеграммы" в младшихмоделях нашего семейства только один или два байта). Понятно, что для того, чтобы получить достаточно большой объём данных (например, строку текста с клавиатуры), программа должна обменятьсяс устройством большим числом таких "телеграмм".
Можно сказать, что у программы довольно скучная жизнь в её "резиденции", никаких тебе газет и журналов, и тем более радио и телевидения, дляобщения с "внешним миром" одна только скупая телеграфная связь ☺.Теперь нам будет полезно рассмотреть общую архитектуру связи центрального процессора и периферийных устройств с точки зрения пользователей разного уровня. Рассмотрим, как обстоит делона внешнем, концептуальном, внутреннем и инженерном уровне видения архитектуры ЭВМ.•Уровень конечного пользователя. Пользователь-непрограммист бухгалтер Иванов твёрдоуверен, что в его компьютере есть команда "Распечатать ведомость на зарплату", так какименно это происходит каждый раз, когда он нажимает на кнопку меню "Печать ведомости".