У вас вопросы?
У нас ответы:) SamZan.net

Электронно-вычислительные машины и компьютерные сети

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.2.2025

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ

ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

Кафедра ЭВА

доцент, к.т.н., Мартиросян С.Т.

КОНСПЕКТ ЛЕКЦИЙ

«Электронно-вычислительные машины и компьютерные сети»

по курсу «Организация ЭВМ и систем»

для студентов специальности 220100 – Вычислительная техника, системы, комплексы и сети

МОСКВА – 2011

УДК 651.14

Мартиросян С.Т., Электронно-вычислительные машины и компьютерные сети. Учебное пособие по курсу «Организация ЭВМ и систем», для студентов специальности 220100 – Москва, МГИЭМ, 2011 – 552 стр.

В пособии излагаются основы построения сети Интернет. Основные фундаментальные принципы и технологии,  которые легли в его основу. Выполнен обзор понятийного аппарата объединенных сетей. Описаны современные концепции телекоммуникационных сетей и структур. Подробно излагаются основные протоколы Интернета.

Пособие рекомендовано для студентов и аспирантов, обучающихся по специальности 220100.

Рецензенты:

Заместитель генерального директора и Руководитель отдела проектирования компании «Стинс Коман» к.т.н. Хижняк П.Л.;

Проректор по науке МГИЭМ и заведующий кафедрой «ЭВА», д.т.н., профессор Азаров В.Н.

Тем. план 2009. поз 5

Содержание

[1] Лекция 1. Информационные процессы в ЭВМ

[2] Введение

[2.1] Основные структуры данных

[2.2] Обработка данных

[2.3] Способы представления информации и два класса  ЭВМ

[2.4] Кодирование информации

[2.5] Представление данных в ЭВМ.

[2.6] Форматы файлов

[2.7] Кодирование чисел

[2.8] Кодирование текста

[2.9] Кодирование графической информации

[2.10] Кодирование звука

[2.11] Типы данных

[3] Выводы

[4] Лекция 2.  Компьютер – общие сведения

[4.1] Основные узлы ПК – «Материнская плата»

[4.2] Интерфейсные шины

[4.3] Основные внешние устройства компьютера

[5] Выводы

[6] Вопросы и задания

[7] Лекция 3.  Многоуровневая компьютерная организация

[7.1] Архитектура компьютера

[7.2] Классическая структура ЭВМ -  модель фон Неймана

[7.3] Особенности современных ЭВМ

[8] Выводы

[9] Вопросы и задания

[10] Лекция 4. Математическое обеспечение компьютеров

[10.1] Библиотеки стандартных программ и ассемблеры

[10.2] Высокоуровневые языки и системы автоматизированного программирования

[10.3] Диалоговые ОС и СУБД

[10.4] Прикладные программы и CASE – технологии

[10.5] Компьютерные сети и мультимедиа

[10.6] Операционные системы

[11] Лекция 5.Вычислительные системы - общие сведения

[12] Введение

[12.1] Общие требования

[12.2] Классификация компьютеров по областям применения

[12.3] Персональные компьютеры и рабочие станции

[12.4] Увеличение производительности ЭВМ, за счет чего?

[12.5] Параллельные системы

[12.6] Суперкомпьютеры

[12.7] Разновидности высокопроизводительных систем и области их применения

[12.8] Ограничения  производительности ВС

[12.8.0.1] Закон Амдала и его следствия

[13] Выводы

[14] Вопросы и задания

[15] Лекция 6 (а).  Структурная организация ЭВМ - процессор

[16] Введение

[16.1] Микропроцессорная система

[16.2] Что такое микропроцессор?

[16.3]                                                                                                                                            да

[16.4]             данные, команды                                              адреса команд и данных

[16.5]                                      АЛУ  

[16.6]                     результат                 признаки рез-та   

[16.7] Микроархитектура процессора

[16.8] Лекция 6 (с)

[16.9] Устройство управления

[16.10] Микропроцессорная память

[16.11] Структура адресной памяти процессора

[16.12] Интерфейсная часть МП

[16.13] Трансляторы

[16.13.1]      Режимы работы микропроцессорной системы

[16.14] Классификация процессоров

[16.15] Микроархитектура процессора Pentium II

[17] Выводы

[18] Вопросы и задания

[19] Лекция 7.  Структурная организация ЭВМ - память

[20] Классификация памяти

[21] Распределение системной памяти

[21.0.0.1] Верхняя память (Upper Memory Area) – это 384 Кбайт, зарезервированных у верхней границы системной памяти. Верхняя память разделена на несколько частей:

[21.0.0.2] первые 128 Кбайт являются областью видеопамяти и предназначены для использовании видеоадаптерами, когда на экран выводится текст или графика, в этой области хранятся образы изображений;

[21.0.0.3] Видеопамять

[21.1] Оперативная память, типы ОП

[21.2] Кэш-память

[21.3] Кэш-память прямого отображения

[21.4] Способы организации кэш-памяти

[21.5] Алгоритм псевдо LRU.

[21.6] Разновидности строения кэш-памяти

[22] Выводы

[23] Вопросы и задания

[24] Лекция 8.  Логическая организация памяти

[24.1] Виртуальная память

[24.2] Страничная организация памяти

[24.3] Преобразование адресов

[24.4] Сегментная организация памяти.

[24.5] Свопинг

[25] Выводы

[26] Вопросы и задания

[27] Лекция 9.  Методы адресации

[28] Лекция 10.  Внешняя память компьютера

[29] Введение

[29.1] Жесткий диск (Hard Disk Drive)

[29.2] Общее устройство НЖМД

[29.3] Пластины (диски)

[29.4] Головка записи-чтения

[29.5] Позиционер

[29.6] Контроллер

[29.7] Производительность

[29.8] Структура хранения информации на жестком диске

[29.9] Таблица размещения файлов

[29.10] Кластер

[29.11] Магнитооптические диски

[29.12] Лазерные компакт-диски CD - ROM

[29.13] CD-R

[29.14] CD-RW

[29.15] DVD

[29.16] Дисковые массивы и уровни RAID

[29.17] RAID 0: Базовая конфигурация.

[29.18] RAID1: Зеркальные диски.

[30] Выводы

[31] Вопросы и задания

[32] Лекция 11.  Основные принципы построения систем ввода/вывода

[32.1] Физические принципы организации ввода-вывода

[32.2] Магистрально-модульный способ построения ЭВМ

[32.3] Структура контроллера устройства ввода-вывода

[32.4] Опрос устройств и прерывания. Исключительные ситуации и системные вызовы

[32.5] Организация передачи данных

[32.6] Стандартные интерфейсы и шины систем ввода-вывода

[32.7] PCI Express

[32.8] Чипсет

[32.9] Выводы

[33] Вопросы и задания

[34] Лекция 12.  Особенности архитектуры современных  высокопроизводительных ВС

[34.1] Классификация архитектур по параллельной обработке данных

[34.2] Параллелизм вычислительных процессов

[34.3] Параллелизм на уровне команд – однопроцессорные архитектуры

[34.4] Конвейерная  обработка

[34.5] Суперскалярные архитектуры

[34.6] Мультипроцессорные системы на кристалле

[34.7] Технология Hyper-Threading 

[34.8] Многоядерность — следующий этап развития

[35] Выводы

[36] Вопросы и задания

[37] Лекция 13.  Архитектура многопроцессорных ВС

[38] Введение

[38.1] SMP архитектура

[38.2] MPP архитектура

[38.3] Гибридная архитектура (NUMA)

[38.4] Организация когерентности многоуровневой иерархической памяти.

[38.5]  PVP архитектура

[38.6] Кластерная архитектура

[38.7] Проблемы выполнения сети связи процессоров в кластерной системе.

[38.8] Выводы

[39] Лекция 14.  Кластерные системы

[39.1] Концепция кластерных систем

[39.2] Разделение на High Availability и High Performance системы

[39.3] Проблематика High Performance кластеров

[39.4] Проблематика High Availability кластерных систем

[39.5] Смешанные архитектуры

[40] Лекция 15  Многомашинные системы – вычислительные сети

[41] Введение

[41.1] Простейшие виды связи сети передачи данных

[41.2] Связь компьютера с периферийным устройством

[41.3] Связь двух компьютеров

[41.4] Многослойная модель сети

[41.5] Функциональные роли компьютеров в сети

[41.6] Одноранговые сети

[41.7] Сети с выделенным сервером

[41.8] Гибридная сеть

[41.9] Сетевые службы и операционная система

[42] Лекция 17. Сети и сетевые операционные системы

[42.1] Введение

[42.2] Для чего компьютеры объединяют в сети

[42.3] Сетевые и распределенные операционные системы

[42.4] Взаимодействие удаленных процессов как основа работы вычислительных сетей

[42.5] Основные вопросы логической организации передачи информации между удаленными процессами

[42.6] Понятие протокола

[42.7] Многоуровневая модель построения сетевых вычислительных систем

[42.8] Проблемы адресации в сети

[42.9] Одноуровневые адреса

[42.10] Двухуровневые адреса

[42.11] Удаленная адресация и разрешение адресов

[42.12] Локальная адресация. Понятие порта

[42.13] Полные адреса. Понятие сокета (socket)

[42.14] Проблемы маршрутизации в сетях

[42.15] Связь с установлением логического соединения и передача данных с помощью сообщений

[42.16] Синхронизация удаленных процессов

[43] Заключение

[44] Список литературы:

[45] Тэг                    Строка                  Слово (байт)

[46] ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

 

Лекция 1. Информационные процессы в ЭВМ

Введение

Мы понимаем под информацией все, так или иначе оформленные сведения или сообщения о вещах и явлениях, которые уменьшают степень неопределенности, хаотичности знаний об этих вещах или явлениях. Информация не есть нечто статичное, неизменное, она не существует вне взаимодействия объектов. Как правило, с ней все время что-то происходит, т.е. осуществляются информационные процессы. Эти процессы можно разделить на четыре группы – сбор, хранение, обработка и передача информации.

 КС                           КС                           КС                             КС

                                                                                                     

                Канал Связи (параметр - пропускная способность)

                                                                                               Сигналы

                                       КС

                                                                                                               ОБЪЕКТ

Рис. 1.1  Информационные процессы

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

Данные – это зарегистрированные сигналы. Данные, несоответствующие ни каким целям объекта, не несут для него информацию и, поэтому, пропадают, возвращая объект в то состояние, в котором он был до получения этих данных. 

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

Данные не тождественны информации.

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

302 65 21; 145 44 75; 194 05 67 и  т.д.

Непосвященный человек воспримет эти цифры как данные ему ни о чем не говорящие. Если теперь подписать рядом с числами название и имена абонентов – это уже данные, с которыми можно работать, использовать - т.е. ИНФОРМАЦИЯ. Для получения информации необходим алгоритм обработки данных, механизм интерпретации данных. Прежде чем данные обрабатывать их нужно отформатировать или, лучше сказать, структурировать.

Основные структуры данных

Понятие ДАННЫЕ будет пронизывать весь курс, поэтому необходимо ознакомиться с основными структурами данных: линейная, иерархическая и табличная.

Пример: книга - разобрали на отдельные листы и смешали, набор данных есть, но подобрать адекватный метод получения информации трудно. Если же собрать все листы в правильной последовательности, мы получим простейшую структуру данных – ЛИНЕЙНУЮ. Однако читать придется с самого начала до конца, что не всегда удобно.

Для быстрого поиска требуемой информации применяется ИЕРАРХИЧЕСКАЯ структура. Оглавление – разделы – параграфы и т.д. Элементы структуры более низкого уровня обязательно входят в элементы более высокого уровня.

Теперь представьте, мы связали линейную и иерархическую структуры, то есть связали разделы, главы, параграфы с номерами страниц (содержание). Тем самым, мы создали НАВИГАТОРА,  который еще более упростит поиск – ТАБЛИЧНАЯ структура.        

Обработка данных

Обработка данных или преобразование данных включает следующие операции:

сбор данных;

формализация данных, приведение к единому формату;

фильтрация данных, уменьшение уровня «шума»;

сортировка данных, повышение доступности информации;

архивация данных, организация хранения;

защита данных;

транспортировка данных;

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

Способы представления информации и два класса  ЭВМ 

Первая форма представления информации называется аналоговой или непрерывной. Величины, представленные в такой форме, могут принимать любые значения, в каком – то диапазоне. Они могут быть сколь угодно близки друг к другу и изменяться в произвольные моменты времени.

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

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

Кодирование информации

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

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

Представление данных в ЭВМ.

За основу представления данных в ЭВМ, как правило,  принята двоичная система счисления. Как и десятичная система счисления, двоичная система (в которой используются лишь цифры 0 или 1) является позиционной системой счисления, т.е. в ней значение каждой цифры числа зависит от положения (позиции) этой цифры в записи числа. Каждой позиции присваивается определенный вес.

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

(В двух словах – 16- ная система – это простое решение сложной проблемы – точное представление данных в ЭВМ, 16 –ная система счисления – это краткая нотация двоичной системы).

Форматы файлов

Основное назначение файлов - хранить информацию. Они также предназначены для передачи данных от программы к программе и от системы к системе. Другими словами, файл - это хранилище стабильных и мобильных данных. Но, файл - это нечто большее, чем просто хранилище данных. Обычно файл имеет имя, атрибуты, время модификации и время создания. Понятие файла менялось с течением времени. Операционные системы первых больших ЭВМ представляли файл, как хранилище для базы данных и, поэтому файл являлся набором записей. Обычно все записи в файле были одного размера, часто по 80 символов каждая. При этом много времени уходило на поиск и запись данных в большой файл. В конце 60-х годов наметилась тенденция к упрощению операционных систем, что позволило использовать их на менее мощных компьютерах. Это нашло свое отражение и в развитии операционной системы Unix. В Unix под файлом понималась последовательность байтов. Стало легче хранить данные на диске, так как не надо было запоминать размер записи. Unix оказал очень большое влияние на другие операционные системы персональных компьютеров. Почти все они поддерживают идею Unix о том, что файл - это просто последовательность байтов. Файлы, представляющие собой поток данных, стали использоваться при обмене информацией между компьютерными системами. Если используется более сложная структура файла (как в операционных системах OS/2 и Macintosh), она всегда может быть преобразована в поток байтов, передана и на другом конце канала связи воссоздана в исходном виде.

Итак, мы можем считать, что файл - это поименованная последовательность байтов.

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

Текстовые файлы - наиболее распространенный тип данных во всем компьютерном мире. Для хранения каждого символа чаще всего отводится один байт, а кодирование текстовых файлов выполняют с помощью специальных таблиц, в которых каждому символу соответствует определенное число, не превышающее 255. Файл, для кодировки которого используется только 127 первых чисел, называется ASCII-файлом (сокращение от American Standard Code for Information Interchange - американский стандартный код для обмена информацией), но в таком файле не могут быть представлены буквы, отличные от латиницы (в том числе и русские). Большинство национальных алфавитов можно закодировать с помощью восьмибитной таблицы. Для русского языка наиболее популярны на данный момент три кодировки: Koi8-R, Windows-1251 и, так называемая, альтернативная (alt) кодировка. Подробнее о кодировании русского текста рассказано в главе "Обработка документов". Такие языки, как китайский, содержат значительно больше 256 символов, поэтому для кодирования каждого из них используют несколько байтов. Для экономии места зачастую применяется следующий прием: некоторые символы кодируются с помощью одного байта, в то время как для других используются два или более байтов. Одной из попыток обобщения такого подхода является стандарт Unicode, в котором для кодирования символов используется диапазон чисел от нуля до 65 536. Такой широкий диапазон позволяет представлять в численном виде символы языка людей из любого уголка планеты. Но чисто текстовые файлы встречаются все реже. Люди хотят, чтобы документы содержали рисунки и диаграммы и использовали различные шрифты. В результате появляются форматы, представляющие собой различные комбинации текстовых, графических и других форм данных.

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

Кодирование чисел

Существуют два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел. Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера области памяти, используемой для размещения чисел. В k-разрядной ячейке может храниться 2k различных значений целых чисел. Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:

  1.  перевести число N в двоичную систему счисления;
  2.  полученный результат дополнить слева незначащими нулями до k разрядов.

Пример. Получить внутреннее представление целого числа 1607 в 2-х байтовой ячейке.

Переведем число в двоичную систему: 160710 = 110010001112. Внутреннее представление этого числа в ячейке будет следующим: 0000 0110 0100 0111.

Для записи внутреннего представления целого отрицательного числа (-N) необходимо:

  1.  получить внутреннее представление положительного числа N;
  2.  обратный код этого числа заменой 0 на 1 и 1 на 0;
  3.  полученному числу прибавить 1.

Пример. Получим внутреннее представление целого отрицательного числа -1607. Воспользуемся результатом предыдущего примера и запишем внутреннее представление положительного числа 1607: 0000 0110 0100 0111. Инвертированием получим обратный код: 1111 1001 1011 1000. Добавим единицу: 1111 1001 1011 1001 - это и есть внутреннее двоичное представление числа -1607.

Формат с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p, которую называют порядком: R = m * n p.

Представление числа в форме с плавающей точкой неоднозначно. Например, справедливы следующие равенства:

12.345 = 0.0012345 x 104 = 1234.5 x 10-2 = 0.12345 x 102

Чаще всего в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в таком представлении должна удовлетворять условию: 0.1p <= m < 1p. Иначе говоря, мантисса меньше 1 и первая значащая цифра - не ноль (p - основание системы счисления).

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

Кодирование текста

Множество символов, используемых при записи текста, называется алфавитом. Количество символов в алфавите называется его мощностью.

Для представления текстовой информации в компьютере чаще всего используется алфавит мощностью 256 символов. Один символ из такого алфавита несет 8 бит информации, т. к. 28 = 256. Но 8 бит составляют один байт, следовательно, двоичный код каждого символа занимает 1 байт памяти ЭВМ.

Все символы такого алфавита пронумерованы от 0 до 255, а каждому номеру соответствует 8-разрядный двоичный код от 00000000 до 11111111. Этот код является порядковым номером символа в двоичной системе счисления.

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

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

Стандартными в этой таблице являются только первые 128 символов, т. е. символы с номерами от нуля (двоичный код 00000000) до 127 (01111111). Сюда входят буквы латинского алфавита, цифры, знаки препинания, скобки и некоторые другие символы. Остальные 128 кодов, начиная со 128 (двоичный код 10000000) и кончая 255 (11111111), используются для кодировки букв национальных алфавитов, символов псевдографики и научных символов. О кодировании символов русского алфавита рассказывается в главе "Обработка документов".

Кодирование графической информации

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

Растровые изображения представляют собой однослойную сетку точек, называемых пикселами (pixel, от англ. picture element). Код пиксела содержит информацию о его цвете. Для черно-белого изображения (без полутонов) пиксел может принимать только два значения: белый и черный (светится - не светится), а для его кодирования достаточно одного бита памяти: 1 - белый, 0 - черный. Пиксел на цветном дисплее может иметь различную окраску, поэтому одного бита на пиксел недостаточно. Для кодирования 4-цветного изображения требуются два бита на пиксел, поскольку два бита могут принимать 4 различных состояния. Может использоваться, например, такой вариант кодировки цветов: 00 - черный, 10 - зеленый, 01 - красный, 11 - коричневый.

На RGB-мониторах все разнообразие цветов получается сочетанием базовых цветов - красного (Red), зеленого (Green), синего (Blue), из которых можно получить 8 основных комбинаций:

R

G

B

цвет

0

0

0

черный

0

0

1

синий

0

1

0

зеленый

0

1

1

голубой

R

G

B

цвет

1

0

0

красный

1

0

1

розовый

1

1

0

коричневый

1

1

1

белый

Разумеется, если иметь возможность управлять интенсивностью (яркостью) свечения базовых цветов, то количество различных вариантов их сочетаний, порождающих разнообразные оттенки, увеличивается. Количество различных цветов - К и количество битов для их кодировки - N связаны между собой простой формулой: 2N = К.

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

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

Кодирование звука

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

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

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

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

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

Человек издавна использует довольно компактный способ представления музыки - нотную запись. В ней специальными символами указывается, какой высоты звук, на каком инструменте и как сыграть. Фактически, ее можно считать алгоритмом для музыканта, записанным на особом формальном языке. В 1983 г. ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов. Он получил название MIDI.

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

Заметим, что существуют и другие, чисто компьютерные, форматы записи музыки. Среди них следует отметить формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку. При этом вместо 18-20 музыкальных композиций на стандартный компакт-диск (CDROM) помещается около 200. Одна песня занимает примерно 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.

Типы данных 

Основными типами данных в вычислительной технике являются: бит, байт и слово. Компьютеры работают в основном с байтами, которые являются основной операционной единицей компьютерных данных. Машинное слово (слово) технический термин, означающий 16 бит или 2 байта одновременно. Двойное слово – 4 байта, расширенное слово – 8 байт.

Старший бит (15)                 Бит                                             Младший бит (0)

                    1   1   1   0   1   0   1   1   0   1   0   1   0   1   0   1   

                                    Байт                              Байт    

                                           С  Л  О  В  О   

                                                                         

Для представления данных существует три основных формата:

  •  двоичный с фиксированной запятой;
  •  двоичный с плавающей запятой;
  •  двоично-кодированный десятичный (BCD).

Если надо закодировать целое число со знаком, то старший бит регистра (ячейки памяти) используется для хранения знака (0 при положительном знаке числа и 1 при отрицательном) – формат с фиксированной запятой. 

                      Знак числа              1   0   0   0   1   1  0   0   0   0   1   0   0   0   1

                                                                              Цифры числа

Исходные возможности компьютера позволяют ему работать только с целыми числами, к тому же не  самыми большими. Даже в случае 2х байтового слова, мы можем записать максимальное число 65536, учитывая необходимость отображения, как положительных чисел, так и отрицательных получаем только половину всех числовых значений. Способы представления чисел и программное обеспечение позволяют значительно расширить  возможности компьютера. Для кодирования действительных чисел используют 80-разрядное кодирование. При этом число предварительно преобразуется в нормализованную форму:

3,1415926 = 0,31415926 * 101

 500 000 = 0,5 * 106

 123 456 789 = 0,1 * 1010

Первая часть числа называется мантиссой - М, а вторая – порядком q

Для того чтобы оперировать дробными числами или числами очень большой длины, используется понятие плавающей запятой. Плавающая запятая действует по принципу экспоненциального формата – числа вида  -+M *q+p 

                                                     

                                                   15  14   13                      8    7                            0        

        Знак числа (мантиссы)     

        Знак порядка                                      Модуль                     Модуль

                                                                     мантиссы                 порядка

     

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

Для реализации скоростных вычислений с плавающей запятой применяются числовые сопроцессоры (FPUfloating point unit). Данные в нем хранятся в 80-ти разрядных регистрах.

В двоично-кодированном десятичном формате каждая десятичная цифра представляется в виде 4-х битного двоичного эквивалента. Существует две основные разновидности этого формата: упакованный и неупакованный. В упакованном BCD-формате цепочка десятичных цифр хранится в виде последовательности 4-х битовых групп. В неупакованном формате каждая десятичная цифра находится в младшей тетраде байта, а содержимое старшей тетрады определяется используемой ЭВМ конкретной системой кодирования, и в данном случае несущественно.

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

             15                       12  11                   8   7                     4     3                      0

             

                 Код операции      Адрес 1-го            Адрес 2-го             Адрес    

                                               операнда              операнда                результата  

 

Кроме этого, данные бывают в виде строк – непрерывная последовательность бит или байт, символьные данные, поддерживаемые кодом ASCII и данные типа указатель. Более подробно мы с ними познакомимся после изучения архитектуры компьютера.

Выводы 

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

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

 Информация устраняет неопределенность, уменьшает хаос и энтропию системы.

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

Существуют следующие важнейшие структуры:  линейная, табличная и иерархическая. В ЭВМ применяется универсальная система кодирования, называемая двоичным кодом. Элементарной единицей представления данных называется – бит, далее идут байт, слово, двойное слово.

Вопросы и задания 

  1.  Как вы понимаете термин «средства массовой информации»? Что это?
  2.  Являются ли данные товаром? Могут ли методы быть товаром?
  3.  Определите в каком из сообщений содержится больше информации:
  •  Собака укусила мальчика;
  •  Мальчик укусил собаку.
  1.  Что происходит с информацией по окончании информационного процесса?
  2.  Перечислите основные составляющие информационного процесса.
  3.  Что такое позиционная система счисления? Дайте примеры таких систем.
  4.  Какое число является основанием десятичной, двоичной системы счисления?
  5.  Перевести число из одной системы счисления в другую:

                              210 = Х2, 10112 = Х10, 1610 = Х2,  1011,1210 

  1.  Записать двоичное число, соответствующее десятичному числу 5 в однобайтовом        формате.

Лекция 2.  Компьютер – общие сведения

Компьютер, по существу, устройство способное исполнять четко определенную последовательность операций, предписанную программой. Очень грубо, все многообразие компьютеров можно разделить на три основных класса: персональные системы (от настольных, до карманных), мейнфреймы и сервера на их основе и суперкомпьютеры. Мы начнем  изучение этой области знания со структуры персонального компьютера. ПК характерен тем, что им может пользоваться один человек, не обладающий высокой квалификацией.  На основе персональных компьютеров можно строить самые сложные контрольно-измерительные, управляющие, вычислительные и информационные системы. Имеющиеся в персональном компьютере аппаратные и программные средства делают его универсальным инструментом для самых разных задач. В случае вычислительных и информационных систем персональный компьютер не нуждается в подключении нестандартной аппаратуры, все сводится к подбору или написанию необходимого программного обеспечения. В случае же контрольно-измерительных и управляющих систем персональный компьютер оснащается набором инструментов для сопряжения с внешними устройствами и соответствующими программными средствами. Во многих случаях строить систему на основе персонального компьютера оказывается гораздо проще, быстрее и даже дешевле, чем проектировать ее с нуля на базе какого-то микропроцессора, микропроцессорного комплекта или микроконтроллера. Конечно, в большинстве случаев система на основе персонального компьютера оказывается сильно избыточной, но это плата за универсальность. Когда используется аббревиатура PC (Personal Computer), подразумевается ПК, совместимый с самым массовым семейством фирмы IBM. Конечно, есть много других ПК, не менее достойных, но мы будем акцентировать наше внимание на IBM PC.   

Основные узлы ПК – «Материнская плата»

Основные электронные компоненты, определяющие структуру компьютера типа IBM PC, размещаются на основной плате компьютера, которая называется системной или материнской (Mother Board). А контроллеры и адаптеры дополнительных устройств, либо сами эти устройства, выполняются в виде плат расширения (Dаughter Board — дочерняя плата) и подключаются к шине с помощью разъёмов расширения, называемых также слотами расширения (англ. slot — щель, паз).

Рис.2.1 Структурная схема IBM PC-совместимого компьютера

Ядром компьютера является центральный процессор (CPU- один или несколько), ОЗУ (RAM). ПЗУ(ROM) с BIOS и интерфейсные средства, связывающие между собой все элементы компьютера и периферийного оборудования. На рисунке 2.1 они изображены в виде «облака», поскольку их формы разнообразны (шины, хабы, мосты).  Это «облако» обычно имеет интерфейсы одной или нескольких шин расширения (ISA, EISA, PCI/PCI-X, PCI Express), а также порта AGP (на сегодня вытесняемого PCI-E). Стандартная архитектура PC определяет обязательный набор средств ввода-вывода и  средств поддержки периферии, включая систему аппаратных прерываний (контроллер прерываний PICi8259A), систему прямого доступа к памяти (контроллер ПДП – i8237A), трехканальный счетчик (i8254), интерфейс клавиатуры (КВС-i8042), канал управления звуком, память и часы CMOS.   Компьютер должен быть дополнен периферией: дисплеем со своим адаптером подключенному к порту AGP, контроллерами шин периферийных устройств (ATA, SATA, SCASI, USB, Fire Wire), интерфейсы портов (COM, LPT, Game…), дисководов, аудиосредств и пр. Как правило, «облако»   вместе со средствами ввода-вывода и поддержки периферии реализуется чипсетом системной платы, который и включает в себя перечисленные выше интерфейсы.  

Основные компоненты компьютера:

  •  Центральный процессор (АЛУ с блоком управления) — это микропроцессор со всеми необходимыми вспомогательными микросхемами, включая внешнюю кэш-память и контроллер системной шины. Процессор имеет набор регистров, часть которых доступна для хранения операндов, выполнения действий над ними и формирования адреса команд и операндов. Другая часть регистров используется процессором для служебных (системных) целей. Задача ЦП заключается в том, чтобы последовательно вызывать из памяти команды по некоторому адресу, декодировать их, вызывать данные (операнды) по некоторому адресу, выполнять действия, предписанные командой, и записывать результат по некоторому адресу.   
  •  Оперативная память (ОП или ОЗУ) – самый большой массив ячеек памяти со смежными адресами,  может занимать почти все адресуемое пространство памяти процессора. Для повышения производительности ОП кэшируется сверхоперативной памятью на нескольких уровнях. В современных персональных компьютерах стандартный объем системной памяти составляет, как правило, от 512 до 2 Гбайт. Оперативная память компьютера выполняется на микросхемах динамической памяти и поэтому требует регенерации.
  •  Постоянная память (ПП) (ROM - BIOS Base Input/Output System имеет небольшой объем до 64 Кбайт), содержит программу начального запуска, описание конфигурации системы, а также драйверы (программы нижнего уровня) для взаимодействия с системными устройствами. Помимо ПЗУ процессор имеет и некоторые виды специальной памяти (например, видеопамять графического адаптера).
  •  Внешняя память организуется, как правило,  на магнитных и оптических дисках, магнитных лентах. Объем, по существу, не ограничен.  
  •  Контроллер прерываний, позволяющий  периферийным устройствам сигнализировать процессору о необходимости исполнения некоторых обслуживающих процедур.
  •  Контроллер прямого доступа к памяти позволяет периферийным устройствам обмениваться массивами данных с оперативной памятью, не отвлекая на это процессор. Служит для организации многопользовательского и многопрограммного режима.
  •  Контроллер регенерации осуществляет периодическое обновление информации в динамической оперативной памяти путем проведения по шине специальных циклов регенерации.
  •  Коммуникационные устройства служат для передачи информации между компьютерами и их частями. Сюда относят модемы, адаптеры глобальных и локальных сетей.
  •  Системные устройства ввода/вывода — это те устройства, которые необходимы для работы компьютера и взаимодействия со стандартными внешними устройствами по параллельному и последовательному интерфейсам. Они могут быть выполнены на материнской плате, а могут располагаться на платах расширения.
  •  Платы расширения устанавливаются в слоты (разъемы) системной магистрали и позволяют адаптерам и контроллерам ПУ непосредственно использовать системные ресурсы компьютера. Они могут обмениваться данными с другими устройствами на шине в режиме программного обмена, в режиме прерываний и в режиме ПДП. Предусмотрена также возможность захвата шины, то есть полного отключения от шины всех системных устройств на некоторое время.

Важная особенность подобной архитектуры — ее открытость, то есть возможность включения в компьютер дополнительных устройств, причем как системных устройств, так и разнообразных плат расширения. Открытость предполагает также возможность простого встраивания программ пользователя на любом уровне программного обеспечения компьютера. Первый компьютер семейства, получивший широкое распространение, IBM PC XT, был выполнен на базе оригинальной системной магистрали PC XT-Bus. В дальнейшем (начиная с IBM PC AT) она была доработана до магистрали, ставшей стандартной и получившей название ISA (Industry Standard Architecture). До недавнего времени ISA оставалась основой компьютера. Однако, начиная с появления процессоров i486 (в 1989 году), она перестала удовлетворять требованиям производительности, и ее стали дублировать более быстрыми шинами: VLB (VESA Local Bus) и PCI (Peripheral Component Interconnect bus) или заменять совместимой с ISA магистралью EISA (Enhanced ISA).  Постепенно шина параллельная PCI вытеснила конкурентов и стала фактическим стандартом, однако сегодня господствует тенденция перехода от параллельных к последовательным способам передачи данных. Так интерфейс жесткого диска эволюционировал от параллельных IDE, EIDE, SCASI к последовательному интерфейсу Serial ATA с 4рех жильным кабелем, т.е. от пропускной способности 33 Мбит/с к 600 Мбит/с. Знаменитая PCI эволюционировала в последовательную PCI Express с ее рекордной скоростью на уровне 5 Гбит/с в полнодуплексном режиме. Таким образом, наблюдается тенденция перехода от синхронных параллельных шин к высокочастотным последовательным. (Заметьте, «последовательные» – не обязательно значит «однобитные», здесь возможны и 2, и 8, и 32 бит ширины при сохранении присущей последовательным шинам пакетной передачи данных) При этом в архитектуре компьютера появились чисто сетевые компоненты – мосты, коммутаторы и маршрутизаторы, что нашло свое отражение в конструкции чипсетов.  

Интерфейсные шины

Другое направление совершенствования архитектуры персонального компьютера связано с максимальным ускорением обмена информацией с системной памятью. Именно из системной памяти компьютер читает все исполняемые команды, и в системной же памяти он хранит данные. То есть больше всего обращений процессор совершает именно к памяти. Ускорение обмена с памятью приводит к существенному ускорению работы всей системы в целом. Но при использовании для обмена с памятью системной магистрали приходится учитывать скоростные ограничения магистрали. Системная магистраль должна обеспечивать сопряжение с большим числом устройств, поэтому она должна иметь довольно большую протяженность; она требует применения входных и выходных буферов для согласования с линиями магистрали. Циклы обмена по системной магистрали сложны, и ускорять их нельзя. В результате существенного ускорения обмена процессора с памятью по магистрали добиться невозможно. Разработчиками был предложен следующий подход. Системная память подключается не к системной магистрали, а к специальной высокоскоростной шине, находящейся «ближе» к процессору, не требующей сложных буферов и больших расстояний. Любой процессор архитектуры x86 CPU обязательно оснащён процессорной шиной. Эта шина служит каналом связи между процессором и всеми остальными устройствами в компьютере: памятью, видеокартой, жёстким диском и так далее. Так, классическая схема организации внешнего интерфейса процессора (используемая, к примеру, компанией Intel в своих процессорах архитектуры х86) предполагает, что параллельная мультиплексированная процессорная шина, которую принято называть FSB (Front Side Bus), соединяет процессор (иногда два процессора или даже больше) и контроллер, обеспечивающий доступ к оперативной памяти и внешним устройствам. Этот контроллер обычно называют северным мостом, он входит в состав набора системной логики (чипсета). Используемая Intel в настоящее время эволюция FSB – QPB, или Quad-Pumped Bus, способна передавать четыре блока данных за такт и два адреса за такт! То есть за каждый такт синхронизации шины по ней может быть передана команда либо четыре порции данных (напомним, что шина FSB–QPB имеет ширину 64 бит, то есть за такт может быть передано до 4х64=256 бит, или 32 байт данных). Итого, скажем, для частоты FSB, равной 200 МГц, эффективная частота передачи адреса для выборки данных будет эквивалентна 400 МГц (2х200 МГц), а самих данных – 800 МГц (4х200 МГц). Таким образом, структура персонального компьютера из одношинной, применявшейся только в первых компьютерах, становится трехшинной, а затем и многошинной.


Рис. 2.2.  Организация связей в случае трехшинной  и многошинной структуры.

Назначение шин следующее:

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

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

Основные внешние устройства компьютера

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

Видеосистема компьютера состоит из трех компонент:

-  монитор (называемый также дисплеем);

-  видеоадаптер;

-  программное обеспечение (драйверы видеосистемы).

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

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

Наряду с традиционными ЭЛТ-мониторами все шире используются плоские жидкокристаллические (ЖК) мониторы.

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

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

Активные матрицы вместо нитей используют прозрачный экран из транзисторов и обеспечивают яркое, практически не имеющее искажений изображение. Панель при этом разделена на 308160 (642х480) независимых ячеек, каждая из которых состоит из четырех частей (для трёх основных цветов и одна резервная). Таким образом, экран имеет почти 1,25 млн точек, каждая из которых управляется собственным транзистором.

По компактности такие мониторы не знают себе равных. Они занимают в 2 – 3 раза меньше места, чем мониторы с ЭЛТ и во столько же раз легче; потребляют гораздо меньше электроэнергии и не излучают электромагнитных волн, воздействующих на здоровье людей.

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

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

Сенсорными экранами оборудуют рабочие места операторов и диспетчеров, их используют в информационно-справочных системах и т.д.

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

Наиболее распространенный видеоадаптер на сегодняшний день — адаптер SVGA (Super Video Graphics Array — супервидеографический массив), который может отображать на экране дисплея 1280х1024 пикселей при 256 цветах и 1024х768 пикселей при 16 – 32 миллионах цветов.

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

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

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

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

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

-  аналого-цифровой, который преобразует непрерывные (то есть, аналоговые) звуковые сигналы (речь, музыку, шум) в цифровой двоичный код и записывает его на магнитный носитель;

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

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

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

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


Рис 2.3  Схема реализации модемной связи

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

Управление модемом осуществляется с помощью специального коммутационного программного обеспечения.

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

Факс — это устройство факсимильной передачи изображения по телефонной сети. Название "факс" произошло от слова "факсимиле" (лат. fac simile — сделай подобное), означающее точное воспроизведение графического оригинала (подписи, документа и т.д.) средствами печати. Модем, который может передавать и получать данные как факс, называется факс-модемом.

Манипуляторы (мышь, джойстик и др.) — это специальные устройства, которые используются для управления курсором.

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

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

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

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

Принтеры (печатающие устройства) - это устройства вывода данных из ЭВМ, преобразующие информационные ASCII-коды в соответствующие им графические символы (буквы, цифры, знаки и т.п.) и фиксирующие эти символы на бумаге.

Сканер - это устройство ввода в ЭВМ информации непосредственно с бумажного документа. Можно вводить тексты, схемы, рисунки, графики, фотографии и другую графическую информацию.

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

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

Выводы 

Большинство вычислительных машин имеет один и тот же набор функциональных блоков-модулей.

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

На основе персональных компьютеров можно строить самые сложные контрольно-измерительные, управляющие, вычислительные и информационные системы.

Все возрастающие требования высокого быстродействия привели к многошинной структуре персонального компьютера.

Вопросы и задания

1. Любая, когда-либо существовавшая вычислительная система обязательно имеет в своем составе (укажите 3 верных ответа):

  •  центральный процессор;
  •  звуковую плату;
  •  оперативную память;
  •  устройство ввода-вывода;
  •  винчестер (жесткий диск).

2. Укажите 3 характеристики, относящиеся к процессору:

  •  тактовая частота;
  •  объем оперативной памяти;
  •  разрядность;
  •  объем кэш-памяти.

3. При работе с каким типом монитора нагрузка на глаза минимальная:

  •  с CRT-монитором;
  •  с LCD-монитором.

4. Видеопиксель цветного монитора состоит из цветных точек:

  •  белой и черной;
  •  красной, зеленой, синей;
  •  голубой, пурпурной, желтой, черной.

5. Какое из перечисленных устройств применяется для выхода в Интернет?

  •  джойстик;
  •  модем;
  •  TV-тюнер.

6. Для нанесения изображения лазерные принтеры используют:

  •  выжигание по бумаге лучом лазера;
  •  специальный термочувствительный порошок;
  •  ленту, как у пишущей машинки;
  •  мелкие капли чернил.

7. При выключении компьютера вся информация стирается:

  •  на гибком диске;
  •  на CD-диске;
  •  на жестком диске;
  •  в оперативной памяти.

8. Какое из утверждений не является верным:

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

9. Какое из утверждений не является верным:

  •  сканер - это устройство, которое чертит графики, рисунки или диаграммы под управлением компьютера;
  •  накопители на компакт-дисках входят в состав внешней памяти компьютера;
  •  модем является устройством приема-передачи данных.

 Лекция 3.  Многоуровневая компьютерная организация 

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

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

Архитектура компьютера 

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

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

На самом нижнем уровне (нулевом) – цифровом логическом уровне, объекты называются  вентилями или переключателями. Эти переключатели могут находиться в одном из двух устойчивых состояний: переключатель включен или выключен,  конденсатор заряжен или разряжен, магнитный домен намагничен или нет, транзистор находится в проводящем состоянии или непроводящем и т.п. Одно из таких физических состояний создает высокий уровень выходного напряжения (например, 4 В), а другое – низкий (например, 0 В). В компьютере эти электрические напряжения принимаются соответственно за 1 (логическая) и 0 (логический). Хотя возможно и обратное кодирование.

Следующий уровень – микроархитектурный уровень. На этом уровне можно анализировать совокупности логических схем, например АЛУ, оперативную память, регистры. Регистры вместе с АЛУ формируют тракт данных, обеспечивающий тот или иной алгоритм выполнения арифметической или логической операции. Иногда, работа тракта данных регулируется особой программой – микропрограммой. Сейчас чаще всего тракт данных контролируется аппаратным обеспечением.

Второй уровень называется уровнем архитектуры системы команд. В процессе работы МП обслуживает данные, находящиеся в его регистрах, в поле ОП, а также во внешних портах ЭВМ. Часть данных он интерпретирует как непосредственно данные, часть как адресные данные, а часть как команды. Совокупность всех возможных команд образует систему команд процессора. Именно система команд  (расширенная или сокращенная) разделяет процессоры на RISC, CISC или векторные, суперскалярные и т.д.   Машинная команда состоит из двух частей: операционной и адресной. Операционная часть команды – это группа разрядов в команде, предназначенная для предоставления кода операции машины (КОП). Адресная часть команды – это группа разрядов, в которых записываются коды адреса ячеек памяти машины. Часто эти адреса называются адресами операндов, т.е. чисел, участвующих в операции.   По количеству адресов, записываемых в команде, команды делятся на безадресные, одно -, двух- и трехадресные. Типовая структура трехадресной команды:

КОП

Адрес 1-го операнда

Адрес 2-го операнда

Адрес результата

Типовая структура двухадресной команды:

КОП

Адрес 1-го операнда

Адрес 2-го операнда

В этом случае, результат операции записывается на место 1-го операнда.

Типовая структура одноадресной команды:

КОП

Адрес операнда, результата или перехода

Типовая структура безадресной команды:

КОП

Расширение кода операции

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

  •  операции пересылки информации внутри ЭВМ;
  •  арифметические операции над информацией;
  •  логические операции над информацией;
  •  операции обращения к внешним устройствам ЭВМ;
  •  операции передачи управления;
  •  обслуживающие и вспомогательные операции.

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

Уровень 5     

                                                                  Трансляция (компилятор)

Уровень 4      

                                                                   Трансляция (ассемблер)

Уровень 3      

                                                                    Трансляция

Уровень 2       

                                                                      Интерпретация (микропрограмма)               

Уровень 1

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

Уровень 0

Рис. 3.1  Шестиуровневое представление компьютера.

Классическая структура ЭВМ -  модель фон Неймана

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

Принято считать, что первый электронный компьютер ENIAC был изготовлен в США в 1946 г. (если мы на минуточку забудем, что уже в 1941 году цифровая машина Z1 и Z2 Конрада Цузе расчитывала траекторию ракет обстреливающих Лондон). Блестящий анализ сильных и слабых сторон проекта ENIAC был дан в отчете Принстонского института перспективных исследований "Предварительное обсуждение логического конструирования электронного вычислительного устройства" (июнь 1946 г.). Этот отчет, составленный выдающимся американским математиком Джоном фон Нейманом и его коллегами по Принстонскому институту Г. Голдстайном и А. Берксом, представлял проект нового электронного компьютера. Идеи, высказанные в этом отчете, известные под названием "Неймановских Принципов", оказали серьезное влияние на развитие компьютерной техники.

Сущность "Неймановских Принципов" состояла в следующем:

  1.  Двоичная система счисления - компьютеры на электронных элементах должны работать не в десятичной, а в двоичной системе счисления;

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

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

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

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

В Советском Союзе работы по созданию электронных компьютеров были начаты несколько позже. Первый советский электронный компьютер был изготовлен в Киеве в 1953 г. Он назывался МЭСМ (малая электронная счетная машина), а его главным конструктором был академик Сергей Лебедев, автор проектов компьютеров серии БЭСМ (большая электронная счетная машина).

Самой важной отличительной чертой модели фон Неймана был и остается принцип  единой  линейной  памяти,  которая  адресуется последовательными адресами и в которой  команды  неотличимы  от данных. Структура ЭВМ фон Неймана приведена на рис. 3.2.

Память                                                                     Процессорное устройство


Рис.  3.2   Модель фон Неймана

Представления данных как чисел и соответствующий характер команд с самого начала  определили  выбор  архитектуры, ориентированной на числовую обработку. Обычно в этих ЭВМ данные  представляются  в  виде  скалярных данных,  векторов и матриц. Числа в ЭВМ представляются как целые.
             Таким образом, ЭВМ с архитектурой фон Не
ймана, это ЭВМ с управлением потоком команд. Принято считать, что ВМ с архитектурой фон Неймана присущи следующие особенности:
1.
единая, последовательно адресуемая память (обычные скалярные однопроцессорные системы, при этом наличие конвейера не меняет дела);
2.   
память является линейной и одномерной (одномерная – имеет вид вектора слов, память состоит из ячеек фиксированной длины и имеет линейную структуру адресации); 3.     отсутствует явное различие между командами и данными;

4. ход выполнения вычислительного процесса определяется только централизованными и последовательными командами или, другими словами, управление потоком команд (выбрать адрес команды – выбрать данные – произвести действие и т.д.);

5.     назначение данных не является их неотъемлемой, составной частью, назначение данных определяется логикой программы.

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

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

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

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

Особенности современных ЭВМ

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

  •  Индексные  регистры.  Позволяют формировать адреса памяти добавлением содержимого указанного регистра  к  содержимому поля команды.  Этот  принцип  впервые  реализован  в 1949г.  в ЭВМ Манчестерского университета и использован в  1953г.  фирмой  Electro Data Corporation при производстве ЭВМ Datatron.
  •  Регистры общего назначения. Благодаря этой группе регистров устраняется  различие между индексными регистрами и аккумуляторами и в  распоряжении  пользователя  оказывается не один, а несколько регистров-аккумуляторов.  Впервые это решение было применено, вероятно, в ЭВМ Pegasus фирмы Ferranti (1956г.).
  •  Представление   данных   в   форме  с  плавающей  точкой. Представление данных в виде мантиссы и порядка и выполнение  операций над ними было реализовано в 1954г. в вычислительных машинах NORC и 704 фирмы IBM.
  •  Косвенная  адресация. Средство  позволяющее использовать команды, указывающие адреса, по которым в свою очередь находится информация о  местоположении операндов команд. Принцип косвенной адресации был реализован в 1958г. в ЭВМ 709 фирмы IBM.
  •  Программные   прерывания. При  возникновении  некоторого внешнего события состояние вычислительной  системы, связанное с выполнением прерванной  команды, запоминается в определенной области. Этот принцип впервые был применен в 1954г. в машине Univac1103.
  •  Асинхронный ввод-вывод. Параллельно обычному  выполнению команд независимые  процессоры управляют операциями ввода-вывода. Первой ЭВМ с независимым процессором  ввода-вывода  являлась  ЭВМ709 фирмы IBM (1958г.).
  •  Виртуальная память. Определение  адресного  пространства программы осуществляется без "привязки" к физическим областям памяти обычно с  целью  создания  впечатления,  что  вычислительная система имеет больший объем основной памяти, чем тот, которым она фактически располагает. В 1959г. в вычислительной системе Atlas Манчестерского университета  были реализованы принципы разделения памяти на страницы и динамическая трансляция адресов  аппаратными средствами.
  •  Мультипроцессорная обработка. Два или более  независимых процессора обрабатывают  потоки команд из общей памяти. Не ясно, кто был первооткрывателем такого  способа  обработки, однако, в конце 50-х начале 60-х годов,   он был реализован в вычислительных машинах Sage фирмы IBM, Sperri-Univac LARC и D825 фирмы Burroughs.

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

Выводы 

Архитектура вычислительной системы предполагаем многоуровневую, иерархическую организацию.

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

Решение задач на ЭВМ реализуется программным способом, т.е. путем выполнения

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

Классическая структура ЭВМ отвечает модели Фон Неймана. Современные ЭВМ далеко ушли от этой модели, но по-прежнему имеют большое число общих черт, например – двоичная система счисления, управление потоком команд

Вопросы и задания 

Какие задачи решает цифровой логический уровень?

Что умеет делать АЛУ?

Чем вызвано многообразие форматов и размеров команд?

Какова роль ОС?

Компьютер по Фон Нейману – основные черты, недостатки и достоинства.

Лекция 4. Математическое обеспечение компьютеров 

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

Рис. 1   Программное обеспечение компьютера

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

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

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

• 50-е годы: библиотеки стандартных программ, низкоуровневые языки и системы автоматизации программирования (ассемблеры и автокоды);

• 60-е годы: высокоуровневые языки и системы автоматизации программирования, пакетные операционные системы;

• 70-е годы: диалоговые операционные системы, системы управления базами данных (СУБД);

• 80-е годы: пакеты прикладных программ для персональных компьютеров, системы автоматизации проектирования (CASE);

• 90-е годы: программное обеспечение компьютерных сетей, мультимедиа.

Библиотеки стандартных программ и ассемблеры 

 Первые вычислительные машины вообще не имели никакого общего программного

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

главной программе.

Вторая проблема была связана с мнемоническим кодированием и автоматическим распределением памяти. Впервые она была решена в Кембридже в Великобритании на ЭВМ EDSAC (1949 г.). Вместо того, чтобы записывать коды операций двоичными цифрами программист писал текст программы на символическом языке, пользуясь мнемоническими обозначениями операций и условными адресами, а специальная программа (руководитель проекта Морис Уилкс назвал ее собирающей системой — по английски assembly system) автоматически преобразовывала мнемонические коды в понятные машине двоичные, и распределяла память для выполнения программы. Идея оказалась столь продуктивной, что все последующие поколения программистов на всех ЭВМ отказались от абсолютного кодирования. Языки программирования низкого уровня, в которых коды операций заменены мнемоническими обозначениями, стали называться языками ассемблера или автокодами (мнемокодами), а преобразующие программы — ассемблерами.

Высокоуровневые языки и системы автоматизированного программирования 

 В 60-е годы объем производства ЭВМ резко возрос, появились разнообразные машины второго поколения, они вышли из узких стен научных и военных учреждений, начали использоваться в бизнесе. Резко расширился круг решаемых задач, соответственно возросло и число людей, занятых программированием. Языки низкоуровневого кодирования, реализованные в ассемблерах, ненамного облегчили их тяжкий труд. Голубой мечтой казалась возможность полной автоматизации программирования, когда программист пишет математические формулы на привычном символическом языке, а компьютер самостоятельно преобразовывает их в тексты машинных программ.

Языки и системы программирования наиболее бурно развивались в 60-е годы, когда были разработаны основные принципы их построения и родились многие сотни языков различного назначения. В результате естественного отбора до конца века дожили немногие «великие языки», в которых воплощены пять основных концепций современного программирования:

процедурное программирование, составляющее основу классических алгоритмических языков Фортран, Бэйсик, Кобол, Алгол, Си и др.;

объектно-ориентированное программирование (ООП), в чистом виде присутствующее в языке Smalltalk, и в той или иной степени — во всех современных языках;

визуально-событийное программирование, являющиеся развитием ООП в части работы с особыми классами визуальных объектов, реализованное в визуальных средах Visual Basic, Delphi, Visual Fux Pro, Visual C++,  Visual Age, Java и др.;

функциональное программирование, реализованное в языке обработки списков Лисп;

логическое программирование, воплощенное в декларативном языке Пролог.

Диалоговые ОС и СУБД 

70-е годы — время безраздельного господства унифицированных машин из клона IBM 360/370. Компьютеры по-прежнему были безумно дороги, но их мощность и надежность резко возросли. Начали создаваться крупные информационные системы для промышленных и торговых предприятий, банков, социальных учреждений. Пользователи перестали бегать с колодами перфокарт — на их рабочих местах появились дисплеи, подключенные к центральной ЭВМ, расположенной в вычислительном центре фирмы. Для организации вычислительного процесса в этих условиях понадобились операционные системы нового типа, позволяющие организовать диалог большого числа пользователей в режиме разделения времени. Родина таких систем — Массачусетский технологический институт (МТИ), где, начиная с середины 60-х годов, проводились экспериментальные работы, но крупные промышленные диалоговые ОС разрабатывались фирмами — производителями аппаратуры. Создание крупных информационных систем поставило перед разработчиками общего ПО проблему хранения больших массивов данных и организации их обработки множеством независимых программ. Так возникла концепция систем управления базами данных (СУБД). Разработка эффективных СУБД оказалась задачей не мене трудоемкой, чем проектирование ОС, первая промышленная СУБД IMS для IBM 360/370 была создана корпорацией IBM в 19691970 годах в рамках проекта полета человека на Луну «Аполлон» и потребовала очень больших капиталовложений.

Использование СУБД произвело настоящую революцию в индустрии обработки данных.

Системы управления базами данных (СУБД), появившиеся в середине 60-х годов, имеют ряд преимуществ по сравнению с прежней схемой независимой работы программ с данными:

• однократный ввод данных,

• независимость программ от данных,

• сокращение затрат на программирование.

Основные функции СУБД:

• описание логической структуры данных,

• манипулирование данными,

• обеспечение целостности данных,

• обеспечение многопользовательского доступа,

• защита данных.

Существуют три основных типа СУБД, различающиеся логической организацией данных: иерархические, сетевые и реляционные. Первыми были иерархические СУБД (первая промышленная СУБД IMS была разработана фирмой IBM в 1968 году), затем в результате теоретических исследований, предпринятых рабочей группой КОДАСИЛ, появилась сетевая модель данных. Наиболее совершенными и распространенными в настоящее время являются реляционные СУБД, основанные на табличной (реляционной) модели данных, предложенной в 1970 году сотрудником IBM Эдгаром Коддом. Стандартным языком запросов в такой СУБД является язык SQL, разработанный в 1974 году Чемберленом и Бойсом.

Современные промышленные СУБД являются очень дорогими и долгоживущими программными продуктами, соизмеримыми по сложности с операционными системами. К концу века на рынке лидирует «большая шестерка»: Oracle, DB2, Informix, Sybase, Ingres, MS SQL Server.

Прикладные программы и CASE – технологии 

В конце 70-х наступил золотой век софтверного бизнеса, возникли тысячи фирм, выбросивших на рынок необъятное море пакетов прикладных программ для деловых применений и развлечений. Они в корне отличались от «тяжелого» софта 70-х годов — были простыми, дешевыми, играли на экранах всеми цветами радуги, упаковывались в яркие коробки и продавались в магазинах как книги или грампластинки. На невероятно расширившемся рынке программного обеспечения возникла ожесточенная конкуренция. Как это бывает с товарами ширпотреба, коммерческий успех того или иного продукта часто обуславливается не техническими параметрами, а широкой рекламой, продуманной маркетинговой политикой. Показательна в этом отношении судьба фирмы Microsoft ее активная, даже агрессивная маркетинговая стратегия привела к тому, что продукция Microsoft стала фактическим стандартом на рынке офисного ПО, а операционная система Windows сумела победить более прогрессивную по своим идеям систему OS/2 фирмы IBM.

Повальное увлечение домашними компьютерами и потребительским софтом как-то отодвинуло в тень работы по совершенствованию серьезного общего программного обеспечения. По-видимому, самым большим успехом в этом направлении в 80-е годы можно считать разработку CASE-технологий, то есть технологий автоматизированного проектирования программного обеспечения (CASEComputer Aided Software Design). Их необходимость возникла при создании информационных систем для крупных организаций, объединяющих сотни пользователей и оперирующих с тысячами объектов и экранных форм. Даже применение языков высокого уровня таких как Cobol, Pascal или C и средств СУБД не избавляет программиста от рутинной работы по проектированию связанных информационных таблиц и организации диалога. Автоматизированные технологии позволяют отказаться от большинства механической работы. На специальных языках сверхвысокого уровня, символьных или графических (они часто называются языками четвертого поколения 4GL — 4th Genrration Language), описывается содержательная постановка задачи, а система сама, пользуясь встроенными в нее стандартными правилами проектирования, генерирует код на обычном языке программирования. Программисту остается подправить текст, если он его почему-то не устраивает, пропустить через компилятор и получить готовую программу.

Компьютерные сети и мультимедиа 

Компьютерные сети начали развиваться исподволь с начала 70-х годов, но именно в 90-е годы скорость их распространения превысила некоторый критический порог. Произошло то, что специалисты предсказывали давно: вычислительная техника и техника связи, слившись воедино как две половинки атомного заряда, привели к подлинному информационному взрыву. Миллионы компьютеров, разбросанных по всему свету, оказались связанными всемирной паутиной Интернета. Гигантские объемы научной, культурной и всякой другой информации сделались доступными любому рядовому пользователю, оказались, по меткому выражению Билла Гейтса «на кончиках пальцев».

Появление «сети сетей» — Интернета — вызвало рождение целой отрасли нематериального производства — сетевого бизнеса. Тысячи фирм делают деньги «из воздуха», занимаясь предоставлением доступа в Интернет (Internet providing) и предоставляя различные услуги по организации электронной почты, публикации и поиску информации в сети, размещению рекламы, электронной торговле и т. д. Годовой оборот таких гигантов сетевой индустрии как America On Line (AOL), Yahoo, Amazon измеряется миллиардами долларов, и это только начало.

Развитие сетевых технологий потребовало разработки соответствующего слоя общего программного обеспечения. Историю и современное состояние компьютерных сетей, а также их программного обеспечения мы будем рассматривать в главе 4, а сейчас несколько слов скажем еще об одном важном достижении, которое в 90-х годах перешло из разряда экспериментальных в общедоступные. Речь идет о мультимедиа-технологиях. Буквальный перевод слова multimedia — «многие среды». Имеются в виду типы объектов, с которыми имеет дело компьютер. В прежние времена вариантов было немного: стандартный компьютер вводил, обрабатывал и выводил только строки символов или неподвижные картинки, на большее не хватало ни мощности процессора, ни объема памяти, ни возможностей устройств вввода-вывода. Однако в последние годы эти характеристики достигли такого состояния, что появилась возможность существенно рас-

ширить класс обрабатываемых объектов.

Операционные системы 

Давайте вначале ответим на вопрос – Что такое операционная система и какие задачи она выполняет?

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

Компьютер сложная система, многоуровневый подход к ее рассмотрению приводит к определению ОС как ИНТЕРФЕЙСА между компьютером и пользователем.

Архитектура на уровне машинных команд сложна и неудобна для применения прикладного ПО. Пример: работа с ЖД (по существу это заниматься разработкой драйверов). Поэтому нужна высокоуровневая абстракция, которая представляла бы ЖД как набор поименованных файлов с их атрибутами. К тому же необходимо создавать иллюзию неограниченного размера оперативной памяти и т.д. и т.п. Таким образом, ОС представляется пользователю ВИРТУАЛЬНОЙ машиной, с которой проще иметь дело.

ОС предназначена для управления всеми частями сложной архитектуры компьютера, ОС в этом случае выступает в роли МЕНЕДЖЕРА ресурсов и осуществляет упорядоченное и контролируемое распределение процессоров, памяти и других ресурсов компьютера. Ну и конечно, ОС представляется системой безопасности реализующей функции защиты пользователей и программ в многопользовательском режиме и мультипрограммном режиме работы ВМ.

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

• пакетные (однозадачные и с мультипрограммированием);

• диалоговые (с разделением времени — ОС РВ);

• системы реального времени.

Пакетные операционные системы, поддерживающие режим мультипрограммирования, были разработаны в начале 60-х годов. Наиболее совершенной системой такого типа было OS/360 MVT для IBM S/360. Следующий этап в развитии ОС для больших ЭВМ — диалоговые операционные системы с разделением времени (ОС РВ). Экспериментальные ОС такого типа, сформировавшие идеологию систем, были созданы в Массачусетском технологическом институте. Сама идея была высказана Джоном Маккарти в 1961 году, проект Multics под руководством Фернандо Корбато реализовывался во второй половине 60-х годов. Промышленные ОС РВ появилсь в 70-х годах, их разработка и доводка выполнялась как правило фирмами-производителями соответствующих ЭВМ, например, OS/VM для IBM S/360 или RSX-11 для PDP-11. Для отечественной ЭВМ БЭСМ-6 также было разработаны ОС «Диспак» и «Дубна».  Среди ОС РВ особое место занимает система Unix, первый вариант которой был разработан Кеннетом Томпсоном и Деннисом Ричи в Bell Laboratories в 1969 году. Написанная на машинно-независимом языке Си, она является портируемой, то есть допускает перенос на различные аппаратные платформы. Это свойство, а также доступность и бесплатность исходного кода, сделали Unix чрезвычайно популярной в 80-х и 90-х годах. Однако доступность исходного кода привела к тому, что единая система перестала существовать, образовалось множество хоть и близких по существу, но различающихся в деталях Unix-подобных систем, как бесплатных, так и коммерческих, например, Solaris от Sun, AIX от IBM, Xenix от Microsoft.

Появление персональных ЭВМ в 80-х годах породило новый класс настольных операционных систем, которые на первых порах относились к классу простейших пакетных однозадачных ОС. Для первого поколения 8-битовых ПК характерной была ОС CP/M, разработанная в 1976 году Гэри Килдолом. Второе поколение, ознаменовавшиеся выпуском 16-битовой IBM PC, оснащалось в основном операционной системой MS-DOS, выпущенной фирмой Microsoft в 1981 году. Эта система стала классической ОС для 80-х годов, однако ей присущи принципиальные недостатки, вытекающие из ограниченности аппаратных ресурсов:

•   однозадачный режим работы;

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

• отсутствие унифицированного графического интерфейса, каждое приложение имеет свою логику взаимодействия с пользователем.

Третье поколение 32-битовых персональных компьютеров, появившееся к концу 80-х годов, обладало достаточными аппаратными возможностями для организации графического человеко-машинного интерфейса. Идеи этого интерфейса, разработанные еще в 70-х годах в Xerox PARC, были впервые широко использованы фирмой Apple в операционной системе Mac OS для ЭВМ Macintosh, выпущенной в 1984 году. Фирма Microsoft, отставшая в этом отношении от Apple, выпустила в 1985 году графическую надстройку над DOS под названием Windows. Первые две версии коммерческого успеха не имели, и только Windows 3.0, появившаяся в 1990 году, стала завоевывать рынок. К концу века Microsoft с настольными ОС Windows-95/98/Me, поддерживающими многозадачный режим работы, стала фактическим монополистом на рынке ОС для платформы Intel, победив в конкурентной войне фирму IBM с ее OS/2.

Кроме настольных ОС, в 90-е годы разрабатывались серверные операционные системы, являющиеся прямыми потомками ОС с разделением времени 70-х и 80-х годов. На рынке доминировали NetWare фирмы Novell, Windows NT фирмы Microsoft и различные версии Unix, среди которых наиболее активно развивалась бесплатная система Linux, первая версия которой была создана в 1991 году финским студентом Линусом Торвальдсом.

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

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

Лекция 5.Вычислительные системы - общие сведения

Введение 

Один из основателей и глава компании Intel Гордон Мур в 1965 году сформулировал статистическую закономерность, названную позднее – законом Мура:

«Число транзисторов на чипе и производительность компьютеров возрастает вдвое каждые 18 месяцев».

Закон Мура связан с тем, что некоторые экономисты называют эффективным циклом. Действительно, увеличение производительности машин приводит к падению цен, это вызывает появление новых прикладных программ (никому не приходило в голову разрабатывать компьютерные игры для машин стоимостью 10 млн. долларов). Новые прикладные программы – новые рынки – появление новых компаний – повышение конкуренции – понижение цены – новое качество. И над всем этим его величество – потребитель, который предъявляет свои требования к продукту, которые постоянно растут.

Для лучшего представления закона Мура приведем некоторые факты: 45 нм — это много или мало? Так, первый транзистор, созданный исследователями Bell Labs в 1947 году, помещался на ладони, в то время как новый 45-нм транзистор Intel в 400 раз меньше красной кровяной клетки человека. И если бы удалось в такой же степени, как транзисторы, уменьшить жилой дом, мы не смогли бы разглядеть его невооруженным глазом. Увидеть 45-нм транзистор можно только при помощи самого современного микроскопа. Такой транзистор, входящий в состав готовящегося к выпуску процессора нового поколения с кодовым названием Penryn, будет примерно в миллион раз дешевле, чем транзистор образца 1968 года. И если бы цены на автомобили упали пропорционально, сегодня новый автомобиль стоил бы около 1 цента. 45-нм транзистор способен включаться и выключаться примерно 300 млрд раз в секунду. За время, необходимое ему для включения или выключения, луч света проходит меньше 2,5 мм.

Общие требования 

К современным компьютерам и вычислительным системам предъявляются следующие требования:

Отношение стоимость/производительность 

Надежность и отказоустойчивость 

Масштабируемость 

Совместимость и мобильность программного обеспечения 

Отношение стоимость/производительность

Начнем с очевидного. Суперкомпьютеры – приоритет производительность, стоимостные характеристики на втором плане. Персональные компьютеры – на первом месте стоимостные характеристики, производительность на втором плане.

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

Производительность

Зачастую производительность вычислительной машины подменяют термином быстродействие и при этом считают, что производительность это – среднестатистическое число операций (кроме операций ввода/вывода), выполняемых машиной в единицу времени. Не вдаваясь в тонкости классификации примем этот подход. Различают пиковую производительность – производительность процессора без учета времени обращения к оперативной памяти; номинальную – производительность процессора с учетом обращений к ОП; системную – общее время выполнения задания с учетом базовых технических и программных средств.

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

В качестве единиц измерения используются:

  •  MIPS (Million Instruction Per Second) – миллион целочисленных операций в секунду;
  •  MFLOPS (Million Floating Operations Per Second) – миллион операций над числами с плавающей запятой в секунду, ну и конечно их производные T, G,…

Системная производительность измеряется с помощью синтезированных тестовых

программ. Результаты оценки ЭВМ конкретной архитектуры приводятся относительно базового образца.

Надежность

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

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

Масштабируемость

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

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

Совместимость

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

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

Классификация компьютеров по областям применения 

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

Теперь мы можем более подробно остановится на наиболее распространенных типах компьютеров.

Персональные компьютеры и рабочие станции

Персональные компьютеры (ПК) появились в результате эволюции миникомпьютеров при переходе элементной базы машин с малой и средней степенью интеграции на большие и сверхбольшие интегральные схемы. ПК, благодаря своей низкой стоимости, очень быстро завоевали хорошие позиции на компьютерном рынке и создали предпосылки для разработки новых программных средств, ориентированных на конечного пользователя. Это прежде всего - "дружественные пользовательские интерфейсы", а также проблемно-ориентированные среды и инструментальные средства для автоматизации разработки прикладных программ. Различают две большие группы ПК: IBM совместимые и Apple Macintosh. Сюда же могут быть отнесены и портативные ПК – portable, laptop, noutbook, palmtop

Сетевой компьютер (Net Computer) появился как компонент приложения клиент-сервер, имеющий минимальную конфигурацию ПО и предназначенный для работы в сети. Впервые об этом заявили в 1996 году Oracle, Sun Microsystems, IBM в совместном документе «Network Computer Reference Profile», в котором сформулировали основные черты NC – обработка информации, хранящейся на сервере; принцип бездисковых рабочих станций; должны поддерживать все сетевые протоколы IP, TCP, UDP ….    В свою очередь Microsoft и Intel провозгласили свою концепцию Net PC, самое основное –  как можно дешевле и вообще не надо памяти.

Рабочая станция. Миникомпьютеры стали прародителями и другого направления развития современных систем – 64 -разрядных машин. Создание RISC-процессоров и микросхем памяти емкостью более 1 Мбайт привело к окончательному оформлению настольных систем высокой производительности, которые сегодня известны как рабочие станции. Первоначальная ориентация рабочих станций на профессиональных пользователей (в отличие от ПК, которые в начале ориентировались на самого широкого потребителя непрофессионала) привела к тому, что рабочие станции - это хорошо сбалансированные системы, в которых высокое быстродействие сочетается с большим объемом оперативной и внешней памяти, высокопроизводительными внутренними магистралями, высококачественной и быстродействующей графической подсистемой и разнообразными устройствами ввода/вывода. Это свойство выгодно отличает рабочие станции среднего и высокого класса от ПК и сегодня. Даже наиболее мощные IBM PC совместимые ПК не в состоянии удовлетворить возрастающие потребности систем обработки из-за наличия в их архитектуре ряда "узких мест".

X-терминалы

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

На компьютерном рынке X-терминалы занимают промежуточное положение между персональными компьютерами и рабочими станциями. Поставщики X-терминалов заявляют, что их изделия более эффективны в стоимостном выражении, чем рабочие станции высокого ценового класса, и предлагают увеличенный уровень производительности по сравнению с персональными компьютерами. Быстрое снижение цен, прогнозируемое иногда в секторе X-терминалов, в настоящее время идет очевидно благодаря обострившейся конкуренции в этом секторе рынка. Многие компании начали активно конкурировать за распределение рынка, а быстрый рост объемных поставок создал предпосылки для создания такого рынка. В настоящее время уже достигнута цена в $1000 для Х-терминалов начального уровня, что делает эту технологию доступной для широкой пользовательской базы.

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

 Серверы

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

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

Файловые серверы небольших рабочих групп (не более 20-30 человек) проще всего реализуются на платформе персональных компьютеров и программном обеспечении Novell NetWare. Файл-сервер, в данном случае, выполняет роль центрального хранилища данных. Серверы прикладных систем и высокопроизводительные машины для среды "клиент-сервер" значительно отличаются требованиями к аппаратным и программным средствам.

Однако для файл-серверов общего доступа, с которыми одновременно могут работать несколько десятков, а то и сотен человек, простой однопроцессорной платформы и программного обеспечения Novell может оказаться недостаточно. В этом случае используются мощные многопроцессорные серверы с возможностями наращивания оперативной памяти до нескольких гигабайт, дискового пространства до сотен гигабайт, быстрыми интерфейсами дискового обмена (типа Fast SCSI-2, Fast&Wide SCSI-2 и Fiber Channel) и несколькими сетевыми интерфейсами. Эти серверы используют операционную систему UNIX, сетевые протоколы TCP/IP и NFS. На базе многопроцессорных UNIX-серверов обычно строятся также серверы баз данных крупных информационных систем, так как на них ложится основная нагрузка по обработке информационных запросов. Подобного рода серверы получили название суперсерверов.

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

наличием двух или более центральных процессоров RISC, либо CISC;

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

поддержкой технологии дисковых массивов RAID;

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

Как правило, суперсерверы работают под управлением операционных систем UNIX, а в последнее время и Windows NT, 2000, XP, которые обеспечивают многопотоковую многопроцессорную и многозадачную обработку.

Мейнфреймы

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

Основными поставщиками мейнфреймов являются известные компьютерные компании IBM, Amdahl, ICL, Siemens Nixdorf и некоторые другие, но ведущая роль принадлежит безусловно компании IBM. Именно архитектура системы IBM/360, выпущенной в 1964 году, и ее последующие поколения стали образцом для подражания. В нашей стране в течение многих лет выпускались машины ряда ЕС ЭВМ, являвшиеся отечественным аналогом этой системы.

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

Увеличение производительности ЭВМ, за счет чего?

Попробуем разобраться, какой из факторов оказывается решающим для достижения рекордной производительности. Обратимся к известным историческим фактам. На одном из первых компьютеров мира - EDSAC, появившемся в 1949 году в Кембридже и имевшем время такта 2 микросекунды (2*10-6 секунды), можно было выполнить 2*n арифметических операций за 18*n миллисекунд, то есть в среднем 100 арифметических операций в секунду. Сравним с одним вычислительным узлом современного суперкомпьютера Hewlett-Packard V2600: время такта приблизительно 1.8 наносекунды (1.8*10-9 секунд), а пиковая производительность около 77 миллиардов арифметических операций в секунду. Что же получается? Более чем за  полвека производительность компьютеров выросла почти в 800 миллионов раз. При этом выигрыш в быстродействии, связанный с уменьшением времени такта с 2 микросекунд до 1.8 наносекунд, составляет лишь около 1000 раз. Откуда же взялось остальное? Ответ очевиден - использование новых решений в архитектуре компьютеров. Основное место среди них занимает принцип параллельной обработки команд и данных, воплощающий идею одновременного (параллельного) выполнения нескольких действий.

Параллельные системы 

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

Достижение параллелизма возможно только при выполнимости следующих требований:

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

Возможные режимы выполнения независимых частей программы:

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

Параллельная обработка, воплощая идею одновременного выполнения нескольких действий, имеет несколько разновидностей: суперскалярность, конвейеризация, SIMD – расширения, Hyper Threading, многоядерность. В основном эти виды  параллельной обработки интуитивно понятны, поэтому сделаем лишь небольшие пояснения. Если некое устройство выполняет одну операцию за единицу времени, то тысячу операций оно выполнит за тысячу единиц. Если предположить, что есть, пять таких же независимых устройств, способных работать одновременно, то ту же тысячу операций система из пяти устройств может выполнить уже не за тысячу, а за двести единиц времени. Аналогично система из N устройств ту же работу выполнит за 1000/N единиц времени. Подобные аналогии можно найти и в жизни: если один солдат вскопает огород за 10 часов, то рота солдат из пятидесяти человек с такими же способностями, работая одновременно, справятся с той же работой за 12 минут (параллельная обработка данных), да еще и с песнями (параллельная обработка команд).

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

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

Hyper Threading. Перспективное направление развитие современных микропроцессоров, основанное на многонитевой архитектуре. Основное препятствие на пути повышения производительности за счет увеличения функциональных устройств – это организация эффективной загрузки этих устройств. Если сегодняшние программные коды не в состоянии загрузить работой все функциональные устройства, то можно разрешить процессору выполнять более чем одну задачу (нить), чтобы  дополнительные нити загрузили – таки все ФИУ (очень похоже на многозадачность).

Многоядерность. Можно, конечно, реализовать мультипроцессирование на уровне микросхем, т.е. разместить на одном кристалле несколько процессоров (Power 4). Но если взять микропроцессор вместе с памятью  как ядра системы, то несколько таких ядер на одном кристалле создадут многоядерную структуру. При этом в кристалле интегрируются функции (например,  интерфейсы сетевых и телекоммуникационных систем) для выполнения которых обычно используются наборы микросхем (процессоры Motorola MPC8260, Power 4).

Суперкомпьютеры

Что такое суперЭВМ? Оксфордский толковый словарь по вычислительной технике, изданный в 1986 году, сообщает, что суперкомпьютер это очень мощная ЭВМ с производительностью свыше 10 MFLOPS (10 миллионов операций с плавающей запятой в секунду). Сегодня это средненький результат даже для ПК. Планки производительности в 10 TFLOPS были  успешно перекрыты довольно давно.

Суперкомпьютеры. Программа ASCI (Accelerated Strategic Computing Initiative)

  •  1996, система ASCI Red, построенная Intel, производительность 1 TFlops,
    •  1999, ASCI Blue Pacific от IBM и ASCI Blue Mountain от SGI, производительность 3 TFlops,
    •  2000, ASCI White с пиковой производительностью свыше 12 TFlops (реально показанная производительность на тесте LINPACK составила на тот момент 4938 GFlops)

Суперкомпьютеры. ASCI White

  •  Система с 512-ю симметричными мультипроцессорными (SMP) узлами, каждый узел имеет 16 процессоров,
    •  Процессоры IBM RS/6000 POWER3 с 64-х разрядной архитектурой  и конвейерной организацией
      с 2 устройствами по обработке команд с плавающей запятой и 3 устройствами по обработке целочисленных команд, они способны выполнять до 8 команд за тактовый цикл и до 4 операций с плавающей запятой за такт, тактовая частота 375 MHz,
    •  Оперативная память системы – 4 TB,
    •  Емкость дискового пространства 180 TB
    •  Операционная система представляет собой версию UNIX – IBM AIX,
    •  Программное обеспечение ASCI White поддерживает смешанную модель программирования – передача сообщений между узлами и многопотоковость внутри SMP-узла,
    •  Поддерживаются библиотеки MPI, OpenMP, потоки POSIX и транслятор директив IBM, имеется параллельный отладчик IBM.

Суперкомпьютеры. Система BlueGene

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

212992 двухядерных 32-битных процессоров PowerPC 440 0.7 GHz, пиковая производительность около 600 TFlops, производительность на тесте LINPACK – 478 TFlops

Суперкомпьютеры. Система RoadRunner

RoadRunner является наиболее быстродействующей вычислительной системой (2008) и первым в мире суперкомпьютером, производительность которого превысила рубеж 1 PFlops (1000 TFlops): 12960 процессоров IBM PowerXCell 8i и 6480 двухядерных процессоров AMD Opteron, пиковая производительность около 1700 TFlops, производительность на тесте LINPACK1026 TFlops

Суперкомпьютеры. СКИФ МГУ (НИВЦ МГУ) 2008

Общее количество двухпроцессорных узлов 625
(1250 четырехядерных процессоров Intel Xeon E5472 3.0 ГГц), Общий объем оперативной памяти – 5,5 Тбайт, Объем дисковой памяти узлов – 15 Тбайт, Операционная система Linux, Пиковая производительность 60
TFlops, быстродействие на тесте LINPACK 47 TFlops

Наиболее значимое отечественное достижение в данном направлении связано с созданием семейства суперкомпьютеров под общим названием «Скиф» в рамках сотрудничества российской и белорусской академий наук. От российской стороны ответственным исполнителем является Институт программных систем в г. Переяславле-Залесском, а от Республики Беларусь – объединение «Кибернетика». По основным параметрам «Скиф» не уступает зарубежным аналогам в своем классе компьютеров, а по соотношению цена/производительность намного их превосходит. Осенью 2004 года старшая в ряду «Скифов» система К-1000, включающая 288 двухпроцессорных вычислительных узлов на базе 64-разрядных процессоров AMD Opteron с частотой 2200 МГц, показала производительность 2500 GFLOPS и вошла в рейтинг-лист Top-500, заняв в нем 98-е место.

Второе направление зародилось на базе ИТМ и ВТ – колыбели отечественного производства ЭВМ. После того, как резко снизилось государственное финансирование, большая группа разработчиков во главе с Б.А. Бабаяном стала активно искать зарубежных инвесторов с целью реализации передовых отечественных идей на современной западной технологии. В их активе была закончившаяся в 1991 году разработка 16-процессорного «Эльбруса-3», содержащего самые передовые архитектурные решения и по своей производительности (10 GFLOPS) опережавшего современный ему Cray Y-MP. Однако реализованный в стенах ИТМ и ВТ экземпляр был собран на элементах устаревшей
2-микронной технологии. Громоздкий шкаф с 15 млн. транзисторов и около 3 тыс. схем средней и малой интеграции вполне мог быть «упакован» в 2–3 чипа. В 1992 году работами российских ученых заинтересовалась фирма Sun Microsystems. Был создан «Московский центр SPARC-технологий» (МЦСТ), который, объединившись с некоторым другими фирмами в группу компаний «Эльбрус», осуществляет ряд успешных проектов для отечественных и зарубежных заказчиков. Среди них процессор «Эльбрус-2000» (Е2k), в котором в доработанном и усовершенствованном виде воплощены на кристалле основные принципы «Эльбруса-3».
   

Разновидности высокопроизводительных систем и области их применения

Вот лишь небольшой список областей человеческой деятельности, где использование суперкомпьютеров  необходимо:

  •  автомобилестроение;
  •  нефти - и газодобыча;
  •  фармакология;
  •  прогноз погоды и моделирование изменения климата;
  •  сейсморазведка;
  •  проектирование электронных устройств;
  •  синтез новых материалов;
  •  и многие, многие другие.

В 1995 году корпус автомобиля Nissan Maxima удалось сделать на 10% прочнее благодаря использованию суперкомпьютера фирмы Cray (The Atlanta Journal, 28 мая, 1995г). С помощью него были найдены не только слабые точки кузова, но и наиболее эффективный способ их удаления. По данным Марка Миллера (Mark Miller, Ford Motor Company), для выполнения crash-тестов, при которых реальные автомобили разбиваются о бетонную стену с одновременным замером необходимых параметров, съемкой и последующей обработкой результатов, компании Форд понадобилось бы от 10 до 150 прототипов новых моделей при общих затратах от 4 до 60 миллионов долларов. Использование суперкомпьютеров позволило сократить число прототипов на одну треть. Совсем недавний пример - это развитие одной из крупнейших мировых систем резервирования Amadeus, используемой тысячами агенств со 180000 терминалов в более чем ста странах. Установка двух серверов Hewlett-Packard T600 по 12 процессоров в каждом позволила довести степень оперативной доступности центральной системы до 99.85% при текущей загрузке около 60 миллионов запросов в сутки. И подобные примеры можно найти повсюду. В свое время исследователи фирмы DuPont искали замену хлорофлюорокарбону. Нужно было найти материал, имеющий те же положительные качества: невоспламеняемость, стойкость к коррозии и низкую токсичность, но без вредного воздействия на озоновый слой Земли. За одну неделю были проведены необходимые расчеты на суперкомпьютере с общими затратами около 5 тысяч долларов. По оценкам специалистов DuPont, использование традиционных экспериментальных методов исследований потребовало бы около трех месяцев и 50 тысяч долларов и это без учета времени, необходимого на синтез и очистку необходимого количества вещества.

По каким же направлениям идет реализация высокопроизводительной вычислительной техники в настоящее время? Основных направлений четыре.

1. Векторно-конвейерные компьютеры. Конвейерные функциональные устройства и набор векторных команд - это две особенности таких машин. В отличие от традиционного подхода, векторные команды оперируют целыми массивами независимых данных, что позволяет эффективно загружать доступные конвейеры, т.е. команда вида A=B+C может означать сложение двух массивов, а не двух чисел. Характерным представителем данного направления является семейство векторно-конвейерных компьютеров CRAY куда входят, например, CRAY EL, CRAY J90, CRAY T90 (в марте 2000 года американская компания TERA перекупила подразделение CRAY у компании Silicon Graphics, Inc.).

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

Однако есть и решающий "минус", сводящий многие "плюсы" на нет. Дело в том, что межпроцессорное взаимодействие в компьютерах этого класса идет намного медленнее, чем происходит локальная обработка данных самими процессорами. Именно поэтому написать эффективную программу для таких компьютеров очень сложно, а для некоторых алгоритмов иногда просто невозможно. К данному классу можно отнести компьютеры Intel Paragon, IBM SP1, Parsytec, в какой-то степени IBM SP2 и CRAY T3D/T3E, хотя в этих компьютерах влияние указанного минуса значительно ослаблено. К этому же классу можно отнести и сети компьютеров, которые все чаще рассматривают как дешевую альтернативу крайне дорогим суперкомпьютерам.

3. Параллельные компьютеры с общей памятью. Вся оперативная память таких компьютеров разделяется несколькими одинаковыми процессорами. Это снимает проблемы предыдущего класса, но добавляет новые - число процессоров, имеющих доступ к общей памяти, по чисто техническим причинам нельзя сделать большим. В данное направление входят многие современные многопроцессорные SMP-компьютеры или, например, отдельные узлы компьютеров HP Exemplar и Sun StarFire.

4. Кластерные системы. Последнее направление, строго говоря, не является самостоятельным, а скорее представляет собой комбинации предыдущих трех. Из нескольких процессоров (традиционных или векторно-конвейерных) и общей для них памяти сформируем вычислительный узел. Если полученной вычислительной мощности не достаточно, то объединим несколько узлов высокоскоростными каналами. Подобную архитектуру называют кластерной, и по такому принципу построены CRAY SV1, HP Exemplar, Sun StarFire, NEC SX-5, последние модели IBM SP2 и другие. Именно это направление является в настоящее время наиболее перспективным для конструирования компьютеров с рекордными показателями производительности.

Ограничения  производительности ВС

К сожалению, чудеса в жизни редко случаются. Гигантская производительность параллельных компьютеров и супер-ЭВМ с лихвой компенсируется сложностями их использования. Начнем с самых простых вещей. У вас есть программа и доступ, скажем, к 256-процессорному компьютеру. Что вы ожидаете? Да ясно что: вы вполне законно ожидаете, что программа будет выполняться в 256 раз быстрее, чем на одном процессоре. А вот как раз этого, скорее всего, и не будет.

Закон Амдала и его следствия

Предположим, что в вашей программе доля операций, которые нужно выполнять последовательно, равна f, где 0<=f<=1 (при этом доля понимается не по статическому числу строк кода, а по числу операций в процессе выполнения). Крайние случаи в значениях f соответствуют полностью параллельным (f=0) и полностью последовательным (f=1) программам. Так вот, для того, чтобы оценить, какое ускорение S может быть получено на компьютере из 'p' процессоров при данном значении f, можно воспользоваться законом Амдала:

Если 9/10 программы исполняется параллельно, а 1/10 по-прежнему последовательно, то ускорения более, чем в 10 раз получить в принципе невозможно вне зависимости от качества реализации параллельной части кода и числа используемых процессоров.

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

   s = 0

   Do i = 1, n

      s = s + a(i)

   End Do

(можно тоже самое на любом другом языке)

По своей природе он строго последователен, так как на i-й итерации цикла требуется результат с (i-1)-й и все итерации выполняются одна за одной. Имеем 100% последовательных операций, а значит и никакого эффекта от использования параллельных компьютеров. Вместе с тем, выход очевиден. Поскольку в большинстве реальных программ (вопрос: а почему в большинстве, а не во всех?) нет существенной разницы, в каком порядке складывать числа, выберем иную схему сложения. Сначала найдем сумму пар соседних элементов: a(1)+a(2), a(3)+a(4), a(5)+a(6) и т.д. Заметим, что при такой схеме все пары можно складывать одновременно! На следующих шагах будем действовать абсолютно аналогично, получив вариант параллельного алгоритма. Казалось бы в данном случае все проблемы удалось разрешить. Но представьте, что доступные вам процессоры разнородны по своей производительности. Значит будет такой момент, когда кто-то из них еще трудится, а кто-то уже все сделал и бесполезно простаивает в ожидании. Если разброс в производительности компьютеров большой, то и эффективность всей системы при равномерной загрузке процессоров будет крайне низкой. Но пойдем дальше и предположим, что все процессоры одинаковы. Проблемы кончились? Опять нет! Процессоры выполнили свою работу, но результат-то надо передать другому для продолжения процесса суммирования... а на передачу уходит время... и в это время процессоры опять простаивают... Словом, заставить параллельную вычислительную систему или супер-ЭВМ работать с максимальной эффективность на конкретной программе это, прямо скажем, задача не из простых, поскольку необходимо тщательное согласование структуры программ и алгоритмов с особенностями архитектуры параллельных вычислительных систем.

Заключительный вопрос. Как вы думаете, верно ли утверждение: чем мощнее компьютер, тем быстрее на нем можно решить данную задачу? Заключительный ответ. Нет, это не верно. Это можно пояснить простым бытовым примером. Если один землекоп выкопает яму 1м*1м*1м за 1 час, то два таких же землекопа это сделают за 30 мин - в это можно поверить. А за сколько времени эту работу сделают 60 землекопов? За 1 минуту? Конечно же нет! Начиная с некоторого момента они будут просто мешаться друг другу, не ускоряя, а замедляя процесс. Так же и в компьютерах: если задача слишком мала, то мы будем дольше заниматься распределением работы, синхронизацией процессов, сборкой результатов и т.п., чем непосредственно полезной работой.

Выводы 

Именно компьютерный рынок определяет баланс в отношении стоимость/производительность.

Важнейшей характеристикой вычислительных систем является надежность.

Повышение отказоустойчивости требует введение избыточности аппаратного и программного обеспечения.

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

Совместимость и мобильность ПО должна обеспечивать возможность запуска одних и тех же программных систем на различных аппаратных платформах, т.е. обеспечивать мобильность программного обеспечения.

Вопросы и задания 

  1.  Какие параметры ВС определяют ее производительность?
  2.  Какова производительность современных суперкомпьютеров?
  3.  Что такое кластерные системы и системы высокой готовности?
  4.  Приведите примеры наиболее распространенных серверов.

Лекция 6 (а).  Структурная организация ЭВМ - процессор

Введение 

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

Что известно всем

В 1968 году Роберт Нойс, изобретатель кремниевой интегральной схемы (1958), Гордон Мур, автор известного закона Мура, и Артур Рок, капиталист из Сан-Франциско, основали корпорацию Intel для производства компьютерных микросхем.

Первоначальное название “NM Electronics” звучало не очень привлекательно, после ряда проб остановились на “Integrated Electronics”, утвердить не удалось, зато абривиатуру Intel теперь знают все и стоит она $31 млрд.

За первый год своего существования корпорация продала микросхем (аж!) на $3000. Но вот улыбка судьбы! В августе 1969 года крохотная фирма Intel Corporation, которая была совсем недавно зарегистрирована, получила заказ от небольшой японской фирмы Nippon Calculating Machines, на проектирование микросхем для семейства калькуляторов (10-12 различных несерийных микросхем-калькуляторов). Вместо того, чтобы делать 10-12 различных микросхем на «жесткой логике», т.е. специализированной системе, настроенной на одну, или несколько близких задач. Другими словами, микросхем в которых алгоритмы обработки и хранения данных жестко связаны со схемотехникой и изменения алгоритмов возможны только путем изменения схемотехники системы. Тед Хофман и его сотрудник Стен Мейзор решили разработать одну твердотельную 4-битную микросхему-процессор, представляющую из себя универсальный компьютер с программируемыми функциями, который мог работать в любом из заказанных калькуляторов. Далее грандиозный успех: ноябрь 1970 чип 4001 ----- декабрь 1970 чип 4004. В июне 1971 года Intel анонсировала микропроцессорное семейство 4004 и выкупила все права на микросхему у японской компании  за те - же $60000, которые она заплатила. Nippon Calculating Machines отказалась от исключительных (!) прав на продукты Intel. Последняя в 1974 г. своими усилиями выпустила 8-разрядный процессор 8080, и наконец, покупатели стали проявлять к решениям микроэлектроники реальный интерес. Авторы разработки навечно были внесены в список лауреатов Национального зала Славы США, а само изобретение признано одним из величайших достижений XX века.

Процессор 4004 – 4-х разрядный, 2250 транзисторов, частота – 108 кГц, производительность – 60 000 операций в секунду, чип размером со шляпку гвоздя. Ну а дальше славная история компании Intel – 1978 год первый 16-бтный процессор 8086 (запомним эту дату!), 1982 год 80286, 1985 год 80386, 1989 год 80486 – 32 разрядный, способный адресовать 4 Гбайт памяти и наконец, линейка процессоров Pentium.

Что известно немногим.

В 1968 году (!) два американских инженера Рэй Холт и Стив Геллер создали 20 – разрядный микропроцессор SLF (Special Logic Function).

Чип SLF служил основой бортового компьютера CADC для новейшего истребителя с изменяемой стреловидностью крыла F14. SLF – 20 разрядный процессор с элементами параллельной логики и возможностью расширения (3 синхронно работающих SLF на бортовом компьютере, плюс элементы DSP процессора (!). Можно сказать, что CADC – гениальное для своего времени решение и заложенные в него принципы не устарели и по сей день. Так, в F-14 из-за больших объемов вычислений использовалось одновременно три (!) синхронно работающих микропроцессора SLF. Сравнительно недавно на мировом рынке появились первые общедоступные версии четырехпроцессорных ПК. Строжайшая секретность этой работы не позволила опубликовать результаты исследований, а широкий рынок микропроцессорной техники все больше становился вотчиной Intel.

Как мы упоминали, первый 16 разрядный Intel 8086 вышел в свет только в 1978 году. Он мог адресовать 1 Мбайт памяти (т.е. имел 20 разрядную шину адреса), при 5 МГц тактовой частоты его производительность достигала 0,33 MIPS.

Микропроцессорная система

Микропроцессорная система может рассматриваться как частный случай электронной системы, предназначенной для обработки сигналов (рис. 6.1). В качестве входных и выходных сигналов при этом могут использоваться аналоговые сигналы, одиночные цифровые сигналы, цифровые коды. Характерная особенность традиционной цифровой системы состоит в том, что алгоритмы обработки и хранения информации в ней жестко связаны со схемотехникой системы. То есть изменение этих алгоритмов возможно только путем изменения структуры системы, замены электронных узлов, входящих в систему, и/или связей между ними. Например, если нам нужна дополнительная операция суммирования, то необходимо добавить в структуру системы лишний сумматор. Или если нужна дополнительная функция хранения кода в течение одного такта, то мы должны добавить в структуру еще один регистр. Естественно, это практически невозможно сделать в процессе эксплуатации, обязательно нужен новый производственный цикл проектирования, изготовления, отладки всей системы. Именно поэтому традиционная цифровая система часто называется системой на "жесткой логике".


Рис. 6.1  Электронная система.

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

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


Рис. 6.2  Программируемая (она же универсальная) электронная система.

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

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

Что такое микропроцессор?

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

Основной алгоритм работы процессора

Давайте рассмотрим последовательность действий процессора при выполнении очередного командного цикла. Командный цикл по своему содержанию в основном одинаков для всех машин и отличается лишь некоторыми частностями.  

                                                                                                                                нет  

                                                                                                                                           да

            данные, команды                                              адреса команд и данных

                                     АЛУ  

                    результат                 признаки рез-та   

Рис. 6.3 Структура простейшего процессора и алгоритм его работы

Во время выполнения командного цикла процессор реализует следующую последовательность действий:

  1.  извлечение адреса команды из счетчика команд (блок управляющих регистров), получение самой команды из регистровой памяти и размещение кода команды в регистре команд (блок управляющих регистров) – выборка команды;
  2.  увеличение счетчика на единицу (если код команды занимает несколько ячеек памяти, то содержимое счетчика увеличивается на длину команды);
  3.  код операции посылается в устройство управления, более точно в ПЗУ, где он преобразуется в микропрограмму (КОП ассемблерной команды – это начальный адрес некоторой последовательности микрокоманд машинного кода) - декодирование команды;
  4.  формирование адреса операндов, извлечение операндов из памяти – выборка операндов;
  5.  выполнение заданной в ассемблерной команде операции – исполнение;
  6.  размещение результата операции в памяти – запись результата;
  7.  переход к пункту 1 или останов.

Когда мы говорим, что процессор обрабатывает информацию, то на самом деле мы имеем в виду следующее:

  •  дешифрирует команды;
  •  организует обращение к памяти и выбирает операнды;
  •  выполняет команды программы;
  •  инициирует работу периферийных устройств;
  •  обрабатывает запросы, поступившие от устройств ЭВМ и внешней среды (например, запросы прерывания).

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

  •  память (кэш, ОП, ЖД и т.д.);
  •  регистры процессора (регистровый файл);
  •  регистры подсистемы ввода/вывода (порты ввода/вывода).

Необходимо отметить, что часть регистров в сочетании с арифметика - логическим устройством - АЛУ   часто называют общим именем – операционное устройство – ОУ. Устройство управления производит преобразование ассемблерных команд в машинный код - микрооперации, который только и понятен процессору. Конкретный состав микроопераций и последовательность их выполнения определяется системой команд ассемблера, логической структурой и особенностями работы каждого процессора. При этом соблюдается следующая иерархия выполнения программы:

  •  микрооперация – 1 такт;
  •  команда ассемблера (микрокоманда) – несколько тактов;
  •  программа (микропрограмма) – множество команд ассемблера.

Программный код и система команд

Программный код – это последовательность команд, каждая из которых  определенным образом закодирована и расположена в целом числе байтов памяти. Каждая команда (instruction – инструкция) имеет операционную часть (код команды – КОП), несущую МП информацию о требуемых действиях и адресную часть (или операндную),   указывающую МП, где находится «его предмет труда» - операнды. Хотя эта часть может присутствовать в явном или не явном виде, а может и отсутствовать.

                                                                                                                                       Пример 3х адресной команды

Длина инструкции от 1 до 17 байт для 32 разрядного процессора. Количество полей адресной части команды может быть различным, более того бывают и просто безадресные команды.  Это, собственно, и определяется системой команд процессора. Вспомним фундаментальную инструкцию сложения двух чисел: C=A+B – сложить текущие значения переменных A и B и присвоить их сумму переменной C.  Конкретное выполнение этой операции зависит от принятой в данном процессоре системы команд.

1. 3х адресная команда                       2. 2х адресная команда                     3. Одноадресная команда

C         [A] + [B]                                   A          [A] + [B]                               в этом случае используется АКК

Add A, B, C                                            Add A, B                                         Load A   

                                                               Move C, A                                       Add B

                                                                                                                        Store C

В 3ем случае используется один из регистров АЛУ (АКК – аккумулятор), Load A – копировать в сумматор содержимое ячейки памяти по адресу А и поместить в АКК,  Add B – добавить содержимое памяти по адресу В к содержимому АКК и поместить результат в АКК, Store C – копировать содержимое АКК в ячейку памяти по адресу С.

                                         А,  (В)

                                                                       АЛУ

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

Микроархитектура процессора 

В заключении, на примере процессора Pentium II, типичного процессора CISC-архитектуры, но с элементами RISC кратко рассмотрим основные черты реального процессора IA-32.

                                                                                                                                                

                                                                    Шина   PCI                                                  

                                                                                                                        шина памяти         

                     

                    Локальная           шина кэш-памяти           Локальная      шина        связи с мостом      

                    Устройство     Управления и Операционные Устройства   

                                                          

Рис. 6.4 Архитектура процессора Pentium II 

Pentium II – один из процессоров семейства Intel. Он содержит ту же архитектуру системы команд, что и 80486, Pentium, Pentium Pro,  однако с точки зрения аппаратного обеспечения, он представляет собой нечто большее. Действительно, он может обращаться к 64 Гбайт физической памяти, передавать данные в память и из памяти блоками по 64 бита, хотя и является 32-разрядной машиной. Более того, Pentium II является суперскалярным процессором.  Pentium II имеет двухуровневую кэш-память с полной Гарвардской архитектурой. Кэш первого уровня содержит 16 Кбайт для команд и 16 Кбайт для данных, а кэш-память второго уровня содержит 512 Кбайт команд и данных, который располагается на отдельной микросхеме. Строка кэша состоит из 32 байт и работает на частоте процессора, тактовая частота кэша второго уровня в два раза меньше. На рисунке  6.4 показаны основные компоненты центрального процессора:  

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

УУ содержит - блок вызова/декодирования, блок отправки/выполнения и блок возврата, которые вместе действуют как конвейер высокого уровня. Эти три блока обмениваются данными через пул команд -  Re Order Buffer (буфер перестройки, переупорядочивания команд). Если говорить кратко, блок вызова/декодирования вызывает команды и разбивает их на микрооперации для хранения в ROB, блок отправки/выполнения получает микрооперации из буфера и выполняет их, блок возврата завершает выполнение каждой операции и обновляет регистры.

Блок вызова/декодирования содержит семи стадийный конвейер: блок выборки строк кэш памяти, декодер длины команд и блок выравнивания команд (поскольку в наборе команд Intel содержатся команды разной длины и разного формата), блок декодирования (превращение каждой команды IA-32 в одну или несколько микроопераций), декодирующий за один цикл три команды. Далее блок формирования очереди микроопераций выстраивает очередь, прогнозирует ветвление

Блок отправки/выполнения содержит в своем составе блоки выполнения операций над целыми числами - АЛУ, блоки выполнения операций над числами с плавающей точкой- FPU и блоки выполнения команд ММХ (мультимедийная обработка данных).

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

Внутрисистемный интерфейс или интерфейс магистрали – реализует протоколы обмена ЦПУ с памятью компьютера, контроллерами устройств ввода/вывода,  управляется контроллером магистрали. Система локальных шин и интерфейсов связывает ЦП с кэш-памятью второго уровня и мостом PCI, который играет важную роль в коммуникации обрабатываемых данных.

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

Контроллер ПДП  служит для временного отключения процессора от магистрали  и предоставления прямого доступа к памяти внешнему устройству.

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

Лекция 6 (в) Архитектура системы команд

Системой команд вычислительной машины называют полный перечень команд, которые способна выполнять данная ВМ. В свою очередь, под архитектурой системы команд (АСК) принято определять те средства вычислительной машины, которые видны и доступны программисту.  

Общая характеристика архитектуры системы команд вычислительной машины складывается из ответов на следующие вопросы:

1. Какого вида данные будут представлены в вычислительной машине и в какой форме?

2. Где эти данные могут храниться помимо основной памяти?

3. Каким образом будет осуществляться доступ к данным?

4. Какие операции могут быть выполнены над данными?

5. Сколько операндов может присутствовать в команде?

6. Как будет определяться адрес очередной команды?

7. Каким образом будут закодированы команды?

Классификация

Сложившуюся на настоящий момент ситуацию в области АСК иллюстрирует рисунок.

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

• архитектуру с полным набором команд: CISC (Complex Instruction Set Computer);

• архитектуру с сокращенным набором команд: RISC (Reduced Instruction Set  Computer);

• архитектуру с командными словами сверхбольшой длины: (Very Long Instruction Word).

В вычислительных машинах типа CISC проблема семантического разрыва решается счет расширения системы команд, дополнения ее сложными командами, семантически аналогичными операторам ЯВУ. Основоположником CISC-архитектуры считается компания IBM, которая начала применять данный подход с семейства машин IBM 360 и продолжает его в своих мощных современных универсальных ВМ, таких как IBM ES/9000. Аналогичный подход характерен и для компании Intel в ее микропроцессорах серии 8086 и Pentium.

Для CISC-архитектуры типичны:

• наличие в процессоре сравнительно небольшого числа регистров общего назначения;

• большое количество машинных команд, некоторые из них аппаратно реализуют сложные операторы ЯВУ;

• разнообразие способов адресации операндов;

• множество форматов команд различной разрядности;

• наличие команд, где обработка совмещается с обращением к памяти.

К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время. Рассмотренный способ решения проблемы семантического разрыва вместе с тем ведет к усложнению аппаратуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности ВМ в целом.

Анализ результатов исследований привел к серьезному пересмотру традиционных решений, следствием чего стало появление RISC-архитектуры. Идея заключается в ограничении списка команд ВМ наиболее часто используемыми простейшими командами, оперирующими данными, размещенными только в регистрах процессорах. Обращение к памяти допускается лишь с помощью специальных команд чтения и резко уменьшено количество форматов команд и способов указания адресов операндов. Сокращение числа форматов команд и их простота, использование ограниченного количества способов адресации, отделение операций обработки данных от операций обращения к памяти позволяет существенно упростить аппаратные средства ВМ и повысить их быстродействие. Элементы RISC-архитектуры впервые появились в вычислительных машинах CDC 6600 и суперЭВМ компании Cray Research. Достаточно успешно реализуется RISC-архитектура и в современных ВМ, например, в процессорах Alpha фирмы DEC, серии РА фирмы Hewlett-Packard, семействе PowerPC и т. п.

Отметим, что в последних микропроцессорах фирмы Intel и AMD широко используются идеи, свойственные RISC-архитектуре, так что многие различия между CISC и RISC постепенно стираются.

Помимо CISC- и RISC-архитектур в общей классификации был упомянут еще один тип АСК - архитектура с командными словами сверхбольшой длины (VLIW). Концепция VLIW базируется на RISC-архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане АСК архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллелизма вычислений, в силу чего архитектуру VLIW логичнее адресовать не к вычислительным машинам, а к вычислительным системам.

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

•  стековую;

•  аккумуляторную;

•   регистровую;

•   с выделенным доступом к памяти.

Выбор той или иной архитектуры влияет на принципиальные моменты: сколько адресов будет содержать часть команд, какова будет длина этих адресов, насколько просто будет происходить доступ к операндам и какой, в конечном итоге, будет общая длина команд:

Стековая архитектура

Стек образует множество логически взаимосвязанных ячеек, взаимодействующих по принципу «последним вошел, первым вышел» (Last In First Out). Верхнюю ячейку называют вершиной стека. Для работы со стеком предусмотрены две операции: push (проталкивание данных в стек) и рор (выталкивание данных из стека). Запись возможна только в верхнюю ячейку стека, при этом вся хранящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информация удаляется из стека, а оставшееся его содержимое продвигается вверх. Несомненным достоинством  стековой организации памяти является то, что находит применение  безадресное кодирование команд. Обращение к ячейкам такой памяти производится последовательно с помощью специального указателя стека (УС), определяющего рабочую в данный момент ячейку. Каждая ячейка снабжена тэгом – специальным признаком хранимой информации. Такая ЭВМ имеет структуру, представленную на рисунке.  В ее состав помимо АЛУ входят два специальных буферных регистра РР1 и РР2. Здесь значение тэгов следующее: Op – в данной ячейке хранится операнд, C – признак наличия в ячейке кода операции.

Проиллюстрируем работу такой ЭВМ на примере вычисления выражения ((a + b) * c - d) / e. На первых двух тактах работы из памяти извлекаются операнды a и b и помещаются в рабочие регистры РР1 и РР2. Считав следующую ячейку стековой памяти, устройство управления по ее тэгу определяет, что данная информация представляет собой код операции. Этот код направляется в АЛУ, где и проводится сложение хранящихся в регистрах операндов с записью результата в один из рабочих регистров. Так как в следующей ячейке хранится операнд, то он направляется в РР1, свободный от записанного результата. После этого производится выполнение следующей операции и так далее. Такая структура ЭВМ обеспечивает высокое быстродействие, но требует весьма сложного программирования.  Последнее время возродился интерес к стековой архитектуре ВМ. Связано это с популярностью языка Java и расширением сферы применения языка Forth, семантике которых наиболее близка именно стековая архитектура. Среди современных ВМ со стековой АСК можно упомянуть машины JEM 1 и JEM 2 компании Systems и Clip фирмы Особо следует отметить стековую машину IGNITE компании Patriot tist, которую ее авторы считают представителем нового вида АСК — архитектурой с безоперандным набором команд. Для обозначения таких ВМ они предлагают аббревиатуру ROSC (Removed Operand Set Computer). ROSC-архитектура заложена и в некоторые российские проекты, например разработки ИТФ Строго говоря, по своей сути мало отличается от традиционной архитектуры на базе стека, и выделение ее в отдельный вид представляется не вполне обоснованным.

Аккумуляторная архитектура

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

                                    ШИНА адреса

ШИНА                                                                                                           ШИНА        

данных                                                                                                          команд

                                                                                                                Q     Q  

                             Рис.6.4 Схема аккумуляторного ОУ для одноадресной    команды       

Рассмотрим работу ОУ с аккумуляторной архитектурой на примере выполнения одноадресной инструкции – ADD.

Шаг 1 – Выборка (вызов) команды – на шину адреса подается начальный адрес программы сложения в ОП, команда появляется на шине команд и заносится в регистр команд.

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

Шаг 3.   Выборка  операнда – УУ выставляет на шине адреса адрес первого операнда – Х1, который и  появляется ни шине данных, а затем заносится в регистр R2.

Шаг 4. Исполнение – реализуется операция пересылки операнда Х1 в регистр аккумулятор АЛУ или в ассемблерном формате – R1:=R1`+R2 (только на 4ом шаге появилась одна переменная).

Шаг 5. Выборка  операнда – УУ выставляет на шине адреса адрес второго операнда – Х2, который и  появляется ни шине данных, а затем заносится в регистр R2. Сейчас ситуация следующая, в R1 (а значит на входе сумматора АЛУ) лежит операнд Х1, а в регистре R2 лежит операнд Х2. мы готовы произвести нашу арифметическую операцию сложения.

Шаг 6. Исполнение – реализуется операция R1:=R1+R2, т.е. мы суммируем содержимое двух регистров и пересылаем результат в аккумулятор АЛУ, т.е. в регистр R1.

Шаг 7. Запись результата – [Asum ]:=R1, т.е. содержимое (сумма Х1 и Х2) пересылается в ОП по адресу, находящемуся в ПЗУ устройства управления.

Для загрузки в аккумулятор содержимого ячейки х предусмотрена команда загрузки Load. По этой команде информация считывается из ячейки памяти и происходит занесение считанных данных в аккумулятор. Запись содержимого аккумулятора в ячейку памяти осуществляется командой сохранения Store, при выполнении которой выходы аккумулятора подключаются к шине, после чего информация с шины записывается в память. Для выполнения операции в АЛУ производится считывание одного из операндов из памяти в регистр данных R2. Второй операнд находится в аккумуляторе – R1. Выходы регистра данных и аккумулятора подключаются к соответствующим входам АЛУ. По окончании предписанной операции результат с выхода АЛУ заносится в аккумулятор.

Достоинствами аккумуляторной АСК можно считать короткие команды и простоту декодирования команд. Однако наличие всего одного регистра порождает многократные обращения к основной памяти.

Регистровая архитектура

В машинах данного типа процессор включает в себя массив регистров (регистровый файл), известных как регистры общего назначения (РОН). Эти регистры, в каком-то смысле, можно рассматривать как явно управляемый кэш для хранения недавно использовавшихся данных. Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров. Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых АСК выделяют три подвида команд обработки:

• регистр-регистр;

• регистр-память;

• память-память.

В варианте «регистр-регистр» операнды могут находиться только в регистрах. В них же засылается и результат. Подтип «регистр-память» предполагает, что один из операндов размещается в регистре, а второй в основной памяти. Результат обычно замещает один из операндов. В командах типа «память-память» оба операнда хранятся в основной памяти. Результат заносится в память. Каждому из вариантов свойственны свои достоинства и недостатки

Вариант «регистр-регистр» является основным в вычислительных машинах типа RISC. Команды типа «регистр-память» характерны для CISC-машин. Наконец, вариант «память-память» считается неэффективным, хотя и остается в наиболее сложных моделях машин класса CISC. Операции загрузки регистров из памяти и сохранения содержимого регистров в памяти идентичны таким же операциям с аккумулятором. Отличие состоит в этапе выбора нужного регистра, обеспечиваемого соответствующими селекторами.

Выполнение операции в АЛУ включает в себя:

• выбор регистра первого операнда;

• определение расположения второго операнда (память или регистр);

• подачу на вход АЛУ операндов и выполнение операции;

• выбор регистра результата и занесение в него результата операции из АЛУ.

Обратим внимание на то, что между АЛУ и регистровым файлом должны быть мере три шины.

Архитектура с выделенным доступом к памяти

В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. В английской транскрипции данную архитектуру называют Load/Store architecture. Команда load (загрузка) обеспечивает считывание значения из основной памяти и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и номер регистра). Пересылка информации в противоположном направлении производится командой store (сохранение). Операнды во всех командах обработки информации могут находиться только в регистрах процессора (чаще всего в регистрах общего назначения). Результат операции также заносится в регистр. В архитектуре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. Допускается наличие в АСК ограниченного числа команд, где операнд является частью кода команды. Операция ЗАГРУЗКА пересылает в процессор копию содержимого памяти. Операция СОХРАНЕНИЯ пересылает в память элемент данных,  уничтожая предыдущие данные, хранившиеся по этому адресу.  АСК с выделенным доступом к памяти характерна для всех вычислительных машин с RISC-архитектурой. Команды в таких ВМ, как правило, имеют длину 32 бита и трехадресный формат. В качестве примеров вычислительных машин с выделенным доступом к памяти можно отметить HP PA-RISC, IBM RS/6000, SPARC, MIPS R4000, DEC Alpha и т. д. К достоинствам АСК следует отнести простоту декодирования и исполнения команды.

Лекция 6 (с)

Устройство управления 

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

Любое действие, выполняемое в операционном блоке, описывается некоторой микропрограммой и реализуется за один или несколько тактов. Элементарная функциональная операция, выполняемая за один тактовый интервал и приводимая в действие управляющим сигналом, называется микрооперацией. Совокупность микроопераций, выполняемых в одном такте, называется микрокомандой (МК). Микрокоманды, предназначенные для выполнения некоторой функционально законченной последовательности действий, образуют микропрограмму. Устройство управления предназначено для выработки управляющих сигналов, под воздействием которых происходит преобразование кодов в АЛУ, а также операции по записи и чтению данных  в/из запоминающего устройства.

Устройства управления делятся на:

  •  УУ с жесткой, или схемной логикой;
  •  УУ с программируемой логикой (микропрограммные УУ).

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


Рис. 6.5 Функциональная схема микропрограммного устройства управления

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

Таблица 6.1  Микропрограмма выполнения операции умножения

Адрес МК

УС1

УС2

УС3

УС4

УС5

УС6

Сигнал записи в РК

Адрес следующей МК

300

1

0

1

0

0

1

0

301

301

0

0

0

0

1

0

0

302

302

0

1

0

1

0

0

0

303

303

0

0

0

0

1

0

0

304

304

0

1

0

1

0

0

1

Х

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

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

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

Схема взаимодействия ОУ и ПЗУ устройства управления

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

A              [A] + [B]

Или     Add  A,B

         Move C, A                                                                                                                  

                           ОП                                                                            УУ   

                                                                                     Адрес 1ой мк

                                                                                                              01

                                                                                                              02

                                                                                                              03                                              такты

                                                                                                                                                                син-ции

                                                                                                               07

Таким образом, имя нашей микропрограммы – это начальный адрес в ОП, код операции КОП ассемблерной команды – это начальный адрес некоторой последовательности микрокоманд машинного кода, защитой в ПЗУ устройства управления УУ.

Микропроцессорная память 

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

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

Структура адресной памяти процессора

Память состоит из ячеек, каждая из которых может хранить некоторую порцию информации. Каждая ячейка имеет номер, который называется адресом. Если память содержит n ячеек, они будут иметь адреса от 0 до N-1, как правило, каждая ячейка содержит один байт. Такое представление памяти называется адресным пространством памяти. Если шина адреса имеет n линий, то N=2n . Таким образом, адресное пространство процессора 8086 с n=20 составляет 220 = 1 Мбайт, а процессора i486 с n=32 составляет 4 Гбайт.  Для процессора байтовая организация оперативной памяти является не только основной, но и вполне естественной (рис. 6.6).  

Адрес байта  7  .  .  .  .  .  . 0

N-1     

.

.

.

.

.

2

1

0

 

Рис. 6.6   Байтовая организация памяти

Однако при работе с памятью по шине передаются не отдельные байты, а машинные слова. В 32-разрядной архитектуре машинное слово — это четыре байта, при этом адрес младшего байта кратен четырем. (В 64-разрядной архитектуре машинное слово состоит из восьми байтов.) Принято нумеровать биты внутри машинного слова (как и внутри байта) справа налево, начиная с нуля и кончая 31. Младший бит имеет нулевой номер, старший, или знаковый, бит — номер 31 . При обращении к памяти для считывания/записи слова или двойного слова возникает вопрос о том, какой адрес использовать для этого обращения: действительно, каждый из байт, образующих слово или двойное слово, имеет свой адрес.  В процессорах Intel для адресации составных единиц памяти принимают меньший из адресов тех байт, которые образуют эту единицу обращения (прямой порядок). При этом младшие биты числа находятся в младших битах машинного слова. В этом случае каждое 16-разрядное слово состоит из двух последовательно расположенных байтов, двойное слово из четырех. Например,  адрес памяти А определяет байт с этим адресом (содержимое ячейки – 12h), слово, байты которого имеют адреса А и А+1 с содержимым 3412h, двойное слово, байты которого имеют адреса А, А+1, А+2 и А+3 с содержимым 78563412h.  

Рис. 6.7  Прямой порядок хранения слова

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

Рассмотрим пример: - записать двухбайтовое слово         1 7 B A 

           Обратный порядок байтов                         Прямой порядок байтов

                    «0»                   «1»                                      «1»                 «0»

       0                                                                                                                      0             

                                                                                                                              

       2                                                                                                                      2       

               

Рис. 6.8   Два способа хранения многобайтовых данных

Необходимо отметить, что и в том, и в другом случае слово, содержащее это число, имеет,  адрес – 0, но в одном случае мы записываем его в прямом виде - 17BA, а в другом в перевернутом – ВА17. Принято в качестве адреса слова, которое состоит из нескольких последовательно расположенных байтов, использовать адрес байта с наименьшим номером. В итоге адреса слов уже не будут меняться через единицу, приращение будет зависеть от длины машинного слова. Например, при обращении к целому слову (с содержимым 17BA) процессор выставляет адрес 0. При обращении к младшему байту этой ячейки (с содержимым BA) процессор выставляет тот же самый адрес 0, но использует команду адресующую байт, а не слово. При обращении к старшему байту этой же ячейки (с содержимым 17) процессор выставляет адрес 1 и использует команду адресующую байт. Например, все протоколы сети Internet передают данные в формате Big End, т.к. они были разработаны в 70-х годах XX века. На машинах с архитектурой Little End приходится переставлять байты внутри слова перед отправкой IP-пакета в сеть или при получении IP-пакета из сети.

Интерфейсная часть МП

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

Последовательность шагов: выборка – декодирование – исполнение является основой работы всех компьютеров. Описание работы ЦП можно представить, или имитировать, в виде программы-интерпретатора на языке Java. Сама возможность имитировать работу ЦП с помощью программы, показывает, что программа вычислений не обязательно должна выполняться аппаратным процессором. Напротив,  вызывать  из памяти, определять тип команды и выполнять команду может другая программа (интерпретатор). Другими словами, применение трансляторов с ЯВУ не только способ перейти к машинному языку, языку понятному машине, но и мощный метод эмуляции работы ЦП.

Рис.6.8 Структура трансляторов

Трансляторы

Как следует из многоуровневой архитектуры ЭВМ, прикладные программы пишутся на языках высокого уровня (ЯВУ). Существуют сотни таких языков, но процессор понимает только язык единиц и нулей. Поэтому программы на ЯВУ обычно транслируются на уровень 3 или 4 (уровень ассемблера). Программы трансляторы бывают двух видов – интерпретаторы и компиляторы.  

Программа (микропрограмма) способная вызывать команды, операнды из памяти, определять тип команд и выполнять эти команды называется – интерпретатор.

Интерпретатор разбивает исходную программу на маленькие шаги и последовательно переводит каждую команду в исполняемый машинный код, посылая ее сразу на исполнение.  Интерпретатор, как правило, хранится в виде микрокоманд в ПЗУ, например,  устройства управления.    

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

Другая возможность создать транслятор – это использовать программу компилятор. Компилятор переводит полностью исходную программу на эквивалентный набор машинного языка и только затем загружает ее в память машины для выполнения.

Отличительные особенности: быстро, но изменение платформы приводит к необходимости разработки нового компилятора. Есть и третья возможность, известная под именем Java машины или виртуальной машины Java – это компилятор, транслирующий ЯВУ на промежуточный псевдокод, а затем с псевдокода интерпретатор. При этом сочетаются отличительные особенности того и другого метода.

     Режимы работы микропроцессорной системы

Как уже отмечалось, микропроцессорная система обеспечивает большую гибкость работы, она способна настраиваться на любую задачу. Гибкость эта обусловлена прежде всего тем, что функции, выполняемые системой, определяются программой (программным обеспечением, software), которую выполняет процессор. Аппаратура (аппаратное обеспечение, hardware) остается неизменной при любой задаче. Записывая в память системы программу, можно заставить микропроцессорную систему выполнять любую задачу, поддерживаемую данной аппаратурой. К тому же шинная организация связей микропроцессорной системы позволяет довольно легко заменять аппаратные модули, например, заменять память на новую большего объема или более высокого быстродействия, добавлять или модернизировать устройства ввода/вывода, наконец, заменять процессор на более мощный. Это также позволяет увеличить гибкость системы, продлить ее жизнь при любом изменении требований к ней.

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

  •  программный обмен информацией;
  •  обмен с использованием прерываний (Interrupts);
  •  обмен с использованием прямого доступа к памяти (ПДП, DMA — Direct Memory Access).

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

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


Рис. 6.9  Программный обмен информацией

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

В общем случае организовать реакцию на внешнее событие можно тремя различными путями:

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

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

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

Во втором случае в режиме прерывания процессор, получив запрос прерывания от внешнего устройства (часто называемый IRQ — Interrupt ReQuest), заканчивает выполнение текущей команды и переходит к программе обработки прерывания. Закончив выполнение программы обработки прерывания, он возвращается к прерванной программе с той точки, где его прервали (рис. 6.10).

Здесь важно то, что вся работа, как и в случае программного режима, осуществляется самим процессором, внешнее событие просто временно отвлекает его. Реакция на внешнее событие по прерыванию в общем случае медленнее, чем при программном режиме. Как и в случае программного обмена, здесь все сигналы на магистрали выставляются процессором, то есть он полностью контролирует магистраль. Для обслуживания прерываний в систему иногда вводится специальный модуль контроллера прерываний, но он в обмене информацией не участвует. Его задача состоит в том, чтобы упростить работу процессора с внешними запросами прерываний. Этот контроллер обычно программно управляется процессором по системной магистрали.


Рис. 6.10  Обслуживание прерывания.

Естественно, никакого ускорения работы системы прерывание не дает. Его применение позволяет только отказаться от постоянного опроса флага внешнего события и временно, до наступления внешнего события, занять процессор выполнением каких-то других задач.

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

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

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


Рис. 6.11  Обслуживание ПДП


Рис. 6.12  Информационные потоки в режиме ПДП.

В принципе контроллер ПДП может входить в состав устройства ввода/вывода, которому необходим режим ПДП или даже в состав нескольких устройств ввода/вывода.

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

Классификация процессоров

Итак, именно эволюция ЭВМ с интерпретатором (позже названных машинами с CISC процессорами) сформировала тенденцию использования:

  •  сложных, длинных команд;
  •  разнообразных форматов данных;
  •  разнообразных форматов команд;
  •  медленное выполнение наиболее простых операций.

С другой стороны, именно эволюция CISC (Complex Instruction Set Computer) процессоров послужила мощным стимулом для возникновения концепции RISC (Reduced Instruction Set Computer) архитектуры. Дело в том, что в начале 80-х архитектура CISC стала серьезным препятствием на пути реализации идеи «один процессор в одном кристалле», поскольку для работы с традиционным расширенным списком команд требуется очень сложное устройство управления (микропрограммный интерпретатор), занимающее свыше 60% площади кристалла. К тому времени стали известны результаты статистических исследований ученых IBM – правило 20/80.

На 20% команд программы приходится 80% времени исполнения задания.

В 1980 году группа разработчиков университета Беркли во главе с Девидом Паттерсоном и Карлом Секуин начали разработку процессора без использования интерпретации. Именно они и придумали термин RISC архитектура и выпустили RISC I, RISC II, которые эволюционировали в  процессоры SPARC, а уже в 1981 году появились и знаменитые процессоры MIPS (Джон Хенноси – Стенфорд). Концепция RISC – архитектуры базируется на почти очевидной логической формуле: если быстрые технологии и параллельная обработка недостижимы для всего списка команд из-за высокого уровня затрат, необходимо оставить в системе команд несколько десятков простых, наиболее универсальных и часто употребляемых инструкций, исключив сложные и редко используемые.

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

Первоначально RISC – процессоры действительно существенно вырвались вперед, сравните:

  •  процессор 80386, технология КМОП, частота 25 МГц, число транзисторов 275 000, производительность – 5 млн.оп.в сек (CISC);
  •  процессор R3000, технология КМОП, частота 25 МГц, число транзисторов 11500, производительность – 20 млн.оп.в сек (RISC). Сегодня условны и эти названия и различия между ними. Те и другие заимствовали лучшие черты конкурентов.

 Для CISC процессоров характерно:

  •  небольшое число РОН (до 16);
  •  большое количество машинных команд (свыше 200);
  •  большое количество разнообразных форматов команд и методов адресации;
  •  преобладание двухадресного  и безадресного формата команд;
  •  наличие команд типа «регистр - память»;
  •  команда выполняется за несколько тактов;
  •  использование механизма интерпретации.

 Для RISC процессоров характерно:

  •  все обычные команды непосредственно выполняются аппаратным обеспечением, они не интерпретируются микрокомандами;
  •  в повышении производительности главную роль играет параллелизм, одновременное выполнение большого числа команд и одновременная обработка большого количества данных;
  •  большое количество РОН (свыше 32), лучший способ избежать транзакций –  иметь достаточное количество регистров;
  •  сокращенный набор команд (несколько десятков);
  •  единообразие форматов команд, одинаковая длина и минимум адресных форматов;
  •  наличие и преобладание форматов команд «регистр - регистр», к памяти должны обращаться только команды загрузки и сохранения;
  •  команды выполняются за один такт, а,  как правило, несколько команд за один такт;
  •  использование механизма компиляции.

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

При построении большинства CISC – процессоров используется аккумуляторная архитектура («память-регистр»). При этой архитектуре, в общем случае, требуется кроме собственно команды (например – сложение)  еще две, по крайней мере, операции пересылки данных. При построении большинства  RISC – процессоров применяется исключительно архитектура «регистр-регистр». При таком подходе любая из команд процессора может быть 3-х операндной, и выполнена за один такт. Реализация полной Гарвардской архитектуры, предсказание переходов и введение конвейеров команд и конвейеров обработки данных позволило на долгие годы RISC архитектуре стать лидером высокопроизводительных процессоров для серверов и рабочих станций.  

Микроархитектура процессора Pentium II

В заключении, на примере процессора Pentium II, типичного процессора CISC-архитектуры, но с элементами RISC кратко затвердим основные черты процессоров.

                                                                         Шина  

                                                                          PCI                                        Локальная

                                                                                                                        шина памяти    

                    Локальная      шина Кэш-памяти              Локальная      шина  связи с мостом      

                                                  Устройство Управления    

                                                          

Рис. 6.13 Архитектура процессора Pentium II 

Pentium II – один из процессоров семейства Intel. Он содержит ту же архитектуру системы команд, что и 80486, Pentium, Pentium Pro,  однако с точки зрения аппаратного обеспечения, он представляет собой нечто большее. Действительно, он может обращаться к 64 Гбайт физической памяти, передавать данные в память и из памяти блоками по 64 бита, хотя и является 32-разрядной машиной. Более того, Pentium II является суперскалярным процессором.  

Pentium II имеет двухуровневую кэш-память с полной Гарвардской архитектурой. Кэш первого уровня содержит 16 Кбайт для команд и 16 Кбайт для данных, а кэш-память второго уровня содержит 512 Кбайт команд и данных. Строка кэша состоит из 32 байт и работает на частоте процессора, тактовая частота кэша второго уровня в два раза меньше. На рисунке  6.12 показаны основные компоненты центрального процессора:  блок вызова/декодирования, блок отправки/выполнения и блок возврата, которые вместе действуют как конвейер высокого уровня. Эти три блока обмениваются данными через пул команд -  Re Order Buffer (буфер перестройки команд). Если говорить кратко, блок вызова/декодирования вызывает команды и разбивает их на микрооперации для хранения в ROB, блок отправки/выполнения получает микрооперации из буфера и выполняет их, блок возврата завершает выполнение каждой операции и обновляет регистры.

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

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

Выводы 

Компьютерные системы состоят из трех основных компонентов: процессоров, памяти и устройств ввода-вывода. Задача процессора заключается в том, чтобы последовательно вызывать команды из ОП, декодировать их и выполнять.

Применяемая система команд («память-регистр» или «регистр-регистр») определяют архитектуру тракта данных процессора.

Тракт данных и вид транслятора (компилятор или интерпретатор) определяют тот или иной вид процессора (RISC или CISC).  

Современные процессоры содержат в своем составе как элементы RISC, так и CISC архитектуры.

Вопросы и задания 

Объяснить значение терминов: транслятор, интерпретатор и компилятор.

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

Рассмотрим машину с трактом данных «регистр-регистр». Предположим, что загрузка регистров АЛУ занимает 5 нс, работа АЛУ – 10 нс, а помещение результата обратно в регистр – 5 нс. Какое максимальное число команд в секунду способна выполнить эта машина?

На компьютере 1 выполнение каждой команды занимает 10 нс, а на машине 2 – 5 нс. Можете ли вы с уверенностью сказать, что компьютер 2 работает быстрее?

Объясните различия в CISC и RISC архитектуре и к чему это приводит, в каких областях находит применение?

Лекция 7.  Структурная организация ЭВМ - память

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

 Память ЭВМ представляет собой иерархию запоминающих устройств (ЗУ), отличающихся средним временем доступа к данным, объемом и стоимостью хранения одного байта.

Объем                                                                   Время                Цена $/байт

                                                                             доступа                                   

                                                                                                            

    Десятки, сотни байт                                                      ~ 0,01-1 нс               0.1-10

    

   Сотни Кбайт  -                                                                 ~0,5-2 нс                  0,1-0,5

   Мбайт  

    Гигабайты                                                                         ~2-20 нс                  0,01-0,1  

                                                                                   

    Сотни                                                                                       Десятки

    Гигабайт                                                                                        мкс              0,001-0,01

Рис. 7.1   Иерархия ЗУ

Очевидно, по мере продвижения по предложенной структуре сверху вниз, время доступа увеличивается от нескольких наносекунд у регистровой памяти до десятков микросекунд доступа к дискам. Увеличивается объем памяти (регистры в лучшем случае могут содержать 128 байт, а объем внешней памяти по существу не ограничен), а вот  стоимость хранения данных в расчете на один байт уменьшается.

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

Существует одна закономерность – чем больше объем того или иного блока памяти, тем длительнее цикл обращения к нему и тем медленнее процесс передачи данных. Анализ такого строения памяти позволяет сделать следующие выводы:

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

Иерархия памяти  состоит из многих уровней, но в каждый момент времени процессор имеет дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в двухуровневой иерархии, называется block или line. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока. Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Попадание - есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне. Доля попаданий (hit rate) или (hit ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.

Классификация памяти

Память ЭВМ - это совокупность всех запоминающих устройств, входящих в состав машины. Запоминающие устройства классифицируют по следующим признакам:

  •  по физическому типу (электронная память, магнитные носители, оптоэлектронная, голографические, криогенные и т.д.);
  •  по функциональному назначению (ОЗУ, буферные - БЗУ, сверхоперативные – СОЗУ, внешние – ВЗУ, постоянные – ПЗУ, и т.д.);
  •    по организации доступа -с последовательным доступом, при котором информация как записывается, так и считывается последовательно (ЗУ на магнитных лентах, перфолентах, линиях задержки, CD-ROM);

- с циклическим доступом, при котором место чтения или записи периодически повторяется (НГМД, НЖМД, магнитные барабаны);

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

  •  по способам поиска информации различают адресные и ассоциативные ЗУ. В адресных ЗУ каждая ячейка имеет свой номер адрес, по которому осуществляется обращение к ней. В ассоциативных ЗУ поиск ячейки ведется по некоторым закодированным признакам запросам, т.е. «по содержанию». Таким признаком может быть, например, содержание части разрядов любой ячейки, передаваемой в ЗУ как ключ для обнаружения тех ячеек, где он имеется  [12]. Адресные ЗУ для поиска одной искомой ячейки используют дешифраторы. Ассоциативные осуществляют поиск по всему массиву ЗУ схемами сравнения;
  •   по способу хранения и возможности записи информации различают:

- ПЗУ постоянные ЗУ с неизменяющейся в процессе всей эксплуатации информацией;

- ППЗУ полупостоянные ЗУ с возможностью многократного перепрограммирования содержания ячеек;

- ОЗУ оперативные ЗУ с обменом в режиме записи / считывания по запросу системной шины;

СОЗУ сверхоперативные ЗУ регистровая память на триггерах с высоким быстродействием.

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

Распределение системной памяти 

Электронная память выступает в качестве оперативной памяти, кэш-памяти, постоянной памяти, полупостоянной памяти, регистровая память, буферной памяти, внешней памяти.

Оперативная память или память с произвольным доступом - Random Access Memory или ОЗУ предназначена для хранения информации, к которой приходится часто обращаться, и обеспечивает режимы ее записи, считывания  и хранения. Произвольность доступа подразумевает возможность операций записи в любую ячейку или и считывания из любой ячейки в произвольном порядке. ОЗУ обладает адресным пространством, разделенным на несколько областей. Некоторые из них используются самой системой, другие предназначены для специальных целей. В первых процессорах семейства х86 память представлялась в виде сегментов размером по 64 Кбайт, а суммарный объем адресуемой памяти не превышал 1 Мбайт. При этом архитектура РС ограничивала размер собственно оперативной памяти объемом 640 Кбайт, начиная с нулевых адресов. Эта область называется основной памятью или стандартной (conventional memory).  Основная память была предназначена для прикладных программ (400 -550 Кбайт), а остальное съедала операционная система вместе с разными драйверами. Потребности решаемых задач быстро переросли эти ограничения и в процессоры ввели средства организации виртуальной памяти.  Было снято ограничение на 64-килобайтный размер сегмента, теперь любой сегмент может иметь почти произвольный (до 4 Гбайт) размер. Во-вторых, был введен механизм страничной трансляции адресов. С его помощью можно было реализовать не только виртуальную память размером 4 Гбайт без сегментации, но и формировать физический адрес с разрядностью 36 бит (64 Гбайт адресуемой памяти). С появлением 64-битных расширений размер виртуальной памяти увеличился до 264 байт.

                                                                           Верхняя граница определяется

                                                                                           всем адресным пространством процессора

                                                                          

                                                                         

                                                                             380 Кбайт для обслуживания системы   

                                                                          

                  1 Мбайт                                                     

                                                                               640 Кбайт

Рис. 7.2 Распределение адресного пространства памяти (Intel – совместимые)

Верхняя память (Upper Memory Area) – это 384 Кбайт, зарезервированных у верхней границы системной памяти. Верхняя память разделена на несколько частей:

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

Видеопамять

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

Дополнительная (extended) память

Как мы уже говорили в современных процессорах объем оперативной памяти может существенно превышать предел 1Мбайт, например для систем на базе Pentium II максимальный объем ОП составляет 64 Гбайт. Для адресации памяти за пределами первого мегабайта процессор должен работать в защищенном режиме..

Расширенная (expanded) память

В некоторых программах может использоваться еще одна разновидность памяти – расширенная память (Expanded Memory Specification). В отличии от основной (в пределах первого мегабайта) и дополнительной памяти, расширенную  память процессор адресовать не может. К ней можно обращаться только через небольшое окно размером 62 Кбайт, образуемое в области верхней памяти. EMS память используется только для хранения данных. Для оценки производительности основной памяти используются два основных параметра: задержка и полоса пропускания. Задержка памяти традиционно оценивается двумя параметрами: временем доступа (access time) и длительностью цикла (cycle time).  Время доступа – промежуток времени между запросом на чтение и выдачей запрошенного слова из памяти. Длительность цикла – определяется минимальным временем между двумя последовательными обращениями к памяти.    

Кэш-память (cache memory) – является буфером между ОЗУ и ее «клиентами» - процессором (или процессорами) и другими абонентами системной шины. Кэш хранит копии блоков данных тех областей ОЗУ, к которым происходили последние обращения, и весьма вероятно последующее обращение к тем же данным. Современные компьютеры имеют несколько уровней кэш-памяти.

Постоянная память (ПЗУ – постоянное запоминающее устройство) обычно содержит такую информацию, которая не должна меняться   в ходе выполнения программы. Она имеет также название ROM (Read Only Memory) которое указывает на то, что обеспечиваются только режимы считывания  и хранения. Постоянная память энергонезависима. Все микросхемы ПЗУ по способу занесения в них информации делятся на масочные, программируемые производителем – ROM, однократно программируемые пользователем -  Programmable ROM, и многократно программируемые пользователем – Erasable Prom. Данный тип памяти используется для хранения программы начальной загрузки компьютера – BIOS.

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

Полупостоянная память в основном используется для хранения информации о конфигурации компьютера. Традиционная память конфигурации вместе с часами и календарем (CMOS Memory) имеет объем порядка нескольких килобайт. Сохранность данных обеспечивается аккумулятором или батарейкой.

Внешняя электронная память реализована, как правило, на флэш-картах с различными интерфейсами и конструктивами.  

Оперативная память, типы ОП

Тип оперативной памяти важен постольку, поскольку технология изготовления и физические принципы ее функционирования определяют самый важный параметр – быстродействие. Чем выше быстродействие ОП, тем меньше время доступа к ней.  В настоящее время наиболее распространены микросхемы памяти двух типов: статические ОЗУ – SRAM и динамические – DRAM. Разумеется, более быстрая память дороже стоит, поэтому SRAM используется, как правило, для кэш памяти, в регистрах микропроцессора и системах управления.  

Конструктивное исполнение 

Динамическое ОЗУ со времени своего появления прошло несколько стадий роста и продолжает совершенствоваться. Для построения ОЗУ большой емкости используются элементы статической или динамической памяти, которые строятся на простейших элементах транзисторно-транзисторной логики (ТТЛ), инжекционной логики (И2Л),  эмиттерносвязной логики (ЭСЛ) и других технологий.

В основе динамических ОЗУ (DRAM) используется заряд межэлектродных конденсаторов Cij емкостью менее 0.1 пФ и током заряда менее 10-10 А. Схема i-го разряда ячейки памяти динамического ОЗУ (DRAM) представлена на рис. 3.3. Для записи логической “1” в элемент памяти активизируются информационная шина Dj и адресная шина Аi. При этом униполярный (полевой) транзистор открывается и через него конденсатор Cij заряжается. При отсутствии открывающего напряжения на шине Аi транзистор закрыт, конденсатор Cij заряжен и хранит информацию. При подаче напряжения чтения на шину Аi транзистор VTij открывается и напряжение конденсатора Cij подается на шину Dj, и он разряжается. Ток разряда Cij усиливается и фиксируется в информационном регистре ОЗУ. 

Рис. 7.3. Элемент динамического ОЗУ

В настоящее время все большее распространение получили - SDRAM (Synchronic DRAM) – динамическое ОЗУ с синхронным интерфейсом, работающие на частотах 143 МГц и выше. ESDRAM – динамические ОЗУ с синхронным интерфейсом, с кэшом на самом модуле, работающие на частотах 200 МГц и выше. SLDRAM – имеет в своем составе SRAM, работает на частоте до 400 МГц. RDRAM, RIMM –  работает на частоте до 800 МГц.

Мы уже видели, что стоимость хранения данных в расчете на один бит увеличивается с ростом быстродействия.  Однако пользователю хотелось бы иметь и недорогую, и быструю память. Кэш-память представляет некоторое компромиссное решение этой проблемы. Однако известно, рост производительности процессора составляет 60% в год, а уменьшение задержки памяти всего на 7%. Разрыв между быстродействием CPU и быстродействием памяти приводит к появлению «узкого горла». Кэш-память  частично решает эту проблему, создавая новую – почти 50% площади кристалла отдается кэшу (например, Alpha 21164 компании Digital).

Кэш-память 

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

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

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

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

Принцип действия кэш-памяти

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

                                   Медленный ответ (кэш-промах)

                                      Запрос                 

                                                                                        обмен информацией между КЭШем и ОП

                        Быстрый ответ                              

                         (кэш-попадание)

Рис. 7.4   Кэш-память и связь с процессором

Обычно содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных из основной памяти. Строка кэш-памяти состоит из нескольких последовательных байтов (обычно от 4 до 64). Строки нумеруются, начиная с 0. Т.е. если размер строки составляет 16 байт, то строка 0 – это байты с 0 по 15, строка 1 – это байты с 16 по 31 и т.д. Возьмем в качестве примера некоторый микропроцессор с 12 разрядной шиной адреса  (объем памяти 4Кбайт) и кэшем из 16 строк по 16 байт (Рис.7.5). В любой момент времени несколько строк находятся в кэш-памяти. Когда происходит обращение к памяти, контроллер кэша проверяет, есть ли нужное слово в данный момент в кэш-памяти, если нет тогда происходит загрузка необходимой строки из ОП. Существует множество вариаций данной схемы, различающихся временем доступа, производительностью и т.д.

Для обмена информацией между кэш и ОЗУ используют 3 способа:

- со сквозной записью;

- со сквозной буферной записью;

- с обратной записью.

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

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

Кэш-память прямого отображения

Самый простой тип кэш-памяти – это кэш прямого отображения, когда  любая строка из ОП может появиться только на одном месте кэша. Пусть кэш-память содержит 16 строк по 16 байт. Каждый элемент кэша (строка) вмещает ровно одну строку из ОП. В этом случае мы имеем кэш-память объемом  256 байт на которую должен быть отображен объем  4 Кбайт ОП (Рис.7.5)

Кэш – 256 байт                                                           ОП – 4 Кбайт

Адрес  строки  кэша                                             Адрес   блока и строки

            15…………………………0 байт                                            15……………………….0 байт                                   

1111                                             15,31…              1111  1111                                            255

1110

-                                                                               0011  0000                                            48

-

-

0111                                             7,23,39,…           0010  0001                                            33

-                                                                               0010  0001                                             32

-

-

0001                                             1,17,33,…  

0000                                             0,16,32,…            0001  0001                                          17     

                                                                                0001  0000                                           16  

                           16 байт     

                                                                                 0000  0001                                           1

                                                                                 0000  0000                                           0       

                                                                          Тэг        Строка          Слово (байт)

Рис. 7.5 Отображение пространства ОП на пространство кэш-памяти.

Очевидно, что при таком отображении основной памяти на память кэша каждому блоку (по объему) ОП отводится одна строка кэш-памяти.

Предположим, процессор обращается по адресу  0010  0001  0110, в этом случае мы должны проверить  1-ую строку кэша (0001) и если в ней находится нужная строка памяти, то считать 5-ый байт (0110). Но в этой строке кэша могут быть представлены 1,17,33 и т.д. строки из основной памяти. Как же узнать, какая именно строка записана в кэш? Для этого служит информация представленная в тэге (tag), четыре бита в нашем случае (0010), т.е. это 33 строка (0010 0001) и никакая другая. Таким образом,  физический адрес разбивается на несколько частей:

Структура кэш-памяти для нашего случая будет иметь вид как на рисунке 7.6.

Адрес            Блок                         Тэг                               Данные                  Адреса, которые использует

строки       достоверности                                                                                этот элемент

1111                                                                                                15, 31, 47,….         

-

-

-

-

0001                                                                                                1, 17, 33,…

0000                                                                                                0, 16, 32,…        

Рис. 7.6  Кэш-память прямого отображения

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

Каждый элемент кэш-памяти состоит из четырех частей:

  •  адрес строки кэша;
  •  блок достоверности, управляющая информация (указывает есть ли достоверные данные в элементе или нет, и т.д.);
  •  поле «Тег», указывает соответствующую строку памяти, из которой поступили данные;
  •  поле «Данные» содержит копию данных основной памяти, поле данных вмещает одну строку в 16 байт.

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

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

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

  •  если данные обнаруживаются в кэше, т.е. произошло кэш-попадание (cache-hit), они считываются из нее и результат передается источнику запроса;
  •  если нужные данные отсутствуют в кэш-памяти, т.е. произошел кэш-промах (cache-miss), они считываются из основной памяти и одновременно копируются из ОП в кэш.

На практике в кэш-память считывается не один элемент данных, к которому произошло обращение, а целый блок данных, что увеличивает вероятность попадания в кэш. Покажем на примере эффективность применения кэш-памяти. Пусть имеется ОП со средним временем доступа t1=60,0 нс и кэш-память, имеющая время доступа к данным t2=12,0 нс, а p – вероятность кэш-попадания, причем p=0,8, тогда среднее время доступа к данным t в системе с кэш-памятью равно:

t = t1 (1-p) + t2p = 60,0*0,2 + 12,0*0,8 = 21,6 нс

 

Очевидно, что полученное среднее время доступа к такой системе больше чем среднее время доступа непосредственно к кэшу, но значительно меньше  времени доступа к ОП.  В реальных системах вероятность попадания в кэш близка к 0,9. Столь высокое значение hit rate связано с наличием у данных объективных свойств – локальность обращения, которое включает пространственную локальность (если произошло обращение по некоторому адресу, то с высокой степенью вероятности произойдет обращение к соседним адресам), временную локальность (если произошло обращение по некоторому адресу, то в ближайшее время будет обращение по этому же адресу). Однако, несмотря на свою простоту и  высокое быстродействие кэш-память прямого доступа обладает большими недостатками, вытекающими из того факта, что различные строки основной памяти конкурируют за одну и ту же область кэш-памяти. Решение этих проблем достигается на пути конструирования различных видов иерархии кэш-памяти. Наличие или отсутствие кэш-памяти никак не влияет на построение программы. Эта память не является программно доступным объектом. Она скрыта от пользователя. Недаром эту память называют «cache - тайник».  

Способы организации кэш-памяти

Чтобы описать некоторый уровень иерархии памяти надо ответить на следующие четыре вопроса:

1. Где может размещаться блок на верхнем уровне иерархии? (размещение блока).

2. Как найти блок, когда он находится на верхнем уровне? (идентификация блока).

3. Какой блок должен быть замещен в случае промаха? (замещение блоков).

4. Что происходит во время записи (стратегия записи)?

Рассмотрим организацию кэш-памяти в общем случае, отвечая на четыре вопроса об иерархии памяти.

1. Где может размещаться блок в кэш-памяти?

Принципы размещения блоков в кэш-памяти определяют три основных типа их организации:

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

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

Если некоторый блок основной памяти может располагаться на ограниченном множестве мест в кэш-памяти, то кэш называется множественно-ассоциативным (set associative). Обычно множество представляет собой группу из двух или большего числа блоков в кэше, т.е. все ячейки такого кэша разделены на несколько областей (от 2 до 8), каждая такая область работает подобно кэшу прямого отображения.  Если множество состоит из n блоков, то такое размещение называется множественно-ассоциативным с n каналами (n-way set associative).

На рис. 7.7 приведена структура кэш i486 [21], выполненная по схеме четырех направлений 0, 1, 2, 3. Каждое направление содержит множество из 128 строк размерностью по 16 байт. Другими словами, кэш-память процессора i486 представляет собой четырех направленную ассоциативную по множеству память. Это означает, что блок данных из конкретной ячейки основной памяти может хранится в любой из четырех ячеек кэш-памяти. Ассоциация по четырем направлениям является компромиссом между скоростью кэш-памяти с прямым отображением и высоким коэффициентом попаданий полностью ассоциативной кэш-памяти. Иными словами, реализованная в i486 кэш-память обеспечивает быстрый поиск данных и высокий процент попаданий. Кэш-память состоит из трех блоков: блок данных, блок тэгов и  блок достоверности.

Блок данных:  Состоит из четырех массивов (направлений), каждый из которых содержит 128 строк. (cash line). Четыре строки образуют множество. Каждая строка содержит данные из 16 последовательных адресуемых байтов данных памяти, начиная с адреса кратного 16. Индекс массива блока данных, состоящий из 7 бит, соответствует 4 строкам кэша, по одной из каждого массива. Четыре строки кэша с одним и тем же индексом называются множеством. Таким образом, объем кэш-памяти равен  8 Кбайт, т.е. 16 байт*4*128=8192 б =8 Кбайт.

Блок достоверности/                 Блок тегов                           множество      Блок данных       направление

          LRU                     0           1             2                3                                L0            L1             L2            L3                                                                                                                                                                                               

                                                                                                             0   

                                                                                                             1

                                                                                                             2   

                                                                                                             k   

                                                                                                           126    

                                                                                                           127

                                                                                                                 0

                                                                                                                       D1

                                                                                                                 1

                                                                                                                        D2  

???????????????????????????????????????????????????????????????????                                              0                                   выбор      байта

                                                                                                                        D3    

                     ?????????????????????????????????????????????????????????????????????????????????????????????????D??

?

?

??????????????????????????????????????????????????????????????????????????????????????????????DCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?

?

?

Рис. 7.7 Внутренний кэш i486

Блок тэгов:  128 строк тэгов, каждый тэг состоит из 21 бита, и тоже 4 массива.

Блок достоверности: содержится по одному 7-ми битному значению для каждого из множеств кэш-памяти.

  •  4 бита отмечают достоверны или не достоверны соответствующие строки.
  •  3бита LRUотслеживают использование (чтение / запись) данных во множестве.

LRU обновляется при каждом попадании в кэш-память или заполнении строки. При очистке кэш-памяти все биты LRU сбрасываются в 0, т.е. все строки не достоверны. Когда производится заполнение строки кэш-памяти, то выбирается недостоверная строка, если недостоверных строк нет, то перезаписываемую строку выбирают по битам LRU.

Алгоритм псевдо LRU.

Когда в цикле считывания обнаруживается промах, в кэш необходимо передать информацию из ОП (строку), при этом приходится выбирать из 4-х строк множества. Если есть бит недостоверности, то нет проблем. А если все строки достоверны (1111), то выбирается строка с привлечением LRU.

3 бита LRU изменяются при каждом попадании и заполнении, следующим образом: если последнее обращение во множестве было к строке L0 и L1, то бит B0=1, а если к L2 и L3, то бит B0=0, и т.д. (см. рисунок).

Чтение из кэш осуществляется по физическому адресу, поступающему из устройства сегментации или страничного преобразования по ША. Он позволяет извлекать информацию с точностью до байта, используя дешифратор строки DCC, который сравнивает значение старших 21 бит физического адреса с кодами тегов соответствующего множества.  При попадании, строка одного из направлений  массива передается в буферный регистр, из которого,  требуемый байт (слово, двойное слово) передается на внутреннюю ШД процессора. Часто строка из буферного регистра передаётся  как 16-байтный код в устройство предвыборки команд, минуя ВШД. При промахе, если не срабатывает одна из схем сравнения D1 D4, МП включает режим чтения внешнего кэш или ОЗУ по данному ФА.

Блок LRU содержит память также из 128 строк, по 7 бит в строке. Три бита каждой строки LRU B0, B1, B2 служат для определения правила замены. Четыре оставшиеся бита памяти строки LRU используются для определения достоверности данных, хранимых в кэш. При очистке кэш или сбросе МП все биты достоверности устанавливаются в 0. При промахе и новой записи бит, соответствующий направлению и строке, устанавливается в 1. При вычислениях МП может объявить часть строк недостоверными и соответствующие биты B3-B6 LRU установить в 0. Эти недостоверные строки впоследствии используются в первую очередь для записи новых данных в кэш. Если все биты B3-B6 = 1, то замена данных в кэш определяется в соответствии с состоянием <B0, B1, B2>. Если данные в кэш становятся частично достоверными, то соответствующие биты достоверности не устанавливаются в 1.

2. Как найти блок, находящийся в кэш-памяти? 

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

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

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

3. Какой блок кэш-памяти должен быть замещен при промахе? 

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

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

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

4. Что происходит во время записи? 

При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению и большинство команд не пишут в память. Обычно операции записи составляют менее 10% общего трафика памяти. К счастью, общий случай является и более простым. Блок из кэш-памяти может быть прочитан в то же самое время, когда читается и сравнивается его тэг. Таким образом, чтение блока начинается сразу как только становится доступным адрес блока. Если чтение происходит с попаданием, то блок немедленно направляется в процессор. Если же происходит промах, то от заранее считанного блока нет никакой пользы, правда нет и никакого вреда.

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

Очень часто организация кэш-памяти в разных машинах отличается именно стратегией выполнения записи. Когда выполняется запись в кэш-память имеются две базовые возможности: сквозная запись (write through, store through) - информация записывается в два места: в блок кэш-памяти и в блок более низкого уровня памяти; запись с обратным копированием (write back, copy back, store in) - информация записывается только в блок кэш-памяти. Модифицированный блок кэш-памяти переписывается в основную память только тогда, когда он замещается. Для сокращения частоты копирования блоков при замещении обычно с каждым блоком кэш-памяти связывается так называемый бит модификации (dirty bit). Этот бит состояния показывает был ли модифицирован блок, находящийся в кэш-памяти. Если он не модифицировался, то обратное копирование отменяется, поскольку более низкий уровень содержит ту же самую информацию, что и кэш-память.

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

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

Разновидности строения кэш-памяти

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

               «а»                                                     «в»                                                  «с»        

Рис. 7.6   Разновидности строения кэш-памяти

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

После процессора i486, в процессорах Pentium используется раздельная кэш-память команд и данных емкостью по 8-16 Кбайт, что обеспечивает независимость обращений. За один такт из каждой кэш-памяти могут считываться два слова. При этом кэш-память данных построена на принципах двух кратного расслоения, что обеспечивает одновременное считывание двух слов, принадлежащих одной строке кэш-памяти. Для повышения эффективности перезагрузки кэш-памяти в процессоре применяется 64-битовая внешняя шина данных. В настоящее время между разделенной кэш-памятью первого уровня помещается кэш второго уровня и, даже, третьего уровня. Мы уже упоминали что наличие кэш-памяти существенно ограничивает полезную площадь кристалла (Alpha 21164 компании Digital имеет 50% площади кристалла под кэш), но это не вся правда. Для производительной работы кэша необходимы эффективные алгоритмы внеочередного и спекулятивного выполнения (выборки) команд. А это, в свою очередь, приводит к неоправданному усложнению архитектуры процессора. Сравните: процессор MIPS R5000 – простой RISC процессор, процессор MIPS R10000 – сложный CPU со всеми возможностями спекулятивного выполнения выборки и исполнения команд. Производительность его всего лишь на 1,6 раза выше, чем у R5000 , зато площадь больше в 3,4 раза.   В последнее время идут интенсивные работы по интегрированию на кристалле динамической памяти с произвольной выборкой (DRAM) вместо кэшей на SRAM. Это направление получило название интеллектуальной памяти – IRAM. Интегрированная на кристалл оперативная память занимает такую же площадь, что и кэш SRAM, но способна вместить в 30-40 раз больше данных.

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

Выводы

Память – это одно из основных устройств ЭВМ, которое служит для хранения программ и данных.

Память ЭВМ - это совокупность всех запоминающих устройств, входящих в состав машины.

Память компьютера – система иерархическая, состоящая из нескольких уровней.

Внутренняя память может строиться на самых разнообразных физических принципах, но по своему функциональному назначению различается на ОЗУ, ПЗУ, ППЗУ и др.

Современные ОЗУ изготавливаются в виде полупроводниковых микросхем двух типов – статических и динамических.

Для разрешения проблемы соответствия времени обработки данных в процессоре и времени обращения к ОП применяется структура многоуровневого буфера – кэш-память.

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

Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы.

Вопросы и задания 

Как соотносятся между собой объем памяти и ее быстродействие и почему?

Что хранится в ПЗУ компьютера?

Что такое BIOS и каковы его функции?

Перечислите достоинства и недостатки статических и динамических МС.

Что такое кэш-память и как она работает?

Можно ли считать из памяти отдельно взятый бит?

Оцените, какая доля адресного пространства памяти вашего компьютера реально занята.

Лекция 8.  Логическая организация памяти 

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

При статическом распределении вся необходимая оперативная память выделяется процессу в момент его порождения. При этом память выделяется единым блоком необходимой длины, начало которого определяется базовым адресом. Программа пишется в адресах относительно начала блока, а физический адрес команды или операнда при выполнении программы формируется как сумма базового адреса блока и относительного адреса в блоке. Значение базового адреса устанавливается при загрузке программы в оперативную память. Пусть ОП имеет объем 10 Мбайт, а для выполнения программ A, B, C, D требуются следующие объемы памяти: A - 2 Мбайт, B - 1 Мбайт, C - 4 Мбайт, D - 4 Мбайт. Начальное распределение памяти и распределение памяти после выполнения некоторых программ представлено на рис 8.1.


Рис. 8.1   Статическое распределение памяти: a - начальное распределение; б - после завершения программы A; в - после завершения программы B; г - после завершения программы C

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

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

Виртуальная память

Идея виртуальной памяти далеко не нова. Сейчас многие полагают, что в основе этой идеи лежит необходимость обеспечения (при поддержке операционной системы) видимости практически неограниченной (32- или 64-разрядной) адресуемой пользовательской памяти при наличии основной памяти существенно меньших размеров. Конечно, этот аспект очень важен. Но также важно понимать, что виртуальная память поддерживалась и на компьютерах с 16-разрядной адресацией, в которых объем основной памяти зачастую существенно превышал 64 Кбайт. Можно вспомнить хотя бы 16-разрядный компьютер PDP-11/70, к которому можно было подключить до 2 Мбайт основной памяти. Другим примером может служить выдающаяся отечественная ЭВМ БЭСМ-6, в которой при 15-разрядной адресации 6-байтовых (48-разрядных) машинных слов объем основной памяти был доведен до 256 Кбайт. Операционные системы этих компьютеров, тем не менее, поддерживали виртуальную память, основным смыслом которой являлось обеспечение защиты пользовательских программ одной от другой и предоставление операционной системе возможности динамически гибко перераспределять основную память между одновременно поддерживаемыми пользовательскими процессами.

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

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

Таким образом, виртуальная память решает следующие задачи:

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

                                                                            Виртуальный адрес

                Данные

      (или команды)

                                                                              Физический адрес

                                                                               Физический адрес     

     Данные                                                              Пересылка с применением ПДП

(или команды)

              Рис. 8.2 Организация виртуальной памяти

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

Страничная организация памяти

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

 Пусть наш компьютер имеет 16-битное поле адреса и всего лишь 4096 слов оперативной памяти (PDP-11). Программа, работающая на нем, могла бы обращаться к 65536 словам (216=65536), но такого количества слов просто нет. До изобретения виртуальной памяти все адреса, которые были равны или больше адреса 4096 считались бесполезными, не существующими.

Идея разделения понятий адресного пространства и адресов памяти состоит в следующем. В любой момент времени можно получить прямой доступ к 4096 словам памяти, но это не значит, что они непременно должны соответствовать адресам от 0 до 4095. Например, мы могли бы сообщить компьютеру, что при обращении к адресу 4096 должно использоваться слово из памяти с адресом 0, при обращении к адресу 4097 – слово с адресом 1, а при обращении к адресу 8191 – слово с адресом 4095 и т.д. Другими словами, мы отобразили логическое адресное пространство на действительные адреса физической памяти (рис. 8.3)

                               Адресное пространство

                  Адрес

                                                                                                        Основная память – 16 К  

                      8191                                             Отображение

                                                                           ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????К основной памяти

Рис. 8.3  Виртуальные адреса памяти с 4096 по 8191 отображаются в адреса основной памяти с 0 по 4095

Возникает вопрос: а что произойдет, если программа совершит переход в один из адресов с 8192 по 12287? В машине без виртуальной памяти на экране появится фраза «Несуществующий адрес памяти» и выполнение программы остановится. В машине с виртуальной памятью будет иметь следующая последовательность действий:

  1.  Слова с 4096 до 8191 будут выгружены на диск.
  2.  Слова с 8102 до 12287 будут загружены с диска в основную память.
  3.  Отображение адресов изменится: теперь адреса с 8192 до 12287 соответствуют ячейкам памяти с 0 по 4095.
  4.  Выполнение программы продолжится.

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

 Страничное управление памятью – это общепринятый механизм организации виртуальной памяти с подкачкой страниц по запросу. Страничная трансляция адресов выполняется блоком управления памятью (Memory Management UnitMMU), расположенным в процессоре, с использованием каталогов и таблиц дескрипторов страниц – структур в физической ОП.  Блок MMU делит линейный адрес на виртуальные страницы фиксированного размера (4К, 4М, 2М). На такие же страницы делится и адресное пространство физических адресов.

Преобразование адресов

В наиболее простом и наиболее часто используемом случае страничной виртуальной памяти каждая виртуальная память (виртуальная память каждого процесса) и физическая основная память представляются состоящими из наборов блоков или страниц одинакового размера. Для удобства реализации размер страницы всегда выбирается равным числу, являющемуся степенью 2. Тогда, если общая длина виртуального адреса есть N (в последние годы это тоже всегда некоторая степень 2 - 16, 32, 64), а размер страницы есть 2M), то виртуальный адрес рассматривается как структура, состоящая из двух полей: первое поле занимает (N-M+1) разрядов адреса и задает номер страницы виртуальной памяти, второе поле занимает (M-1) разрядов и задает смещение внутри страницы до адресуемого элемента памяти (в большинстве случаев - байта). Аппаратная интерпретация виртуального адреса показана на рисунке 8.4. Рисунок иллюстрирует механизм на концептуальном уровне, не вдаваясь в детали по поводу того, что из себя представляет и где хранится таблица страниц. Мы не будем рассматривать возможные варианты, а лишь заметим, что в большинстве современных компьютеров со страничной организацией виртуальной памяти все таблицы страниц хранятся в основной памяти, а быстрота доступа к элементам таблицы текущей виртуальной памяти достигается за счет наличия сверхбыстродействующей буферной памяти (КЭШа).


Рис. 8.4  Преобразование виртуального адреса в физический адрес

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

                                                                                        Сгенерированный процессором

                                                                                   виртуальный адрес (линейный адрес)

                                                                          31                         21                         11                                                                                  

                                          Таблица страниц                                                                  Физическая память                                                  

                                

        Начальный                                                                                   

            адрес

Адрес искомого

элемента таблицы

Управляющие биты

Рис. 8.5  Страничная трансляция адресов

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

Сегментная организация памяти. 

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

  •  таблица символов, которая содержит имена и атрибуты переменных;
  •  исходный код;
  •  таблица констант;
  •  стек, для вызова процедур и т.д.

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

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

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

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

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

                                                                               ПАМЯТЬ

                                                                                                            FFFFFH 

                                16 битное расстояние

                     Регистр смещения 

                                                                                                                                     64 Кбайт  

                      15…………… 0                                                                    

                                     

                           базовый адрес сегмента                                

                                 16 байт                                                                               1 Мбайт 

               15………………. 0                                                              00000H   

                

                 Сегментный регистр

Рис. 8.6   Сегментная память процессора 8086

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

- пусть имеется команда MOV AX,[SI]

- пусть регистр DS содержит 1234H, а регистр SI содержит 101H, тогда физический адрес в команде MOV AX (загрузить слово в регистр AX из сегмента, базовый адрес которого находится в сегментном регистре DS,  а смещение 101H в сегментном регистре SI) будет

                DS x 16 + SI = 12340H + 101H = 12441H 

Базовые адреса четырех одновременно доступных программе сегментов находятся в сегментных регистрах:

  •  регистр команд – CS;
  •  регистр данных – DS;
  •  стека – SS
  •  регистр дополнительных данных – ES.

Каждый из них 16-ти битовый, но можно считать, что они 20-ти разрядные.

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

Сегментно-страничная память  

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

Свопинг

Разновидностью виртуальной памяти является свопинг. На рисунке 8.7 показан график зависимости коэффициента загрузки процессора в зависимости от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.

 Рис. 8.7  Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода

Из рисунка видно, что для загрузки процессора на 90% достаточно всего трех счетных задач. Однако для того, чтобы обеспечить такую же загрузку интерактивными задачами, выполняющими интенсивный ввод-вывод, потребуются десятки таких задач. Необходимым условием для выполнения задачи является загрузка ее в оперативную память, объем которой ограничен. В этих условиях был предложен метод организации вычислительного процесса, называемый свопингом. В соответствии с этим методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс. При свопинге, в отличие от рассмотренных ранее методов реализации виртуальной памяти, процесс перемещается между памятью и диском целиком, то есть в течение некоторого времени процесс может полностью отсутствовать в оперативной памяти. Существуют различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу.

Выводы 

Логическая организация памяти необходима для устранения  несоответствия между адресным пространством памяти и ее реальным, физическим объемом.

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

Стековая организация памяти применяется при вызове подпрограмм, временном хранении данных.

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

Вопросы и задания 

  1.  Оцените,  какой процент адресного пространства вашего компьютера реально заполнен под память.
  2.  Какие методы адресации вы знаете?
  3.  Что такое виртуальная память?
  4.  Что такое свопинг?
  5.  В каких режимах может работать IA-32?
  6.  Как формируется физический адрес при сегментной адресации?
  7.  Как формируется физический адрес при страничной адресации?

Лекция 9.  Методы адресации 

Методы и режимы адресации зависят от трех главных факторов:

  •  организации пространства памяти, где хранятся операнды: во внутренних регистрах, в системной памяти, в самой команде, стековая память, в портах ввода/вывода;
  •  структурной организации памяти: линейная, страничная, сегментная, смешанная;
  •  программная модель процессора, программные ресурсы.

Рис. 9.1 Методы и режимы адресации

 

Пространство памяти предназначено для хранения кодов команд и данных, для доступа к которым имеется богатый выбор методов адресации (около 24). Операнды могут находиться во внутренних регистрах процессора (наиболее удобный и быстрый вариант). Они могут располагаться в системной памяти (самый распространенный вариант). Наконец, они могут находиться в самой команде и в  устройствах ввода/вывода (наиболее редкий случай).

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

Механизмы адресации операндов, находящихся в регистровой памяти и в ОЗУ существенно различаются. Механизмы адресации операндов, находящихся в регистровой памяти и в оперативной памяти, существенно различаются. К регистровой памяти допускается лишь прямая регистровая адресация. При этом в команде указывается номер регистра, содержащего операнд. 16-разрядный операнд может находиться в регистрах AX, BX, CX, DX, DI, SI, SP, BP, а 8-разрядный - в регистрах AL, AH, BL, BH, CL, CH, DL, DH.

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

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

Прямая или абсолютная адресация. Физический адрес операнда содержится в адресной части команды. Формальное обозначение:

Операндi = (Аi),

где Аi – код, содержащийся в i-м адресном поле команды.


Рис. 9.2  Прямая адресация

Пример:  mov Al,[2000] – передать операнд, который содержится по адресу 2000h в регистр AL.

                Add R1,[1000] – сложить содержимое регистра R1 с содержимым ячейки памяти по адресу 1000h и результат переслать в R1.

Допускается использование прямой адресации при обращении, как к основной, так и к регистровой памяти.

Непосредственная адресация. В команде содержится не адрес операнда, а непосредственно сам операнд.

Операндi= Аi.


Рис. 9.3  Непосредственная адресация

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

Пример:  mov eax,0f0f0f0f – загрузить константу 0f0f0f0f h в регистр eax.

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

Операндi = ((Аi)).

Рис. 9.4   Косвенная адресация

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

Пример: mov al,[ecx] – передать в регистр AL операнд (содержимое) ячейки памяти,  адрес которой находится в регистре ECX.

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

В этом случае речь идет о базовой адресации со смещением.

Пример:  mov eax,[eci+4] – передать в регистр EAX операнд, который содержится по адресу ECI (регистр индекса) со смещением плюс 4.  

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

Регистровая адресация. Предполагается, что  операнд находится во внутреннем регистре процессора.

Например:  mov eax,cro – передать в EAX содержимое CR0 (регистр управления) или

               mov ebx,edx   – передать в регистр базы EBX содержимое регистра данных EDX.

Индексная адресация (со смещением) – содержимое РОН используется в качестве компоненты эффективного адреса (как правило, работа с массивами).

Пример:  sub array [esi],2 – вычесть 2 из элемента массива, на который указывает регистр ESI.

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

Операндi = (базаi + смещениеi).

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

Рассмотрим два примера.

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

Рис. 9.5   Относительная адресация

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


Рис. 9.6  Базово-индексная адресация

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

Адресация ввода/вывода

Интеловские процессоры могут обращаться к устройствам ввода/вывода двумя способами. Они могут быть отображены на память или иметь свои адреса в пространстве ввода/вывода.

В командах ввода/вывода источником или получателем всегда служит аккумулятор EAX/AX/AL, а порт определяется как непосредственный операнд или содержимое регистра DX. Например:

In al, 40h – ввод байта из фиксированного порта

Out 20h,ax  - вывод слова в фиксированный порт

Out dx,eax – вывод двойного слова в переменный порт

Стековая адресация

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

Обращение к ячейкам такой памяти производится последовательно с помощью специального указателя стека (УС), определяющего рабочую в данный момент ячейку. Каждая ячейка снабжена тэгом – специальным признаком хранимой информации. Такая ЭВМ имеет структуру, представленную на рис.9.6.  В ее состав помимо АЛУ входят два специальных буферных регистра РР1 и РР2. Здесь значение тэгов следующее: Op – в данной ячейке хранится операнд, C – признак наличия в ячейке кода операции.


Рис. 9.7 Схема выполнения операции в ЭВМ с безадресной системой команд

Рассмотрим  работу такой ЭВМ на примере вычисления выражения ((a + b) * c - d) / e.

На первых двух тактах работы из памяти извлекаются операнды a и b и помещаются в рабочие регистры РР1 и РР2. Считав следующую ячейку стековой памяти, устройство управления по ее тэгу определяет, что данная информация представляет собой код операции. Этот код направляется в АЛУ, где и проводится сложение хранящихся в регистрах операндов с записью результата в один из рабочих регистров. Так как в следующей ячейке хранится операнд, то он направляется в РР, свободный от записанного результата. После этого производится выполнение следующей операции и так далее.

Для стека характерны две операции: «PUSH - втолкнуть» и «POP - извлечь» при этом поддерживается известная процедура «Last In – First Out» - последним пришел, первым ушел.  Пример стековой операции:

Push ecx – включить в стек содержимое регистра ecx

Pop [esi] – извлечь из стека в ячейку памяти

Выводы

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

Лекция 10.  Внешняя память компьютера 

Введение

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

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

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

Жесткий диск (Hard Disk Drive)

Наиболее известным, прошедшим испытание временем устройством хранения с прямым доступом являются   так называемые жесткие диски (HDDHard Disk Drive) или  винчестер. С момента появления первого накопителя на жестких магнитных дисках (НЖМД) прошло немногим более 50 лет, и достигнутый за это время отраслью прогресс с трудом поддается осмыслению. Первый НЖМД RAMAC350 был выпущен компанией IBM в июне 1956 г. Это было устройство размером с два холодильника ценой более 50 тыс. долл. Носителем информации в нем служили 50 дисковых пластин диаметром 24 дюйма (61 см), характеристики же этого монстра по нынешним понятиям были просто смехотворными: емкость 5 Мбайт, скорость вращения 1200 об/мин, среднее время доступа 1 с, поверхностная плотность записи 2 Кбит/дюйм2. Емкость современного широко распространенного жесткого диска с двумя 9,5см пластинами ценой менее 150 долл., легко умещающегося на ладони, больше в 50 тыс. раз, а время доступа меньше в 100 раз. Самые же поразительные цифры дает сравнение поверхностных плотностей записи и стоимостей единицы емкости (мегабайта): первая увеличилась в 100 млн., а вторая уменьшилась в 25 млн. раз!

Общее устройство НЖМД

Накопитель на жестких магнитных дисках состоит из пяти главных элементов, каждый из которых влияет на его характеристики: носителя (пакета дисковых пластин, вращающихся на одной оси), головок чтения записи, позиционера (механизма привода головок), двигателя привода дисков  и контроллера, обеспечивающего согласованное управление всеми элементами диска и передачу данных между ним и компьютером. Данные хранятся на пластинах в виде концентрических дорожек, каждая из которых делится на секторы, содержащие данные и коды коррекции ошибок. Число секторов на дорожке в современных дисках варьируется в зависимости от длины дорожки, т. е. на внешних дорожках секторов больше, на внутренних — меньше (так называемый метод зонно-битовой записи, zoned bit recording). Совокупность дорожек, находящихся под головками в определенном их положении на всех пластинах диска, называется цилиндром.

Принципиально конструкция НЖМД соответствует рис. 10.1. Вся электромеханическая часть накопителя – пакет дисков со шпиндельным двигателем и блок головок с приводом находится в гермоблоке.  На корпусе гермоблока помещается и плата электроники накопителя. В качестве привода шпинделя используют, как правило, трехфазные синхронные двигатели. В современных накопителях для точного управления шпиндельным двигателем используется механизм сервометок. Скорость вращения определяет скорость обмена, и у современных накопителях лежит в пределах от 7200 до 15000 об/мин.

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

              

Рис. 10.1 Общий вид НЖМД

Увеличение линейной плотности записи и плотности дорожек на поверхности дисковых пластин требует уменьшения размеров головок чтения-записи, что влечет за собой уменьшение снимаемых с головки сигналов до уровней, когда их очень сложно выделить из шумов. В этих условиях возрастает роль кодов коррекции ошибок (ECC) для надежного считывания записанных данных. Размеры этих кодов растут, и в результате 512 байт размер сектора оказывается неадекватным — недалеко время, когда количество байтов ECC превысит в таком секторе число байтов полезной информации. Согласно результатам ряда исследований, увеличение стандартного размера сектора до 4096 байт будет достаточным, чтобы обеспечить растущие потребности в ECC для ожидаемого в обозримом будущем роста плотности записи.

Пластины (диски)

Пластины — это диски из алюминиевого сплава или стеклообразного материала (стеклянные пластины получили в последнее время более широкое распространение), поверхность которых покрыта несколькими слоями магнитных и немагнитных материалов, защищенных сверху тонким слоем алмазоподобного графита. Размер и ориентация частиц магнитного слоя определяют вместе с размерами зазора магнитной головки возможную плотность записи. Заметим, что поверхностная плотность записи имеет две составляющие — продольную (определяется размером магнитных доменов, представляющих каждый бит одной дорожки) и поперечную (определяется расстоянием между соседними дорожками). Диаметр пластин большинства современных накопителей 95 мм  (такие диски называют 3,5 дюйм) или 64 мм (2,5 дюйма). Существуют диски с диаметром пластин 1,8 (46 мм), 1 (25 мм) и даже 0,85 дюйма (22 мм). 2,5 дюйм диски чаще

всего используются в ноутбуках, хотя сейчас наметилась тенденция к применению 2,5 дюйм накопителей в серверах и рабочих станциях, так как уменьшение диаметра пластин

позволяет снизить время поиска. Чтобы избежать сверхпарамагнитного эффекта, применяется специальное многослойное покрытие с антиферромагнитной связью (AFC,

AntiFerromagnetically Coupled). Такое покрытие, неофициально называемое «пыльцой эльфов», состоит из двух магнитных слоев, «проложенных» тончайшим (толщина составляет всего три атомных диаметра!) слоем парамагнитного металла рутения. В этом «сэндвиче» вместо одиночных магнитных доменов образуются магнитные пары с противоположно направленными векторами намагниченности, обеспечивающие повышенную стойкость к размагничиванию. Кроме того, используются так называемые синтетические ферримагнетики (SFM). Пластины укреплены на шпинделе двигателя, который вращает их с весьма высокими угловыми скоростями (до 15 тыс. об/мин). С ростом поверхностной плотности записи и скоростей вращения оказалось, что традиционные двигатели с шариковыми подшипниками не удовлетворяют возросшим требованиям по боковым биениям пластин (они возникают из-за неидеально шарообразной формы шариков подшипника), шуму и вибрациям. Поэтому им на смену в большинстве современных накопителей пришли двигатели с гидродинамическими подшипниками (FDB, Fluid Dynamic Bearing), в которых вместо шариков используется специальное масло. Гидродинамические подшипники позволили также снизить уровень шума и повысить ударостойкость накопителей.

Головка записи-чтения

Головка записи-чтения — ключевой элемент НЖМД. Ее чувствительность и величина магнитного зазора в значительной степени определяют плотность записи накопителя. Ферритовые головки первых НЖМД уступили место тонкопленочным, а затем магниторезистивным (MR) плотность записи до 3 Гбит/дюйм2, супермагниторезистивным (GMR) плотность записи до 10 Гбит/дюйм2 и туннельным магниторезистивным (TMR) головкам. Пока в большинстве моделей НЖМД используется продольная запись, предполагающая поворот магнитных частиц, ориентация которых представляет единицы и нули битов данных, в плоскости магнитного покрытия. Но этот способ записи уже исчерпал свои возможности повышения плотности. В поисках путей очередного «обмана» сверхпарамагнитного эффекта исследователи обратились к продемонстрированному более 100 лет назад датским ученым Вальдемаром Паульсеном способу перпендикулярной магнитной записи. Технология перпендикулярной записи развивалась с переменным успехом до 1976 г., когда Суничи Ивасаки, директор известного японского Технологического института Тохоку, показал, что такой способ записи обеспечивает заметное увеличение плотности. Чтобы пояснить разницу между продольным и перпендикулярным методами записи, представим магнитные частицы, хранящие биты данных, в виде микроскопических магнитиков. При традиционной продольной записи они располагаются друг за другом вдоль дорожки. Если предположить, что данные состоят из чередующихся единиц и нулей, то магнитики расположатся так, что северный полюс одного окажется возле северного полюса другого. То же можно сказать о южных полюсах. Из-за взаимного отталкивания одноименных полюсов магнитики будут стремиться развернуться. При перпендикулярной записи магнитики, представляющие чередующиеся биты данных, стоят вертикально, и рядом друг с другом оказываются их разноименные полюса, которые, как известно, притягиваются. Такая структура позволяет разместить магнитные частицы гораздо плотнее без потери стабильности.

 Для записи данных на диск применяют различные способы кодирования, в первых моделях использовалась частотная модуляция (FMFrequency Modulation), более эффективна модифицированная частотная модуляция (MFM), при которой синхросигнал вводится только при кодировании смежных нулевых битов, что позволяет удвоить плотность записи. Обе схемы (FM, MFM) являются схемами побитного кодирования, более эффективны схемы группового кодирования (RLLRun Length  Limited кодирование с ограничением длины серий).

Рис. 10.2 Продольный и поперечный метод записи

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

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

Головка «летит» над поверхностью вращающейся пластины на расстояниях порядка 10—15 нм. Расстояние от головки до магнитного слоя при этом заметно больше — до 30 нм. Защитный слой из алмазоподобного графита, наносимый на головку и пластины, обладает чрезвычайно высокими прочностью и гладкостью, так что «падение» головки на поверхность пластины в случае, например, непредвиденной остановки двигателя не приводит в современных накопителях к выходу их из строя, как это было в НЖМД первых поколений. Для повышения надежности записи информации на пластины важно обеспечить постоянство зазора между головкой и пластиной. Он стабилизируется с помощью технологии термического управления высотой полета головки чтения-записи над поверхностью пластины, называемой Thermal Fly Height Control (TFC). В головку встраивается микроскопический нагревательный элемент, при пропускании тока через который конфигурация головки немного изменяется («выгибается»), благодаря чему меняется зазор между головкой и пластиной.

Позиционер

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

Контроллер

Контроллер управляет всеми электронными и электромеханическими компонентами накопителя и содержит все необходимые для чтения и записи данных аналоговые и цифровые схемы. Он строится, как правило, на базе специализированного процессора, оснащенного буферной памятью для промежуточного хранения данных записи-чтения и программируемым ПЗУ со встроенным программным обеспечением. Контроллер вместе с позиционером обеспечивает безопасность диска в случае пропадания питания или остановки двигателя, выводя головки из зоны возможного соприкосновения (интересно, что при пропадании питания это делается за счет энергии, рекуперируемой от продолжающего вращаться по инерции двигателя). Это достигается благодаря постоянному контролю напряжений питания и скорости вращения шпинделя. Кроме того, контроллер обеспечивает перевод диска в режим экономии энергии при отсутствии обращений к нему в течение некоторого времени (это особенно важно для накопителей, устанавливаемых в ноутбуки, так как может заметно увеличить время их автономной работы). Современные адаптивные алгоритмы экономии энергии основываются на собираемой контроллером статистике использования диска, т. е. как бы подстраиваются под стиль работы конкретного пользователя. Одна из важнейших функций контроллера — реализация протоколов всех уровней выбранного для данной модели накопителя интерфейса связи с компьютером. Это может быть один из уходящих в историю, но пока еще применяемых параллельных интерфейсов — ATA, SCSI, PCMCIA, CompactFlash или последовательный — Serial ATA (SATA), Serial Attached SCSI (SAS), Fibre Channel, IEEE 1394 (FireWire), USB. Большинство современных жестких дисков широкого применения для настольных и портативных ПК имеют интерфейс Serial ATA, а дисков для серверов и мощных рабочих станций — Ultra320 SCSI или SAS.

Производительность 

Производительность диска является функцией времени обслуживания, которое включает в себя три основных компонента: время доступа, время ожидания и время передачи данных. Время доступа - это время, необходимое для позиционирования головок на соответствующую дорожку, содержащую искомые данные. Оно является функцией затрат на начальные действия по ускорению головки диска (порядка 4-6 мс), а также функцией числа дорожек, которые необходимо пересечь на пути к искомой дорожке. Характерные средние значения времени доступа лежат в диапазоне 8 - 18 мс. Время перехода с дорожки на дорожку много меньше и обычно составляет 2 мс. Вторым компонентом времени обслуживания является время ожидания. Чтобы искомый сектор повернулся до совмещения с положением головки требуется некоторое время. После этого данные могут быть записаны или считаны. Для современных дисков время полного оборота лежит в диапазоне 8-16 мс, а среднее время ожидания составляет 4-8 мс.

Последним компонентом является время передачи данных, т.е. время, необходимое для физической передачи байтов. Время передачи данных является функцией от числа передаваемых байтов (размера блока), скорости вращения, плотности записи на дорожке и скорости электроники. Типичная скорость считывания информации  равна 5 - 15 Мбайт/с. 

Пример:

HAD компании Seagate Technology, объем – 9 Гбайт, среднее время доступа – 8 мс, скорость – 7200 об/мин, интерфейс Fast SCSI -2, скорость считывания – 13 Мбайт/сек.

 

Структура хранения информации на жестком диске

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

Каждая пластина содержит набор концентрических записываемых дорожек. Обычно дорожки делятся на блоки данных объемом 512 байт, иногда называемые секторами.   Перед данными располагается заголовок (header), состоящий из преамбулы(preamble), которая позволяет головке синхронизироваться перед чтением или записью данных и служебной адресной информацией. После данных идет код с исправлением ошибок (код Хемминга или  код Рида-Соломона). Между соседними секторами находится межсекторный интервал, в котором находятся метки для сервопривода. Так что форматированный сектор составляет уже 571 байт. Количество блоков, записываемых на одну дорожку зависит от физических размеров пластины и плотности записи. Как правило, производители указывают размер неформатированного диска (как будто каждая дорожка содержит только данные, но более честно было бы указывать вместимость форматированного диска, когда не учитываются преамбулы, исправляющие коды и межсекторные интервалы. Емкость форматированного диска обычно на 15-20% меньше емкости неформатированного диска.

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

Таким образом, сектор наименьший элемент структуры жесткого диска. Для того чтобы записать, а затем затребовать информацию, необходимо задать адрес, состоящий из трех чисел: номера цилиндра, номера поверхности (номера головки) и номера сектора. Этот метод называется CHS (Cylinder Head Sector). Современным развитием этого метода является механизм трансляции линейных адресов и линейной адресации LBA  (Logical Block Adressing), связанный однозначно с CHS.  

Таблица размещения файлов

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

Роль такого «реестра» на жестком диске выполняет специальная таблица, которая называется FAT-таблицей File Allocation Table (по-русски: таблица размещения файлов). Она находится на служебной дорожке жесткого диска и должна именовать, сохранять и производить поиск данных. Физическое повреждение секторов, в которых записана эта таблица, равносильно краху всей информации, хранящейся на жестком диске, поэтому эта таблица всегда продублирована, и операционная система компьютера бережно следит за тем, чтобы информация в разных экземплярах таблицы строго совпадала. Для ОС W.95/98 это были FAT 16 и FAT 32. В этих случаях размер кластера определялся объемом НЖМД. Однако FAT 32 поддерживал только 32 Гбайт (W.95) при размере кластера 16 Кбайт. Это заставило разработчиков перейти на NTFS начиная с ОС Windows 2000 (для ПК), хотя эта система успешно работала и с Windows NT. Основными преимуществами NTFS является умение управлять дисками с объемом несколько терабайт, исправлять ошибки после сбоев и защищать систему от несанкционированного доступа. Вместе с тем ограниченное количество логических дисков, потери при перезагрузке при изменении размеров кластера вынудили разработчиков к дальнейшему совершенствованию системы. Итак, улучшенная NTFS называется WinFS для ОС Windows Longhorn. Теперь структура каталогов будет давать представление не только о месте хранения файлов, но и определять его предысторию.  

Кластер

Хотя острота проблемы с кластеризацией пропала, особенно с внедрением NTFS мы должны понимать, откуда она возникла. Сейчас мы узнаем, откуда эти кластеры берутся. Мы работаем с файлами, имеющими имена, записанные символами (обычными человеческими буквами). Компьютер переводит эти имена в числовые адреса секторов с помощью таблицы размещения файлов. Этим занимается неоднократно упомянутая нами операционная система. Конечно, каждая система делает это по-разному, но до последнего времени все операционные системы, работающие на компьютерах платформы IBM PC, выражали адрес шестнадцатиразрядным числом, поскольку в таблицах размещения файлов на запись адреса каждого сектора зарезервировано 2 байта.

Имея 16 двоичных разрядов, можно задать 65536 разных адресов (216). При такой системе на диск можно записать 65536 различных файлов, и у каждого будет свой уникальный адрес. В те годы, когда размеры жестких дисков не превышали 32 мегабайта, это было очень неплохо. Сегодня средний размер жесткого диска вырос в сто раз, а количество уникальных адресов для записи файлов осталось тем же, каким было. Предельный размер диска, к какому вообще в принципе может адресоваться операционная система, работающая с 16-разрядной FAT-таблицей, сегодня составляет 2 Гбайт. А если мы поделим этот размер на 65536 адресов, то получим, что минимально адресуемое пространство жесткого диска составляет 32 Кбайт. Эта единица и называется кластером.

Поскольку кластер это минимальное адресуемое дисковое пространство, значит, ни один файл не может занимать меньше места, чем составляет кластер. На больших дисках файл, имеющий размер 1 байт, займет все 32 Кбайт. То же произойдет и с файлом длиной 2 байта и т. д. Если файл имеет размер 32,1 Кбайт, он займет два кластера, то есть все 64 Кбайт. Даже для FAT 32 при размере диска 32 Гбайт величина кластера все еще остается большой – 16 Кбайт.

Магнитооптические диски 

Другим направлением развития систем хранения информации являются магнитооптические диски. Запись на магнитооптические диски (MODMagneto Optical Drivers) выполняется при взаимодействии лазера и магнитной головки. Луч лазера разогревает до точки Кюри (температуры потери материалом магнитных свойств 2000С) микроскопическую область записывающего слоя, которая при выходе из зоны действия лазера остывает, фиксируя магнитное поле, наведенное магнитной головкой. Традиционно в магнитооптике используют трехпроходную запись: за первый оборот запись стирают, второй оборот – собственно запись и третий оборот – верификация, считывание записанной информации. В принципе возможна и однопроходная запись, но это требует сложной системы модуляции каждой битовой области. Считывание данных с магнитного слоя выполняется тоже с помощью лазера и основано на эффекте Керра – изменении поляризации света под действием магнитного поля. Отраженный луч проходит через поляризационную систему и в результате оказывается промодулированным по амплитуде. Расстояние от головки до поверхности диска около 1мм. В результате данные, записанные на диск, не боятся сильных магнитных полей, колебаний температуры и пыли. Все функциональные свойства дисков сохраняются в диапазоне температур от -20 до +50 градусов Цельсия. В то время, как вектор намагничивания при традиционной записи ориентирован в плоскости его поверхности диска, с помощью магнитооптических технологий удается придать вектору вертикальную ориентацию, что значительно ослабляет взаимодействие доменов, а значит чувствительность к внешним полям и высоким температурам.

Конструктивно магнитооптический диск состоит из толстой стеклянной подложки, на которую наносится светоотражающая алюминиевая пленка и ферромагнитный сплав — носитель информации, покрытый сверху защитным слоем прозрачного пластика. У таких дисков диаметром 3,5 дюйма информационная емкость одной стороны достигает 1,3 Гбайт, при диаметре 5,25 дюйма — 2.3 Гбайт, с двух сторон — 4,6 Гбайт. Дисководы могут быть как встроенными, так и внешними. MOD-диски уступают обычным жестким магнитным дискам по времени доступа к данным. Предельное достигнутое дисками время доступа составляет 19 мс. Магнитооптический принцип записи требует предварительного стирания данных перед записью, и соответственно, дополнительного оборота диска. Однако завершенные недавно исследования в SONY и IBM показали, что это ограничение можно устранить, а плотность записи на MOD-дисках можно увеличить в несколько раз используя голубой лазер. Во всех других отношениях MOD-диски превосходят жесткие магнитные диски.

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

Сегодня на рынке МО-дисков предлагается более 150 моделей различных фирм. Одно из лидирующих положений на этом рынке занимает компания Pinnacle Micro Inc. Для примера, ее дисковод Sierra 1.3 Гбайт обеспечивает среднее время доступа 19 мс и среднее время наработки на отказ 80000 часов. Для серверов локальных сетей и рабочих станций компания Pinnacle Micro предлагает целый спектр многодисковых систем емкостью 20, 40, 120, 186 Гбайт и даже 4 Тбайт. Для систем высокой готовности Pinnacle Micro выпускает дисковый массив Array Optical Disk System, который обеспечивает эффективное время доступа к данным не более 11 мс при скорости передачи данных до 10 Мбайт/с.

Лазерные компакт-диски CD - ROM

Для переноса больших объемов данных используют лазерные компакт-диски, получившие обозначение CD-ROM (Compact Disc Read Only Memory). В силу большой емкости (один диск может содержать до 650 Мбайт данных) эти носители широко используются для распространения мультимедийной информации, содержащей большие объемы графики, звука и видео. Они также не имеют конкурентов по параметру стоимости хранения мегабайта информации.

Сегодня диски CD-ROM являются основным типом носителя для распространения программного обеспечения. Если компьютер не имеет дисковода CD-ROM, установка нового программного обеспечения превращается в серьезную проблему.

Основным техническим требованием к дисководам CD-ROM является скорость доступа к данным и скорость их считывания. Этот параметр измеряется в кратных единицах. Так, например, 2-скоростные дисководы обеспечивают скорость считывания 300 Кбайт в секунду. Соответственно, 4-скоростные дисководы обеспечивают скорость 600 Кбайт в секунду и т.д.

Производительность дисковода CD-ROM нам чаще всего важна не сама по себе, а в сравнении с производительностью жесткого диска. Лазерные компакт-диски не боятся магнитных полей и менее критичны к пыли и влаге, чем магнитные дискеты. В то же время, в большинстве случаев они не защищены пластиковым корпусом, как магнитные дискеты, и при неаккуратном обращении могут получать механические повреждения: царапины, трещины, сколы и т. п. В качестве интерфейса применяются SCSI/ASPI – самый подходящий, но дорогой, иногда рекомендуется – IDI/ATAPI.

CD-R 

В отличие от CD-ROM могут не только читать диски, но и записывать их. Могут устанавливаться в компьютер вместо CD-ROM. Запись на диски CD-R осуществляется благодаря наличию на нем особо светочувствительного слоя, выгорающего под воздействием высокотемпературного лазерного луча. То есть перед нами нечто похожее на обычную фотографию. Правда, считывает CD-R по нынешним временам не слишком быстро - со скоростью 8-скоростного CD-ROM (8 x 150 = 1200 кб/c = 1,17 Мб/c), но ведь чтение - не главная его функция. Главная - запись. Писать CD-R может в 2-х режимах - односессионном (когда весь диск записывается в один прием) и многосессионном. CD-R - идеален для хранения всевозможных архивов (изображений, звуков, да и просто программ, загромождающих место на вашем жестком диске). Можно сделать копию содержимого всего жесткого диска (на всякий случай). И, конечно же, копировать аудио-, видеодиски и программы.

CD-RW

Новый стандарт перезаписываемых CD-ROM. Внешне диски не отличаются от обычных CD-R, объем - тот же - 640 Мб. Но технология записи CD-R и CD-RW разная.

На дисках CD-RW также имеются поглощающие и отражающие свет участки. Однако это не бугорки или ямки, как в дисководах CD-ROM и CD-R. Диск CD-RW представляет из себя как бы слоеный пирог, где на металлической основе покоится рабочий, активный слой. Он состоит из специального материала, который под воздействием лазерного луча изменяет свое состояние. Находясь в кристаллическом состоянии, одни участки слоя рассеивают свет, а другие - аморфные - пропускают его через себя на отражающую металлическую подложку.

Достоинства: 

  1.  на диск можно записывать информацию и читать ее;

дисковод CD-RW использует как диски собственного формата, так и с диски CD-ROM и CD-R. Последние он не только читает, но и пишет, причем в любом - односессионном или многосессионном формате.

Недостатки: 

  1.  перезаписываемые диски CD-RW могут читать не все современные дисководы CD-ROM - только последние модели, соответствующие стандарту Multiread. И даже если вы запишите на CD-RW музыкальный диск, его не прочтет ни один чисто музыкальный компакт-проигрыватель.
  2.  высокая цена: цена диска в 2 - 2,5 раза выше, чем у CD-R.
  3.  низкая скорость: запись дисков - максимум на учетверенной скорости, а чтение - со скоростью 6х и 8х.

DVD

В свое время к 2000 году, по обещаниям разработчиков, видеокассеты, компакт-диски и другие носители информации должны были прекратить свое существование. Их должны были заменить Единые и Универсальные - DVD.

Сначала DVD расшифровывался так - Digital Video Disk - цифровой видеодиск нового поколения. Но позднее консорциум DVD отказался от этой расшифровки. Впервые слово DVD прозвучало в мире 8 декабря 1995 года. DVD может быть односторонним и двухсторонним, однослойным и многослойным. Но фирмы, входящие в консорциум так до сих пор решение и не приняли. Поэтому пока остановились на односторонних и однослойных.

По внешнему виду и способу записи DVD не очень отличаются от привычных CD-ROM. Но однослойный и односторонний DVD имеет емкость 4,7 Гбайт (в 8 раз больше объема CD-ROM). Объем двухстороннего и многослойного DVD может достигать 17 Гбайт. На одном DVD можно уместить видеофильм на 140 минут с пятью альтернативными звуковыми дорожками на разных языках и четырьмя каналами субтитров. Сравнительно недавно появились первые записывающие дисководы DVD-R, а в дальнейшем - перезаписывающие дисководы DVD-RW (DVD-RAM), работающие с односторонними однослойными дисками емкостью 4,7 Гбайт (или 5,2 Гбайт - в зависимости от производителя). В дальнейшем появились DVD-RW, работающие с многослойными дисками объемом до и более 10 Гбайт.

Дисковые массивы и уровни RAID

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

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

Такую систему можно получить за счет избыточности – параллельного использования множества обычных устройств.

Высокопроизводительные системы, как правило, очень дороги. Однако, можно добиться высокой производительности за приемлемую стоимость путем объединения нескольких недорогих устройств, работающих параллельно. Отсюда получают акроним для избыточных матриц недорогих дисков RAID (Redundant Array of Inexpensive Disks). Существует несколько способов объединения дисков RAID. Каждый уровень представляет свой компромисс между пропускной способностью ввода/вывода и емкостью диска, предназначенной для хранения избыточной информации. Одновременное использование нескольких дисков позволяет не только увеличить объем, но и повысить быстродействие и надежность.

Когда какой-либо диск отказывает, предполагается, что в течение короткого интервала времени он будет заменен и информация будет восстановлена на новом диске с использованием избыточной информации. Это время называется средним временем восстановления (mean time to repair - MTTR). Этот показатель можно уменьшить, если в систему входят дополнительные диски в качестве "горячего резерва": при отказе диска резервный диск подключается аппаратно-программными средствами. Периодически оператор вручную заменяет все отказавшие диски. Четыре основных этапа этого процесса состоят в следующем:

определение отказавшего диска,

устранение отказа без останова обработки;

восстановление потерянных данных на резервном диске;

периодическая замена отказавших дисков на новые.

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

RAID 0: Базовая конфигурация.

Это базовая конфигурация дискового массива без избыточности и отказоустойчивости, простейшее средство повышения производительности. Один большой файл разбивается на несколько частей, которые записываются на разные диски. Более научно, но менее понятно – виртуальный диск разбивается на полосы (strips), которые равномерно распределяются по всем дискам массива.

                                                                         Disk 0     

Файл                                                                                                      Параллельно

                                                                        Disk 1

                                                                                         

                                                                                   Disk 2     

                                                             «расслоение данных»

Рис. 10.3 Базовая конфигурация

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

RAID1: Зеркальные диски. 

Зеркальные диски представляют традиционный способ повышения надежности магнитных дисков. Это наиболее дорогостоящий из рассматриваемых способов, так как все диски дублируются и при каждой записи информация записывается также и на проверочный диск. Таким образом, приходится идти на некоторые жертвы в пропускной способности ввода/вывода и емкости памяти ради получения более высокой надежности. Зеркальные диски широко применяются многими фирмами. В частности компания Tandem Computers применяет зеркальные диски, а также дублирует контроллеры и магистрали ввода/вывода с целью повышения отказоустойчивости. Эта версия зеркальных дисков поддерживает параллельное считывание.

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

RAID 2: матрица с поразрядным расслоением 

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

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

RAID 3: аппаратное обнаружение ошибок и четность 

Большинство контрольных дисков, используемых в RAID уровня 2, нужны для определения положения неисправного разряда. Эти диски становятся полностью избыточными, так как большинство контроллеров в состоянии определить, когда диск отказал при помощи специальных сигналов, поддерживаемых дисковым интерфейсом, либо при помощи дополнительного кодирования информации, записанной на диск и используемой для исправления случайных сбоев. По существу, если контроллер может определить положение ошибочного разряда, то для восстановления данных требуется лишь один бит четности. Уменьшение числа контрольных дисков до одного на группу снижает избыточность емкости до вполне разумных размеров. Часто количество дисков в группе равно 5 (4 диска данных плюс 1 контрольный). Подобные устройства выпускаются, например, фирмами Maxtor и Micropolis. Каждое из таких устройств воспринимается машиной как отдельный логический диск с учетверенной пропускной способностью, учетверенной емкостью и значительно более высокой надежностью.

RAID 4: внутригрупповой параллелизм 

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

Достоинство поразрядного расслоения состоит в простоте вычисления кода Хэмминга, что необходимо для обнаружения и исправления ошибок в системах уровня 2. В RAID уровня 3 обнаружение ошибок диска с точностью до сектора осуществляется дисковым контроллером. Следовательно, если записывать отдельный блок передачи в отдельный сектор, то можно обнаружить ошибки отдельного считывания без доступа к дополнительным дискам. Главное отличие между системами уровня 3 и 4 состоит в том, что в последних расслоение выполняется на уровне сектора, а не на уровне битов или байтов.

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

RAID 5: четность вращения для распараллеливания записей 

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

Это небольшое изменение оказывает огромное влияние на производительность записи небольших массивов информации. Если операции записи могут быть спланированы так, чтобы обращаться за данными и соответствующими им блоками четности к разным дискам, появляется возможность параллельного выполнения N/2 записей, где N - число дисков в группе. Данная организация имеет одинаково высокую производительность при записи и при считывании как небольших, так и больших объемов информации, что делает ее наиболее привлекательной в случаях смешанных применений.

RAID 6: Двумерная четность для обеспечения большей надежности 

Этот пункт можно рассмотреть в контексте соотношения отказоустойчивость/пропускная способность. RAID 5 предлагают, по существу, лишь одно измерение дисковой матрицы, вторым измерением которой являются секторы. Теперь рассмотрим объединение дисков в двумерный массив таким образом, чтобы секторы являлись третьим измерением. Мы можем иметь контроль четности по строкам, как в системах уровня 5, а также по столбцам, которые, в свою очередь. могут расслаиваться для обеспечения возможности параллельной записи. При такой организации можно преодолеть любые отказы двух дисков и многие отказы трех дисков. Однако при выполнении логической записи реально происходит шесть обращений к диску: за старыми данными, за четностью по строкам и по столбцам, а также для записи новых данных и новых значений четности. Для некоторых применений с очень высокими требованиями к отказоустойчивости такая избыточность может оказаться приемлемой, однако для традиционных суперкомпьютеров и для обработки транзакций данный метод не подойдет.

Возможны и более сложные массивы, в которых применяются двухступенчатые комбинации рассмотренных уровней. Например, RAID 10 –  массив RAID 0, собранный из пар зеркальных дисков (RAID 1). В качестве интерфейса чаще всего фигурирует интерфейс SCSI. Еще лучшие результаты дает применение последовательного интерфейса SAS. Необходимо отметить, что массивы RAID могут быть реализованы как аппаратно, так и программно.

Выводы

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

Данные на внешних носителях недоступны человеку без помощи компьютера.

Информация на носителях внешней памяти хранится в виде отдельных блоков – секторов. Сектор является неделимой единицей информации, т.е. может быть прочитан только целиком.

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

В любой момент времени процессор работает только с ОП, в которую она предварительно заносится из ВП.

Все виды памяти связаны между собой, образуя общую иерархию.

Вопросы и задания 

  1.  Что такое кластер? Перечислите методы борьбы с кластеризацией.
  2.  Дайте развернутую характеристику FAT 32.
  3.  В чем состоит различие между физическим и логическим форматированием?
  4.  Как и в каких случаях выполняется дефрагментация ЖД?
  5.  В чем заключается смысл и предназначение RAID-массивов?

Лекция 11.  Основные принципы построения систем ввода/вывода

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

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

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

Физические принципы организации ввода-вывода 

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

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

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

Интерфейсы характеризуются следующими параметрами:

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

Компьютер должен работать с наивысшей производительностью, для этого необходимо организовать пересылку данных таким образом, чтобы полное слово обрабатывалось за минимальное время. Когда слово данных пересылается между устройствами, параллельно перемещаются и все его биты. Каждый бит пересылается по своему проводу (линии). Группа линий, образующая соединение между несколькими устройствами называется шиной (bus).  Процессор, основная память и устройства ввода-вывода могут соединяться между собой посредством общей шины. Набор правил, управляющих поведением соединенных с шиной устройств, а также последовательностью помещения данных на шину, выдачу управляющих сигналов и т.п. – называется шинный протокол. Шины и шинные протоколы являются составной частью интерфейсных схем. В любой операции пересылки данных по шине одно из устройств играет роль хозяина шины (bus master). Обычно хозяином шины является процессор, но эту роль могут выполнять и другие устройства.  

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

Магистрально-модульный способ построения ЭВМ

Главным направлением структурирования интерфейсных схем является магистрально-модульный способ построения ЭВМ (рис.11.1), когда все устройства, составляющие компьютер, включая и микропроцессор, организуются в виде модулей, которые соединяются между собой общей магистралью. Обмен информацией по магистрали удовлетворяет требованиям некоторого общего интерфейса, установленного для магистрали данного типа. Каждый модуль подключается к магистрали посредством специальных интерфейсных схем (Иi).


Рис. 11.1  Магистрально-модульный принцип построения ЭВМ

На интерфейсные схемы модулей возлагаются следующие задачи:

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

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

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

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

Количество линий, входящих в состав шины, принято называть разрядностью (шириной) этой шины.

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

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

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

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

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

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

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

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

  •  Устройства ввода-вывода подключаются к системе через порты.
  •  Могут существовать два адресных пространства: пространство памяти и пространство ввода-вывода.
  •  Порты, как правило, отображаются в адресное пространство ввода-вывода и иногда – непосредственно в адресное пространство памяти.
  •  Использование того или иного адресного пространства определяется типом команды, выполняемой процессором, или типом ее операндов.
  •  Физическим управлением устройством ввода-вывода, передачей информации через порт и выставлением некоторых сигналов на магистрали занимается контроллер устройства.

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

Структура контроллера устройства ввода-вывода

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

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

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

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

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

Опрос устройств и прерывания. Исключительные ситуации и системные вызовы 

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

  1.  Процессор в цикле читает информацию из порта регистра состояний и проверяет значение бита занятости. Если бит занятости установлен, то это означает, что устройство еще не завершило предыдущую операцию, и процессор уходит на новую итерацию цикла. Если бит занятости сброшен, то устройство готово к выполнению новой операции, и процессор переходит на следующий шаг.
  2.  Процессор записывает код команды вывода в порт регистра управления.
  3.  Процессор записывает данные в порт регистра входных данных.
  4.  Процессор устанавливает бит готовности команды. В следующих шагах процессор не задействован.
  5.  Когда контроллер замечает, что бит готовности команды установлен, он устанавливает бит занятости.
  6.  Контроллер анализирует код команды в регистре управления и обнаруживает, что это команда вывода. Он берет данные из регистра входных данных и инициирует выполнение команды.
  7.  После завершения операции контроллер обнуляет бит готовности команды.
  8.  При успешном завершении операции контроллер обнуляет бит ошибки в регистре состояния, при неудачном завершении команды – устанавливает его.
  9.  Контроллер сбрасывает бит занятости.

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

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

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

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

Организация передачи данных

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

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

  1.  сформировать начальный адрес области обмена ОП;
  2.  занести длину передаваемого массива данных в один из внутренних регистров, который будет играть роль счетчика;
  3.  выдать команду чтения информации из УВВ; при этом на шину адреса из МП выдается адрес УВВ, на шину управления - сигнал чтения данных из УВВ, а считанные данные заносятся во внутренний регистр МП;
  4.  выдать команду записи информации в ОП; при этом на шину адреса из МП выдается адрес ячейки оперативной памяти, на шину управления - сигнал записи данных в ОП, а на шину данных выставляются данные из регистра МП, в который они были помещены при чтении из УВВ;
  5.  модифицировать регистр, содержащий адрес оперативной памяти;
  6.  уменьшить счетчик длины массива на длину переданных данных;
  7.  если переданы не все данные, то повторить шаги 3-6, в противном случае закончить обмен.

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

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

Структура ЭВМ, имеющей в своем составе КПДП, представлена на рис. 11.2


Рис. 11.2  Обмен данными в режиме прямого доступа к памяти

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

Последовательность действий контроллера ПДП при запросе на прямой доступ к памяти со стороны устройства ввода-вывода следующая:

  1.  Принять запрос на ПДП (сигнал DRQ) от УВВ.
  2.  Сформировать запрос к МП на захват шин (сигнал HRQ).
  3.  Принять сигнал от МП (HLDA), подтверждающий факт перевода микропроцессором своих шин в третье состояние.
  4.  Сформировать сигнал, сообщающий устройству ввода-вывода о начале выполнения циклов прямого доступа к памяти (DACK).
  5.  Сформировать на шине адреса компьютера адрес ячейки памяти, предназначенной для обмена.
  6.  Выработать сигналы, обеспечивающие управление обменом (IOR, MW для передачи данных из УВВ в оперативную память и IOW, MR для передачи данных из оперативной памяти в УВВ).
  7.  Уменьшить значение в счетчике данных на длину переданных данных.
  8.  Проверить условие окончания сеанса прямого доступа (обнуление счетчика данных или снятие сигнала запроса на ПДП). Если условие окончания не выполнено, то изменить адрес в регистре текущего адреса на длину переданных данных и повторить шаги 5-8.
  9.  По окончанию пересылки информировать об этом процессор с помощью сигнала прерывания.

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

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

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

Стандартные интерфейсы и шины систем ввода-вывода

Интерфейсы компьютера можно разделить на две большие группы: внешние и внутренние.  Внутренние интерфейсы предназначены для быстрой связи на коротких расстояниях. Стандартизованные интерфейсы и шины расширения служат для увеличения возможностей компьютера (Рис.11.3). Шины расширения реализуются в виде слотов (щелевых разъемов) на системной плате компьютера. Интересно проследить эволюционный путь развития этих устройств.

Шина процессора

Шина PCI

                                         Шина SCSI (ATA, IDE, ATAPI, SATA, SCSI, FireWire, SAS)

Рис. 11.3  Современный ПК с набором шин -  PCI, EISA, SCSI, USB  

С ростом частоты работы ЦПУ и изменения времени доступа к ОП пропускная способность шины ISA в 8 Мбайт/сек стала тормозить работу процессора. Решение проблемы нашли в выделении канала передачи данных МП-ОЗУ в отдельную шину, построенную на базе внешнего интерфейса ЦП, и изолированную от медленной шины  ISA  посредством контроллера шины данных. Это повысило производительность работы центрального процессора. Все ПУ продолжали взаимодействовать с центральным процессором через системную шину.

С дальнейшим ростом частоты работы ЦП тормозом  в работе стало ОП. Тогда ввели дополнительную высокоскоростную кэш - память, что уменьшило простои ЦПУ. Все ПУ продолжали работать через системную шину, но кроме ISA появились более скоростные шины EISA и MCA.

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

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

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

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

Асинхронная шина не тактируется. Вместо этого обычно используется старт-стопный режим передачи и протокол "рукопожатия" (handshaking) между источником и приемником данных на шине. Эта схема позволяет гораздо проще приспособить широкое разнообразие устройств и удлинить шину без беспокойства о перекосе сигналов синхронизации и о системе синхронизации. Если может использоваться синхронная шина, то она обычно быстрее, чем асинхронная, из-за отсутствия накладных расходов на синхронизацию шины для каждой транзакции. Выбор типа шины (синхронной или асинхронной) определяет не только пропускную способность, но также непосредственно влияет на емкость системы ввода/вывода в терминах физического расстояния и количества устройств, которые могут быть подсоединены к шине. Асинхронные шины по мере изменения технологии лучше масштабируются. Шины ввода/вывода обычно асинхронные.

Среди применяемых в современных ПК интерфейсов можно отметить EIDI, SCSI, SSA, USB, FireWire (IEEE 1394) и DeviceBay. Среди интерфейсов передачи данных особняком стоят порты ввода/вывода, использующиеся для подключения низкоскоростных периферийных устройств: последовательный порт (COM), параллельный порт (LPT), игровой порт и инфракрасный порт (IrDA).

На определенном этапе развития компьютеров стали широко использовать мультимедиа. Сразу выявилось узкое место во взаимодействии центрального процессора и видеокарты. Потребовалась пропускная способность более 100 Мбайт/с. Имеющиеся системные шины ISA, ЕISA, МСА не удовлетворяли этим условиям. Их пропускная способность составляла от 16 до 30 Мбайт/сек.

Стоит вспомнить, как развивались средства ввода/вывода. Уже к самым первым компьютерам требовалось подключить какие-то внешние устройства, в том числе для ввода и вывода на перфокарты, на магнитные ленты, нужны были принтеры, а затем диски и множество других устройств. Однако эти подключения оставались частными решениями, выполненными без соблюдения каких-либо общепринятых стандартов. Когда началось массовое производство миниЭВМ, потребовались технологии для унификации ввода/вывода, в ответ на это появилась архитектура общей шины, которая обеспечила единообразие подключения периферии, открыв, тем самым, рынок внешних устройств. В последующем, для связи с периферией была выделена отдельная специализированная шина PCI (Peripheral Connection Interface); она оказалась настолько удобной, что сохранилась до сих пор без радикальных изменений. Идеология шины PCI, из самого названия которой следует, что она служит для подключения периферии, складывалась в то время, когда сервер рассматривался как нечто изолированное. Поэтому в нее естественным образом заложена возможность подключения ограниченного количества периферийных устройств через контроллеры, соответствующие каждому типу устройства. Традиционный ввод/вывод предполагает подключение накопителей напрямую к стандартной шине PCI; для этого широко используются параллельные интерфейсы SCSI (Small Computer Systems Interface), ATA (Advanced Technology Attachment) или Fibre Channel Arbitrated Loop (FC-AL). Одновременно постепенно происходит сериализация интерфейсов; компьютерная индустрия мигрирует на Serial Attached SCSI и Serial ATA.

Выход был найден с разработкой и внедрением локальных высокоскоростных шин, посредством которых можно было связаться с памятью, на этой же шине работали жесткие диски, что также повышало качество вывода графической информации. Первой такой шиной была шина VL-bus, практически повторявшая интерфейс МП i486. Затем появилась локальная шина РСI. Она была процессорно-независимой и поэтому получила наибольшее распространение для последующих типов МП. Эта шина имела частоту работы 33 МГц и при 32-х разрядных данных обеспечивала пропускную способность в 132 Мбайт/с. Системная шина ISA по-прежнему использовалась в компьютерах, что позволяло применять в новых компьютерах огромное количество ранее разработанных аппаратных и программных средств.

В такой системе ввода-вывода различные ПУ подключались к разным шинам. Медленные - к ISA, а высокоскоростные - к РСI. Важнейшее отличие шины PCI от шины ISA заключается в возможности динамического конфигурирования периферийных устройств, то есть система распределяет ресурсы между периферийными устройствами оптимальным образом и без постороннего вмешательства. С появление шины РСI стало целесообразным использовать высокоскоростные параллельные и последовательные интерфейсы ПУ (SCSI, ATA, USB).  Появление шины РСI не сняло всех проблем по качественному выводу визуальной информации для 3-х мерных изображений, "живого" видео. Здесь уже требовались скорости в сотни Мбайт/сек. В 1996г. фирма Intel разработала новую шину AGP, предназначенную только для связи ОЗУ и процессора с видеокартой монитора. Эта шина обеспечивала пропускную способность в сотни Мбайт/сек. Она непосредственно связывала видеокарту с ОЗУ минуя шину РСI.

Все шины систем ввода-вывода объединяются  в единую транспортную среду передачи информации с помощью специальных устройств: мостов и контроллеров ввода-вывода (Chipset).

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

В структуре компьютера, использующего шину РСI, применяются три типа мостов. Мост шины – южный мост (РСI Bridge), производящий подключение шины РСI к другим шинам, например, ISA или ЕISA. Главный мост – северный мост  (Host Bridge), соединяющий шину РСI с системной шиной, кроме того, этот мост содержит контроллер ОЗУ, арбитр и схему автоконфигурации. Одноранговый мост (Peer-to-Peer) для соединения двух шин РСI между собой. Это делается для увеличения числа устройств, подключаемых к шине.

Для управления шинами и обеспечения выполнения функций интерфейсов, входящих в систему ввода-вывода, применяются специальные контроллеры и схемы. К ним можно отнести контроллеры прерываний 8259А и прямого доступа к памяти 8237А, таймер 8254А, часы реального времени, буферы шин данных, дешифраторы, мультиплексоры, регистры и другие логические устройства.

PCI Express 

По прогнозам, в ближайшие десять лет требования к пропускной способности шин ввода-вывода возрастут в 50 раз. Но традиционная архитектура параллельных шин типа PCI и AGP уже почти достигла предела своих возможностей (физический лимит для них - примерно 1 ГГц). Последовательный интерфейс PCI Express, имеющий много общего с сетевой организацией обмена данными, призван заменить шину PCI (и ее клон - AGP), исправно работающую в компьютерной технике уже более десяти лет.

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

PCI Express была разработана с расчетом на разнообразные применения - от полной замены шин PCI 2.2 или PCI-X в настольных компьютерах и серверах до использования в мобильных, встроенных и коммуникационных устройствах. Номинальной рабочей частотой шины PCI Express является  2,5 ГГц. Физическая реализация шины передачи данных - это две дифференциальные пары проводников с импедансом 50 Ом (первая пара работает на прием, вторая - на передачу), данные по которым передаются с использованием избыточного кодирования по схеме "8/10" с исправлением ошибок. Это позволяет исправлять многие простые ошибки, неизбежные на столь высоких частотах. Как и в любой сети, передаваемые данные дополнительно нарезаются небольшими кусочками - фреймами. При тактовой частоте шины 2,5 ГГц мы получим скорость 2,5 Гбит/с. С учетом выбранной схемы "8/10" выходит 250 Мбайт/с, однако многоуровневая сетевая иерархия не может не сказаться на скорости работы, и реальная производительность шины оказывается значительно ниже - всего лишь около 200 Мбайт/с в каждую сторону. Впрочем, даже это на 50% больше, чем теоретическая пропускная способность шины PCI. Но это далеко не предел: PCI Express позволяет объединять в шину нескольких независимых линий передачи данных. Стандартом предусмотрено использование 1, 2, 4, 8, 16 и 32 линий - передаваемые данные поровну распределяются между ними по схеме "первый байт на первую линию, второй - на вторую, ..., n-й байт на n-ю линию, n+1-й снова на первую, n+2 снова на вторую" и так далее. Это не параллельная передача данных и даже не увеличение разрядности шины (поскольку все передающиеся по линиям данные передаются абсолютно независимо и асинхронно) - это именно объединение нескольких независимых линий. Причем передача по нескольким линиям никак не влияет на работу остальных слоев "пирамиды" и реализуется сугубо на "нижнем", физическом уровне. Именно этим достигается прекрасная масштабируемость PCI Express, позволяющая организовывать шины с максимальной пропускной способностью до 32x200=6,4 Гбайт/с в одном направлении, под стать лучшим параллельным шинам сегодняшнего дня. PCI Express относится к шинам класса "точка-точка", то есть одна шина может соединять только два устройства (в отличие от PCI, где на общую шину "вешались" все PCI-слоты компьютера), поэтому для организации подключения более чем одного устройства в топологию организуемой PCI Express, как и в Ethernet-решениях на базе витой пары или устройствах USB, придется вставлять хабы и свитчи, распределяющие сигнал по нескольким шинам. Это тоже одно из главных отличий PCI Express от прежних параллельных шин.

Чипсет

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

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

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

В "десктопных" системах PCI Express 16x в первую очередь вытеснит AGP 8x в качестве "графической шины", соединяющей видеокарту и северный мост чипсета. Затем на PCI Express пересадят многие интегрированные устройства - гигабитный сетевой и RAID-контроллеры. К обычным PCI-слотам добавят PCI Express x1.

Выводы 

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

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

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

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

Компоненты ЭВМ соединяются шинами. Большинство выводов обычного ЦПУ запускают одну линию шины. Линии шины можно подразделить на адресные, информационные и линии управления. Синхронные шины запускаются задающим генератором. В асинхронных шинах для согласования работы задающего и подчиненного устройств используется сигналы специального назначения.  Современные процессоры используют все разнообразие шинных интерфейсов: PCI, ISA, USB, SCSI и т.д.

Вопросы и задания 

  1.  Вычислите пропускную способность шины, необходимую для отображения на мониторе VGA (640x480) цветного фильма (30 кадров/с). Предполагается, что данные должны проходить по шине дважды: один раз от компакт диска к памяти, а второй раз от памяти к монитору.
  2.  Максимальная полезная нагрузка пакета данных, передаваемого по шине USB, составляет 1023 байта. Если предположить, что устройство может посылать только один пакет данных за кадр, какова пропускная способность для одного изохронного устройства?

Лекция 12.  Особенности архитектуры современных  высокопроизводительных ВС

Введение

"Citius, Altius, Fortius" – девиз Олимпийских игр современности, как ни к какой другой области, применим к вычислительной технике. Воплощение в жизнь не раз видоизменявшего свою исходную формулировку, но до сих пор действующего эмпирического закона сформулированного в 1965 году Гордоном Муром, похоже, стало "делом чести" производителей аппаратного обеспечения. Из всех известных формулировок этого закона точку зрения потребителя/пользователя наилучшим образом отражает вариант: "производительность вычислительных систем удваивается каждый 18 месяцев". Мы сознательно не использовали термин "процессор", поскольку конечного пользователя вовсе не интересует, кто обеспечивает ему повышение мощности: процессор, ускоритель, видеокарта, – ему важен лишь сам факт роста возможностей "за те же деньги".

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

Можно представить следующие направления развития параллельных технологий:

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

В 31-м списке Top500 (июнь 2008) впервые в истории был преодолен петафлопный порог производительности – суперкомпьютер "Roadrunner" [2] производства компании IBM показал на тесте LINPACK 1,026 петафлопс. Много это или мало? Если взять за основу, что реальная производительность хорошей "персоналки" на четырехъядерном процессоре составляет порядка 20 гигафлопс, то весь список Top500 будет эквивалентен половине миллиона таких персоналок. Представленные в списке Top500 данные позволяют проследить характерные тенденции развития индустрии в сфере суперкомпьютерных вычислений. Первый список Top500 датирован июнем 1993 года и содержит 249 систем класса SMP и 97, построенных на основе единственного процессора. Уже четырьмя годами позже в Top500 не осталось ни одной системы на основе единственного процессора. Все дальнейшее развитие шло под лозунгом; от суперкомпьютера к мини-кластеру.

Вспомним: кластер – группа компьютеров, объединенных в ЛВС и способных работать в качестве единого вычислительного ресурса.

Сегодня 75% систем в списке построены на основе процессоров компании Intel, чуть больше 13% – на процессорах компании IBM и 11% – компании AMD (на двух оставшихся производителей NEC и Cray приходится по одной системе соответственно); 81% систем используют всего два типа интерконнекта: Gigabit Ethernet или Infiniband; 85% систем работают под управлением операционной системы из семейства Linux. Как видим, разнообразием список не блещет, что является несомненным плюсом с точки зрения пользователей. Однако для пользователя массового еще большим плюсом была бы возможность иметь персональный суперкомпьютер у себя на столе или, на худой конец, стоящий под столом. Тенденция "персонализации" супервычислений в последнее время развивается все активнее и недавно была подхвачена в том числе и производителями видеокарт, мощности которых возросли настолько, что возникло естественное желание использовать их не только в графических расчетах, но и в качестве ускорителей вычислений общего назначения. Соответствующие решения представлены в настоящее время компанией NVIDIA (семейство NVIDIA Tesla™) и компанией AMD (семейство ATI FireStream™) и демонстрируют в силу специфики внутреннего устройства потрясающую (в сравнении с универсальными процессорами) пиковую производительность, превышающую 1 терафлопс.

Несколько лет назад в моде были казавшиеся вполне обоснованными прогнозы, когда именно будет преодолен тот или иной порог по тактовой частоте процессоров. Четыре-пять гигагерц виделись практически свершившимся фактом, десять маячили где-то недалеко впереди. Однако прогнозы эти на долгое время так и остались прогнозами. В некоторый момент оказалось, что тепло, выделяемое процессором, становится настолько большим, что о стабильной работе на частотах выше четырех гигагерц в условиях, характерных для обычных персональных компьютеров, и говорить не приходится2). Энтузиасты, используя дополнительное охлаждение, вплоть до жидкого азота, научились разгонять процессоры производства Intel выше 6 гигагерц, в отдельных случаях до 7 и даже 8, но о стабильной продолжительной работе на таких частотах речь не идет. Как просто было когда-то сравнивать процессоры компании Intel между собой. Все знали, есть Pentium, есть его "урезанный" вариант Celeron, а в остальном, чем выше частота, тем лучше. Эта простота была следствием того факта, что в формуле, определяющей производительность вычислительной системы "тактовая частота процессора * число инструкций, выполняемых за один такт (Instructions Per Cycle, IPC)" переменной величиной была только частота. Необходимо, конечно, отметить, что получаемая по этой формуле величина, дает только так называемую "пиковую производительность", приблизиться к которой на практике можно лишь на отдельных специально подобранных задачах.

Классификация архитектур по параллельной обработке данных

 В 1966 году М.Флинном (Flynn) был предложен чрезвычайно удобный подход к классификации архитектур вычислительных систем. В основу было положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором. Соответствующая система классификации основана на рассмотрении числа потоков инструкций и потоков данных и описывает четыре архитектурных класса.

1. SISD (single instruction stream / single data stream) - одиночный поток команд и одиночный поток данных. К этому классу относятся последовательные компьютерные системы, которые имеют один центральный процессор, способный обрабатывать только один поток последовательно исполняемых инструкций. В настоящее время практически все высокопроизводительные системы имеют более одного центрального процессора, однако, каждый из них выполняют несвязанные потоки инструкций, что делает такие системы комплексами SIMD-систем, действующих на разных пространствах данных. Примерами компьютеров с архитектурой SISD являются большинство рабочих станций Compaq, Hewlett-Packard и Sun Microsystems. 

2. MISD (multiple instruction stream / single data stream) - множественный поток команд и одиночный поток данных. Теоретически в этом типе машин множество инструкций должны выполнятся над единственным потоком данных. До сих пор ни одной реальной машины, попадающей в данный класс, не было создано. В качестве аналога работы такой системы, по-видимому, можно рассматривать работу банка. С любого терминала можно подать команду и что-то сделать с имеющимся банком данных. Поскольку база данных одна, а команд много, то мы имеем дело с множественным потоком команд и одиночным потоком данных. 

3. SIMD (single instruction stream / multiple data stream) - одиночный поток команд и множественный поток данных. Эти системы обычно имеют большое количество процессоров, в пределах от 1024 до 16384, которые могут выполнять одну и ту же инструкцию относительно разных данных в жесткой конфигурации. Единственная инструкция параллельно выполняется над многими элементами данных. Примерами SIMD машин являются системы CPP DAP, Gamma II и Quadrics Apemille. Другим подклассом SIMD-систем являются векторные компьютеры. Векторные компьютеры манипулируют массивами сходных данных подобно тому, как скалярные машины обрабатывают отдельные элементы таких массивов. Это делается за счет использования специально сконструированных векторных центральных процессоров. При работе в векторном режиме векторные процессоры обрабатывают данные практически параллельно, что делает их в несколько раз более быстрыми, чем при работе в скалярном режиме. Примерами систем подобного типа является, например, компьютеры Hitachi S3600.

4. MIMD (multiple instruction stream / multiple data stream) - множественный поток команд и множественный поток данных. Эти машины параллельно выполняют несколько потоков инструкций над различными потоками данных. В отличие от многопроцессорных SISD-машин, упомянутых выше, команды и данные связаны, потому что они представляют различные части одной и той же выполняемой задачи. Например, MIMD-системы могут параллельно выполнять множество подзадач, с целью сокращения времени выполнения основной задачи. Наличие большого разнообразия попадающих в данный класс систем, делает классификацию Флинна не полностью адекватной. Действительно и четырех-процессорный SX-5 компании NEC и тысяче-процессорный Cray T3E оба попадают в этот класс. Это заставляет использовать другой подход к классификации, иначе описывающий классы компьютерных систем. Основная идея такого подхода может состоять, например, в следующем. Считаем, что множественный поток команд может быть обработан двумя способами: либо одним конвейерным устройством обработки, работающем в режиме разделения времени для отдельных потоков, либо каждый поток обрабатывается своим собственным устройством. Первая возможность используется в MIMD компьютерах, которые обычно называют конвейерными или векторными, вторая – в параллельных компьютерах. В основе векторных компьютеров лежит концепция конвейеризации, т.е. явного сегментирования арифметического устройства на отдельные части, каждая из которых выполняет свою подзадачу для пары операндов. В основе параллельного компьютера лежит идея использования для решения одной задачи нескольких процессоров, работающих сообща, причем процессоры могут быть как скалярными, так и векторными. На рисунке 12.1 приведен пример такой классификации.

Рис. 12.1 Классификация ВС

Параллелизм вычислительных процессов

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

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

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

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

                            A=B+C;

                            D=E*F;

Если строго следовать принципу фон Неймана, то вторая операция может быть запущена на  исполнение  только  после  завершения первой операции. Однако очевидно, что порядок выполнения этих команд не имеет никакого значения - операнды A, B и C первой команды никак не связаны с операндами D, E и F второй команды. Другими словами, обе операции являются параллельными именно потому, что операнды этих команд не связаны между собой.  Можно привести множество примеров последовательности из трех и более команд с несвязанными данными,  которые приведут к однозначному выводу: практически любая программа содержит группы операций над  параллельными данными.

Итак - параллелизм верхнего уровня достигается за счет множества 

           независимых командных потоков и реализуется с помощью

           многопроцессорной архитектуры;

          - параллелизм нижнего уровня обязан своим существованием наличием

           несвязанных потоков данных и реализуется за счет конвейерной

           обработки различных фаз операций.

Параллелизм на уровне команд – однопроцессорные архитектуры

Мы уже неоднократно подчеркивали, что главным препятствием достижения высокой производительности ВС является обращение к памяти и вызов команд из памяти процессора. Для разрешения этой проблемы уже достаточно давно используется вызов команд из памяти заранее и помещение их в набор регистров (буфер выборки с упреждением), чтобы они имелись в наличии, когда это станет необходимым. В действительности процесс выборки с упреждением подразделяет выполнение команды в два этапа: вызов и собственно выполнение. Идея конвейера еще больше продвинула эту стратегию вперед. Теперь команда подразделялась уже не на два, а на несколько этапов, каждый из которых выполнялся определенной частью аппаратного обеспечения, причем все блоки могли работать одновременно и параллельно.  Конвейерная обработка является  "естественным" средством реализации параллелизма несвязанных операций и циклов, но в каждом случае со своими нюансами. Несвязанные операции выполняются с помощью набора самостоятельных арифметических устройств в составе ЦП (принцип многофункциональной обработки).  Обычный набор таких устройств включает: устройство сложения, умножения,  деления и  устройства выполнения логических  и  сдвиговых операций.  

Конвейерная  обработка 

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

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

  •  С 1 – выборка команды (по адресу, заданному счетчиком команд, из памяти извлекается команда и помещается в буфер);
  •  С 2 – декодирование команды (определение КОП и типа операндов);
  •  С 3 – выборка операндов (определение местонахождения операндов и вызов их из регистров);
  •  С 4 – выполнение команды;
  •  С 5 – запись результата в нужный регистр.

Работу конвейера можно условно представить в виде временной диаграммы на которой обычно изображаются выполняемые команды, номера тактов и этапы выполнения команд. В качестве примера рассмотрим конвейерную машину с пятью этапами выполнения операций, которые имеют длительность 50, 50, 60, 50 и 50 нс соответственно. Пусть накладные расходы на организацию конвейерной обработки составляют 5 нс. Тогда среднее время выполнения команды в не конвейерной машине будет равно 260 нс. Если же используется конвейерная организация, длительность такта будет равна длительности самого медленного этапа обработки плюс накладные расходы, т.е. 65 нс. Это время соответствует среднему времени выполнения команды в конвейере. Таким образом, ускорение, полученное в результате конвейеризации, будет равно отношению:

Среднее время выполнения команды в не конвейерном режиме:     

                                                                                                                   260

                                                                                                                  -------   =   4   
     Среднее время выполнения команды в конвейерном режиме:       65

Рис. 12.2  Диаграмма работы простейшего конвейера

Рис. 12.3  Эффект конвейеризации – четырехкратное ускорение

Мы уже упоминали, что параллелизм нижнего уровня реализуется  на однопроцессорных машинах. Название однопроцессорные предполагает, что подобные архитектуры выполняют только один поток команд. Классическим примером однопроцессорной архитектуры  является архитектура фон Неймана со строго последовательным выполнением команд. По мере развития вычислительной  техники архитектура фон Неймана обогатилась сначала конвейером фаз операций,  а затем многофункциональной обработкой и  получила  обобщенное название SISD.  Оба вида средств низкоуровнего параллелизма впервые  были  введены  в  компьютерах Control Data 6600 и 7600 в начале 70-х годов и с тех пор применяются во всех компьютерах повышенного быстродействия. Наибольшее развитие идеи SISD-параллелизма получили в RISC-архитектурах.

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

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

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

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

Конфликты по данным возникают в случаях, когда выполнение одной команды зависит от результата выполнения предыдущей команды. Устранение конфликтов по данным типов WAR и WAW достигается путем отказа от неупорядоченного исполнения команд, но чаще всего путем введения буфера восстановления последовательности команд.

Недостаточное дублирование некоторых ресурсов

Одним из типичных примеров служит конфликт из-за доступа к запоминающим устройствам. Борьба с конфликтами такого рода проводится путем увеличения количества однотипных функциональных устройств, которые могут одновременно выполнять одни и те же или схожие функции. Например, в современных микропроцессорах обычно разделяют кэш-память для хранения команд и кэш-память данных, а также используют много портовую схему доступа к регистровой памяти, при которой к регистрам можно одновременно обращаться по одному каналу для записи, а по другому - для считывания информации. Конфликты из-за исполнительных устройств обычно сглаживаются введением в состав микропроцессора дополнительных блоков. Так, в микропроцессоре Pentium-4 предусмотрено 4 АЛУ для обработки целочисленных данных. Процессоры, имеющие в своем составе более одного конвейера, называются суперскалярными.

Суперскалярные архитектуры 

Смысл  суперскалярной  обработки  - наличие в аппаратуре средств, позволяющих одновременно выполнять две и более скалярных операций, т.е.  команд  обработки пары чисел.  В самом деле, суть этого метода довольно проста: имеется в виду дублирование устройств процессора. Так например, Pentium имеет два конвейера выполнения команд (Рис. 11.4). При  этом  существуют различные способы реализации суперскалярной обработки.  Первый  способ  чаще   всего   применяется   в RISC-процессорах и  заключается  в чисто аппаратном механизме выборки из буфера инструкций (или кэша команд) несвязанных команд и параллельном запуске их на исполнение. Обычно процессор выполняет две несвязанные команды одновременно, как например, в процессорах DEC серии  Alpha.  Этот  метод хорош тем,  что он "прозрачен" для программиста - составление программ для подобных  процессоров  не требует никаких специальных усилий, ответственность за параллельное выполнение операций  возлагается  в  основном  на  аппаратные средства.

Второй способ реализации суперскалярной обработки заключается в кардинальной  перестройке  всего  процесса  трансляции  и исполнения программ. Уже на этапе подготовки программы компилятор группирует не связанные операции в пакеты,  содержимое которых строго соответствует структуре процессора.  Например, если  процессор содержит  функционально  независимые  устройства сложения, умножения, сдвига и деления,  то максимум,  что компилятор  может "уложить" в один пакет - это четыре разнотипные операции:  сложение, умножение,  сдвиг и деление.  Сформированные пакеты операций преобразуются компилятором в командные слова.  

Функции стадии С1 (выборка команд а также тезис – один конвейер хорошо, а два лучше) позволяют реализовать структуру с двойным конвейером.

      С1                                         С2                            С3                   С4                         С5

   

                                       

 

Рис. 12.4  Двойной конвейер из пяти стадий

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

                                                                                                         С4

      С1                       С2                                С3                                                         С5

Рис 12.5  Суперскалярный процессор с пятью функциональными блоками

До сих пор мы с вами рассматривали возможности увеличения производительности вычислительной системы на основе параллелизма на уровне команд. При этом  к системе предъявлялись следующие требования:

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

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

Мультипроцессорные системы на кристалле

Анонсированная в 2002 году компанией Intel технология Hyper-Threading — пример многопоточной обработки команд. Данная технология является чем-то средним между многопоточной обработкой, реализованной в мультипроцессорных системах, и параллелизмом на уровне инструкций, реализованном в однопроцессорных системах. Фактически технология Hyper-Threading позволяет организовать два логических процессора в одном физическом. Таким образом, с точки зрения операционной системы и запущенного приложения в системе существует два процессора, что дает возможность распределять загрузку задач между ними точно так же, как при SMP-мультипроцессорной конфигурации.

Технология Hyper-Threading 

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

В конструктивном плане процессор с поддержкой технологии Hyper-Threading состоит из двух логических процессоров, каждый из которых имеет свои регистры и контроллер прерываний (Architecture State, AS), а значит, две параллельно исполняемые задачи работают со своими собственными независимыми регистрами и прерываниями, но при этом используют одни и те же ресурсы процессора для выполнения своих задач. После активации каждый из логических процессоров может самостоятельно и независимо от другого процессора выполнять свою задачу, обрабатывать прерывания либо блокироваться. Таким образом, от реальной двухпроцессорной конфигурации новая технология отличается только тем, что оба логических процессора используют одни и те же исполняющие ресурсы, одну и ту же разделяемую между двумя потоками кэш-память и одну и ту же системную шину. Использование двух логических процессоров позволяет усилить процесс параллелизма на уровне потока, реализованный в современных операционных системах и высокоэффективных приложениях. Команды от обоих исполняемых параллельно потоков одновременно посылаются ядру процессора для обработки. Используя технологию out-of-order (исполнение командных инструкций не в порядке их поступления), ядро процессора тоже способно параллельно обрабатывать оба потока за счет использования нескольких исполнительных модулей.

Идея технологии Hyper-Threading тесно связана с микроархитектурой NetBurst процессора Pentium 4 и является в каком-то смысле ее логическим продолжением. Микроархитектура Intel NetBurst позволяет получить максимальный выигрыш в производительности при выполнении одиночного потока инструкций, то есть при выполнении одной задачи. Однако даже в случае специальной оптимизации программы не все исполнительные модули процессора оказываются задействованными на протяжении каждого тактового цикла. В среднем при выполнении кода, типичного для набора команд IA-32, реально используется только 35% исполнительных ресурсов процессора, а 65% исполнительных ресурсов процессора простаивают, что означает неэффективное использование возможностей процессора. Было бы вполне логично организовать работу процессора таким образом, чтобы в каждом тактовом цикле максимально использовать его возможности. Именно эту идею и реализует технология Hyper-Threading, подключая незадействованные ресурсы процессора к выполнению параллельной задачи.

Поясним все вышесказанное на примере. Представьте себе гипотетический процессор, в котором имеются четыре исполнительных блока: два блока для работы с целыми числами (арифметико-логическое устройство, ALU), блок для работы с числами с плавающей точкой (FPU) и блок для записи и чтения данных из памяти (Store/Load, S/L). Пусть, кроме того, каждая операция осуществляется за один такт процессора. Далее предположим, что выполняется программа, состоящая из трех инструкций: первые две — арифметические действия с целыми числами, а последняя — сохранение результата. В этом случае вся программа будет выполнена за два такта процессора: в первом такте задействуются два блока ALU процессора (красный квадрат на рис. 12.6), во втором — блок записи и чтения данных из памяти S/L.

Рис. 12.6  Реализация параллелизма на уровне инструкций (Instruction Level Parallelism, ILP)

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

Рис. 12.7  Выполнение двух потоков на процессоре без реализации и с реализацией технологии Hyper-Threading

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

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

Рассмотрим еще один типичный пример работы нашего гипотетического процессора. Пусть имеется два потока команд, каждый из которых по отдельности выполняется за пять тактов процессора. Без использования технологии Hyper-Threading для выполнения обоих потоков потребовалось бы десять тактов процессора. А теперь выясним, что произойдет при использовании технологии Hyper-Threading (рис. 12.8). На первом такте процессора каждый из потоков задействует различные блоки процессора, поэтому выполнение инструкций легко совместить. Аналогичное положение вещей наличествует и на втором такте, а вот на третьем такте инструкции обоих потоков пытаются задействовать один и тот же исполнительный блок процессора, а именно блок S/L. В результате возникает конфликтная ситуация, и один из потоков должен ждать освобождения требуемого ресурса процессора. То же самое происходит и на пятом такте. В итоге оба потока выполняются не за пять тактов (как в идеале), а за семь.

Рис. 12.8  Возникновение конфликтных ситуаций при использовании технологии Hyper-Threading

Многоядерность — следующий этап развития

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

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

Рис. 12.9  Преимущество двухъядерной архитектуры процессора

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

 

Выводы 

Основным способом повышения производительности ВС является параллельное выполнение, как большого числа команд, так и многочисленного потока данных

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

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

Параллелизм на верхнем уровне, уровне процессоров реализуется с помощью многопроцессорных и многомашинных архитектур.

Вопросы и задания 

1. В некотором задании каждый последующий шаг зависит от предыдущего. Что в этом случае более уместно: векторный процессор или конвейер?

2 . Что такое суперскалярный процессор? Приведите пример.

3. Как зависит эффективность конвейерной обработки от степени загруженности конвейера?

 

Лекция 13.  Архитектура многопроцессорных ВС

Введение

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

SMP архитектура

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

 Сравнительно небольшое количество процессоров в таких машинах позволяет иметь одну централизованную общую память и объединить процессоры и память с помощью одной шины. Такой способ организации со сравнительно небольшой разделяемой памятью в настоящее время является наиболее популярным. Структура подобной системы представлена на рис. 13.1.

Рис. 13.1 Многопроцессорная система с общей памятью.

Память является способом передачи сообщений между процессорами, при этом все вычислительные устройства при обращении к ней имеют равные права и одну и ту же адресацию для всех ячеек памяти. Поэтому SMP архитектура называется симметричной. Последнее обстоятельство позволяет очень эффективно обмениваться данными с другими вычислительными устройствами. SMP-система строится на основе высокоскоростной системной шины (SGI PowerPath, Sun Gigaplane, DEC TurboLaser), к слотам которой подключаются функциональные блоки трех типов: процессоры (ЦП), операционная система (ОП) и подсистема ввода/вывода (I/O). Для подсоединения к модулям I/O используются уже более медленные шины (PCI, VME64). Наиболее известными SMP-системами являются SMP-cервера и рабочие станции на базе процессоров Intel (IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu и др.) Вся система работает под управлением единой ОС (обычно UNIX-подобной, но для Intel-платформ поддерживается Windows NT). ОС автоматически (в процессе работы) распределяет процессы по процессорам.
Основные преимущества SMP-систем: 

• простота и универсальность для программирования. Архитектура SMP не накладывает ограничений на модель программирования, используемую при создании приложения: обычно используется модель параллельных ветвей, когда все процессоры работают абсолютно независимо друг от друга - однако, можно реализовать и модели, использующие межпроцессорный обмен. Использование общей памяти увеличивает скорость такого обмена, пользователь также имеет доступ сразу ко всему объему памяти. Для SMP-систем существуют сравнительно эффективные средства автоматического распараллеливания;

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

• относительно невысокая цена. 

Недостатки:

• системы с общей памятью, построенные на системной шине, плохо масштабируемы. Этот важный недостаток SMP-системы не позволяет считать их по-настоящему перспективными. Причины плохой масштабируемости состоят в том, что в данный момент шина способна обрабатывать только одну транзакцию, вследствие чего возникают проблемы разрешения конфликтов при одновременном обращении нескольких процессоров к одним и тем же областям общей физической памяти. Вычислительные элементы начинают друг другу мешать. Когда произойдет такой конфликт, зависит от скорости связи и от количества вычислительных элементов. В настоящее время конфликты могут происходить при наличии 8-24-х процессоров. Кроме того, системная шина имеет ограниченную (хоть и высокую) пропускную способность (ПС) и ограниченное число слотов. Все это с очевидностью препятствует увеличению производительности при увеличении числа процессоров и числа подключаемых пользователей. В реальных системах можно использовать не более 32 процессоров. Для построения масштабируемых систем на базе SMP используются кластерные или NUMA-архитектуры. При работе с SMP системами используют так называемую парадигму программирования с разделяемой памятью (shared memory paradigm).

MPP архитектура

MPP архитектура (massive parallel processing) - массивно-параллельная архитектура. Главная особенность такой архитектуры состоит в том, что память физически разделена. В этом случае система строится из отдельных модулей, содержащих процессор, локальный банк операционной памяти (ОП), два коммуникационных процессора (рутера) или сетевой адаптер, иногда - жесткие диски и/или другие устройства ввода/вывода. Один рутер используется для передачи команд, другой - для передачи данных. По сути, такие модули представляют собой полнофункциональные компьютеры (см. рис.). Доступ к банку ОП из данного модуля имеют только процессоры (ЦП) из этого же модуля. Модули соединяются специальными коммуникационными каналами. Пользователь может определить логический номер процессора, к которому он подключен, и организовать обмен сообщениями с другими процессорами. Используются два варианта работы операционной системы (ОС) на машинах MPP архитектуры. В одном полноценная операционная система (ОС) работает только на управляющей машине (front-end), на каждом отдельном модуле работает сильно урезанный вариант ОС, обеспечивающий работу только расположенной в нем ветви параллельного приложения. Во втором варианте на каждом модуле работает полноценная UNIX-подобная ОС, устанавливаемая отдельно на каждом модуле. 

На рис. 12.2 показана структура такой системы.

Рис. 13.2  Многопроцессорная система с распределенной памятью

С ростом числа процессоров просто невозможно обойти необходимость реализации модели распределенной памяти с высокоскоростной сетью для связи процессоров. С быстрым ростом производительности процессоров и связанным с этим ужесточением требования увеличения полосы пропускания памяти, масштаб систем (т.е. число процессоров в системе, для которых требуется организация распределенной памяти), уменьшается, также как и уменьшается число процессоров, которые удается поддерживать на одной разделяемой шине и общей памяти. Главным преимуществом систем с раздельной памятью является хорошая масштабируемость: в отличие от SMP-систем в машинах с раздельной памятью каждый процессор имеет доступ только к своей локальной памяти, в связи с чем не возникает необходимости в потактовой синхронизации процессоров. Практически все рекорды по производительности на сегодняшний день устанавливаются на машинах именно такой архитектуры, состоящих из нескольких тысяч процессоров (ASCI Red, ASCI Blue Pacific). 

Недостатки:

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

Системами с раздельной памятью являются суперкомпьютеры МВС-1000, IBM RS/6000 SP, SGI/CRAY T3E, системы ASCI, Hitachi SR8000, системы Parsytec.  Машины последней серии CRAY T3E от SGI, основанные на базе процессоров Dec Alpha 21164 с пиковой производительностью 1200 Мфлопс/с (CRAY T3E-1200), способны масштабироваться до 2048 процессоров. При работе с MPP системами используют так называемую Massive Passing Programming Paradigm - парадигму программирования с передачей данных (MPI, PVM, BSPlib). 

Гибридная архитектура (NUMA) 

Сегодня стало уже общепринятым, что в многопроцессорных системах с общим полем памяти для достижения наилучшего масштабирования необходимо отказаться от классической архитектуры SMP (узким местом которой является общая шина или коммутатор) в пользу ccNUMA. В последнем случае многопроцессорные системы строятся на базе SMP-узлов, содержащих процессоры и оперативную память, а узлы связываются между собой посредством общесистемного межсоединения, в роли которого обычно выступает коммутатор. Поэтому доступ процессоров к локальной оперативной памяти своего узла осуществляется быстрее, чем к оперативной памяти другого узла; таким образом, доступ оказывается «неоднородным», о чем и говорит сокращение NUMA (Non-Unifrom Memory Access), а сс означает coherent cash («когерентный кэш»). Замедление доступа к удаленной оперативной памяти — это плата за масштабируемость, и разработчики стремятся по возможности нивелировать различия в скорости доступа к локальной и удаленной памяти.

Главная особенность такой архитектуры - неоднородный доступ к памяти.  Гибридная архитектура воплощает в себе удобства систем с общей памятью и относительную дешевизну систем с раздельной памятью. Суть этой архитектуры - в особой организации памяти, а именно: память является физически распределенной по различным частям системы, но логически разделяемой, так что пользователь видит единое адресное пространство. Система состоит из однородных базовых модулей (плат), состоящих из небольшого числа процессоров и блока памяти. Модули объединены с помощью высокоскоростного коммутатора. Поддерживается единое адресное пространство, аппаратно поддерживается доступ к удаленной памяти, т.е. к памяти других модулей. При этом доступ к локальной памяти осуществляется в несколько раз быстрее, чем к удаленной. По существу архитектура NUMA является MPP (массивно-параллельная архитектура) архитектурой, где в качестве отдельных вычислительных элементов берутся SMP (cимметричная многопроцессорная архитектура) узлы. 

Структурная схема компьютера с гибридной сетью: четыре процессора связываются между собой при помощи кроссбара в рамках одного SMP узла. Узлы связаны сетью типа "бабочка" (Butterfly):  

Рис. 13.4 Гибридная архитектура

Впервые идею гибридной архитектуры предложил Стив Воллох и воплотил в системах серии Exemplar. Вариант Воллоха - система, состоящая из 8-ми SMP узлов. Фирма HP купила идею и реализовала на суперкомпьютерах серии SPP. Идею подхватил Сеймур Крей (Seymour R.Cray) и добавил новый элемент - когерентный кэш, создав так называемую архитектуру cc-NUMA (Cache Coherent Non-Uniform Memory Access), которая расшифровывается как "неоднородный доступ к памяти с обеспечением когерентности кэшей". Он ее реализовал на системах типа Origin.

Организация когерентности многоуровневой иерархической памяти. 

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

• использовать механизм отслеживания шинных запросов (snoopy bus protocol), в котором кэши отслеживают переменные, передаваемые к любому из центральных процессоров и, при необходимости, модифицируют копии; 
• выделять специальную часть памяти, отвечающую за отслеживание достоверности всех используемых копий переменных. 

Наиболее известными системами архитектуры cc-NUMA являются: HP 9000 V-class в SCA-конфигурациях, SGI Origin3000, Sun HPC 15000, IBM/Sequent NUMA-Q 2000. На настоящий момент максимальное число процессоров в cc-NUMA-системах может превышать 1000. Обычно вся система работает под управлением единой ОС, как в SMP. Возможны также варианты динамического "подразделения" системы, когда отдельные "разделы" системы работают под управлением разных ОС. При работе NUMA-системами, также как с SMP, используют так называемую парадигму программирования с общей памятью (shared memory paradigm).

 PVP архитектура

PVP (Parallel Vector Process) - параллельная архитектура с векторными процессорами. Основным признаком PVP-систем является наличие специальных векторно-конвейерных процессоров, в которых предусмотрены команды однотипной обработки векторов независимых данных, эффективно выполняющиеся на конвейерных функциональных устройствах. Как правило, несколько таких процессоров (1-16) работают одновременно с общей памятью (аналогично SMP) в рамках многопроцессорных конфигураций. Несколько таких узлов могут быть объединены с помощью коммутатора (аналогично MPP). Поскольку передача данных в векторном формате осуществляется намного быстрее, чем в скалярном (максимальная скорость может составлять 64 Гб/с, что на 2 порядка быстрее, чем в скалярных машинах), то проблема взаимодействия между потоками данных при распараллеливании становится несущественной. И то, что плохо распараллеливается на скалярных машинах, хорошо распараллеливается на векторных. Таким образом, системы PVP архитектуры могут являться машинами общего назначения (general purpose systems). Однако, поскольку векторные процессоры весьма дороги, эти машины не будут являться общедоступными. 

Кластерная архитектура

Кластер представляет собой два или больше компьютеров (часто называемых узлами), объединяемых при помощи сетевых технологий на базе шинной архитектуры или коммутатора и предстающих перед пользователями в качестве единого информационно-вычислительного ресурса. В качестве узлов кластера могут быть выбраны серверы, рабочие станции и даже обычные персональные компьютеры. Преимущество кластеризации для повышения работоспособности становится очевидным в случае сбоя какого-либо узла: при этом другой узел кластера может взять на себя нагрузку неисправного узла, и пользователи не заметят прерывания в доступе. Возможности масштабируемости кластеров позволяют многократно увеличивать производительность приложений для большего числа пользователей. технологий (Fast/Gigabit Ethernet, Myrinet) на базе шинной архитектуры или коммутатора. Такие суперкомпьютерные системы являются самыми дешевыми, поскольку собираются на базе стандартных комплектующих элементов ("off the shelf"), процессоров, коммутаторов, дисков и внешних устройств.  Кластеризация может быть осуществлена на разных уровнях компьютерной системы, включая аппаратное обеспечение, операционные системы, программы-утилиты, системы управления и приложения. Чем больше уровней системы объединены кластерной технологией, тем выше надежность, масштабируемость и управляемость кластера.

Проблемы выполнения сети связи процессоров в кластерной системе. 

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

Рассмотрим для примера задачу построения симметричной 16-ти процессорной системы, в которой все процессоры были бы равноправны. Наиболее естественным представляется соединение в виде плоской решетки, где внешние концы используются для подсоединения внешних устройств. 

Схема соединения процессоров в виде плоской решетки  

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

Примеры гиперкубов 

 

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

Архитектура кольца с полной связью по хордам (Chordal Ring) 

 

Наиболее эффективной является архитектура с топологией "толстого дерева" (fat-tree). Архитектура "fat-tree" (hypertree) предложена Лейзерсоном (Charles E. Leiserson) в 1985 году. Процессоры локализованы в листьях дерева, в то время как внутренние узлы дерева скомпонованы во внутреннюю сеть. Поддеревья могут общаться между собой, не затрагивая более высоких уровней сети. 

Кластерная архитектура "Fat-tree"  

Кластерная архитектура "Fat-tree" (вид сверху на предыдущую схему) 

Поскольку способ соединения процессоров друг с другом больше влияет на производительность кластера, чем тип используемых в ней процессоров, то может оказаться более рентабельным создать систему из большего числа дешевых компьютеров, чем из меньшего числа дорогих. В кластерах, как правило, используются операционные системы, стандартные для рабочих станций, чаще всего, свободно распространяемые - Linux, FreeBSD, вместе со специальными средствами поддержки параллельного программирования и балансировки нагрузки. При работе с кластерами, также как и с MPP системами, используют так называемую Massive Passing Programming Paradigm - парадигму программирования с передачей данных (чаще всего - MPI). Дешевизна подобных систем оборачивается большими накладными расходами на взаимодействие параллельных процессов между собой, что сильно сужает потенциальный класс решаемых задач. 

Выводы

 Классификация Флинна позволяет распределить параллельные вычисления по уровням архитектуры вычислительных систем.

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

ММВС на стандартных ОС значительно проще и дешевле.   

Вопросы и задания 

Привести примеры практической реализации архитектуры SISD, SIMD, MISD и MIMD.

Какая архитектура более пригодна для обработки мультимедийных задач?

Что из себя представляет архитектура MSIMD?

Лекция 14.  Кластерные системы

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

Концепция кластерных систем 

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

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


Рисунок 14.1  Кластерная система

LAN – Local Area Network, локальная сеть 

SAN – Storage Area Network, сеть хранения данных 

Первые кластеры компании Digital были построены на машинах VAX. Эти машины уже не производятся, но все еще работают на площадках, где были установлены много лет назад. И наверное самое важное то, что общие принципы, заложенные при их проектировании, остаются основой при построении кластерных систем и сегодня. К общим требованиям, предъявляемым к кластерным системам, относятся:

Высокая готовность

Высокое быстродействие

Масштабирование

Общий доступ к ресурсам

Удобство обслуживания

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

Рис. 14.2 Тесно связанная мультипроцессорная система

Рис.14.3  Умеренно связанная мультипроцессорная система 


Рис.14.4
Слабо связанная мультипроцессорная система 

Обычно на PC платформах, с которыми нам приходится работать, используются реализации кластерной системы в моделях тесно связанной и умеренно связанной мультипроцессорных архитектур.

Разделение на High Availability и High Performance системы

В функциональной классификации кластеры можно разделить на "Высокоскоростные" (High Performance, HP), "Системы Высокой Готовности" (High Availability, HA), а также "Смешанные Системы". Высокоскоростные кластеры используются для задач, которые требуют значительной вычислительной мощности. Классическими областями, в которых используются подобные системы, являются:

обработка изображений: рендеринг, распознавание образов

научные исследования: физика, биоинформатика, биохимия, биофизика

промышленность (геоинформационные задачи, математическое моделирование)

и много других…

Кластеры, которые относятся к системам высокой готовности, используются везде, где стоимость возможного простоя превышает стоимость затрат, необходимых для построения кластерной системы, например:

биллинговые системы

банковские операции

электронная коммерция

управление предприятием, и т.п....

Смешанные системы объединяют в себе особенности как первых, так и вторых. Позиционируя их, следует отметить, что кластер, который обладает параметрами как High Performance, так и High Availability, обязательно проиграет в быстродействии системе, ориентированной на высокоскоростные вычисления, и в возможном времени простоя системе, ориентированной на работу в режиме высокой готовности.

Проблематика High Performance кластеров


Рис. 14.5   Высокоскоростной кластер 

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

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

Быстродействие интерфейсов характеризуется двумя параметрами: пропускной способностью непрерывного потока даных и максимальным количеством самых маленьких пакетов, которые можно передать за единицу времени. Варианты реализаций коммуникационных интерфейсов мы рассмотрим в разделе «Средства реализации High Performance кластеров».

Проблематика High Availability кластерных систем

Сегодня в мире распространены несколько типов систем высокой готовности. Среди них кластерная система является воплощением технологий, которые обеспечивают высокий уровень отказоустойчивости при самой низкой стоимости. Отказоустойчивость кластера обеспечивается дублированием всех жизненно важных компонент. Максимально отказоустойчивая система должна не иметь ни единой точки, то есть активного элемента, отказ которого может привести к потере функциональности системы. Такую характеристику как правило называют – NSPF (No Single Point of Failure, - англ., отсутствие единой точки отказа).


Рис. 14.6   Кластерная система с отсутствием точек отказов 

При построении систем высокой готовности, главная цель - обеспечить минимальное время простоя. Для того, чтобы система обладала высокими показатели готовности, необходимо:

чтобы ее компоненты были максимально надежными;

чтобы она была отказоустойчивая, желательно, чтобы не имела точек отказов;

а также важно, чтобы она была удобна в обслуживании и разрешала проводить замену компонент без останова.

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

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

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

Смешанные архитектуры


Рис.14.7   Высокоскоростной отказоустойчивый кластер 

Сегодня часто можно встретить смешанные кластерные архитектуры, которые одновременно являются как системами высокой готовности, так и высокоскоростными кластерными архитектурами, в которых прикладные задачи распределяются по узлам системы. Наличие отказоустойчивого комплекса, увеличение быстродействия которого осуществляется путем добавления нового узла, считается самым оптимальным решением при построении вычислительной системы. Но сама схема построения таких смешанных кластерных архитектур приводит к необходимости объединения большого количества дорогих компонент для обеспечения высокого быстродействия и резервирования одновременно. И так как в High Performance кластерной системе наиболее дорогим компонентом является система высокоскоростных коммуникаций, ее дублирование приведет к значительным финансовым затратам. Следует отметить, что системы высокой готовности часто используются для OLTP задач, которые оптимально функционируют на симметричных мультипроцессорных системах. Реализации таких кластерных систем часто ограничиваются 2-х узловыми вариантами, ориентированными в первую очередь на обеспечение высокой готовности. Но в последнее время использование недорогих систем количеством более двух в качестве компонент для построения смешанных HA/HP кластерных систем становится популярным решением.

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

Симметричная многопроцессорная архитектура с общей памятью (Shared Memory SMP Architecture). Эта архитектура поддерживает единую базу данных, работающую на многопроцессорном сервере под управлением одной операционной системы. Увеличение производительности таких систем обеспечивается наращиванием числа процессоров, устройств оперативной и внешней памяти.

Архитектура с общими (разделяемыми) дисками (Shared Disk Architecture). Это типичный случай построения кластерной системы. Эта архитектура поддерживает единую базу данных при работе с несколькими компьютерами, объединенными в кластер (обычно такие компьютеры называются узлами кластера), каждый из которых работает под управлением своей копии операционной системы. В таких системах все узлы разделяют доступ к общим дискам, на которых собственно и располагается единая база данных. Производительность таких систем может увеличиваться как путем наращивания числа процессоров и объемов оперативной памяти в каждом узле кластера, так и посредством увеличения количества самих узлов.

Архитектура без разделения ресурсов (Shared Nothing Architecture). Как и в архитектуре с общими дисками, в этой архитектуре поддерживается единый образ базы данных при работе с несколькими компьютерами, работающими под управлением своих копий операционной системы. Однако в этой архитектуре каждый узел системы имеет собственную оперативную память и собственные диски, которые не разделяются между отдельными узлами системы. Практически в таких системах разделяется только общий коммуникационный канал между узлами системы. Производительность таких систем может увеличиваться путем добавления процессоров, объемов оперативной и внешней (дисковой) памяти в каждом узле, а также путем наращивания количества таких узлов.

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

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

Лекция 15  Многомашинные системы – вычислительные сети

Введение

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

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

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

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

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

Простейшие виды связи сети передачи данных 

Разработка вычислительной сети, как и всякой сети передачи данных призвана решать множество самых разных задач как на физическом уровне (кодирование, синхронизация сигналов, конфигурация связей …), так и на логическом уровне (адресация, коммутация, мультиплексирование, маршрутизация …). Попытаемся вначале сформулировать эти задачи, а потом и решать их вместе с разработчиками сетевых технологий. Начнем с самого простого случая, на первый взгляд не относящегося к сети, непосредственного соединения двух устройств физическим каналом «точка-точка» (point-to-point).  

Связь компьютера с периферийным устройством 

Частным случаем связи «точка-точка» является соединение компьютера и периферийного устройства. Для обмена данными компьютер и периферийное устройство оснащены внешними интерфейсами или портами.

 

                          

                                                                  Адрес данных в ОП

                                                                  Тип операции

                                                                   Информация об устройстве

                                                          Команды процессора

                                                                                                             ПУ

                      Контроллер ПУ                                         Устройство управления

                                                     Команды и данные 

                                                                Интерфейс    

Рис. 15.1 Связь компьютера с периферийным устройством

В данном случае к понятию интерфейс относятся:

  •  разъем;
  •  набор проводов;
  •  совокупность правил обмена данными по этим проводам.

Со стороны компьютера логикой передачи сигналов на внешний интерфейс управляют:

  •  контроллер ПУ – аппаратный блок, часто реализуемый в виде отдельной платы;
  •  драйвер ПУ – программа, управляющая контроллером периферийного устройства.

Со стороны ПУ интерфейс чаще всего реализуется аппаратным устройством управления ПУ, хотя встречаются и аппаратно-программные устройства.

Обмен данными между ПУ и компьютером является двунаправленным, таким образом по каналу связи передается следующая информация:

  •  данные с контроллера ПУ (например байты текста);
  •  команды управления;
  •  данные, возвращаемые устройством управления ПУ (например о готовности ПУ).

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

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

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

  1.  Драйвер по заданному адресу скачивает данные из ОП в свой буфер и затем передает команды и данные контроллеру, который помещает их в свой внутренний буфер. Контроллер перемещает данные из внутреннего буфера во внешний порт.
  2.  Контроллер начинает последовательно передавать биты в линию связи, представляя каждый бит соответствующим электрическим сигналом.
    Чтобы сообщить устройству управления принтера о том, что начинается передача байта, перед передачей первого бита данных контроллер формирует стартовый сигнал специфической формы, а после передачи последнего информационного бита — столовый сигнал. Эти сигналы синхронизируют передачу байта. Кроме информационных бит, контроллер может передавать бит контроля четности для повышения достоверности обмена.
  3.  Устройство управления принтера, обнаружив на соответствующей линии стартовый бит, выполняет подготовительные действия и начинает принимать информационные биты, формируя из них байт в своем приемном буфере. Если передача сопровождается битом четности, то выполняется проверка корректности передачи: при правильно выполненной передаче в соответствующем регистре устройства управления принтера устанавливается признак завершения приема информации. Наконец, принятый байт обрабатывается принтером — выполняется соответствующая команда или печатается символ. Обязанности между драйвером и контроллером могут распределяться по-разному, но чаще всего контроллер поддерживает набор простых команд, служащих для управления периферийным устройством, а на драйвер обычно возлагаются наиболее сложные функции реализации обмена. Например, контроллер принтера может поддерживать такие элементарные команды, как "Печать символа", "Перевод строки", "Возврат каретки" и т. п. Драйвер же принтера с помощью этих команд реализует печать строк символов, разделение документа на страницы и другие более высокоуровневые операции. Драйвер, задавая ту или иную последовательность команд, определяет тем самым логику работы периферийного устройства.

Связь двух компьютеров

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

Рис. 15.2 Связь двух компьютеров

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

Предположим, что мы связали компьютеры по кабелю через СОМ-порты, которые, как известно, реализуют интерфейс RS-232C (такое соединение часто называют нуль-модемным).

Полное название интерфейса RS-232 звучит так: «интерфейс между терминальным оборудованием и оборудованием передачи данных, обеспечивающий последовательную передачу данных», т.е. DTE-DCE. На текущий момент наиболее популярной версией интерфейса RS-232 является версия C, которая называется RS-232C. 25-ти контактный RS-232C обладает следующими недостатками: отсутствие функций по управлению потоком, ограничения по максимальной длине связи50 футов, ограничения связанные с заземлением. Новая версия RS-232E призвана вытеснить версии C и D.

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

Итак, механизм обмена байтами между двумя компьютерами определен. Теперь нужно договориться о правилах обмена сообщениями между приложениями А и В. Приложение В должно "уметь" расшифровать получаемую от приложения А информацию. Для этого программисты, разрабатывавшие приложения А и В, строго оговаривают форматы сообщений, которыми будут обмениваться приложения, и их семантику. Например, они могут договориться о том, что любое выполнение удаленной операции печати начинается с передачи сообщения, запрашивающего информацию о готовности приложения В; что в начале сообщения идет число, определяющее длину данных, предназначенных для печати; что признаком срочного завершения печати является определенная кодовая комбинация и т.п. Тем самым, как будет показано дальше, определяется протокол взаимодействия приложений.

Вернемся к последовательности действий, которые необходимо выполнить для распечатки текста на принтере "чужого" компьютера.

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

ОС компьютера А обращается к драйверу СОМ-порта, который инициирует работу контроллера.

Действующие с обеих сторон пары драйверов и контроллеров СОМ-порта последовательно, байт за байтом, передают сообщение на компьютер В.

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

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

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

Многослойная модель сети

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

  •  компьютеры;
  •  коммуникационное оборудование;
  •  операционные системы;
  •  сетевые приложения.

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

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


Рис. 15.3  Многослойная модель сети.

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

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

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

Функциональные роли компьютеров в сети

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


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


Рис. 15.5  Компьютер, обращающийся с запросами к ресурсам другой машины, играет роль
узла-клиента.


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

Очевидно, что сеть не может состоять только из клиентских или только из серверных узлов. Сеть может быть построена по одной из трех схем:

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

Каждая из этих схем имеет свои достоинства и недостатки, определяющие их области применения.

Одноранговые сети

В одноранговых сетях (рис. 7) все компьютеры равны в возможностях доступа к ресурсам друг друга. Каждый пользователь может по своему желанию объявить какой-либо ресурс своего компьютера разделяемым, после чего другие пользователи могут с ним работать. В одноранговых сетях на всех компьютерах устанавливается такая операционная система, которая предоставляет всем компьютерам в сети потенциально равные возможности. Сетевые операционные системы такого типа называются одноранговыми ОС. Очевидно, что одноранговые ОС должны включать как серверные, так и клиентские компоненты сетевых служб (на рисунке они обозначены буквами, соответственно, С и К). Примерами одноранговых ОС могут служить LANtastic, Personal Ware, Windows for Workgroups, Windows NT Workstation, Windows 95/98.


Рис. 15.7  Одноранговая сеть (здесь словом "Коммун." обозначены коммуникационные средства).

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

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

Сети с выделенным сервером 

В сетях с выделенными серверами (рис. 8) используются специальные варианты сетевых ОС, которые оптимизированы для работы в роли серверов и называются серверными ОС. Пользовательские компьютеры в таких сетях работают под управлением клиентских ОС.


Рис. 15.8  Сеть с выделенным сервером.

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

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

Однако слишком узкая специализация некоторых серверных ОС является одновременно и их слабой стороной. Так, отсутствие в NetWare 4 универсального интерфейса программирования и средств защиты приложений, не позволившее использовать эту ОС в качестве среды для выполнения приложений, приводит к необходимости применения в сети других серверных ОС в тех случаях, когда требуется выполнение функций, отличных от файлового сервиса и сервиса печати. Поэтому разработчики многих серверных операционных систем отказываются от функциональной ограниченности и включают в состав серверных ОС все компоненты, позволяющие задействовать их в качестве универсальных серверов и даже клиентских ОС. Такие серверные ОС снабжаются развитым графическим пользовательским интерфейсом и поддерживают универсальный API. Это сближает их с одноранговыми операционными системами, но существует несколько отличий, которые позволяют отнести их именно к классу серверных ОС:

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

В больших сетях выделенный сервер часто выполняет только одну определенную функцию и тогда различают:

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

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

коммуникационные (связные) серверы, предназначенные для управления и установления связи между компьютерами в сети, обеспечивает разделяемый доступ к коммуникационным средствам – модемам, портам Х.25 и т.д.;

почтовые серверы в системе электронной почты, служащие для пересылки и приема электронных писем;

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

Web-серверы под управлением определенных ОС (для Microsoft Internet Information Server - Windows NT/2000, для ApacheLinux или Unix);

серверы удаленного доступа, которые предоставляют коммутируемое соединение;

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

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

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

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

Администрирование.

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

Управление безопасностью.

Сети клиент-сервер обладают большей безопасностью, чем одноранговые. Чтобы зарегистрироваться в сети, пользователь должен знать учетную запись и пароль, созданные на сервере. Когда пользователь успешно зарегистрировался , он получает доступ ко всем ресурсам, на которые ему выделили право. При этом от него не требуется помнить многочисленные имена и пароли для разных компьютеров , как в рабочей группе Windows NT Workstation или Windows 2000 Professional. Сеть клиент-сервер предоставляет пользователю доступ к ресурсам на основе аутентификации пользователя и прав доступа.  

Информационные системы созданные на основе классической архитектуры клиент/сервер (называемые двухзвенными системами или системами с "толстым" клиентом) состоят из сервера баз данных (содержащего сгенерированные тем или иным способом таблицы, индексы, базы данных и другие объекты) и одного или нескольких клиентских приложений. Эти приложения  являются достаточно сложным программным продуктом и нуждаются в полнофункциональной ОС (например Windows 2000 Professional).  В ряде случаев клиентские приложения для доступа к источникам данных используют вызовы функций прикладных интерфейсов серверных СУБД, в частности библиотеки, например Borland Database Engin (BDE).  

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

Выходом из этой ситуации является создание систем с так называемым "тонким" клиентом, в частности, с клиентом, не содержащим в своем составе BDE и клиентскую часть серверной СУБД. В этом случае функциональность, связанная с доступом к данным (а нередко и какая-либо иная функциональность), возлагается на другое приложение, называемое обычно сервером приложений, и являющееся клиентом серверной СУБД. В свою очередь, клиентские приложения обращаются не непосредственно к серверной СУБД, а к серверу приложений, являющемуся для них источником данных, при этом собственно клиентская часть серверной СУБД и библиотеки типа BDE на рабочей станции, где используется такое клиентское приложение, присутствовать не обязаны. Вместо них используется одна-единственная динамически загружаемая библиотека. Таким образом, созданная информационная система становится трехзвенной, а сервер приложений является средним звеном в цепи "тонкий клиент -  сервер приложений - сервер баз данных". Клиентские операционные системы в сетях с выделенными серверами обычно освобождаются от серверных функций, что значительно упрощает их организацию. Разработчики клиентских ОС уделяют основное внимание пользовательскому интерфейсу и клиентским частям сетевых служб. Наиболее простые клиентские ОС поддерживают только базовые сетевые службы, обычно файловую и службу печати. В то же время существуют так называемые универсальные клиенты, которые поддерживают широкий набор клиентских частей, позволяющих им работать практически со всеми серверами сети. Многие компании, разрабатывающие сетевые ОС, выпускают две версии одной и той же операционной системы. Одна версия предназначена для работы в качестве серверной ОС, а другая — для работы на клиентской машине. Эти версии чаще всего основаны на одном и том же базовом коде, но отличаются набором служб и утилит, а также параметрами конфигурации, в том числе устанавливаемыми по умолчанию и не поддающимися изменению. Например, операционная система Windows NT выпускалась в версии для рабочей станции — Windows NT Workstation — и в версии для выделенного сервера — Windows NT Server. Оба эти варианта операционной системы включают клиентские и серверные части многих сетевых служб. Так, ОС Windows NT Workstation, кроме выполнения функций сетевого клиента, может предоставлять сетевым пользователям файловый сервис, сервисы печати, удаленного доступа и другие, а, следовательно, может служить основой для одноранговой сети. С другой стороны, ОС Windows NT Server содержит все необходимые средства, которые позволяют задействовать компьютер в качестве клиентской рабочей станции. Под управлением ОС Windows NT Server локально запускаются прикладные программы, которые могут потребовать выполнения клиентских функций ОС при появлении запросов к ресурсам других компьютеров сети. Windows NT Server имеет такой же развитый графический интерфейс, как и Windows NT Workstation, что позволяет с равным успехом применять эти ОС для интерактивной работы пользователя или администратора. Однако версия Windows NT Server имеет больше возможностей для предоставления ресурсов своего компьютера другим пользователям сети, так как может выполнять более широкий набор функций, поддерживает большее количество одновременных соединений с клиентами, реализует централизованное управление сетью, имеет более развитые средства защиты. Поэтому рекомендуется применять Windows NT Server в качестве ОС для выделенных серверов, а не клиентских компьютеров.

Гибридная сеть

В больших сетях наряду с отношениями клиент-сервер сохраняется необходимость и в одноранговых связях, поэтому такие сети чаще всего строятся по гибридной схеме (Рис. 15.9).


Рис. 15.9  Гибридная сеть.

Сетевые службы и операционная система

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

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

Реализация сетевых служб осуществляется программными средствами. Все сетевые службы построены в архитектуре "клиент-сервер".

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

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

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

Для обеспечения прозрачности важен способ адресации (именования) разделяемых сетевых ресурсов. Имена разделяемых сетевых ресурсов не должны зависеть от их физического расположения на том или ином компьютере. В идеале пользователь не должен ничего менять в своей работе, если администратор сети переместил том или каталог с одного компьютера на другой. Сам администратор и сетевая операционная система имеют информацию о расположении файловых систем, но от пользователя она скрыта. Такая степень прозрачности пока редко встречается в сетях, — обычно для получения доступа к ресурсам определенного компьютера сначала приходится устанавливать с ним логическое соединение. Такой подход применяется, например, в сетях Windows NT.

Лекция 17. Сети и сетевые операционные системы

Введение

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

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

Для чего компьютеры объединяют в сети 

Для чего вообще потребовалось объединять компьютеры в сети? Что привело к появлению сетей?

  •  Одной из главных причин стала необходимость разделения ресурсов (как физических, так и информационных). Если в организации имеется несколько компьютеров и эпизодически возникает потребность в печати какого-нибудь текста, то не имеет смысла покупать принтер для каждого компьютера. Гораздо выгоднее иметь один сетевой принтер для всех вычислительных машин. Аналогичная ситуация может возникать и с файлами данных. Зачем держать одинаковые файлы данных на всех компьютерах, поддерживая их когерентность, если можно хранить файл на одной машине, обеспечив к нему сетевой доступ со всех остальных?
  •  Второй причиной следует считать возможность ускорения вычислений. Здесь сетевые объединения машин успешно конкурируют с многопроцессорными вычислительными комплексами. Многопроцессорные системы, не затрагивая по существу строение операционных систем, требуют достаточно серьезных изменений на уровне hardware, что очень сильно повышает их стоимость. Во многих случаях можно добиться требуемой скорости вычислений параллельного алгоритма, используя не несколько процессоров внутри одного вычислительного комплекса, а несколько отдельных компьютеров, объединенных в сеть. Такие сетевые вычислительные кластеры часто имеют преимущество перед многопроцессорными комплексами в соотношении эффективность/стоимость.
  •  Следующая причина связана с повышением надежности работы вычислительной техники. В системах, где отказ может вызвать катастрофические последствия (атомная энергетика, космонавтика, авиация и т. д.), несколько вычислительных комплексов устанавливаются в связи, дублируя друг друга. При выходе из строя основного комплекса его работу немедленно продолжает дублирующий.
  •  Наконец, последней по времени появления причиной (но для многих основной по важности) стала возможность применения вычислительных сетей для общения пользователей. Электронные письма практически заменили письма обычные, а использование вычислительной техники для организации электронных или телефонных разговоров уверенно вытесняет обычную телефонную связь.

Сетевые и распределенные операционные системы 

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

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

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

Изучение строения распределенных операционных систем не входит в задачи нашего курса. Этому вопросу посвящены другие учебные курсы – Advanced operating systems, как называют их в англоязычных странах, или «Современные операционные системы», как принято называть их в России. В этой лекции мы затронем вопросы, связанные с сетевыми операционными системами, а именно – какие изменения необходимо внести в классическую операционную систему для объединения компьютеров в сеть.

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

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

  1.  Изучая взаимодействие локальных процессов, мы разделили средства обмена информацией по объему передаваемых между ними данных и возможности влияния на поведение другого процесса на три категории: сигнальные, канальные и разделяемая память. На самом деле во всей этой систематизации присутствовала некоторая доля лукавства. Мы фактически классифицировали средства связи по виду интерфейса обращения к ним, в то время как реальной физической основой для всех средств связи в том или ином виде являлось разделение памяти. Семафоры представляют собой просто целочисленные переменные, лежащие в разделяемой памяти, к которым посредством системных вызовов, определяющих состав и содержание допустимых операций над ними, могут обращаться различные процессы. Очереди сообщений и pip базируются на буферах ядра операционной системы, которые опять-таки с помощью системных вызовов доступны различным процессам. Иного способа реально передать информацию от процесса к процессу в автономной вычислительной системе просто не существует. Взаимодействие удаленных процессов принципиально отличается от ранее рассмотренных случаев. Общей памяти у различных компьютеров физически нет. Удаленные процессы могут обмениваться информацией, только передавая друг другу пакеты данных определенного формата (в виде последовательностей электрических или электромагнитных сигналов, включая световые) через некоторый физический канал связи или несколько таких каналов, соединяющих компьютеры. Поэтому в основе всех средств взаимодействия удаленных процессов лежит передача структурированных пакетов информации или сообщений.
  2.  При взаимодействии локальных процессов и процесс–отправитель информации, и процесс-получатель функционируют под управлением одной и той же операционной системы. Эта же операционная система поддерживает и функционирование промежуточных накопителей данных при использовании непрямой адресации. Для организации взаимодействия процессы пользуются одними и теми же системными вызовами, присущими данной операционной системе, с одинаковыми интерфейсами. Более того, в автономной операционной системе передача информации от одного процесса к другому, независимо от используемого способа адресации, как правило (за исключением микроядерных операционных систем), происходит напрямую – без участия других процессов-посредников. Но даже и при наличии процессов-посредников все участники передачи информации находятся под управлением одной и той же операционной системы. При организации сети, конечно, можно обеспечить прямую связь между всеми вычислительными комплексами, соединив каждый из них со всеми остальными посредством прямых физических линий связи или подключив все комплексы к общей шине (по примеру шин данных и адреса в компьютере). Однако такая сетевая топология не всегда возможна по ряду физических и финансовых причин. Поэтому во многих случаях информация между удаленными процессами в сети передается не напрямую, а через ряд процессов-посредников, «обитающих» на вычислительных комплексах, не являющихся компьютерами отправителя и получателя и работающих под управлением собственных операционных систем. Однако и при отсутствии процессов-посредников удаленные процесс-отправитель и процесс-получатель функционируют под управлением различных операционных систем, часто имеющих принципиально разное строение.
  3.  Вопросы надежности средств связи и способы ее реализации, рассмотренные нами в лекции 4, носили для случая локальных процессов скорее теоретический характер. Мы выяснили, что физической основой «общения» процессов на автономной вычислительной машине является разделяемая память. Поэтому для локальных процессов надежность передачи информации определяется надежностью ее передачи по шине данных и хранения в памяти машины, а также корректностью работы операционной системы. Для хороших вычислительных комплексов и операционных систем мы могли забыть про возможную ненадежность средств связи. Для удаленных процессов вопросы, связанные с надежностью передачи данных, становятся куда более значимыми. Протяженные сетевые линии связи подвержены разнообразным физическим воздействиям, приводящим к искажению передаваемых по ним физических сигналов (помехи в эфире) или к полному отказу линий (мыши съели кабель). Даже при отсутствии внешних помех передаваемый сигнал затухает по мере удаления от точки отправления, приближаясь по интенсивности к внутренним шумам линий связи. Промежуточные вычислительные комплексы сети, участвующие в доставке информации, не застрахованы от повреждений или внезапной перезагрузки операционной системы. Поэтому вычислительные сети должны организовываться исходя из предпосылок ненадежности доставки физических пакетов информации.
  4.  При организации взаимодействия локальных процессов каждый процесс (в случае прямой адресации) и каждый промежуточный объект для накопления данных (в случае непрямой адресации) должны были иметь уникальные идентификаторы – адреса – в рамках одной операционной системы. При организации взаимодействия удаленных процессов участники этого взаимодействия должны иметь уникальные адреса уже в рамках всей сети.
  5.  Физическая линия связи, соединяющая несколько вычислительных комплексов, является разделяемым ресурсом для всех процессов комплексов, которые хотят ее использовать. Если два процесса попытаются одновременно передать пакеты информации по одной и той же линии, то в результате интерференции физических сигналов, представляющих эти пакеты, произойдет взаимное искажение передаваемых данных. Для того чтобы избежать возникновения такой ситуации (race condition!) и обеспечить эффективную совместную работу вычислительных систем, должны выполняться условия взаимоисключения, прогресса и ограниченного ожидания при использовании общей линии связи, но уже не на уровне отдельных процессов операционных систем, а на уровне различных вычислительных комплексов в целом.

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

Основные вопросы логической организации передачи информации между удаленными процессами 

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

  1.  Как нужно соединять между собой различные вычислительные системы физическими линиями связи для организации взаимодействия удаленных процессов? Какими критериями при этом следует пользоваться?
  2.  Как избежать возникновения race condition при передаче информации различными вычислительными системами после их подключения к общей линии связи? Какие алгоритмы могут при этом применяться?
  3.  Какие виды интерфейсов могут быть предоставлены пользователю операционными системами для передачи информации по сети? Какие существуют модели взаимодействия удаленных процессов? Как процессы, работающие под управлением различных по своему строению операционных систем, могут общаться друг с другом?
  4.  Какие существуют подходы к организации адресации удаленных процессов? Насколько они эффективны?
  5.  Как организуется доставка информации от компьютера-отправителя к компьютеру-получателю через компьютеры-посредники? Как выбирается маршрут для передачи данных в случае разветвленной сетевой структуры, когда существует не один вариант следования пакетов данных через компьютеры-посредники?

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

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

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

Из приведенного перечня мы с вами подробнее остановимся на решении вопросов, приведенных в пунктах 3–5.

Понятие протокола

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

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

Каким образом два человека, находящиеся в разных городах, а тем более странах, могут обмениваться информацией? Для этого им обычно приходится прибегать к услугам соответствующих служб связи. При этом между службами связи различных городов (государств) должны быть заключены определенные соглашения, позволяющие корректно организовывать такой обмен. Если речь идет, например, о почтовых отправлениях, то в первую очередь необходимо договориться о том, что может представлять собой почтовое отправление, какой вид оно может иметь. Некоторые племена индейцев для передачи информации пользовались узелковыми письмами – поясами, к которым крепились веревочки с различным числом и формой узелков. Если бы такое письмо попало в современный почтовый ящик, то, пожалуй, ни одно отделение связи не догадалось бы, что это – письмо, и пояс был бы выброшен как ненужный хлам. Помимо формы представления информации необходима договоренность о том, какой служебной информацией должно снабжаться почтовое отправление (адрес получателя, срочность доставки, способ пересылки: поездом, авиацией, с помощью курьера и т. п.) и в каком формате она должна быть представлена. Адреса, например, в России и в США принято записывать по-разному. В России мы начинаем адрес со страны, далее указывается город, улица и квартира. В США все наоборот: сначала указывается квартира, затем улица и т. д. Конечно, даже при неправильной записи адреса письмо, скорее всего, дойдет до получателя, но можно себе представить растерянность почтальона, пытающегося разгадать, что это за страна или город – «кв.162»? Как видим, доставка почтового отправления из одного города (страны) в другой требует целого ряда соглашений между почтовыми ведомствами этих городов (стран).

Аналогичная ситуация возникает и при общении удаленных процессов, работающих под управлением разных операционных систем. Здесь процессы играют роль людей, проживающих в разных городах, а сетевые части операционных систем – роль соответствующих служб связи. Для того чтобы удаленные процессы могли обмениваться данными, необходимо, чтобы сетевые части операционных систем руководствовались определенными соглашениями, или, как принято говорить, поддерживали определенные протоколы. Термин «протокол» уже встречался нам в лекции 13, посвященной организации ввода-вывода в операционных системах, при обсуждении понятия «шина». Мы говорили, что понятие шины подразумевает не только набор проводников, но и набор жестко заданных протоколов, определяющий перечень сообщений, который может быть передан с помощью электрических сигналов по этим проводникам, т. е. в «протокол» мы вкладывали практически тот же смысл. В следующем разделе мы попытаемся дать более формализованное определение этого термина.

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

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

В литературе принято говорить о локальных   вычислительных сетях   (LAN – Local Area Network) и глобальных   вычислительных сетях   (WAN – Wide Area Network). Строгого определения этим понятиям обычно не дается, а принадлежность сети к тому или иному типу часто определяется взаимным расположением вычислительных комплексов, объединенных в сеть. Так, например, в большинстве работ к локальным сетям относят сети, состоящие из компьютеров одной организации, размещенные в пределах одного или нескольких зданий, а к глобальным сетям – сети, охватывающие все компьютеры в нескольких городах и более. Зачастую вводится дополнительный термин для описания сетей промежуточного масштаба – муниципальных или городских   вычислительных сетей   (MAN – Metropolitan Area Network) – сетей, объединяющих компьютеры различных организаций в пределах одного города или одного городского района. Таким образом, упрощенно можно рассматривать глобальные сети как сети, состоящие из локальных и муниципальных сетей. А муниципальные сети, в свою очередь, могут состоять из нескольких локальных сетей. На самом деле деление сетей на локальные, глобальные и муниципальные обычно связано не столько с местоположением и принадлежностью вычислительных систем, соединенных сетью, сколько с различными подходами, применяемыми для решения поставленных вопросов в рамках той или иной сети, – с различными используемыми протоколами.

Многоуровневая модель построения сетевых вычислительных систем

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

Как уже отмечалось при обсуждении «слоеного» строения операционных систем на первой лекции, при таком подходе уровень N системы предоставляет сервисы уровню N+1, пользуясь в свою очередь только сервисами уровня N-1. Следовательно, каждый уровень может взаимодействовать непосредственно только со своими соседями, руководствуясь четко закрепленными соглашениями – вертикальными протоколами, которые принято называть интерфейсами.

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

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

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

Точно так же в сетевых вычислительных системах все их одинаковые уровни, лежащие выше физического, виртуально обмениваются данными посредством горизонтальных протоколов. Наличие такой виртуальной связи означает, что уровень N компьютера 2 должен получить ту же самую информацию, которая была отправлена уровнем N компьютера 1. Хотя в реальности эта информация должна была сначала дойти сверху вниз до уровня 1 компьютера 1, затем передана уровню 1 компьютера 2 и только после этого доставлена снизу вверх уровню N этого компьютера.

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

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

Эталоном многоуровневой схемы построения сетевых средств связи считается семиуровневая модель открытого взаимодействия систем (Open System INTerconnection – OSI), предложенная Международной организацией Стандартов (International Standard Organization – ISO) и получившая сокращенное наименование OSI/ISO. Давайте очень кратко опишем, какие функции выполняют различные уровни модели OSI/ISO:

  •  Уровень 1 – физический. Этот уровень связан с работой hardware. На нем определяются физические аспекты передачи информации по линиям связи, такие как: напряжения, частоты, природа передающей среды, способ передачи двоичной информации по физическому носителю, вплоть до размеров и формы используемых разъемов. В компьютерах за поддержку физического уровня обычно отвечает сетевой адаптер.
  •  Уровень 2 – канальный. Этот уровень отвечает за передачу данных по физическому уровню без искажений между непосредственно связанными узлами сети. На нем формируются физические пакеты данных для реальной доставки по физическому уровню. Протоколы   канального уровня реализуются совместно сетевыми адаптерами и их драйверами (понятие драйвера рассматривалось в лекции 13).
  •  Уровень 3 – сетевой. Сетевой уровень несет ответственность за доставку информации от узла-отправителя к узлу-получателю. На этом уровне частично решаются вопросы адресации, осуществляется выбор маршрутов следования пакетов данных, решаются вопросы стыковки сетей, а также управление скоростью передачи информации для предотвращения перегрузок в сети.
  •  Уровень 4 – транспортный. Регламентирует передачу данных между удаленными процессами. Обеспечивает доставку информации вышележащим уровнем с необходимой степенью надежности, компенсируя, быть может, ненадежность нижележащих уровней, связанную с искажением и потерей данных или доставкой пакетов в неправильном порядке. Наряду с сетевым уровнем может управлять скоростью передачи данных и частично решать проблемы адресации.


Рис. 17.1.  Семиуровневая эталонная модель OSI/ISO

  •  Уровень 5 – сеансовый. Координирует взаимодействие связывающихся процессов. Основная задача – предоставление средств синхронизации взаимодействующих процессов. Такие средства синхронизации позволяют создавать контрольные точки при передаче больших объемов информации. В случае сбоя в работе сети передачу данных можно возобновить с последней контрольной точки, а не начинать заново.
  •  Уровень 6 – уровень представления данных. Отвечает за форму представления данных, перекодирует текстовую и графическую информацию из одного формата в другой, обеспечивает ее сжатие и распаковку, шифрование и декодирование.
  •  Уровень 7 – прикладной. Служит для организации интерфейса между пользователем и сетью. На этом уровне реализуются такие сервисы, как удаленная передача данных, удаленный терминальный доступ, почтовая служба и работа во Всемирной паутине (Web-браузеры).

Надо отметить, что к приведенной эталонной модели большинство практиков относится без излишнего пиетета. Эта модель не предвосхитила появления различных семейств протоколов, таких как, например, семейство протоколов TCP/IP, а наоборот, была создана под их влиянием. Ее не следует рассматривать как готовый оптимальный чертеж для создания любого сетевого средства связи. Наличие некоторой функции на определенном уровне не гарантирует, что это ее наилучшее место, некоторые функции (например, коррекция ошибок) дублируются на нескольких уровнях, да и само деление на 7 уровней носит отчасти произвольный характер. Хотя в конце концов были созданы работающие реализации этой модели, но наиболее распространенные семейства протоколов лишь до некоторой степени согласуются с ней. Как отмечено в книге [Таненбаум, 2002], она больше подходит для реализации телефонных, а не вычислительных сетей. Ценность предложенной эталонной модели заключается в том, что она показывает направление, в котором должны двигаться разработчики новых вычислительных сетей.

Проблемы 3–5, перечисленные в разделе «Основные вопросы логической организации передачи информации между   удаленными процессами», относятся в основном к сетевому и транспортному уровням эталонной модели и, соответственно, решаются на уровне сетевых и транспортных протоколов. Давайте приступим, наконец, к их рассмотрению.

Проблемы адресации в сети 

Любой пакет информации, передаваемый по сети, должен быть снабжен адресом получателя. Если взаимодействие подразумевает двустороннее общение, то в пакет следует также включить и адрес отправителя. В лекции 4 мы описали один из протоколов организации надежной связи с использованием контрольных сумм, нумерации пакетов и подтверждения получения неискаженного пакета в правильном порядке. Для отправки подтверждений обратный адрес также следует включать в пересылаемый пакет. Таким образом, практически каждый сетевой пакет информации должен быть снабжен адресом получателя и адресом отправителя. Как могут выглядеть такие адреса?

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

Одноуровневые адреса

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

Двухуровневые адреса

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

Удаленная адресация и разрешение адресов

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

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

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

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

Один из таких способов, используемый в Internet, получил английское наименование domain name service или сокращенно DNS. Эта аббревиатура широко используется и в русскоязычной литературе. Давайте рассмотрим данный метод подробнее.

Организуем логически все компьютеры сети в некоторую древовидную структуру, напоминающую структуру директорий файловых систем, в которых отсутствует возможность организации жестких и мягких связей и нет пустых директорий. Будем рассматривать все компьютеры, входящие во Всемирную сеть, как область самого низкого ранга (аналог корневой директории в файловой системе) – ранга 0. Разобьем все множество компьютеров области на какое-то количество подобластей (domains). При этом некоторые подобласти будут состоять из одного компьютера (аналоги регулярных файлов в файловых системах), а некоторые – более чем из одного компьютера (аналоги директорий в файловых системах). Каждую подобласть будем рассматривать как область более высокого ранга. Присвоим подобластям собственные имена таким образом, чтобы в рамках разбиваемой области все они были уникальны. Повторим такое разбиение рекурсивно для каждой области более высокого ранга, которая состоит более чем из одного компьютера, несколько раз, пока при последнем разбиении в каждой подобласти не окажется ровно по одному компьютеру. Глубина рекурсии для различных областей одного ранга может быть разной, но обычно в целом ограничиваются 3 – 5 разбиениями, начиная от ранга 0.

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

Допустим, некоторая подобласть, состоящая из одного компьютера, получила имя serv, она входит в подобласть, объединяющую все компьютеры некоторой лаборатории, с именем crec. Та, в свою очередь, входит в подобласть всех компьютеров Московского физико-технического института с именем mipt, которая включается в область ранга 1 всех компьютеров России с именем ru. Тогда имя рассматриваемого компьютера во Всемирной сети будет serv.crec.mipt.ru. Аналогичным образом можно именовать и подобласти, состоящие более чем из одного компьютера.

В каждой полученной именованной области, состоящей более чем из одного узла, выберем один из компьютеров и назначим его ответственным за эту область – сервером DNS. Сервер DNS знает числовые адреса серверов DNS для подобластей, входящих в его зону ответственности, или числовые адреса отдельных компьютеров, если такая подобласть включает в себя только один компьютер. Кроме того, он также знает числовой адрес сервера DNS, в зону ответственности которого входит рассматриваемая область (если это не область ранга 1), или числовые адреса всех серверов DNS ранга 1 (в противном случае). Отдельные компьютеры всегда знают числовые адреса серверов DNS, которые непосредственно за них отвечают.

Рассмотрим теперь, как процесс на компьютере serv.crec.mipt.ru может узнать числовой адрес компьютера ssp.brown.edu. Для этого он обращается к своему DNS-серверу, отвечающему за область crec.mipt.ru, и передает ему нужный адрес в символьном виде. Если этот DNS-сервер не может сразу представить необходимый числовой адрес, он передает запрос DNS-серверу, отвечающему за область mipt.ru. Если и тот не в силах самостоятельно справиться с проблемой, он перенаправляет запрос серверу DNS, отвечающему за область 1-го ранга ru. Этот сервер может обратиться к серверу DNS, обслуживающему область 1-го ранга edu, который, наконец, затребует информацию от сервера DNS области brown.edu, где должен быть нужный числовой адрес. Полученный числовой адрес по всей цепи серверов DNS в обратном порядке будет передан процессу, направившему запрос (см. рис.17.2).


Рис. 17.2.  Пример разрешения имен с использованием DNS-серверов

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

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

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

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

Локальная адресация. Понятие порта 

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

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

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

Полные адреса. Понятие сокета (socket) 

Таким образом, полный адрес удаленного процесса или промежуточного объекта для конкретного способа связи с точки зрения операционных систем определяется парой адресов: <числовой адрес компьютера в сети, порт>. Подобная пара получила наименование socket (в переводе – «гнездо» или, как стали писать в последнее время, сокет), а сам способ их использования – организация связи с помощью   сокетов. В случае непрямой адресации с использованием промежуточных объектов сами эти объекты также принято называть сокетами. Поскольку разные протоколы   транспортного уровня требуют разных адресных пространств портов, то для каждой пары надо указывать, какой транспортный протокол она использует, – говорят о разных типах сокетов.

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

Проблемы маршрутизации в сетях 

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

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

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

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

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

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


Рис. 17.3.  Простая таблица маршрутизации

По способам формирования и использования таблиц маршрутизации   алгоритмы   одношаговой маршрутизации можно разделить на три класса:

  •  алгоритмы   фиксированной маршрутизации;
  •  алгоритмы   простой маршрутизации;
  •  алгоритмы   динамической маршрутизации.

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

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

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

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

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

Подробное описание протоколов   динамической маршрутизации можно найти в [Олифер, 2002], [Таненбаум, 2003].

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

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

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

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

Транспортные протоколы связи удаленных процессов, которые предназначены для обмена сообщениями, получили наименование протоколов   без установления логического соединения (connectionless) или протоколов   обмена   датаграммами, поскольку само сообщение здесь принято называть датаграммой (datagramm) или дейтаграммой. Каждое сообщение адресуется и посылается процессом индивидуально. С точки зрения операционных систем все датаграммы – это независимые единицы, не имеющие ничего общего с другими датаграммами, которыми обмениваются эти же процессы.

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

По-другому обстоит дело с транспортными протоколами, которые поддерживают потоковую модель. Они получили наименование протоколов, требующих установления логического соединения (connection-oriented). И в их основе лежит передача данных с помощью пакетов информации. Но операционные системы сами нарезают эти пакеты из передаваемого потока данных, организовывают правильную последовательность их получения и снова объединяют полученные пакеты в поток, так что с точки зрения взаимодействующих процессов после установления логического соединения они имеют дело с потоковым средством связи, напоминающим pipe или FIFO. Эти протоколы должны обеспечивать надежную связь.

Синхронизация удаленных процессов 

Мы рассмотрели основные принципы логической организации сетевых средств связи, внешние по отношению к взаимодействующим процессам. Однако, как отмечалось в лекции 5, для корректной работы таких процессов необходимо обеспечить определенную их синхронизацию, которая устранила бы возникновение race condition на соответствующих критических участках. Вопросы синхронизации удаленных процессов обычно рассматриваются в курсах, посвященных распределенным операционным системам.

Заключение

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

Вычислительные комплексы в сети могут находиться под управлением сетевых или распределенных вычислительных систем. Основой для объединения компьютеров в сеть служит взаимодействие удаленных процессов. При рассмотрении вопросов организации взаимодействия удаленных процессов нужно принимать во внимание основные отличия их кооперации от кооперации локальных процессов.

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

Организация взаимодействия удаленных процессов требует от сетевых частей операционных систем поддержки определенных протоколов. Сетевые средства связи обычно строятся по «слоеному» принципу. Формальный перечень правил, определяющих последовательность и формат сообщений, которыми обмениваются сетевые компоненты различных вычислительных систем, лежащие на одном уровне, называется сетевым протоколом. Каждый уровень слоеной системы может взаимодействовать непосредственно только со своими вертикальными соседями, руководствуясь четко закрепленными соглашениями – вертикальными протоколами или интерфейсами. Вся совокупность интерфейсов и сетевых протоколов в сетевых системах, построенных по слоеному принципу, достаточная для организации взаимодействия удаленных процессов, образует семейство   протоколов или стек   протоколов.

Удаленные процессы, в отличие от локальных, при взаимодействии обычно требуют двухуровневой адресации при своем общении. Полный адрес процесса состоит из двух частей: удаленной и локальной.

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

Список литературы: 

  1.  Э. Таненбаум,  Архитектура компьютера, Питер, 2002
  2.  Г. Халд, Технологии передачи данных, Питер, 2003
  3.  В. Столингс, Современные компьютерные сети, Питер, 2003
  4.  В.Г. Олифер, Н.А. Олифер, Компьютерные сети, Питер, 2000
  5.  Е.М. Иванова, С.В. Жарков, Организация ЭВМ и вычислительных систем, МГИЭМ, Учебное пособие, М. 2002
  6.  С.Т. Мартиросян, Организация ЭВМ, комплексов и сетей, МГИЭМ, Учебное пособие, М. 2002
  7.   С.Т. Мартиросян, Организация ЭВМ и вычислительных систем, МГИЭМ, Учебное пособие, М. 2003
  8.  С.Т. Мартиросян, Компьютерные сети, МГИЭМ, Электронное учебное пособие, М. 2001
  9.  С.Т. Мартиросян, Организация ЭВМ, Электронное учебное пособие, М. 2001

 

PAGE  1


                 ИНФОРМАЦИОННЫЕ                                     ПРОЦЕССЫ

ПЕРЕДАЧА

ОБРАБОТКА

ХРАНЕНИЕ

  СБОР

СООБЩЕНИЕ

(отформатир-ные

данные, интерпретация информационных кодов)

      ДАННЫЕ

(зарегистрированные сигналы, датчик)

преобразователь)

Операционное Устройство

Запросы на пре-ия и пдп

УУ

ПЗУ

ПДП

пре-ния

 

 

Re Order Bufferбуфер перестройки команд (планировщик, предварительная выборка)

 Блок                                             Блок                                                      Блок   

  вызова и                                     отправки                                                возврата

  декодирования                           выполнения (ОУ)

Конвейер – 7 стадий              Блок 1          Блок 2          Блок 3        Регистровый

                                                 АЛУ            FPU              ММХ              файл РОН

Контроллер прерываний                    Контроллер ПДП

Кэш 1-го

уровня

команд

Кэш 1-го

уровня

данных

Внутрисистемный интерфейс

Язык высокого уровня

Уровень ассемблера

Уровень ОС

Уровень архитектуры  команд

Микроархитектурный уровень

Цифровой логический уровень

 1        7            B          A     

   4       8                  5             E                    

Управляющие регистры

Программа на ЯВУ

Интерпретатор Последовательный перевод команды за командой в эквивалентный машинный код с немедленным исполнением готовой команды

Виртуальная машина Java  Компилятор Псевдокод Интерпретатор

Компилятор

Перевод исходной программы на эквивалентный набор команд машинного кода

Графические системы

Служебные программы (утилиты)

Тэг                    Строка                  Слово (байт)

Блок

Вып.

команд

Блок

возврата

Блок

Выборки

Команд

Блок

декодирования

Блок

возврата

Блок

Вып.

команд

Блок

Выб.

опер.

Память

пр-ра

кэш

РОН

Dиндекса

     КЭШ

       CPU

Системы с массовым

параллелизмом

MSIMD

Сильно связанные

Слабо связанные

ММВС

МПВС

Матричный

Векторный

CISC

RISC

Суперскаляр

MIMD

MISD

SIMD

SISD

Многопроцессорные

Многомашинные

Однопроцессорные

Вычислительные Системы

Клавиатура

Видео

Диск

IDE

CD-ROM

Диск 1

Диск 1

Контроллер

CD-ROM

Контроллер

Диска

Интерфейс

ISA-EISA

Контроллер

USB

Интерфейс

Ethernet

Контроллер

SCSI

Дополнительная память

Мост

ОП

начало

ЦПУ

CPU

     Данные

     Смещение

   База сегмента

4 К

4 К

 

….

…..

Каталог таблиц страниц

(адреса таблиц страниц)

    Directory                Table                Offset

Дисковая память

Основная память

Кэш

MMU

         ОП

Элементарной единицей памяти всех современных компьютеров является байт, состоящий из восьми двоичных разрядов. Каждый байт имеет свой адрес. В наиболее распространенной 32-разрядной архитектуре адреса байтов изменяются от 0 до 232 - 1 с шагом 1. Память, с логической точки зрения, можно рассматривать как массив байтов: можно прочесть или записать байт с заданным адресом. Содержимое байта трактуется либо как неотрицательное целое число в диапазоне от 0 до 255, либо как число со знаком в диапазоне от -128 до 127.

Расширенная

(Extended) память

для организации виртуальной памяти разбита на блоки по 1 Мбайт

Верхняя (Upper Memory Area)

Системное ПЗУ

BIOS

Видеопамять

Основная, базовая  память (Conventional)

ОС и программы пользователя

                                        Интерфейс магистрали

Контроллер шин (чипсет)

Команды    Данные

ОП

Команды    Данные

ОП

Команды    Данные

ОП

КЭШ

команд

КЭШ

команд

КЭШ

КЭШ

данных

КЭШ

данных

МП

Команды    Данные

МП

Команды    Данные

МП

Команды    Данные

Организация процессора

Программная модель:

- программные ресурсы.

Пространство памяти:

- в регистрах;

- в системной памяти;

- в самой команде;

- в портах ввода/вывода.

Методы  адресации:

непосредственная, регистровая прямая, регистровая косвенная, относительная индексная, прямая или абсолютная, базовая со смещением, …

Организация

памяти:

- линейная;

- страничная;

- сегментная;

- смешанная.

поле тега  (21 бит)                                поле индекса                   x x x x

Приложение

ОС

Драйвер

порт

порт

порт

Периферийные устройства

Командное слово – i

Командное слово – i+1

Данные – j

Данные – j+1

_________________________________________________________________________________

Выполнение команд

Кэш 2-го

уровня

512 Кбайт

Instructions

--------------------

300   Add A, B

301    Move C, A

303

--------------------

Data

--------А------------

--------В------------

ПЗУ

Блок

Выб.

опер.

Блок

декодирования

АЛУ

АЛУ

Блок

возврата

Блок

Умнож.

Блок

Выб.

Опер.

Блок декодирования

Блок

Выборки

команд

Блок

с пл.

точкой

Данные        16 байт

LRU                xxxxx

Internet

                      Внешняя память

           Оперативная память - ОЗУ

             (на основе DRAM)

Сверхоперативная память

    Регистры

   процессора

Монитор

Видеоадаптер

Интерфейс AGP

Мышь

Strips 0

Strips 1

Strips 2

ОП

Мост

PCI

Кэш 2-го

уровня

512 Кбайт

Внутрисистемный интерфейс

Кэш 1-го

уровня

данных

Кэш 1-го

уровня

команд

Re Order Bufferбуфер перестройки команд (планировщик, предварительная выборка)

      Блок                                           Блок                               Блок   

     вызова,                                     отправки,                       возврата

декодирования                            выполнения

Конвейер – 7 стадий     Блок 1     Блок 2      Блок 3        Регистровый

                                        АЛУ        АЛУ        ММХ              файл

                                       Блок загрузки, сохранения         

Электронные таблицы

Системы управления производством

Системы программирования

Текстовые процессоры

Операционные системы

СУБД

Банковские  системы

Бухгалтерские системы

Системное

Прикладное

Общее

Специальное

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Мост

PCI

 1         7          B         A                 

 4         8          5          E

Байт с наиболее значащей частью (слева)

сохраняется в память по наибольшему адресу N= 1 (n=3), (“little-end”),

машины: Intel, Alpha, VAX

Байт с наиболее значащей частью

(“big-end”, в исходном числе он находится слева) сохраняется в память по наименьшему адресу  N=0, (n=2),

машины: Sparc, Apple, IBM-370 ….

Выборка

команды

декодирование

Выборка

операнда

исполнение

АКК

Запись

результата

CISC

Архитектура с выделенным доступом к памяти

RISC

АСК с безоперандным набором команд - ROSC

АСК с командными словами сверхбольшой длины - VLIW

Регистровая

КОП      Адрес 1го операнда     Адрес 2го операнда        Адрес результата  

Оперативная

память

ОП

Стековая

Аккумуляторная

Архитектура системы команд - АСК

JKn                   JK0    

R 2

Регистр адреса

УУ/ПЗУ

Регистр команд

SM

R 1




1. Основные направления этнопсихологических исследований
2. Суды справедливости в Англии XIV-XVI веков.html
3. Обрезание и длительность полового акта
4. тема эконом отношений основанная на устойчивом взаимодействии товарного и денежного обращения
5. Українські січові стрільці
6. Реферат Асбесты
7. РЕФЕРАТ диссертации на соискание ученой степени кандидата экономических наук Москва ~ 1996 ОБЩАЯ ХАРАК
8. . Понятие дефицита бюджета
9. социальное влияние
10. Покупка и реализация доли в обществах с ограниченной ответственностью бухгалтерский учет и налогооб