Классификация средств вычислительной техники

Тип работы:
Реферат
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Классификация средств вычислительной техники

1. Аппаратное обеспечение

Состав вычислительной системы называется конфигурацией. Аппаратные и программные средства вычислительной техники принято рассматривать отдельно. Соответственно, отдельно рассматривают аппаратную конфигурацию вычислительных систем и их программную конфигурацию. Такой принцип разделения имеет для информатики особое значение, поскольку очень часто решение одних и тех же задач может обеспечиваться как аппаратными, так и программными средствами. Критериями выбора аппаратного или программного решения являются производительность и эффективность. Обычно принято считать, что аппаратные решения в среднем оказываются дороже, зато реализация программных решений требует более высокой квалификации персонала.

К аппаратному обеспечению вычислительных систем относятся устройства и приборы, образующие аппаратную конфигурацию. Современные компьютеры и вычислительные комплексы имеют блочно-модульную конструкцию — аппаратную конфигурацию, необходимую для исполнения конкретных видов работ, которую можно собирать из готовых узлов и блоков.

Основными аппаратными компонентами вычислительной системы являются: память, центральный процессор и периферийные устройства, которые соединены между собой системной магистралью (Рис. 1.) Основная память предназначена для запоминания программ и данных в двоичном виде и организована в виде упорядоченного массива ячеек, каждая из которых имеет уникальный цифровой адрес. Как правило, размер ячейки составляет 1 байт. Типовые операции над основной памятью: считывание и запись содержимого ячейки с определенным адресом.

2. Центральный процессор

Центральный процессор — это центральное устройство компьютера, которое выполняет операции по обработке данных и управляет периферийными устройствами компьютера. В состав центрального процессора входят:

— устройство управления — организует процесс выполнения программ и координирует взаимодействие всех устройств вычислительной системы во время ее работы;

— арифметико-логическое устройство — выполняет арифметические и логические операции над данными: сложение, вычитание, умножение, деление, сравнение и др. ;

— запоминающее устройство — представляет собой внутреннюю память процессора, которая состоит из регистров, при использовании которых, процессор выполняет расчеты и сохраняет промежуточные результаты; для ускорения работы с оперативной памятью используется кэш-память, в которую с опережением подкачиваются команды и данные из оперативной памяти, необходимые процессору для последующих операций;

— генератор тактовой частоты — генерирует электрические импульсы, синхронизирующие работу всех узлов компьютера.

Центральный процессор выполняет различные операции с данными при помощи специализированных ячеек для хранения ключевых переменных и временных результатов — внутренних регистров. Регистры подразделяются на два вида (рис. 2.):

— регистры общего назначения — используются для временного хранения ключевых локальных переменных и промежуточных результатов вычислений, включают регистры данных и регистры-указатели; основная функция состоит в обеспечении быстрого доступа к часто используемым данным (обычно без обращений к памяти).

— специализированные регистры — используются для контроля работы процессора, наиболее важные из них: регистр команд, указатель стека, регистр флагов и регистр, содержащий информацию о состоянии программы.

Регистры данных программист может использовать по своему усмотрению для временного хранения любых объектов (данных или адресов) и выполнения над ними требуемых операций. Индексные регистры так же, как и регистры данных, могут использоваться произвольным образом; их основное назначение — хранить индексы или смещения данных и команд от начала базового адреса (при выборке операндов из памяти). Адрес базы при этом может находиться в базовых регистрах.

Сегментные регистры являются важнейшим элементом архитектуры процессора, обеспечивая адресацию 20-разрядного адресного пространства с помощью 16-разрядных операндов. Основные сегментные регистры: CS — регистр сегмента кода; DS — регистр сегмента данных; SS — регистр сегмента стека, ES — дополнительный сегментальный регистр. Обращение к памяти осуществляется посредством сегментов — логических образований, накладываемых на любые участки физического адресного пространства. Начальный адрес сегмента, деленный на 16 (без младшей шестнадцатеричной цифры) заносится в один из сегментных регистров; после чего предоставляется доступ к участку памяти, начинающегося с заданного сегментного адреса.

Адрес любой ячейки памяти состоит из двух слов, одно из которых определяет расположение в памяти соответствующего сегмента, а другое — смещение в пределах этого сегмента. Размер сегмента определяется объемом содержащихся в нем данных, но никогда не может превышать величину 64 Кбайт, что определяется максимально возможной величиной смещения. Сегментный адрес сегмента команд хранится в регистре CS, а смещение к адресуемому байту — в регистре указателе команд IP.

Рис. 2. Регистры 32-х разрядного процессора

После загрузки программы в IP заносится смещение первой команды программы. Процессор, считав ее из памяти, увеличивает содержимое IP точно на длину этой команды (команды процессоров Intel могут иметь длину от 1 до 6 байт), в результате чего IP указывает на вторую команду программы. Выполнив первую команду, процессор считывает из памяти вторую, опять увеличивая значение IP. В результате в IP всегда находится смещение очередной команды — команды, следующей за выполняемой. Описанный алгоритм нарушается только при выполнении команд переходов, вызовов подпрограмм и обслуживания прерываний.

Сегментный адрес сегмента данных хранится в регистре DS, смещение может находиться в одном из регистров общего назначения. Дополнительный сегментный регистр ES используется для обращения к полям данных, не входящим в программу, например к видеобуферу или системным ячейкам. Однако при необходимости его можно настроить и на один из сегментов программы. Например, если программа работает с большим объемом данных, для них можно предусмотреть два сегмента и обращаться к одному из них через регистр DS, а к другому — через регистр ES.

Регистр-указатель стека SP используется как указатель вершины стека. Стеком называют область программы для временного хранения произвольных данных. Удобство стека заключается в том, что его область используется многократно, причем сохранение в стеке данных и выборка их оттуда выполняется с помощью команд push и pop без указания имен. Стек традиционно используется для сохранения содержимого регистров, используемых программой, перед вызовом подпрограммы, которая, в свою очередь, будет использовать регистры процессора в своих личных целях. Исходное содержимое регистров извлекается из стека после возврата из подпрограммы. Другой распространенный прием — передача подпрограмме требуемых ею параметров через стек. Подпрограмма, зная, в каком порядке помещены в стек параметры, может забрать их оттуда и использовать при своем выполнении.

Отличительной особенностью стека является своеобразный порядок выборки содержащихся в нем данных: в любой момент времени в стеке доступен только верхний элемент, то есть элемент, загруженный в стек последним. Выгрузка из стека верхнего элемента делает доступным следующий элемент. Элементы стека располагаются в области памяти, отведенной под стек, начиная со дна стека (с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека SP.

Специальные регистры доступны только в привилегированном режиме и используются операционной системой. Они контролируют различные блоки кэш-памяти, основную память, устройства ввода-вывода и другие устройства вычислительной системы.

Существует один регистр, который доступен как в привилегированном, так и в пользовательском режимах. Это регистр PSW (Program State Word — слово состояния программы), который называют флаговым. Флаговый регистр содержит различные биты, необходимые центральному процессору, самые важные — коды условий, которые используются при сравнениях и условных переходах Они устанавливаются в каждом цикле арифметико-логического устройства процессора и отражают состояние результата предыдущей операции. Содержимое флагового регистра зависит от типа вычислительной системы и может включать дополнительные поля, которые указывают: режим машины (например, пользовательский или привилегированный); бит трассировки (который используется для отладки); уровень приоритета процессора; статус разрешения прерываний. Флаговый регистр обычно читается в пользовательском режиме, но некоторые поля могут записываться только в привилегированном режиме (например, бит, который указывает режим).

Регистр указатель команд содержит адрес следующей, стоящей в очереди на выполнение команды. После выбора команды из памяти регистр команд корректируется, и указатель переходит к следующей команде. Указатель команд следит за ходом выполнения программы, указывая в каждый момент относительный адрес команды, следующей за исполняемой. Регистр программно недоступен; наращивание адреса в нем выполняет микропроцессор, учитывая при этом длину текущей команды. Команды переходов, прерываний, вызова подпрограмм и возврата из них изменяют содержимое указателя, осуществляя тем самым переходы в требуемые точки программы.

Регистр аккумулятор используется в подавляющем числе команд. Часто применяемые команды, использующие данный регистр, имеют укороченный формат.

Для обработки информации обычно организовывается передача данных из ячеек памяти в регистры общего назначения, выполнение операции центральным процессором и передача результатов в основную память. Программы хранятся в виде последовательности машинных команд, которые должен выполнять центральный процессор. Каждая команда состоит из поля операции и полей операндов — данных, над которыми выполняется данная операция. Набор машинных команд называется машинным языком. Выполнение программ осуществляется следующим образом. Машинная команда, на которую указывает программный счетчик, считывается из памяти и копируется в регистр команд, где она декодируется, после чего исполняется. После ее выполнения программный счетчик указывает на следующую команду и т. д. Эти действия называются машинным циклом.

Большинство центральных процессоров имеют два режима работы: режим ядра и пользовательский, который задается битом слова состояния процессора (флагового регистра). Если процессор запущен в режиме ядра, он может выполнять все команды из набора инструкций и использовать все возможности аппаратуры. Операционная система работает в режиме ядра и предоставляет доступ ко всему оборудованию. Программы пользователей работают в пользовательском режиме, который разрешает выполнение множества команд, но делает доступным только часть аппаратных средств.

Для связи с операционной системой пользовательская программа должна сформировать системный вызов, который обеспечивает переход в режим ядра и активизирует функции операционной системы. Команда trap (эмулированное прерывание) переключает режим работы процессора из пользовательского в режим ядра и передает управление операционной системе. После завершения работы управление возвращается к пользовательской программе, к команде, следующей за системным вызовом.

В компьютерах, помимо инструкций для выполнения системных вызовов имеются прерывания, которые вызываются аппаратно для предупреждения об исключительных ситуациях, например, попытка деления на ноль или переполнение при операциях с плавающей точкой. Во всех подобных случаях управление переходит к операционной систем, которая должная решить, что делать дальше. Иногда нужно завершить программу с сообщением об ошибке, иногда можно проигнорировать (например, при потере значимости числа его можно принять равным нулю) или передать управление самой программе для обработки некоторых видов условий.

По способу расположения устройств относительно центрального процессора различают внутренние и внешние устройства. Внешними, как правило, являются большинство устройств ввода-вывода данных (их также называют периферийными устройствами) и некоторые устройства, предназначенные для длительного хранения данных.

Согласование между отдельными узлами и блоками выполняют с помощью переходных аппаратно-логических устройств, называемых аппаратными интерфейсами. Стандарты на аппаратные интерфейсы в вычислительной технике называют протоколами — совокупностью технических условий, которые должны быть обеспечены разработчиками устройств для успешного согласования их работы с другими устройствами.

Многочисленные интерфейсы, присутствующие в архитектуре любой вычислительной системы, можно условно разделить на две большие группы: последовательные и параллельные. Через последовательный интерфейс данные передаются последовательно, бит за битом, а через параллельный — одновременно группами битов. Количество битов, участвующих в одной посылке, определяется разрядностью интерфейса, например, восьмиразрядные параллельные интерфейсы передают один байт (8 бит) за один цикл.

Параллельные интерфейсы обычно имеют более сложное устройство, чем последовательные, но обеспечивают более высокую производительность. Их применяют там, где важна скорость передачи данных: для подключения печатающих устройств, устройств ввода графической информации, устройств записи данных на внешний носитель и т. п. Производительность параллельных интерфейсов измеряют байтами в секунду (байт/с; Кбайт/с; Мбайт/с).

Устройство последовательных интерфейсов проще; как правило, для них не надо синхронизировать работу передающего и принимающего устройства (поэтому их часто называют асинхронными интерфейсами), но пропускная способность их меньше и коэффициент полезного действия ниже. Поскольку обмен данными через последовательные устройства производится не байтами, а битами, их производительность измеряют битами в секунду (бит/с, Кбит/с, Мбит/с). Несмотря на кажущуюся простоту перевода единиц измерения скорости последовательной передачи в единицы измерения скорости параллельной передачи данных путем механического деления на 8, такой пересчет не выполняют, поскольку он не корректен из-за наличия служебных данных. В крайнем случае, с поправкой на служебные данные, иногда скорость последовательных устройств выражают в знаках в секунду или в символах в секунду (с/с), но эта величина имеет не технический, а справочный, потребительский характер.

Последовательные интерфейсы применяют для подключения медленных устройств (простейших устройств печати низкого качества: устройств ввода и вывода знаковой и сигнальной информации, контрольных датчиков, малопроизводительных устройств связи и т. п.), а также в тех случаях, когда нет существенных ограничений по продолжительности обмена данными (цифровые фотокамеры).

3. Память

Второй основной составляющей компьютера является память. Система памяти конструируется в виде иерархии слоев (рис. 3.). Верхний слой состоит из внутренних регистров центрального процессора. Внутренние регистры предоставляют возможность для хранения 32×32 бит на 32-разрядном процессоре и 64×64 бит на 64-разрядном процессоре, что составляет меньше одного килобайта в обоих случаях. Программы сами могут управлять регистрами (то есть решать, что в них хранить) без вмешательства аппаратуры.

Рис. 3. Типичная иерархическая структура памяти

В следующем слое находится кэш-память, в основном контролируемая оборудованием. Оперативная память разделена на кэш-строки, обычно по 64 байт, с адресацией от 0 до 63 в нулевой строке, от 64 до 127 в первой строке и т. д. Наиболее часто используемые строки кэша хранятся в высокоскоростной кэш-памяти, расположенной внутри центрального процессора или очень близко к нему. Когда программа должна прочитать слово из памяти, кэш-микросхема проверяет, есть ли нужная строка в кэше. Если это так, то происходит результативное обращение к кэш-памяти, запрос удовлетворяется целиком из кэша и запрос к памяти на шину не выставляется. Удачное обращение к кэшу, как правило, по времени занимает около двух тактов, а неудачное приводит к обращению к памяти с существенной потерей времени. Кэш-память ограничена в размере, что обусловлено ее высокой стоимостью. В некоторых машинах есть два или даже три уровня кэша, причем каждый последующий медленнее и больше предыдущего.

Далее следует оперативная память (ОЗУ — оперативное запоминающее устройство, англ. RAM, Random Access Memory — память с произвольным доступом). Это главная рабочая область запоминающего устройства вычислительной системы. Все запросы центрального процессора, которые не могут быть выполнены кэш-памятью, поступают для обработки в основную память. При работе нескольких программ на компьютере желательно сложные программы помещать в оперативную память. Защита программ друг от друга и их перемещение в памяти реализуется посредством оборудования компьютера двумя специализированными регистрами: базовым регистром и предельным регистром.

Рис. 4

В простейшем случае (рис. 4. а), когда программа начинает работать, в базовый регистр загружается адрес начала исполняемого модуля программы, а предельный регистр говорит о том, сколько занимает исполняемый модуль программы вместе с данными. При выборке команды из памяти аппаратура проверяет счетчик команд, и если он меньше, чем предельный регистр, то добавляет к нему значение базового регистра, а сумму передает памяти. Когда программа хочет прочитать слово данных (например, из адреса 10 000), аппаратура автоматически добавляет к этому адресу содержимое базового регистра (например, 50 000) и передает сумму (60 000) памяти. Базовый регистр дает возможность программе ссылаться на любую часть памяти, следующую за хранящимся в нем адресом. Кроме того, предельный регистр запрещает программе обращение к любой части памяти после программы. Таким образом, с помощью этой схемы решаются обе задачи: защиты и перемещения программ.

В результате проверки и преобразования данных, адрес, сформированный программой и называемый виртуальным адресом, переводится в адрес, используемый памятью и называемый физическим адресом. Устройство, которое выполняет проверку и преобразование, называется устройством управления памятью или диспетчером памяти (MMU, Memory Management Unit). Диспетчер памяти располагается или в схеме процессора, или близко к ней, но логически находится между процессором и памятью.

Более сложный диспетчер памяти состоит из двух пар базовых и предельных регистров. Одна пара предназначена для текста программы, другая пара — для данных. Командный регистр и все ссылки на текст программы работают с первой парой регистров, ссылки на данные используют вторую пару регистров. Благодаря такому механизму появляется возможность делить одну программу между несколькими пользователями при хранении в ОЗУ только одной копии программы, что исключено в простой схеме. При работе программы № 1 четыре регистра располагаются так, как показано на рис. 4 (б) слева, при работе программы № 2 — справа. Управление диспетчером памяти является функцией операционной системы.

Следующим в структуре памяти идет магнитный диск (жесткий диск). Дисковая память на два порядка дешевле ОЗУ в пересчете на бит и больше по величине, но доступ к данным, размещенным на диске, занимает примерно на три порядка больше времени. Причиной низкой скорости жесткого диска является тот факт, что диск представляет собой механическую конструкцию. Жесткий диск состоит из одной или нескольких металлических пластин, вращающихся со скоростью 5400, 7200 или 10 800 оборотов в минуту (рис. 5.). Информация записывается на пластины в виде концентрических окружностей. Головки чтения/записи в каждой заданной позиции могут прочитать кольцо на пластине, называемое дорожкой. Все вместе дорожки для заданной позиции вилки формируют цилиндр.

Каждая дорожка разделена на некоторое количество секторов, обычно по 512 байт на сектор. На современных дисках внешние цилиндры содержат большее количество секторов, чем внутренние. Перемещение головки от одного цилиндра к другому занимает около 1 мс, а перемещение к произвольному цилиндру требует от 5 до 10 мс, в зависимости от диска. Когда головка располагается над нужной дорожкой, нужно ждать, пока двигатель повернет диск так, чтобы под головкой стал требуемый сектор. Это занимает дополнительно от 5 до 10 мс, в зависимости от скорости вращения диска. Когда сектор находится под головкой, процесс чтения или записи происходит со скоростью от 5 Мбайт/с (для низкоскоростных дисков) до 160 Мбайт/с (для высокоскоростных дисков).

Последний слой занимает магнитная лента. Этот носитель часто использовался для создания резервных копий пространства жесткого диска или для хранения больших наборов данных. Для доступа к информации ленту помещали в устройство для чтения магнитных лент, затем ее перематывали до запрашиваемого блока с информацией. Весь процесс длился минуты. Описанная иерархия памяти типична, но в некоторых вариантах могут присутствовать не все уровни или другие их виды (например, оптический диск). В любом случае при движении по иерархии сверху вниз время произвольного доступа значительно увеличивается от устройства к устройству, и вместимость растет эквивалентно времени доступа.

Кроме описанных выше видов во многих компьютерах есть постоянная память с произвольным доступом (ПЗУ — постоянное запоминающее устройство, ROM, Read Only Memory — память только для чтения), которая не теряет свое содержимое при выключении питания вычислительной системы. ПЗУ программируется в процессе производства и после этого его содержимое нельзя изменить. На некоторых компьютерах в ПЗУ находятся программы начальной загрузки, используемые при запуске компьютера, и некоторые карты ввода-вывода для управления низкоуровневыми устройствами.

Электрически стираемое ПЗУ (EEPROM, Electrically Erasable ROM) и флэш-ОЗУ (flash RAM) также энергонезависимы, но в отличие от ПЗУ их содержимое можно стереть и переписать. Однако запись данных на них требует намного больше времени, чем запись в оперативную память. Поэтому они используются точно так же, как и ПЗУ.

Существует еще один вид памяти — CMOS-память, которая является энергозависимой и используется для хранения текущей даты и текущего времени. Память получает питание от аккумулятора, встроенного в компьютер, может содержать конфигурационные параметры (например, указание, с какого жесткого диска производить загрузку).

3. Устройства ввода-вывода

Другими устройствами, тесно взаимодействующими с операционной системой, являются устройства ввода-вывода, которые состоят из двух частей: контроллера и самого устройства. Контроллер представляет собой микросхему (набор микросхем) на вставляемой в разъем плате, которая принимает и выполняет команды операционной системы.

Например, контроллер принимает команду чтения определенного сектора с диска. Для выполнения команды контроллер преобразовывает линейный номер сектора диска в номер цилиндра, сектора и головки. Операция преобразования усложняется тем, что внешние цилиндры могут иметь больше секторов, чем внутренние. Затем контроллер определяет, над каким цилиндром находится в данный момент головка, и дает последовательность импульсов, чтобы переместить головку на необходимое количество цилиндров. После чего контроллер ждет, пока повернется диск, поместив требуемый сектор под головку. Затем последовательно выполняются процессы чтения и сохранения битов по мере поступления их с диска, процессы удаления заголовка и вычисления контрольной суммы. Далее контроллер собирает полученные биты в слова и сохраняет их в памяти. Для осуществления этой работы контроллеры содержат встроенные микропрограммы.

Само устройство ввода-вывода имеет простой интерфейс, который должен соответствовать единому стандарту IDE (IDE, Integrated Drive Electronics — встроенный интерфейс накопителей). Так как интерфейс устройства скрыт контроллером, то операционная система видит только интерфейс контроллера, который может отличаться от интерфейса устройства.

Так как контроллеры для разных устройств ввода-вывода отличаются друг от друга, то для управления ими требуется соответствующее программное обеспечение — драйверы. Поэтому каждый производитель контроллеров должен поставлять драйверы для поддерживаемых им операционных систем. Чтобы установить драйвер в операционную систему существует три способа:

— заново скомпоновать ядро вместе с новым драйвером и затем перезагрузить систему, так работает множество систем UNIX;

— создать запись во входящем в операционную систему файле о том, что требуется драйвер и перезагрузить систему, во время начальной загрузки операционная система найдет нужный драйвер и загрузит его; так работает операционная система Windows;

— принять новые драйверы и оперативно их установить средствами операционной система во время ее работы; способ используется съемными шинами USB и IEEE 1394, которые всегда нуждаются в динамически загружаемых драйверах.

Для связи с каждым контроллером существуют определенные регистры. Например, минимальный контроллер диска может иметь регистры для определения адреса на диске, адреса в памяти, номер сектора и направления операции (чтение или запись). Чтобы активизировать контроллер, драйвер получает команду от операционной системы, затем транслирует ее в величины, подходящие для записи в регистры устройства.

На некоторых компьютерах регистры устройств ввода-вывода отображаются в адресное пространство операционной системы, поэтому их можно читать или записывать как обычные слова в памяти. Адреса регистров помещаются в ОЗУ за пределами досягаемости программ пользователей, чтобы программы пользователей оградить от аппаратуры (например, с помощью базового и предельного регистров).

На других компьютерах регистры устройств располагаются в специальных портах ввода-вывода, и каждый регистр имеет свой адрес порта. На таких машинах в привилегированном режиме доступны команды IN и OUT, которые позволяют драйверам считывать и записывать регистры. Первая схема устраняет необходимость специальных команд ввода-вывода, но использует некоторое количество адресного пространства. Вторая схема не затрагивает адресное пространство, но требует наличие специальных команд. Обе схемы широко используются. Ввод и вывод данных осуществляется тремя способами.

1. Пользовательская программа выдает системный запрос, который ядро транслирует в вызов процедуры соответствующего драйвеpa. Затем драйвер начинает процесс ввода-вывода. В это время драйвер выполняет очень короткий программный цикл, постоянно опрашивая готовность устройства, с которым он работает (обычно есть некий бит, который указывает на то, что устройство все еще занято). По завершении операции ввода-вывода драйвер помещает данные туда, куда требуется, и возвращается в исходное состояние. Затем операционная система возвращает управление программе, осуществлявшей вызов. Этот метод называется ожиданием готовности или активным ожиданием и имеет один недостаток: процессор должен опрашивать устройство до тех пор, пока оно не завершит свою работу.

2. Драйвер запускает устройство и просит его выдать прерывание по окончании ввода-вывода. После этого драйвер возвращает данные, операционная система блокирует программу вызова, если это нужно, и начинает выполнять другие задания. Когда контроллер обнаруживает окончание передачи данных, он генерирует прерывание, чтобы сигнализировать о завершении операции. Механизм реализации ввода-вывода происходит следующим образом (рис. 6. а):

Шаг 1: драйвер передает команду контроллеру, записывая информацию в регистры устройства; контроллер запускает устройство ввода-вывода.

Шаг 2: после окончания чтения или записи контроллер посылает сигнал микросхеме контроллера прерываний.

Шаг З: если контроллер прерываний готов к приему прерывания, то он подает сигнал на определенный контакт центрального процессора.

Шаг 4: контроллер прерываний выставляет номер устройства ввода-вывода на шину так, чтобы центральный процессор мог прочесть его и узнать, какое устройство завершило работу. При приеме центральным процессором прерывания, содержимое счетчика команд (PC) и слова состояния процессора (PSW) помещается в текущий стек, а процессор переключается в привилегированный режим работы (режим работы ядра операционной системы). Номер устройства ввода-вывода может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний. Когда обработчик прерываний (часть драйвера устройства, пославшего прерывание) начинает свою работу, он удаляет расположенные в стеке счетчик команд и слово состояния процессора, сохраняет их и запрашивает устройство, чтобы получить информацию о его состоянии. После того как обработка прерывания завершена, управление возвращается к работавшей до этого программе пользователя, к той команде, выполнение которой еще не было закончено (рис. 6 б).

Рис. 6

3. Для ввода-вывода информации используется контроллер прямого доступа к памяти (DMA, Direct Memory Access), который управляет потоком битов между оперативной памятью и некоторыми контроллерами без постоянного вмешательства центрального процессора. Процессор вызывает микросхему DMA, говорит ей, сколько байтов нужно передать, сообщает адреса устройства и памяти, а также направление передачи данных и позволяет микросхеме действовать самой. По завершении работы DMA инициирует прерывание, которое обрабатывается соответствующим образом.

Прерывания могут происходить в неподходящие моменты, например, во время обработки другого прерывания. По этой причине центральный процессор обладает возможностью запрещать прерывания и разрешать их позже. Пока прерывания запрещены, все устройства, завершившие работу, продолжают посылать свои сигналы, но работа процессора не прерывается до тех пор, пока прерывания не будут разрешены. Если заканчивают работу сразу несколько устройств в то время, когда прерывания запрещены, контроллер прерываний решает, какое из них должно быть обработано первым, обычно основываясь на статических приоритетах, назначенных для каждого устройства.

4. Шины

Вычислительная система Pentium имеет восемь шин (шина кэша, локальная шина, шина памяти, PCI, SCSI, USB, IDE и ISA). Каждая шина имеет свою скорость передачи данных и свои функции. В операционной системе для управления компьютером и его конфигурации должны находиться сведения обо всех шинах.

Шина ISA (Industry Standard Architecture, промышленная стандартная архитектура) — впервые появилась на компьютерах IBM PC/AT, работает на частоте 8,33 МГц и может передавать два байта за такт с максимальной скоростью 16,67 Мбайт/с.; она включена в систему для обратной совместимости со старыми медленными платами ввода-вывода.

Шина PCI (Peripheral Component Interconnect, интерфейс периферийных устройств) — создана компанией Intel в качестве преемницы шины ISA, может работать на частоте 66 МГц и передавать по 8 байт за такт со скоростью 528 Мбайт/с. В настоящее время шины PCI используют большинство высокоскоростных устройств ввода-вывода, а так же компьютеры с процессорами, отличными от Intel, так как с ней совместимо много плат ввода-вывода.

Рис. 7

Локальная шина в системе Pentium используется для передачи центральным процессором данных микросхеме PCI-моста, который обращается к памяти по выделенной шине памяти, часто работающей на частоте 100 МГц.

Шина кэша используются для подключения внешнего кэша, так как системы Pentium имеют кэш первого уровня (кэш L1), встроенный в процессор, и большой внешний кэш второго уровня (кэш L2).

Шина IDE служит для присоединения периферийных устройств: дисков и устройств для чтения компакт-дисков. Шина является потомком интерфейса контроллера диска на PC/AT, в настоящее время входит в стандартный комплект всех систем, основанных на процессорах Pentium.

Шина USB (Universal Serial Bus, универсальная последовательная шина) предназначена для присоединения к компьютеру медленных устройств ввода-вывода (клавиатуры, мыши). Она использует маленький четырехпроводной разъем, два провода которого поставляют электропитание к USB-устройствам.

Шина USB — это централизованная шина, по которой главное устройство каждую миллисекунду опрашивает устройства ввода-вывода, чтобы узнать, есть ли у них данные. Она может управлять загрузкой данных со скоростью 1,5 Мбайт/с. Все USB-устройства используют один драйвер, поэтому их можно присоединять к системе без ее перезагрузки.

Шина SCSI (Small Computer System Interface, системный интерфейс малых компьютеров) — высокопроизводительная шина, применяемая для быстрых дисков, сканеров и других устройств, нуждающихся в значительной пропускной способности. Ее производительность достигает 160 Мбайт/с. Шина SCSI используется в системах Macintosh, популярна в UNIX-системах и других системах на базе процессоров Intel.

Шина IEEE 1394 (FireWire) — является бит-последовательной шиной и поддерживает пакетную передачу данных со скоростью, достигающей 50 Мбайт/с. Это свойство позволяет подключать к компьютеру портативные цифровые видеокамеры и другие мультимедийные устройства. В отличие от шины USB шина IEEE 1394 не имеет центрального контроллера.

Операционная система должна уметь распознавать аппаратные составляющие и уметь их настраивать. Это требование привело компании Intel и Microsoft к разработке системы персонального компьютера, называемой plug and play («включи и работай»). До появления этой системы каждая плата ввода-вывода имела фиксированные адреса регистров ввода-вывода и уровень запроса прерывания. Например, клавиатура использовала прерывание 1 и адреса в диапазоне от 0×60 до 0×64; контроллер гибкого диска использовал прерывание 6 и адреса от 0x3F0 до 0x3F7; принтер пользовался прерыванием 7 и адресами от 0×378 до 0×37А.

Если пользователь покупал звуковую карту и модем, случалось что эти устройства случайно использовали одно и тоже прерывание. Возникал конфликт, поэтому устройства не могли работать вместе. Возможным решением было встроить набор DIP-переключателей (джамперов, jumper — перемычка) в каждую плату и настроить каждую плату таким образом, чтобы адреса портов и номера прерываний различных устройств не конфликтовали друг с другом.

Plug and play позволяет операционной системе автоматически собирать информацию об устройствах ввода-вывода, централизованно назначать уровни прерывания и адреса ввода-вывода, а затем сообщать каждой плате эту информацию. Такая система работает на компьютерах Pentium. Каждый компьютер с процессором Pentium содержит материнскую плату, на которой находится программа — система BIOS (Basic Input Output System — базовая система ввода-вывода). BIOS содержит программы ввода-вывода низкого уровня, включая процедуры: для чтения с клавиатуры, для вывода информации на экран, для ввода-вывода данных с диска и пр.

При начальной загрузке компьютера стартует система BIOS, которая проверяет количество установленной в системе оперативной памяти, подключение и корректность работы клавиатуры и других основных устройств. Далее BIOS проверяет шины ISA и PCI и все устройства, присоединенные к ним. Некоторые из этих устройств являются традиционными (созданными до выхода стандарта plug and play). Они имеют фиксированные уровни прерывания и адрес порта ввода-вывода (например, заданные с помощью переключателей или перемычек на плате ввода-вывода без возможности их изменения операционной системой). Эти устройства регистрируются, далее проходят регистрации устройства plug and play. Если присутствующие устройства отличаются от тех, что были во время последней загрузки, то производится конфигурирование новых устройств.

Затем BIOS определяет устройство, с которого будет происходить загрузка, по очереди пробуя каждое из списка, хранящегося в CMOS-памяти. Пользователь может изменить этот список, войдя в конфигурационную программу BIOS сразу после загрузки. Обычно сначала делается попытка загрузиться с гибкого диска. Если это не удается, пробуется компакт-диск. Если в компьютере отсутствуют и гибкий диск, и компакт-диск, система загружается с жесткого диска. С загрузочного устройства считывается в память и выполняется первый сектор. В этом секторе находится программа, проверяющая таблицу разделов в конце загрузочного сектора, чтобы определить, который из разделов является активным. Затем из того же раздела читается вторичный загрузчик. Он считывает из активного раздела операционную систему и запускает ее.

После этого операционная система опрашивает BIOS, чтобы получить информацию о конфигурации компьютера и проверяет наличие драйвера для каждого устройства. Если драйвер отсутствует, операционная система просит пользователя вставить гибкий диск или компакт-диск, содержащий драйвер (эти диски поставляются производителем устройства). Если же все драйверы на месте, операционная система загружает их в ядро. Затем она инициализирует таблицы драйверов, создает все необходимые фоновые процессы и запускает программу ввода пароля или графический интерфейс на каждом терминале.

5. История развития средств вычислительной техники

Все IBM-совместимые персональные компьютеры укомплектованы Intel-совместимыми процессорами. История развития микропроцессоров семейства Intel вкратце такова. Первый универсальный микропроцессор фирмы Intel появился в 1970 г. Он назывался Intel 4004, был четырехразрядным и имел возможность ввода/вывода и обработки четырехбитных слов. Быстродействие его составляло 8000 операций в секунду. Микропроцессор Intel 4004 был рассчитан на применение в программируемых калькуляторах с памятью размером в 4 Кбайт.

Через три года фирма Intel выпустила процессор 8080, который мог выполнять уже 16-битные арифметические операции, имел 1б-разрядную адресную шину и, следовательно, мог адресовать до 64 Кбайт памяти (2 516 0=65 536). 1978 год ознаменовался выпуском процессора 8086 с размером слова в 16 бит (два байта), 20-разрядной шиной и мог оперировать уже с 1 Мбайт памяти (2 520 0=1 048 576, или 1024 Кбайт), разделенной на блоки (сегменты) по 64 Кбайт каждый. Процессором 8086 комплектовались компьютеры, совместимые с IBM PC и IBM PC/XT. Следующим крупным шагом в разработке новых микропроцессоров стал появившийся в 1982 году процессор 8028б. Он обладал 24-разрядной адресной шиной, мог распоряжаться 16 мегабайтами адресного пространства и ставился на компьютеры, совместимые с IBM PC/AT. В октябре 1985 года был выпущен 80386DX с 32- разрядной шиной адреса (максимальное адресное пространство — 4 Гбайт), а в июне 1988 года — 80386SX, более дешевый по сравнению с 80386DX и обладавший 24-разрядной адресной шиной. Затем в апреле 1989 года появляется микропроцессор 80486DX, а в мае 1993 — первый вариант процессора Pentium (оба с 32-разрядной шиной адреса).

В мае 1995 года в Москве на международной выставке Комтек-95 фирма Intel представила новый процессор — P6.

Одной из важнейших целей, поставленных при разработке P6, было удвоение производительности по сравнению с процессором Pentium. При этом производство первых версий P6 будет осуществляться по уже отлаженной «Intel» и используемой при производстве последних версий Pentium полупроводниковой технологии (О, 6 мкм, З, З В).

Использование того же самого процесса производства дает гарантию того, что массовое производство P6 будет налажено без серьезных проблем. Вместе с тем это означает, что удвоение производительности достигается только за счет всестороннего улучшения микроархитектуры процессора. При разработке микроархитектуры P6 использовалась тщательно продуманная и настроенная комбинация различных архитектурных методов. Часть из них была ранее опробована в процессорах «больших» компьютеров, часть предложена академическими институтами, оставшиеся разработаны инженерами фирмы «Intel». Эта уникальная комбинация архитектурных особенностей, которую в «Intel» определяют словами «динамическое выполнение», позволила первым кристаллам P6 превзойти первоначально планировавшийся уровень производительности.

При сравнении с альтернативными «Intel» процессорами семейства х86 выясняется, что микроархитектура Р6 имеет много общего с микроархитектурой процессоров Nx586 фирмы NexGen и K5 фирмы AMD, и, хотя и в меньшей степени, с M1 фирмы «Cyrix». Эта общность объясняется тем, что инженеры четырех компаний решали одну и ту же задачу: внедрение элементов RISC-технологии при сохранении совместимости с CISC-архитектурой Intel х86.

Два кристалла в одном корпусе

Главное преимущество и уникальная особенность Р6 — размещенная в одном корпусе с процессором вторичная статическая кэш-память размером 256 кб, соединенная с процессором специально выделенной шиной. Такая конструкция должна существенно упростить проектирование систем на базе Р6. Р6 — первый предназначенный для массового производства микропроцессор, содержащий два чипа в одном корпусе.

Кристалл ЦПУ в Р6 содержит 5,5 миллионов транзисторов; кристалл кэш-памяти второго уровня — 15,5 миллионов. Для сравнения, последняя модель Pentium включала около 3,3 миллиона транзисторов, а кэш-память второго уровня реализовывалась с помощью внешнего набора кристаллов памяти.

Столь большое число транзисторов в кэше объясняется его статической природой. Статическая память в P6 использует шесть транзисторов для запоминания одного бита, в то время как динамической памяти было бы достаточно одного транзистора на бит. Статическая память быстрее, но дороже. Хотя число транзисторов на кристалле с вторичным кэшем втрое больше, чем на кристалле процессора, физические размеры кэша меньше: 202 квадратных миллиметра против 306 у процессора. Оба кристалла вместе заключены в керамический корпус с 387 контактами («dual cavity pin-drid array»). Оба кристалла производятся с применением одной и той же технологии (0,6 мкм, 4- слойная металл-БиКМОП, 2,9 В). Предполагаемое максимальное потребление энергии: 20 Вт при частоте 133 МГц.

Первая причина объединения процессора и вторичного кэша в одном корпусе — облегчение проектирования и производства высокопроизводительных систем на базе Р6. Производительность вычислительной системы, построенной на быстром процессоре, очень сильно зависит от точной настройки микросхем окружения процессора, в частности вторичного кэша. Далеко не все фирмы-производители компьютеров могут позволить себе соответствующие исследования. В Р6 вторичный кэш уже настроен на процессор оптимальным образом, что облегчает проектирование материнской платы.

Вторая причина объединения — повышение производительности. Кзш второго уровня связан с процессором специально выделенной шиной шириной 64 бита и работает на той же тактовой частоте, что и процессор.

Первые процессоры Рentium с тактовой частотой 60 и 66 МГц обращались к вторичному кэшу по 64-разрядной шине с той же тактовой частотой. Однако с ростом тактовой частоты Pentium для проектировщиков стало слишком сложно и дорого поддерживать такую частоту на материнской плате. Поэтому стали применяться делители частоты. Например, у 100 МГц Pentium внешняя шина работает на частоте 66 МГц (у 90 МГц Pentium — соответственно 60 МГц). Pentium использует эту шину как для обращений к вторичному кэшу, так и для обращения к основной памяти и другим устройствам, например к набору чипов PCI.

Использование специально выделенной шины для доступа к вторичному кэшу улучшает производительность вычислительной системы. Во-первых, при этом достигается полная синхронизация скоростей процессора и шины; во-вторых, исключается конкуренция с другими операциями ввода-вывода и связанные с этим задержки. Шина кэша второго уровня полностью отделена от внешней шины, через которую происходит доступ к памяти и внешним устройствам. 64-битовая внешняя шина может работать со скоростью, равной половине, одной третьей или одной четвертой от скорости процессора, при этом шина вторичного кэша работает независимо на полной скорости.

Объединение процессора и вторичного кэша в одном корпусе и их связь через выделенную шину является шагом по направлению к методам повышения производительности, используемым в наиболее мощных RISC-процессорах. Так, в процессоре Alpha 21 164 фирмы «Digital» кэш второго уровня размером 96 кб размещен в ядре процессора, как и первичный кэш. Это обеспечивает очень высокую производительность кэша за счет увеличения числа транзисторов на кристалле до 9,3 миллиона. Производительность Alpha 21 164 составляет 330 SPECint92 при тактовой частоте 300 МГц. Производительность Р6 ниже (по оценкам «Intel» — 200 SPECint92 при тактовой частоте 133 МГц), однако Р6 обеспечивает лучшее соотношение стоимость/производительность для своего потенциального рынка.

При оценке соотношения стоимость/производительность следует учитывать, что, хотя Р6 может оказаться дороже своих конкурентов, большая часть других процессоров должна быть окружена дополнительным набором чипов памяти и контроллером кэша. Кроме того, для достижения сравнимой производительности работы с кэшом, другие процессоры должны будут использовать кэш большего, чем 256 кб размера.

«Intel», как правило, предлагает многочисленные вариации своих процессоров. Это делается с целью удовлетворить разнообразным требованиям проектировщиков систем и оставить меньше пространства для моделей конкурентов. Поэтому можно предположить, что вскоре после начала выпуска Р6 появятся как модификации с увеличенным объемом вторичной кэш-памяти, так и более дешевые модификации с внешним расположением вторичного кэша, но при сохраненной выделенной шине между вторичным кэшом и процессором.

Pentium как точка отсчета

Процессор Pentium со своей конвейерной и суперскалярной архитектурой достиг впечатляющего уровня производительности. Pentium содержит два 5-стадийных конвейера, которые могут работать параллельно и выполнять две целочисленные команды за машинный такт. При этом параллельно может выполняться только пара команд, следующих в программе друг за другом и удовлетворяющих определенным правилам, например, отсутствие регистровых зависимостей типа «запись после чтения».

В P6 для увеличения пропускной способности осуществлен переход к одному 12-стадийному конвейеру. Увеличение числа стадий приводит к уменьшению выполняемой на каждой стадии работы и, как следствие, к уменьшению времени нахождения команды на каждой стадии на 33 процента по сравнению с Pentium. Это означает, что использование при производстве P6 той же технологии, что и при производстве 100 МГц Pentium, приведет к получению P6 с тактовой частотой 133 МГц.

Возможности суперскалярной архитектуры Pentium, с ее способностью к выполнению двух команд за такт, было бы трудно превзойти без совершенно нового подхода. Примененный в P6 новый подход устраняет жесткую зависимость между традиционными фазами «выборки» и «выполнения», когда последовательность прохождения команд через эти две фазы соответствует последовательности команд в программе.

Новый подход связан с использованием так называемого пула команд и с новыми эффективными методами предвидения будущего поведения программы. При этом традиционная фаза «выполнение» заменяется на две: «диспетчирование/ выполнение» и «откат». В результате команды могут начинать выполняться в произвольном порядке, но завершают свое выполнение всегда в соответствии с их исходным порядком в программе. Ядро P6 реализовано как три независимых устройства, взаимодействующих через пул команд (рис. 1).

Основная проблема на пути повышения производительности

Решение об организации P6 как трех независимых и взаимодействующих через пул команд устройств было принято после тщательного анализа факторов, ограничивающих производительность современных микропроцессоров. Фундаментальный факт, справедливый для Pentium и многих других процессоров, состоит в том, что при выполнении реальных программ мощность процессора не используется в полной мере.

В то время как скорость процессоров за последние 10 лет выросла по меньшей мере в 10 раз, время доступа к основной памяти уменьшилось только на 60 процентов. Это увеличивающееся отставание скорости работы с памятью по отношению к скорости процессора и было той фундаментальной проблемой, которую пришлось решать при проектировании P6.

Один из возможных подходов к решению этой проблемы — перенос ее центра тяжести на разработку высокопроизводительных компонентов, окружающих процессор. Однако массовый выпуск систем, включающих и высокопроизводительный процессор, и высокоскоростные специализированные микросхемы окружения, был бы слишком дорогостоящим.

Можно было попытаться решить проблему с использованием грубой силы, а именно увеличить размер кэша второго уровня, чтобы уменьшить процент случаев отсутствия необходимых данных в кэше.

Это решение эффективное, но тоже чрезвычайно дорогостоящее, особенно учитывая сегодняшние скоростные требования к компонентам кэша второго уровня. P6 проектировался с точки зрения эффективной реализации целостной вычислительной системы, и требовалось, чтобы высокая производительность системы в целом достигалась с использованием дешевой подсистемы памяти.

Вывод

Таким образом, реализованная в P6 комбинация таких архитектурных методов, как улучшенное предсказание переходов (почти всегда правильно определяется предстоящая последовательность команд), анализ потоков данных (определяется оптимальный порядок выполнения команд) и опережающее выполнение (предвиденная последовательность команд выполняется без простоев в оптимальном порядке), позволила удвоить производительность по отношению к Pentium при использовании той же самой технологии производства. Эта комбинация методов называется динамическим выполнением.

В настоящее время «Intel» ведет разработку новой 0,35 мкм технологии производства, что даст возможность выпускать процессоры P6 с тактовой частотой ядра свыше 200 МГц.

Р6 как платформа для построения мощных серверов

Среди наиболее значимых тенденций развития компьютеров в последние годы можно выделить как все возрастающее использование систем на основе процессоров семейства х86 в качестве серверов приложений, так и растущую роль «Intel» как поставщика непроцессорных технологий, таких как шины, сетевые технологии, сжатие видеоизображений, флэш-память и средства системного администрирования.

Выпуск процессора Р6 продолжает проводимую «Intel» политику переноса возможностей, которыми ранее обладали лишь более дорогие компьютеры, на массовый рынок. Для внутренних регистров Р6 предусмотрен контроль по четности, а соединяющая ядро процессора и кэш второго уровня 64-битовая шина оснащена средствами обнаружения и исправления ошибок. Встроенные в Р6 новые возможности диагностики позволяют производителям проектировать более надежные системы. В Р6 предусмотрена возможность получения через контакты процессора или с помощью программного обеспечения информации о более чем 100 переменных процессора или происходящих в нем событиях, таких как отсутствие данных в кэше, содержимое регистров, появление самомодифицирующего кода и так далее. Операционная система и другие программы могут считывать эту информацию для определения состояния процессора. В Р6 также реализована улучшенная поддержка контрольных точек, то есть обеспечивается возможность отката компьютера в зафиксированное ранее состояние в случае возникновения ошибки.

ПоказатьСвернуть
Заполнить форму текущей работой