Справочник от Автор24
Поделись лекцией за скидку на Автор24

Этапы развития и поколения вычислительных машин. Модели памяти. Организация подсистем памяти. Grid системы

  • ⌛ 2014 год
  • 👀 1473 просмотра
  • 📌 1430 загрузок
  • 🏢️ ТулГУ
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Этапы развития и поколения вычислительных машин. Модели памяти. Организация подсистем памяти. Grid системы» pdf
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Институт прикладной математики и компьютерных наук Кафедра вычислительной техники к.т.н. доц. Ю.В. Французова КОНСПЕКТ ЛЕКЦИЙ по дисциплине Архитектура вычислительных систем Направление подготовки: 230100 «Информатика и вычислительная техника» Профиль : «Программное обеспечение средств вычислительной техники и автоматизированных систем» Направление подготовки: 230400 «Информационные системы и технологии» Профиль : «Информационные системы» Направление подготовки: 220400 «Управление в технических системах» Профиль : «Управление и информатика в технических системах» Формы обучения: очная Тула 2014 г. Рассмотрено на заседании кафедры вычислительной техники, института прикладной математики и компьютерных наук протокол №___ от "___"____________ 20___ г. Зав. кафедрой________________А.Н. Ивутин 2 Содержание Введение. .................................................................................................................. 5 Основные понятия и определения. .................................................................. 5 Уровни абстракции при описании вычислительных машин ........................ 6 Уровни детализации структуры ВМ ............................................................... 8 Этапы развития и поколения вычислительных машин ................................. 9 Этапы развития ЭВМ .................................................................................. 9 Краткая история развития вычислительной техники. ........................... 10 Типы компьютеров ......................................................................................... 13 1. Информационно-логические основы ЭВМ. ................................................... 15 Представление информации в ЭВМ. ............................................................ 15 Представление числовой информации ......................................................... 15 Арифметические основы ЭВМ. ..................................................................... 16 Арифметические операции над числами с плавающей точкой. .......... 19 Арифметические операции над двоично-десятичными числами. ....... 19 Логические основы ЭВМ ............................................................................... 20 Техническая интерпретация логических функций. ..................................... 22 2. Функциональная организация компьютеров.................................................. 23 Машина Тьюринга .......................................................................................... 23 Автомат Неймана ............................................................................................ 24 Принципы построения современных ЭВМ .................................................. 25 3. Структурная организация классической ЭВМ ............................................... 27 Особенности современных ЭВМ ................................................................... 30 4. Модели памяти .................................................................................................. 32 Размещение байтов слова в памяти ............................................................... 32 Выравнивание .................................................................................................. 35 Семантика памяти ........................................................................................... 36 5. Архитектура системы команд. ......................................................................... 38 Классификация архитектуры системы команд ............................................ 38 Классификация по составу и сложности команд. .................................. 39 Классификация по способу хранения операндов. ................................. 40 6. Форматы команд................................................................................................ 45 Основные форматы команд ............................................................................ 45 Критерии разработки форматов команд ....................................................... 45 Расширение кода операций ............................................................................ 48 Форматы команд процессора Pentium 4 ....................................................... 50 Форматы команд процессора UltraSPARC III .............................................. 52 7. Методы адресации ............................................................................................ 54 8. Цикл выполнения команд процессора ............................................................ 62 9. Совмещение операций ...................................................................................... 64 Процессоры с линейным конвейером ........................................................... 64 Структурные конфликты и способы их минимизации ......................... 66 Конфликты по данным ............................................................................. 66 3 10. 11. 12. 13. 14. Конфликты по управлению .................................................................................67 Предсказание переходов.......................................................................................70 Обработка исключительных ситуаций ............................................................71 Суперконвейерный процессор. .................................................................................72 Суперскалярные процессоры .....................................................................................72 Шины ................................................................................................................................74 Организация подсистем памяти. ............................................................................79 Иерархия памяти. ...........................................................................................................79 Организация КЭШ – памяти. .....................................................................................81 Основная память .............................................................................................................81 ОЗУ ........................................................... Увеличение разрядности основной памяти. ..................................................87 Расслоение памяти. .................................................................................................88 Использование специфических свойств динамических ЗУ с произвольной выборкой .......................................................................................89 Вторичная память ..........................................................................................................89 Многопроцессорные системы. ................................................................................94 Классификация систем параллельной обработки данных. .............................94 Модели связи и архитектуры памяти. ....................................................................97 Мультипроцессорная когерентность КЭШ – памяти. ......................................98 Grid системы ............................................................................................................... 101 Определения и терминология ................................................................................. 101 Первое поколение Grid .............................................................................................. 104 Второе поколение Grid .............................................................................................. 106 Современное (третье) поколение Grid ................................................................. 118 Основы метрической теории ВС. ........................................................................ 128 Основные понятия и определенеия ...................................................................... 128 Модели и методы ........................................................................................................ 133 Принципы анализа производительности ............................................................ 152 Методы и средства измерений и оценки функционирования ..................... 159 Модели рабочей и системной нагрузки .............................................................. 168 4 Введение. Основные понятия и определения. Изучение любого вопроса принято начинать с договоренностей о терминологии. В нашем случае определению подлежат понятия вычислительная машина (ВМ) и вычислительная система (ВС). В литературе можно найти множество самых различных определений терминов «вычислительная машина» и «вычислительная система». Причина такой терминологической неопределенности кроется в невозможности дать удовлетворяющее всех четкое определение, достойное роли стандарта. Приведем несколько определений термина «вычислительная машина», взятых из различных литературных источников. Итак, вычислительная машина — это: 1. Устройство, которое принимает данные, обрабатывает их в соответствии с хранимой программой, генерирует результаты и обычно состоит из блоков ввода, вывода, памяти, арифметики, логики и управления. 2. Функциональный блок, способный выполнять реальные вычисления, включающие множественные арифметические и логические операции, без участия человека в процессе этих вычислений. 3. Устройство, способное:      хранить программу или программы обработки и по меньшей мере информацию, необходимую для выполнения программы;  быть свободно перепрограммируемым в соответствии с требованиями пользователя;  выполнять арифметические вычисления, определяемые пользователем;  выполнять без вмешательства человека программу обработки, требующую изменения действий путем принятия логических решений в процессе обработки.   4. Согласно ГОСТ 15971-90, вычислительная машина (ВМ, Computer) — совокупность технических средств, создающая возможность проведения обработки информации и получение результата в необходимой форме. Примечание. Как правило, в состав ВМ входит и системное программное обеспечение 5 Термином вычислительная машина будем обозначать комплекс технических и программных средств, предназначенный для автоматизации подготовки и решения задач пользователей. В свою очередь, вычислительную систему определим как совокупность взаимосвязанных и взаимодействующих процессоров или вычислительных машин, периферийного оборудования и программного обеспечения, предназначенную для подготовки и решения задач пользователей. Таким образом, формально отличие ВС от ВМ выражается в количестве вычислителей. Множественность вычислителей позволяет реализовать в ВС параллельную обработку. С другой стороны, современные вычислительные машины с одним процессором также обладают определенными средствами распараллеливания вычислительного процесса. Иными словами, грань между ВМ и ВС часто бывает весьма расплывчатой, что дает основание там, где это целесообразно, рассматривать ВМ как одну из реализаций ВС. И напротив, вычислительные системы часто строятся из традиционных ВМ и процессоров, поэтому многие из положений, относящихся к ВМ, могут быть распространены и на ВС. Под архитектурой вычислительной машины обычно понимается логическое построение ВМ, то есть то, какой машина представляется программисту. Впервые термин «архитектура вычислительной машины» (computer architecture) был употреблен фирмой IBM при разработке машин семейства IBM 360 для описания тех средств, которыми может пользоваться программист, составляя программу на уровне машинных команд. Подобную трактовку называют «узкой», и охватывает она перечень и формат команд, формы представления данных, механизмы ввода/вывода, способы адресации памяти и т. п. Из рассмотрения выпадают вопросы физического построения вычислительных средств: состав устройств, число регистров процессора, емкость памяти, наличие специального блока для обработки вещественных чисел, тактовая частота центрального процессора и т. д. Этот круг вопросов принято определять понятием организация или структурная организация. Архитектура (в узком смысле) и организация — это две стороны описания ВМ и ВС. Поскольку для наших целей, помимо теоретической строгости, такое деление не дает каких-либо преимуществ, то в дальнейшем будем пользоваться термином «архитектура», правда, в «широком» его толковании, объединяющем как архитектуру в узком смысле, так и организацию ВМ. Применительно к вычислительным системам термин «архитектура» дополнительно распространяется на вопросы распределения функций между составляющими ВС и взаимодействия этих составляющих. Уровни абстракции при описании вычислительных машин Как и большинство сложных систем, компьютеры разрабатываются с использованием разных уровней абстракции. Эти уровни меняются от машины к машине. Некоторые из них соответствуют программному 6 обеспечению, а другие представляют аппаратные средства. Например, на большинстве машин язык высокого уровня будет переведен при помощи программного обеспечения (компилятора) в машинный код, но в Zilog Z8000, машинным языком был BASIC. Некоторые машины имеют операционную систему и программных библиотек времени выполнения, которые обеспечивают абстракции поверх аппаратного обеспечения, в то время как другие (например, цифровые сигнальные процессоры) могут не иметь практически никакого программного обеспечения на этом уровне абстракции. Некоторые машины реализованы с помощью микрокода, который является одной из форм программного обеспечения, которое зафиксировано аппаратно (так называемые прошивки). Другие реализованы на основе логических схем, которые создаются системами автоматизированного проектирования (САПР), с различными абстракциями. Аппаратные средства вычислительной техники (ВТ) строятся по иерархической схеме (от низших уровней к высшим): 1. Элементарные логические схемы (базовые вентили), в свою очередь построенные на нескольких интегральных транзисторах. 2. Типовые схемотехнические узлы - комбинационные схемы (триггеры, 3. регистры, дешифраторы, одноразрядные и параллельные сумматоры). 4. Функциональные узлы ЭВМ, состоящие из нескольких типовых схем (блок 5. регистров, запоминающее устройство, матричный умножитель, АЛУ и т.д.) 4. Подсистемы ЭВМ (процессор, числовой сопроцессор, контроллер внешнего 6. устройства, система памяти, подсистема ввода-вывода и т.д.) 5. Автономные вычислительные машины. 6. Вычислительные системы, комплексы и сети. Построение современных ВМ и систем тесно связано с понятием “уровень абстракции”. 7 Приложения Компилятор ОС Ассемблер Архитектура ВМ Архитектура набора комманд Процессор Память Устр. Вв\вывода(I\o) Интегральные микросхемы Электрические схемы Организация ВМ Аппаратное обеспечение Транзисторы 7. Отдельные уровни абстракции должны быть как можно меньше связаны между собой. При помощи такого разделения обеспечивается возможность изменения отдельных элементов ВМ\С без изменения всей структуры в целом. Архитектура ЭВМ 1. Архитектура набора комманд 2. Организация 3. Аппаратное обеспечение Программирование Операционные системы Проектирование интерфейса Уровни детализации структуры ВМ ВМ как законченный объект представляет собой плод усилий специалистов в самых разных областях человеческих знаний. Каждый специалист рассматривает ВМ с позиции стоящей перед ним задачи, абстрагируясь от несущественных, по его мнению деталей. В соответствии с этим уровней детализации структуры может быть достаточно много. Однако, мя сложившаяся практика ограничивает их 4 . ом На 1 уровне ВМ рассматривается как 1) устройство способное хранить и обрабатывать информацию, а так же Вход Выход обмениваться данными с внешним миром. ВМ ВМ представляется чёрным ящиком который может быть подключён к сети и к которому могут присоединиться периферийные устройства. го 3) Детализируется каждое из устройств 2 уровня УУ АЛУ Шины БПТ Например ЦП: Арифметико-логическое устройство; Устройство управления; Блок операций с плавающей точкой; Набор регистров ЦП. Регист го 1) Детализируются элементы 3 уровня Например УУ: Регисторы; Память; логика ЛПП программной последовательности; логика Регист Память формирования управления. ЛФУ Этапы развития и поколения вычислительных машин Этапы развития ЭВМ Со времени появления первых ВМ (50-е гг. XX в.) сменилось пять поколений, отличающихся элементной базой, функциональными возможностями, быстродействием, архитектурой. В процессе развития расширялась сфера использования ВМ, совершенствовались информационные технологии, изменялись концептуальные принципы организации обработки данных. Статистический анализ показывает, что рост производства средств вычислительной техники (в стоимостном выражении) имеет экспоненциальный характер, но отмечаются периоды спада темпов роста. Эти периоды связаны с пересмотром концепций развития и коренной технологической перестройкой производства средств вычислительной техники. Соответственно можно выделить три этапа. На первом этапе (50 —70-е гг. XX в.) преобладала централизованная обработка данных на универсальных ВМ в вычислительных центрах. Основной целью развития была экономия машинного времени. Второй этап (с середины 70-х гг. до середины 80-х гг. XX в.) связан с массовым применением мини и микроЭВМ, созданием и совершенствованием МП и микропроцессорных средств. Основной задачей для использования быстро развивающихся средств вычислительной техники стала разработка эффективной технологии программирования. Этому способствовало создание средств автоматизации разработки программ: в первую очередь языков высокого уровня, режима разделения времени работы ВМ и интерактивных систем отладки. 9 Третий этап (со второй половины 80-х гг. XX в.) связан с массовым распространением ПК. Особенностью этого этапа стало создание высокоразвитого «доброжелательного» системного ПО. ПК в значительной мере ориентированы на использование готовых прикладных программ для информационного обслуживания в различных сферах деятельности. Для эффективного использования ПК во многих областях человеческой деятельности не требуется быть профессионалом-программистом. Краткая история развития вычислительной техники. (Полезными ресурсами для изучения истории компьютерной техники являются: Проект Эдуарда Пройдакова. Виртуальный компьютерный музей. http://www.computer-museum.ru; Очень краткий путеводитель по другим музеям: Сергей Артюхов. Виртуальные музеи компьютеров. «Мир ПК» , № 03, 2002, http://www.osp.ru/pcworld/2002/03/163068/ ) Нулевое поколение. Механические вычислители Предпосылки к появлению компьютера формировались, наверное, с древних времен, однако нередко обзор начинают со счетной машины Блеза Паскаля, которую он сконструировал в 1642 г. Эта машина могла выполнять лишь операции сложения и вычитания. В 70-х годах того же века Готфрид Вильгельм Лейбниц построил машину, умеющую выполнять операции не только сложения и вычитания, но и умножения и деления. В XIX веке большой вклад в будущее развитие вычислительной техники сделал Чарльз Бэббидж. Его разностная машина, хотя и умела только складывать и вычитать, зато результаты вычислений выдавливались на медной пластине (аналог средств ввода-вывода информации). В дальнейшем описанная Бэббиджем аналитическая машина должна была выполнять все четыре основные математические операции. Аналитическая машина состояла из памяти, вычислительного механизма и устройств ввода-вывода (прямо таки компьютер … только механический), а главное могла выполнять различные алгоритмы (в зависимости от того, какая перфокарта находилась в устройстве ввода). Программы для аналитической машины писала Ада Ловлейс (первый известный программист). На самом деле машина не была реализована в то время из-за технических и финансовых сложностей. Мир отставал от хода мыслей Бэббиджа. В XX веке автоматические счетные машины конструировали Конрад Зус, Джорж Стибитс, Джон Атанасов. Машина последнего включала, можно сказать, прототип ОЗУ, а также использовала бинарную арифметику. Релейные компьютеры Говарда Айкена: «Марк I» и «Марк II» были схожи по архитектуре с аналитической машиной Бэббиджа. Первое поколение. Компьютеры на электронных лампах (194х-1955) Быстродействие: несколько десятков тысяч операций в секунду. 10 Особенности: Поскольку лампы имеют существенные размеры и их тысячи, то машины имели огромные размеры. Поскольку ламп много и они имеют свойство перегорать, то часто компьютер простаивал из-за поиска и замены вышедшей из строя лампы. Лампы выделяют большое количество тепла, следовательно, вычислительные машины требуют специальные мощные охладительные системы. Примеры компьютеров: Колоссус – секретная разработка британского правительства (в разработке принимал участие Алан Тьюринг). Это первый в мире электронный компьютер, хотя и не оказавший влияние на развитие компьютерной техники (из-за своей секретности), но помог победить во Второй мировой войне. Эниак. Создатели: Джон Моушли и Дж. Преспер Экерт. Вес машины 30 тонн. Минусы: использование десятичной системы счисления; множество переключателей и кабелей. Эдсак. Достижение: первая машина с программой в памяти. Whirlwind I. Слова малой длины, работа в реальном времени. Компьютер 701 (и последующие модели) фирмы IBM. Первый компьютер, лидирующий на рынке в течение 10 лет. Второе поколение. Компьютеры на транзисторах (1955-1965) Быстродействие: сотни тысяч операций в секунду. По сравнению с электронными лампами использование транзисторов позволило уменьшить размеры вычислительной техники, повысить надежность, увеличить скорость работы (до 1 млн. операций в секунду) и почти свести на нет теплоотдачу. Развиваются способы хранения информации: широко используется магнитная лента, позже появляются диски. В этот период была замечена первая компьютерная игра. Первый компьютер на транзисторах TX стал прототипом для компьютеров ветки PDP фирмы DEC, которые можно считать родоначальниками компьютерной промышленности, т.к появилось явление массовой продажи машин. DEC выпускает первый миникомпьютер (размером со шкаф). Зафиксировано появление дисплея. Фирма IBM также активно трудится, производя уже транзисторные версии своих компьютеров. Компьютер 6600 фирмы CDC, который разработал Сеймур Крей, имел преимущество над другими компьютерами того времени – это его быстродействие, которое достигалось за счет параллельного выполнения команд. Третье поколение. Компьютеры на интегральных схемах (1965-1980) Быстродействие: миллионы операций в секунду. 11 Интегральная схема представляет собой электронную схему, вытравленную на кремниевом кристалле. На такой схеме умещаются тысячи транзисторов. Следовательно, компьютеры этого поколения были вынуждены стать еще мельче, быстрее и дешевле. Последнее свойство позволяло компьютерам проникать в различные сферы деятельности человека. Из-за этого они становились более специализированными (т.е. имелись различные вычислительные машины под различные задачи). Появилась проблема совместимости выпускаемых моделей (программного обеспечения под них). Впервые большое внимание совместимости уделила компания IBM. Было реализовано мультипрограммирование (это когда в памяти находится несколько выполняемых программ, что дает эффект экономии ресурсов процессора). Дальнейшее развитие миникомпьютеров (PDP-11). Четвертое поколение. Компьютеры на больших (и сверхбольших) интегральных схемах (1980-…) Быстродействие: сотни миллионов операций в секунду. Появилась возможность размещать на одном кристалле не одну интегральную схему, а тысячи. Быстродействие компьютеров увеличилось значительно. Компьютеры продолжали дешеветь и теперь их покупали даже отдельные личности, что ознаменовало так называемую эру персональных компьютеров. Но отдельная личность чаще всего не была профессиональным программистом. Следовательно, потребовалось развитие программного обеспечения, чтобы личность могла использовать компьютер в соответствие со своей фантазией. В конце 70-х – начале 80-х популярностью пользовался компьютера Apple, разработанный Стивом Джобсом и Стивом Возняком. Позднее в массовое производство был запущен персональный компьютер IBM PC на процессоре Intel. Позднее появились суперскалярные процессоры, способные выполнять множество команд одновременно, а также 64-разрядные компьютеры. Пятое поколение? Сюда относят неудавшийся проект Японии (http://ru.wikipedia.org/wiki/Компьютеры_пятого_поколения). Другие источники относят к пятому поколению вычислительных машин так называемые невидимые компьютеры (микроконтроллеры, встраиваемые в бытовую технику, машины и др.) или карманные компьютеры. Также существует мнение, что к пятому поколению следует относить компьютеры с двухядерными процессорами. С этой точки зрения пятое поколение началось примерно с 2005 года. 12 Типы компьютеров Существующие в настоящее время типы компьютеров очень многочисленны и разнообразны; они различаются размерами, стоимостью, вычислительной мощью и назначением. Наиболее распространенным типом компьютеров являются персональные компьютеры, широко используемые как дома, так и в учебных заведениях, офисах всевозможных компаний. Настольные компьютеры — наиболее популярная форма персональных компьютеров. У настольного компьютера имеются устройства для обработки и хранения данных, дисплей и звуковые выходные устройства, а также клавиатура, располагающаяся на рабочем столе. Устройствами для хранения данных являются жесткие диски, CD-ROM и дискеты. Портативным компьютером {ноутбуком) называется компактная версия персонального компьютера, в которой все компоненты размещаются в одном блоке, имеющем размер небольшого тонкого портфеля. Рабочие станции с графическими входными и выходными устройствами, характеризующиеся высокой разрешающей способностью и имеющие размер настольных компьютеров, обладают значительно большей вычислительной мощью, нежели персональные компьютеры. Они часто используются при выполнении инженерных расчетов, в первую очередь для решения задач автоматизированного проектирования. Наряду с рабочими станциями существует еще целый спектр больших и очень мощных компьютерных систем — от корпоративных серверов и серверов, находящихся в нижней части этого спектра, до суперкомпьютеров, относящихся к его вершине. Корпоративные серверы и мэйнфреймы используются для обработки деловых данных в средних и крупных корпорациях, которым необходимы значительно большая вычислительная мощь и емкость запоминающих устройств, чем могут обеспечить рабочие станции. Серверы содержат устройства для хранения баз данных и могут обрабатывать большое количество запросов. Они широко используются в сфере образования, в бизнесе и различных некоммерческих организациях. Запросы к серверам и их ответы часто транспортируются с помощью коммуникационных средств Интернета. В настоящее время всемирная сеть и связанные с ней серверы являются основным источником всех типов информации мирового уровня. Коммуникационные средства Интернета представляют собой сложный комплекс высокоскоростных оптоволоконных магистральных линий, к которым с помощью телевизионных кабелей и телефонных линий подсоединяются учебные заведения, всевозможные компании и организации, а также дома и квартиры индивидуальных пользователей. Суперкомпьютеры предназначены для проведения крупномасштабных числовых вычислений, необходимых таким приложениям, как, скажем, метеорологические системы или системы для конструирования самолетов и 13 имитационного моделирования. Функциональные блоки (в том числе процессорные комплексы) корпоративных систем, серверов и суперкомпьютеров могут состоять из множества отдельных и часто очень больших устройств. 14 1. Информационно-логические основы ЭВМ. Представление информации в ЭВМ. H=logeN – К двоичной системе счисления формула Шеннона. Существуют разные способы оценки количества информации. Классическим является подход который использует формулу Шеннона. H – Количество информации, несущей представление о состоянии в котором находиться объект. N – Количество равновероятных/альтернативных состояний объекта Любая информация обрабатываемая в ЭВМ должна быть представлена двоичными цифрами: 0/1. Различные виды информации (Числа, текст, графика, звук) имеют свои правила кодирования. Коды отдельных значений, относящиеся к различным видам информации, могут совпадать, поэтому расшифровка данных осуществляется по контексту при выполнении команд программиста. Представление числовой информации  В ЭВМ используется 3 вида чисел Числа с фиксированной точкой Числа с плавающей точкой  Двоично-десятичное представление чисел У числа с фиксированной точкой в двоичном формате предполагается строго определённое место точки. Обычно это место определяется или перед ой 1 значащей цифрой числа, или после последней значащей цифры числа. ой Если точка фиксируется перед 1 значащей цифрой, это означает, что -n число по модулю < 1. Диапазон изменения чисел в этом случае: 2 < |A2| < 1-n 2 (1) Если точка фиксирована после последней значащей цифры, то это означает, что n-разрядные числа являются целыми. n Диапазон изменений: 0<|A2| < 2 – 1 (2) Перед самым старшим разрядом двоичного числа фиксируется его знак “+” -> 0; “-” -> 1; (другая форма представления чисел) Числа с плавающей точкой представляются в виде мантиссы (ma) и порядка (ра) Иначе такое представление называют в виде полулогарифма формы числа. А данном случае представление СС фиксировано. 15 3 Например, 10: 205 =0.205 * 10 Для двоичных также мантисса и порядок (основание -> 2) max r (для (2)) Pa =2 –1 ; r – число бит отведённое на порядок (целое число) “+” и “-” значения порядка значительно усложняют обработку данных вещественных чисел. Поэтому во многих современных ЭВМ используется не max прямая Ра, а модифицированная, приведённая к интервалу: 0 < Pa < 2Pa Значение Ра называют – характеристикой числа. Обычно под модифицированный порядок выделяют 1 байт. Старший разряд характеристики отводится под знак числа, а 7 оставшихся обеспечивают изменение порядка в диапазоне: -64 < pa < 64 Мантисса представляется двоичным числом у которого точка -k фиксирована перед старшим разрядом (для (1)): 0< |ma| < 1 – 2 , то старший разряд мантиссы в числе с основанием N отличен от нуля. Такое число называется – нормализованным. Диапазон представления нормализованных чисел с плавающей точкой: -1 -(2k-1) -k ( r - 1) 2 *2 <|A2| (1-2 ) * 2 2 В двоично-десятичной форме. С включением в состав различных ЭВМ специальных функциональных блоков или специальных процессоров десятичной арифметики появляется возможность обрабатывать десятичные числа напрямую (без преобразования). Например: 2,2,0,4,4,1 = 0010, 0010, 0000, 0100, 0100, 0001. Каждая цифра десятичного числа представляется двоичной. Положение десятичной точки отделяет целую часть от дробной, обычно заранее фиксированное значение знака числа отличается кодом, отличным от кода цифр. Например: “+” -> 1100 ; “-” -> 1101. Арифметические основы ЭВМ. Выполнение любой операции в ВМ основано на использовании простейших микроопераций. Это позволяет иметь единое арифметикологическое устройство (АЛУ) для выполнения любых операций, связанных с обработкой информации. Во всех ЭВМ без исключения все операции выполняются над числами представленными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел, также, как и значащие разряды, а также заменять вычитание – сложением 16 Таблица 1 А,В P ai bi 1 1 1 1 i-1 1 1 1 1 1 1 1 1 Разряд суммы Si 1 1 1 1 Перенос в след. Разряд Рi 1 1 1 1 .Различают прямой, обратный и дополнительный код машинных чисел. ПРЯМОЙ КОД образуется из абсолютных значений этого числа и кода знака, перед его старшим разрядом. Например: 1010 = 10102 = 01010пк – 1515 = 11112 = 11111пк  ОБРАТНЫЙ КОД образуется по следующим правилам: Обратный код положительных чисел совпадает с их прямым кодом 1010 = 10102 = 01010ок  Обратный код отрицательного числа содержит 1 в знаковом разряде, а значащие разряды числа заменяются на инверстные -1510 = - 11112 = 10000ок Свойства обратного кода: 1. Сложение положительного числа с его отрицательным значением даёт “машинную единицу” состоящую из 1 в знаковом и значащем разрядах. 2. Ноль имеет двойное значение: а) положительным числом, когда все “0” б) отрицательным числом, что совпадает и машинной “1” ДОПОЛНИТЕЛЬНЫЙ КОД положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммы обратного кода числа с единицей младшего разряда. А10 = +19; A2 = +10011; A2[п] = A2[ок] = А2[дк] = 010011; А10 = -19; A2 = -10011; A2[ок] = 101100; А2[дк] = A2[ок] +2 =101101 Свойства дополнительного кода: 17 Сложение дополнительного кода положительного числа с его отрицательным значением, даёт “машинную единицу” дополнительного кода. Дополнительный код называется так, потому что представление отрицательных чисел является дополнением прямого кода чисел до “машинной единицы” (максимального числа) Модифицированный обратный и дополнительный коды двоичных чисел отличаются от простых кодов удвоенным значением разрядов. Знак “+” кодируется двумя нулевыми знаковыми разрядами , а “-” двумя единичными. Целью введения модифицированных кодов является фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышают максимально возможный результат в отведённой разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значения знаковых разрядов “01” свидетельствует о положительном переполнении разрядной сетки, а “10” об отрицательном переполнении. В настоящее время, почти во всех моделях ЭВМ роль удвоенных разрядов для фиксации переполнения разрядной сетки убирают переносы идущие в знаковый разряд и из него. Арифметические операции над числами с фиксированной точкой. “+” /“-”: Операция “-” приводится к операции “+” путём преобразования чисел в обратный или дополнительный код. Сложение двоичных чисел осуществляется последовательно и по разрядам. При выполнении сложения цифр необходимо соблюдать следующие правила: 1. Слагаемые должны иметь одинаковое число разрядов. 2. Знаковые разряды чисел участвуют в сложении также как и значащие. 3. Необходимое преобразование кодов производится с изменением знаков чисел. Приписанные незначащие нули изменяют свои значения, при преобразовании по общему правилу. 4. При образовании единицы переноса из старшего знакового разряда в случае использования обратного кода ->1 “+” с младшим числом разрядов. При использовании дополнительного кода -> 1 “+” переноса теряется. Знак результата формируется автоматически. Результат представляется в том же коде, что и слагаемое. Умножение двоичных чисел наиболее просто реализуется в прямом коде. Операция деления как и в десятичной арифметике является обратной. Деление производится также как и в десятичной системе. 18 Арифметические операции над числами с плавающей точкой. В современных ЭВМ числа с плавающей точкой хранятся в памяти машины, имея мантиссу и порядок в прямом коде и нормализованном виде. При этом порядки и мантиссы обрабатываются раздельно. Операция “+”, “-” производится в следующей последовательности: 1. Сравниваются порядки исходных чисел путём их вычитания. При выполнении этой операции определяется одинаковый ли порядок, имеют исходные слагаемые. Если разность порядков = 0, то это означает, что одноимённые разряды мантисс имеют одинаковый вес. Иначе необходимо произвести выравнивание порядков. Для выравнивания порядка, число с наименьшим порядком сдвигается вправо на разницу порядков. Младшие разряды при этом теряются. После выравнивания порядков, мантиссы можно складывать и вычитать по общим правилам. 2. Порядок результата берётся равным большему порядку. Если мантисса результата не нормализована, то осуществляется нормализация и коррекция значащего порядка. Умножение и деление Операции умножения и деления чисел с плавающей точкой, также требует действий над порядками и мантиссами. Эти операции выполняются по следующему алгоритму: 1. При умножении (делении) порядки положительные (отрицательные) так, как это делается над числами с фиксированной точкой; 2. Мантиссы “+” (“/”) 3. Знаки произведения (частного) формируются путём положительных знаковых разрядов сомножителей. Переносы из знакового разряда при этом игнорируются Арифметические операции над двоично-десятичными числами. Действия над десятично-двоичными числами также приводятся к операции алгебры сложения отдельных цифр чисел представленных дополнительными кодами. Один из алгоритмов сложения: 1. Сложение двоично-десятичных чисел начинается с младших цифр и производится с учётом возникающих переносов из младших разрядов в старшие; 2. Знак суммы формируется специальной логической схемой по знаку большего слагаемого; 3. Для того чтобы при сложении двоично-десятичных цифр возникали переносы, аналогично переносам чисел в десятичном представлении необходимо проводить “десятичную коррекцию” 19 Логические основы ЭВМ Вся информация в ЭВМ записана в двоичной системе счисления. X1 Y1 Допустим, есть некоторое устройство ЭВМ (какой-то из X2 Y2 Блок ЭВМ блоков). Поставим в соответствии входному сигналу Xn Ym соответствующее значение Xi; i=1….n j=1...m Выходной сигнал – Yi. В этом случае алгоритм работы любого устройства можно описать зависимостями: Yi = f(x1;x2;…;xn); j=1; т.к. X принадлежит {0;1}, Y {0;1}, то функция принимает всего два значения (Булова алгебра). Такая зависимость называется – булевой функцией у которой возможное число состояний каждой независимой переменной =2 т.е. она является функцией алгебры логики. Алгебра логики устанавливает основные законы формирования логических функций. Она позволяет представить любую сложную функцию. В виде композиции простейших функций. Известно, что количество всевозможных функций N от n 2n аргументов выражается зависимостью N=2 . При n=0 можно определить 2 функции зависящие от каких либо переменных Y=0/Y=1. Технической интерпретацией Y=1 может быть генератор импульсов. Функции Y=0 – отключённая схема от которой не поступают сигналы. При n=1, N=4 (Таблицы истинности для функции одной переменной) x 1 Y Y0 Y1 1 Y2 Y3 1 1 1 Y2 = X –Повторитель Y3 = X0X – Инвертор Если n=2, N=16 По таблице истинности не трудно составить аналитическое выражение для каждой функции. Для этого наборы переменных на которых функция принимает значение 1 записываются как конъюнкция (логическое умножение) и связывается знаками дизъюнкции (логическое сложение). Также формы функций называют дизъюнктивными нормальными формами. Если в этих функциях конъюнкция содержит все значения в прямом/инверсном значении то такая форма функции называется совершенной. 20 yi x1;x2 y4 1 1 1 y5 1 y6 1 y7 1 1 1 y8 1 1 0,0 0,1 1,0 1,1 _ _ y4 = x1x2 V x1x2 V x1x2 = x1 V x2 y5 - “Стрелка Пирса” y6 - конъюнкция y7 - отрицательная конъюнкция y8 – логическая равнозначность y9 – исключающее “или” y8 и y9 – основа для построения сумматоров y9 1 1 Из перечисленных функций 2ух переменных можно строить сколь угодно сложные зависимости, отражающие алгебраические преобразования информации, представленные в двоичной системе счисления. Алгебра логики устанавливает правила формирования логического полного базиса функций, из которого могут строиться любые более сложные. Наиболее привычным базисом является следующий набор функций: инверсия, дизъюнкция и конъюнкция. Законы алгебры логики: Если: xV1=1; x*0=0; xVx=1; x*x=0; xV0=x; x*1=x; 1. Закон коммутативный: x1*x2 = x2+x1 2. Закон ассоциативный: (x1*x2)x3=(x1*x3)*x2=x1*(x2*x3) 3. Закон дистрибутивный: x1(x2Vx3)=x1*x2Vx1x3 x1Vx2x3=(x1Vx2) (x1Vx3) 4. Закон поглощения: в дизъюнктивной форме конъюнкция меньшего ранга поглощает все конъюнкции большего ранга: x1Vx1x2=x1; x1(x1Vx2)=x1 _ 5. Закон склеивания: любая функция умноженная на x и x превращается в ту же функцию: _ _ _ FxVFx=F; (FVx)(FVx)=F 6. Закон свёртки: xVxF=xVF; x(xVF)=xF _ _ 7. Правило де Моргана: x1Vx2=x1x2; x1x2=x1Vx2 21 Техническая интерпретация логических функций. По логическим выражениям проектируются схемы ЭВМ. При этом следует придерживаться следующей последовательности действий: 1. Словесное описание работы схемы; 2. Формальное описание работы схемы (таблица истинности, таблица Карно); 3. Запись логических функций в нормально-дизъюнктивной (конъюнктивной) совершенной нормализованной форме по таблице истинности; 4. Представление полученных выражений в выбранном, логически полном базисе элементарных функций; 5. Построение схемы устройств. 6. Проверка работоспособности полученной схемы. 22 2. Функциональная организация компьютеров. Машина Тьюринга Основы построения электронных вычислительных машин в их современном понимании были заложены в 30-е – 40-е годы прошлого века видными учеными: английским математиком Аланом Тьюрингом и американцем венгерского происхождения Джоном (Яношом) Нейманом. В 1936 году А. Тьюринг сформулировал понятие абстрактной вычислительной машины. Одновременно с ним, хотя и не в столь явной форме, это же сделал Э. Пост (США). Хотя машина Тьюринга (МТ) не стала реально существующим устройством, она до настоящего времени постоянно используется в качестве основной модели для выяснения сущности таких понятий, как “вычислительный процесс”, “алгоритм”, а также для выяснения связи между алгоритмом и вычислительными машинами. Основные положения машины Тьюринга 1. Машина Тьюринга (рис.1.1) имеет конечное число знаков si, образующих внешний алфавит, в котором кодируются сведения, подаваемые в МТ, а также вырабатываемые в ней. Среди знаков имеется пустой знак (s1), посылка которого в какую-либо ячейку стирает находившийся в ней знак и оставляет ее пустой. В зависимости от поданной начальной информации  (содержащихся на ленте знаков) возможны два случая: после конечного числа тактов машина останавливается (имея информацию ), подавая сигнал об остановке. В этом случае МТ применима к информации  и перерабатывает ее в информацию ; остановка никогда не наступает. В этом случае МТ не применима к начальной информации . Внешняя память si1 si2 in s(t) P(t+1) q(t) Логический блок s(t+1) Q (внутренняя память) Схема управления сдвигом просмотра q(t+1) Структура машины Тьюринга 23 2. В каждый момент обозревается лишь одна ячейка ленты (памяти). Переход может осуществляться лишь к соседней ячейке (R – вправо, L – влево, N – нет перехода (остаться)). Переход к произвольной ячейке производится путем последовательного перебора всех ячеек, разделяющих текущую и необходимую ячейки. На каждом отдельном такте команда предписывает только замену единственного знака si, хранящегося в обозреваемой ячейке, каким-либо другим знаком sj. 3. Логический блок МТ имеет конечное число состояний {qi} i=1…m. Знаки R, L, N, q1,…,qm – внутренний алфавит машины. Переработанный знак sj и операция перехода P(t+1) являются функцией si и qk : si(t+1)=f(si (t), qk). P(t+1)= (si(t), qk) Программа для МТ определяется тройкой {si,P,q}t+1. Пример вычисления логической функции y=x y Состоян Симв ие ол (si) q1 q2 q3 q4 0Rq2 0Nq4 1Nq4 0Nq4 1 1Rq3 1Nq4 0Nq4 1Nq4 Перед началом работы машина Тьюринга находится в состоянии q1 считывания первого операнда. Данная МТ применима к исходной информации. Останов – состояние q4. Значение si в ячейке y не меняется (сохраняется результат). Если программа для МТ будет определена таблицей переходов Симв ол (si) 1 Состоян ие q1 0Rq2 1Rq3 q2 0Nq4 1Nq4 q3 1Nq4 0Nq4 q4 1Nq4 0Nq4 то данная МТ будет не применима к исходной информации. В состоянии q4 значение si в ячейке y постоянно меняется на противоположное. Автомат Неймана По принципу обработки информации вычислительное устройство, предложенное Нейманом (автомат Неймана – АН), существенно отличается от машины Тьюринга. 24 Важная особенность машины Тьюринга – преобразование информации на каждом такте происходит лишь в одной ячейке, остальные дожидаются посещения головки, хотя часто имеется возможность работать параллельно. Простейшее решение – использование нескольких машин Тьюринга с общей для них внешней памятью (лентой) – не всегда допустимо из-за возможных конфликтов при обращении к одной и той же ячейке памяти. В автомате Неймана число одновременно обрабатываемых ячеек может неограниченно расти, оставаясь в каждый момент конечным. Элемент Неймана (ЭН) – это устройство, которое на каждом такте пребывает в одном из конечного числа состояний ri  R, образующих его алфавит. ЭН имеет два входных канала: левый и правый; по каждому из них на такте t также поступает по одному состоянию из R (рис.). rm ri rj Элемент Неймана Элемент реализует функцию zt+1 = (ri, rj, rm)t, то есть в такте t+1 переходит в состояние z. Состояние называется спокойным, если выполняется условие (r, r, r) = r, то есть ЭН, пребывающий в состоянии покоя, может быть выведен из него только при условии, что хотя бы по одному каналу поступает возбуждающее состояние. Впредь полагается, что среди R существует специально выделенное состояние покоя Ф. Состояния ЭН в момент времени t определяют конфигурацию АН (рис) в момент t: K(t). ri rj rm Структура автомата Неймана Функционирование АН – это переход от состояния К(t) к состояниям K(t+1), K(t+2), … За один такт состояние может менять большое число ЭН, что фактически приводит к параллельной обработке информации. Принципы построения современных ЭВМ В каждой области науки и техники существуют некоторые фундаментальные идеи или принципы, которые определяют ее содержание и развитие. В компьютерной науке роль таких фундаментальных идей сыграли принципы, сформулированные независимо друг от друга двумя 25 учеными - американским математиком и физиком Джоном фон Нейманом и советским инженером и ученым Сергеем Лебедевым. Сущность этих принципов состояла в следующем: 1. Двоичная система счисления - компьютеры на электронных элементах должны работать не в десятичной, а в двоичной системе счисления; 2. Принцип программного управления и хранимой в памяти программы - программа должна размещаться в одном из блоков компьютера - в запоминающем устройстве (первоначально программа задавалась путем установки перемычек на коммутационной панели); Это обстоятельство приводит к следующим важным последствиям: a) промежуточные результаты вычислений, константы и другие числа могут размещаться в том же ЗУ, что и программа; b) числовая форма записи программы позволяет машине производить операции над величинами, которыми закодированы команды программы. 3. Программа, так же как и данные, числа, с которыми оперирует компьютер, записываются в двоичном коде, то есть по форме представления команды и числа однотипны и хранятся в одной и той же области памяти; 4. Трудности физической реализации запоминающего устройства большого быстродействия и большой памяти требуют иерархической организации памяти, а доступ к командам осуществляется по адресу (принцип адресности); и данным 5. Арифметическое устройство компьютера конструируется на основе схем, выполняющих операцию сложения. 6. В компьютере используется параллельный принцип организации вычислительного процесса (операции над двоичными кодами осуществляются одновременно над всеми разрядами). Самой важной отличительной чертой модели фон Неймана был и остается принцип единой линейной памяти, которая адресуется последовательными адресами и в которой команды неотличимы от данных. 26 3. Структурная организация классической ЭВМ Основные функции компьютера заключаются в обработке, хранении и передаче информации. Поэтому функциональная структура ЭВМ состоит из процессора (центральное процессорное устройство - ЦПУ), памяти, устройств ввода-вывода и подсистем управления и связи между всеми отдельными модулями ЭВМ (интерфейсы). ЦПУ И Н Т Е Р Ф Е Й С ВП Устройство Управления троллер кон АЛУ Уст-ва Ввода Кэш РОН контр (сверхБ/Д память) Уст-ва Вывода контр ОП Кэш СИСТЕМНЫЙ ИНТЕРФЕЙС Рисунок 1 - Структура ЭВМ Центральное процессорное устройство – мозг компьютера, его задача выполнять программы (выполнять алгоритм решения задачи, согласно программе вычислений). Процессор состоит из нескольких частей: Устройство Управления – отвечает за вызов команды из памяти, определение типа команды и реализацию микропрограммного исполнения команды; 27    Арифметико Логическое Устройство – выполняет все операции по обработке всех видов данных в том числе арифметические и логические операции;  Внутримашинный интерфейс (интерфейс) – осуществляет связь и регулирует трафик внутри процессора;  Блок регистров, регистровый файл – реализует сверхбыстродействующую память для хранения промежуточных результатов и некоторых команд управления.  В настоящее время все эти модули удается сделать в виде единой интегральной микросхемы – микропроцессора Все действия в ЭВМ выполняются под управлением сигналов, вырабатываемых устройством управления (УУ). Управляющие сигналы формируются на основе информации, содержащейся в выполняемой команде, и признаков результата, сформированных предыдущей командой (если выполняемая команда является, например, командой условного перехода). Устройство управления помимо сигналов, определяющих те или иные действия в различных блоках ЭВМ (например, вид операции в АЛУ или сигнал считывания из ПО), формирует также адреса ячеек, по которым производится обращение к памяти для считывания команды и Устройство управления формирует адрес команды, которая должна быть выполнена в данном цикле, и выдает управляющий сигнал на чтение содержимого соответствующей ячейки запоминающего устройства. Считанная команда передается в УУ. По информации, содержащейся в адресных полях команды, У формирует адреса операндов и управляющие сигналы для их чтения из ЗУ и передачи в арифметико-логическое устройство. После считывания операндов устройство управления по коду операции, содержащемуся в команде, выдает в АЛУ сигналы на выполнение операции. Полученный результат записывается в ЗУ по адресу приемника результата под управлением сигналов записи. Признаки результата (знак, наличие переполнения, признак нуля и так далее) поступают в устройство управления, где записываются в специальный регистр признаков. Эта информация может использоваться при выполнении следующих команд программы, например команд условного перехода. Устройства ввода обеспечивают считывание информации (исходных данных и программы решения задачи) с определенных носителей информации (клавиатур, перфолент, магнитных лент или дисков, датчиков управляемых объектов и т.п.) и ее представление в форме электрических сигналов. Устройства вывода представляют результаты обработки информации в форме, удобной для восприятия (индикаторы, печатающие устройства, графопостроители, экран дисплея и т.п.) 28 Память хранит информацию, передаваемую из других устройств, в том числе поступающую извне через устройство ввода. Память машины, обычно, состоит из двух частей: быстродействующей основной или оперативной памяти (ОП) и сравнительно медленной, но способной хранить большой объем информации внешней памяти (ВП). Непосредственно в вычислительном процессе участвует только ОП, только после окончания отдельных этапов обработки информации и переходе к следующей стадии вычислений из внешней памяти в ОП передается очередная порция информации. ОП обладает сложной иерархической структурой – несколько уровней КЭШ-памяти (более быстродействующей чем ОП, но меньшей по объему), сама ОП, интерфейсы памяти. Ячейки оперативной памяти нумеруются числами 0, 1, 2,......, называемыми адресом ячеек. Если необходимо записать в память слово, следует подать на шину адреса памяти сигналы соответствующие адресу нужной ячейки, и подать само слово на шину записи. Для того чтобы получить содержимое хранимого в ячейке слова, в память посылается адрес и она выдает по шине чтения копию слова. Центральный процессор взаимодействует с ОЗУ посредством 3-х шин: шина адреса, по которой передается адрес нужной ячейки памяти; шина чтения, предназначенная для передачи данных из выбранной ячейки в CPU; шина записи, предназначенная для передачи данных из CPU и записи их в выбранную ячейку памяти. Физический адрес памяти (есть еще логический, но об это позже), который процессор выдает на шину адреса всегда считается адресом байта. Такое представление памяти называется адресным пространством. Следовательно, с точки зрения процессора память имеет очень простую организацию, показанную ниже. Здесь ОЗУ содержит 4096 ячеек памяти, каждая из которых занимает по 20 разрядов (бит). Рисунок 2 - Структура памяти простейшего компьютера Из этих 20-ти разрядов 12 используются для представления адреса, а оставшиеся 8 (байт) – для хранения данных (понятно, что в этом случае шина данных должна иметь 8 линий, разрядов). Следовательно, объем памяти 29 (адресное пространство) этого ОЗУ равен 4096 * байт = 4096 байт = 4 Кбайт. Конечно этого очень мало для современного микропроцессора. В общем случае минимальный адрес равен 0, а максимальный N – 1, число N определяется разрядностью шины адреса (ширина, количество проводников N шины). Таким образом, адресное пространство равно 2 , например для процессора Pentium с N = 32 составляет 4 Гбайт. Если шина данных процессора имеет 16 или 32 линии, то за одно обращение к памяти можно передать два или четыре байта данных, что существенно увеличивает производительность процессора. В каждой области науки и техники существуют некоторые фундаментальные идеи или принципы, которые определяют ее содержание и развитие. В компьютерной науке роль таких фундаментальных идей сыграли принципы, сформулированные независимо друг от друга двумя гениями современной науки - американским математиком и физиком Джоном фон Нейманом и советским инженером и ученым Сергеем Лебедевым. Особенности современных ЭВМ Естественно, что бурное развитие новых технологий производства средств вычислительной техники привело к появлению целого ряда новшеств и особенностей. Эти отличительные особенности вычислительных машин, появившихся после EDVAC, сводятся к следующим: Индексные регистры. Позволяют формировать адреса памяти добавлением содержимого указанного регистра к содержимому поля команды. Этот принцип впервые реализован в 1949г. в ЭВМ Манчестерского университета и использован в 1953г. фирмой Electro Data Corporation при производстве ЭВМ Datatron. Регистры общего назначения. Благодаря этой группе регистров устраняется различие между индексными регистрами и аккумуляторами и в распоряжении пользователя оказывается не один, а несколько регистроваккумуляторов. Впервые это решение было применено, вероятно, в ЭВМ Pegasus фирмы Ferranti (1956г.). Представление данных в форме с плавающей точкой. Представление данных в виде мантиссы и порядка и выполнение операций над ними было реализовано в 1954г. в вычислительных машинах NORC и 704 фирмы IBM. Косвенная адресация. Средство позволяющее использовать команды, указывающие адреса, по которым в свою очередь находится информация о местоположении операндов команд. Принцип косвенной адресации был реализован в 1958г. в ЭВМ 709 фирмы IBM. Программные прерывания. При возникновении некоторого внешнего события состояние вычислительной системы, связанное с выполнением прерванной команды, запоминается в определенной области. Этот принцип впервые был применен в 1954г. в машине Univac1103. 30 ввод-вывод. Параллельно обычному выполнению Асинхронный команд независимые процессоры управляют операциями ввода-вывода. Первой ЭВМ с независимым процессором ввода-вывода являлась ЭВМ709 фирмы IBM (1958г.). Виртуальная память. Определение адресного пространства программы осуществляется без "привязки" к физическим областям памяти обычно с целью создания впечатления, что вычислительная система имеет больший объем основной памяти, чем тот, которым она фактически располагает. В 1959г. в вычислительной системе Atlas Манчестерского университета были реализованы принципы разделения памяти на страницы и динамическая трансляция адресов аппаратными средствами. Мультипроцессорная обработка. Два или более независимых процессора обрабатывают потоки команд из общей памяти. Не ясно, кто был первооткрывателем такого способа обработки, однако, в конце 50-х начале 60-х годов, он был реализован в вычислительных машинах Sage фирмы IBM, Sperri-Univac LARC и D825 фирмы Burroughs. Существенное противоречие между высокой скоростью обработки данных в процессоре и низкой скоростью работы устройств ввода/вывода потребовало высвобождения ЦПУ от функций передачи информации и предоставления этих функций специальным устройствам – контроллерам и интерфейсам. 31 4. Модели памяти Размещение байтов слова в памяти Во всех компьютерах память разделена на ячейки, которые имеют последовательные адреса. В настоящее время наиболее распространенный размер ячейки — 8 бит, но раньше использовались ячейки от 1 до 60 бит. Ячейка из 8 бит называется байтом. Причиной применения именно 8-разрядных ячеек памяти является ASCII-символ, который занимает 7 бит, а вместе с битом четности — 8. Если в будущем будет доминировать кодировка UNICODE, то 4 ячейки памяти, возможно, станут 16-разрядными. Вообще говоря, число 2 3 лучше, чем 2 , поскольку 4 — степень двойки, а 3 — нет. Байты обычно группируются в 4-байтные (32-разрядные) или 8-байтные (64-разрядные) слова с командами манипулирования целыми словами. Порядок байтов в информатике — метод записи байтов многобайтовых чисел. В общем случае, когда нужно компактно записать число, большее 255 необходимо использовать несколько байтов. Число M факторизуется по основанию 256: n K  ai  256 a0  256  a1 2561  a2  2562  an  256n i i 0 Набор чисел a0 , a1 , , an и является последовательностью байтов для записи. На практике используется три основных варианты записи Порядок от младшего к старшему (little-endian): a0 , a1 , , an , запись начинается с младшего и заканчивается старшим. Этот порядок записи принят в памяти персональных компьютеров с x86-процессорами, в связи с чем, иногда, его называют интеловский порядок байтов (по названию фирмы-создателя архитектуры x86). Порядок от старшего к младшему (big-endian): an , an 1 , , a0 , запись начинается со старшего и заканчивается младшим. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому, порядок байтов от старшего к младшему часто называют сетевым порядком байтов (network byte order). Этот порядок байтов используется процессорами IBM 360/370/390, Motorola 68000, SPARC (отсюда третье название — порядок байтов Motorola, Motorola byte order). Порядок байтов от старшего к младшему применяется в многих форматах файлов — например, PNG. Многие процессоры могут работать и в порядке от младшего к старшему, и в обратном, например, ARM, PowerPC (но не PowerPC 970), DEC Alpha, MIPS, PA-RISC и IA-64. Обычно порядок байтов выбирается программно во время инициализации операционной системы, но может быть 32 выбран и аппаратно перемычками на материнской плате. В этом случае правильнее говорить о порядке байтов операционной системы. Переключаемый порядок байтов иногда называют bi-endian. Смешанный порядок байтов (middle-endian) иногда используется при работе с числами, длина которых превышает машинное слово. Производится факторизация числа на машинные слова, которые записываются в формате, естественном для данной архитектуры, но сами слова записываются в обратном порядке. Классический пример middle-endian — представление 4-байтных целых чисел на 16-битных процессорах семейства PDP-11 (известен как PDPendian). Для представления двухбайтных значений (слов) использовался порядок little-endian, но 4-хбайтное двойное слово записывалось от старшего слова к младшему. В процессорах VAX и ARM используется смешанное представление для длинных вещественных чисел. Рис. 1. Размещение байтов слова в памяти Big-endian и Little-endian ЭВМ Пример Далее приведён пример, в котором описывается размещение 4байтового числа в ОЗУ ЭВМ, доступ к которому может производиться как к 32-разрядному слову, так и побайтно. Все числа записаны в 16-тиричной системе счисления. Число: 0xA1B2C3D4 Факторизация: D4*0x01 + C3*0x100 + B2*0x10000 + A1*0x1000000 Порядок от младшего к старшему (little-endian): 0xD4, 0xC3, 0xB2, 0xA1 Порядок от старшего к младшему (big-endian): 0xA1, 0xB2, 0xC3, 0xD4 Порядок, принятый в PDP-11 (PDP-endian): 0xB2, 0xA1, 0xD4, 0xC3 Достоинства и недостатки Существенным достоинством little-endian по сравнению с big-endian порядком записи считается возможность «неявной типизации» целых чисел при чтении меньшего объёма байт (при условии, что читаемое число помещается в диапазон). Так, если в ячейке памяти содержится число 0x00000022, то прочитав его как int16 (два байта) мы получим число 0x0022, прочитав один байт — число 0x22. Обратно, считается что у little-endian, по сравнению с big-endian есть «неочевидность» значения байтов памяти при отладке (последовательность байтов (33, 44, 55, 12) на самом деле значит 0x12554433, для big-endian эта последовательность (33, 44, 55, 12) читалась бы «естественным» для 33 арабской записи чисел образом: 0x33445512). Наименее удобным в работе считается middle-endian формат записи; он сохранился только на старых платформах. Для записи длинных чисел (чисел, длина которых существенно превышает разрядность машины) обычно предпочтительнее порядок слов в числе little-endian (поскольку арифметические операции над длинными числами производятся с конца). Порядок байтов в слове — обычный для данной архитектуры. Запись многобайтового числа из памяти компьютера в файл или передача по сети требует соблюдения соглашений о том, какой из байтов является старшим, а какой младшим. Прямая запись ячеек памяти приводит к возможным проблемам при переносе приложения с платформы на платформу. Пример кода, работающего правильно на процессорах Intel , и дающего не правильный результат на Macintosh. int i = 0x0901; char *ptr = (char *)&i; printf("\nLow byte is %d; next byte is %d.", *ptr, *(ptr+1)); Порядок байтов в конкретной машине можно определить с помощью программы на языке Си (testendian.c): #include unsigned short x = 1; /* 0x0001 */ int main(void) { printf("%s\n", *((unsigned char *) &x) == 0 ? "big-endian" : "littleendian"); return 0; } Вывод данной программы осмыслен только на платформах, где размер типа unsigned short больше, чем размер типа unsigned char. Это заведомо верно на подавляющем большинстве компьютеров, так как они имеют 8-разрядный байт. Однако существуют и аппаратные платформы с 32-разрядным байтом. Для преобразования между сетевым порядком байтов (network byte order), который всегда big-endian, и порядком байтов, использующимся на машине (host byte order), стандарт POSIX предусматривает функции htonl(), htons(), ntohl(), ntohs(): uint32_t htonl(uint32_t hostlong); — конвертирует из текущего порядка байтов в  сетевой 32-битную беззнаковую величину;  uint16_t htons(uint16_t hostshort); — конвертирует из текущего порядка байтов  в сетевой 16-битную беззнаковую величину;  uint32_t ntohl(uint32_t netlong); — конвертирует из сетевого порядка байтов в  текущий 32-битную беззнаковую величину;  uint16_t ntohs(uint16_t netshort); — конвертирует из сетевого порядка байтов в текущий 16-битную беззнаковую величину. 34 В случае совпадения текущего порядка байтов и сетевого, функции могут быть «пустыми» (то есть, не менять порядка байтов). Стандарт также допускает, чтобы эти функции были реализованы макросами. Выравнивание Многие архитектуры требуют, чтобы слова были выровнены в своих естественных границах. Объект длиной s байт, находящийся по адресу байта A выровнен, если A mods =0. Так, 4-байтное слово может начинаться с адреса 0, 4, 8 и т. д., но не с адреса 1 или 2. Точно так же слово из 8 байт может начинаться с адреса 0, 8 или 16, но не с адреса 4 или 6. Механизм размещения 8-байтных слов в памяти иллюстрирует рис. 5.2. Выравнивание адресов требуется довольно часто, поскольку при этом память работает наиболее эффективно. Например, процессор Pentium 4, который вызывает из памяти по 8 байт за обращение, использует 36-разрядные физические адреса, но содержит только 33 адресных бита. Следовательно, Pentium 4 даже не сможет обратиться к невыровненной памяти, поскольку младшие 3 бита явным образом не определены. Эти биты всегда равны 0, и все адреса памяти кратны значению 8 байт. Однако требование относительно выравнивания адресов иногда вызывает некоторые проблемы. В процессоре Pentium 4 программы могут обращаться к словам, начиная с любого адреса, — это качество восходит к модели 8088 с шиной данных шириной 1 байт, в которой не требовалось, чтобы ячейки располагались в 8-байтных границах. Если программа в процессоре Pentium 4 считывает 4-байтное слово с адреса 7, аппаратное обеспечение должно сделать одно обращение к памяти, чтобы вызвать байты с 0 по 7, а второе — чтобы вызвать байты с 8 по 15. Затем центральный процессор извлекает требуемые 4 байта из 16, считанных из памяти, и компонует их в нужном порядке, чтобы сформировать 4-байтное слово. Рис. 2. Расположение слова из 8 байт в памяти: (а) - выровненное слово; (б) - невыровненное слово. 35 Большинство машин имеют единое линейное адресное пространство, которое простирается от адреса 0 до какого-то максимума, обычно 232 или 264 байт. В некоторых машинах содержатся раздельные адресные пространства для команд и данных, так что при вызове команды с адресом 8 и вызове данных с адресом 8 происходит обращение к разным адресным пространствам. Такая система гораздо сложнее, чем единое адресное пространство, но зато она имеет два преимущества. Во-первых, все с теми же 32-разрядными адресами появляется возможность иметь 232 байт для программ и дополнительные 232 байт для данных. Во-вторых, поскольку запись всегда автоматически происходит только в пространство данных, случайная перезапись программы становится невозможной, и, следовательно, устраняется один из источников программных ошибок. Отметим, что раздельные адресные пространства для команд и для данных — это не то же самое, что разделенная кэш-память первого уровня. В первом случае все адресное пространство целиком дублируется, и считывание из любого адреса вызывает разные результаты в зависимости от того, что именно считывается: слово данных или команда. При разделенной кэш-памяти существует только одно адресное пространство, просто в разных блоках кэш-памяти хранятся разные части этого пространства. Семантика памяти Еще один аспект модели памяти — семантика памяти. Естественно ожидать, что команда LOAD, если она выполняется после команды STORE, обратится к тому же адресу и возвратит только что сохраненное значение. Однако во многих машинах микрокоманды переупорядочиваются. Таким образом, существует реальная опасность, что память будет работать не так, как ожидается. Ситуация усложняется при наличии мультипроцессора, когда каждый процессор посылает в общую память поток запросов на чтение и запись, и эти запросы тоже могут быть переупорядочены. Системные разработчики могут применять один из нескольких подходов решения этой проблемы. С одной стороны, все запросы к памяти могут быть упорядочены таким образом, чтобы каждый из них завершался до того, как начнется следующий. Такая стратегия отрицательно сказывается на производительности, но зато дает простейшую семантику памяти (все операции выполняются строго в том порядке, в котором они расположены в программе). С другой стороны, можно вообще не давать никаких гарантий относительно упорядоченности запросов к памяти, а чтобы добиться такой упорядоченности, программа выполняет команду SYNC, которая блокирует запуск всех новых операций с памятью до тех пор, пока не завершатся предыдущие. Эта идея весьма затрудняет работу создателей компиляторов, поскольку им приходится тщательно разбираться в том, как работает соответствующая микроархитектура, но зато разработчикам аппаратного обеспечения предоставлена полная свобода в плане оптимизации 36 использования памяти. Возможны также промежуточные модели памяти, в которых аппаратное обеспечение автоматически блокирует запуск определенных операций с памятью (например, тех, которые связаны с RAWи WAR-взаимозависимостями), при этом запуск всех других операций не блокируется. Хотя реализация этих возможностей на уровне архитектуры набора команд довольно утомительна (по крайней мере, для создателей компиляторов и программистов на языке ассемблера), сейчас заметна тенденция к преобладанию подобного подхода. Данная тенденция вызвана к жизни такими разработками, как механизмы переупорядочения микрокоманд, конвейеры, многоуровневая кэш-память и т. д. 37 5. Архитектура системы команд. Системой команд ЭВМ называют полный перечень команд который данная ЭВМ способна выполнить. Архитектура системы команд – те свойства ВМ которые видны и доступны программисту. Для реализации вычислений наиболее эффективным образом важнейшую роль играет правильный выбор архитектуры системы команд. Общая характеристика архитектуры системы команд ВМ складывается из ответов на следующие вопросы: 1. Какого вида данные будут представлены в ВМ и в какой форме; 2. Где эти данные смогут храниться помимо основной памяти; 3. Каким образом будет осуществляться доступ к данным; 4. Какие операции могут быть выполнены над данными; 5. Сколько операндов могут присутствовать в команде; 6. Как будет определяться адрес очередной команды; 7. Каким образом будут закодированы команды; Классификация архитектуры системы команд Архитектуры системы команд Первая аккумуляторная архитектура (EDSAC 1950) Стековая архитектура (B5500,B5600,19631966) Регистровая архитектура (IBM 360 1964) Архитектура с безонерандным набором команд ROSC (IGNITE, 2001) CISC (VAX, Intel 432, 1077-1986) Load/Store с выделенным доступом памяти (GrayI; CDC6600 1963-1976) RISC (Mips, Spare; IBM R56000 1987) VLIW (Itanium) конец 1990 архитектура с ком. словом сверхбольшой длины 38 Классификация по составу и сложности команд. Современные технологии программирования ориентируются на языки высокого уровня, главная цель которых облегчить процесс программирования. Переход к ЯВУ породил серьёзную проблему. Сложные операторы характерные для ЯВУ существенно отличаются от простых машинных операций, реализуемых в большинстве ВМ. Проблему эту называют семантическим разрывом, а её следствием является недостаточно эффективное выполнение программы на ВМ. Пытаясь преодолеть семантический разрыв разработчики в настоящее время выбирают один из трёх подходов и соответственно один из трёх типов архитектуры системы команд. 1 Архитектура с полным набором команд CISC (Complex instruction set computing) 2 Архитектура с сокращённым набором команд RISC (reduced instruction set computing) 3 Архитектура с командными словами сверх большой длины VLIM (Very Long Instruction Word) В ВМ типа CISC проблема семантического разрыва решается за счёт расширения системы команд; дополнения её сложными командами семантич. аналогичными операторов ЯВУ. Основоположником CISC архитектуры считается IBM которая начала применять данный подход на машинах IBM360. Аналогичный подход характерен и для компании Intel AMD. Для CISC архитектуры типично: 1. Наличие в процессоре сравнительно небольшого числа регистров общего назначения; 2. Большое количество машинных команд некоторые из которых аппаратно реализуют операторы ЯВУ; 3. Разнообразие способов адресации операндов; 4. Множество форматов команд различной разрядности; 5. Наличие команд, в которых обработка совмещена с доступом в памяти. Рассмотренный способ решения проблемы семантического разрыва приводит к усложнению аппаратуры, главным образом УУ, что в свою очередь отрицательно сказывается на производительности ВМ в целом. Процессор с сокращённым набором команд: термин RISC впервые был использован в 1980 году. Патерсеном и Гитцелем. Идея заключалась в ограничении списка команд ВМ наиболее часто используемых простейшими командами оперирующими данными размещёнными только в регистре процессора. Обращение к памяти допускается, лишь при помощи специальных команд чтения и записи. В результате резко падает количество форматов команд и способов указания адресов операндов, сокращено число 39 форматов команд, что позволило существенно упростить аппаратные свойства и увеличить быстродействие. Концепция VLIW базируется на RISC архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную и выполняются параллельно. В плане архитектуры системных команд, архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллемума вычислений. В результате этого архитектуру VLIW можно отнести к ВС, а не к ВМ Характеристика CISC RISC VLIW Длина команд Варьируется Единая Единая Расположение полей в команде Количество регистров Доступ к памяти Варьируется Неизменное Неизменное Много Много Сравнительно небольшое Выполняется как часть команды Специализированные команды Специализированные команды (8 регистров;12 режимов адресации; Операнды 42, 64, 80 Команды 1-12 байт) Классификация по способу хранения операндов. Количество команд и их сложность безусловно являются важнейшими факторами. Однако не меньшую роль при выборе архитектуры системных команд играет ответ на вопрос о том, где могут храниться операнды и результат операций и каким образом к ним осуществляется доступ. С этих позиций различают следующие виды архитектур системных команд (АСК) 1. Стековую 2. Аккумуляторную 3. Регистровую 4. Архитектуру с выделенным доступом к памяти Выбор типа архитектуры влияет на следующие принципиальные моменты: Сколько адресов будет содержать адресная часть команды   Какова будет длина этих адресов Насколько просто будет осуществить доступ к операндам Какой в конечном итоге будет длина команд Стековая архитектура Стек образует множество логических взаимосвязанных ячеек, действующих по принципу “последним вошёл – первым вышел” (LIFO). Верхнюю ячейку называют вершиной стека. Для работы со стеками 40 предусматривают 2 операции: push и pop. Push – запись данных в стек (проталкивание); Pop – чтение данных из стека (выталкивание). Запись возможна только в верхнюю ячейку стека. При этом вся хранимая в стеке информация предварительно проталкивается на первую позицию вниз. Чтение также допустимо только из вершины стека. Извлечённая информация удаляется из стека, а оставшееся содержимое продвигается вверх. В ВМ на базе стека операнды перед обработкой в верхние ячейки стека. Результат операции так же заносится в стек. (А+В)(С+D) – Е Для преобразований используем польскую нотацию, а затем алгоритм Дайкстра. Приоритеты операций: Алгоритм Дейкстры: Операция Приорите 1. Просматривается Uox строка; т 2. Операнды переписываются в вых. строку, ( а операции заносятся в стек на основе следующего ) 1 соображения. +\2  Если стек пуст, то операция из входной строки переписывается в стек *\/ 3  Операция выталкивает из стека все операции с **(степень 4 большим \ равным приоритетом в выходную ) строку. Если очередной символ из очередной строки “(”, то он проталкивается в  стек.  “)” выталкивает все операции до ближайшей открывающей скобки “(”. Сами скобки в выходную строку не переносятся, а уничтожают друг друга.     Достоинства стековой архитектуры Возможность сокращений адресной части команд, т.к. все операции производятся через вершину стека т.е. адреса операндов и результата в командах арифметической и логической обработки информации указывать не нужно; Код компактный  По определению архитектура не предполагает произвольного доступа к памяти из-за чего трудно создать компилятор генерирующий эффект программного кода. Хотя создание компиляторов упрощается  Аккумуляторная архитектура  Аккумуляторная архитектура исторически возникла одной из первых.  В ней для хранения одного из операндов арифметической / логической операции в процессоре имеется выделенный регистр – аккумулятор. В этот 41 же регистр заносится и результат операции т.к. адрес одного из операндов предопределён в командах обработки достаточно явно указать местоположение одного операнда. Изначально оба операнда хранятся в основной памяти и до выполнения операции один из них нужно загрузить в аккумулятор. После выполнения команды обработки результаты находятся в аккумуляторе и если он не является операндом для последующей команды, то его надо сохранить в ячейке памяти Для загрузки в аккумулятор содержание ячейки x предусмотрена команда загрузки load(x). По этой команде информация считывается из ячейки памяти x. Выход памяти подключается к входам аккумулятора и происходит занесение считанных данных в аккумулятор. Запись содержимого в ячейку x осуществляется командой сохранения store(x) Для выполнения операций в АЛУ производится считывание одного из операторов в регистр данных. Второй операнд находится в аккумуляторе. Выходы регистров данных и аккумулятор подключены к соответствующим входам АЛУ. По окончании предписанной операции результат с выхода АЛУ заносится в аккумулятор.    Достоинства аккумуляторной архитектуры Короткие команды;  Простота декодирования команд Недостатки аккумуляторной архитектуры  Наличие всего одного регистра порождает многократное обращение к основной памяти  Регистровая архитектура (преобладающая) В машинах данного типа процессор включает в себя массив регистров (регистровый файл) -> регистры общего назначения (РОН) Эти регистры в каком то смысле как явно управляемый КЭШ для хранения недавно использованных данных. Размер регистров обычно фиксирован и совпадает с длиной машинного слова. Размерность, обычно, совпадает с размером регистра или шины данных. К любому регистру можно обратиться указав его номер. Количество РОН в архитектуре CISC обычно невелико (8-32) и для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно держать до двух / трёх регистров. RISC архитектура предполагает использование существенно большего числа РОН (До нескольких сотен). Однако, типичная для таких ВМ длина команд, обычно 32 разряда, позволяет определить в команде до трех регистров. Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти и/или регистров. С учётом 42 возможных размещений операндов в рамках регистровых АСК выделим три подвида команд обработки: 1. Регистр-регистр (операнды только в регистрах в них же записывается операнд) 2. Регистр-память (Предполагается, что один из операндов в регистре, а другой в памяти, результат обычно записывается в какой-либо из них) 3. Память-память (оба операнда хранятся в основной памяти и туда же заносится результат) Вар-т Рег-рег Рег-пам Пам-пам Достоинства Простота реализации: фиксированная длина команд, простая модель формирования объектного кода при компиляции программы, возможность выполнения всех команд за одинаковое число тактов. Данные могут быть доступны без загрузки в регистры процессора; простота кодирования команд; компактный объектный код. Недостатки Большая длина объектного кода; из-за фиксированные длины команд Потеря одного из операндов при записывании результата. Длинное поле записи в адрес памяти сокращает место под номера регистров. Ограниченное общее число РОН; Время выполнения инструкции зависит от места размещения операнда. Компактность объектного Разнообразие форматов кода; малая потребность в команд и времени их регистрах для хранения использования; низкое промежуточных данных. быстродействие из-за обращения к памяти. Вариант регистр-регистр является основным в ВМ типа RISC и регистр-память – CISC; Память-память – неэффективно, но в использовании в наиболее сложных моделях CISC. Выполнение операций в АЛУ включает в себя: го 1. Выбор регистра 1 операнда; го 2. Определение расположения 2 операнда (память/регистр) 3. Подачу на вход АЛУ операндов и выполнение операции; 4. Выбор регистра результата и занесение в него результата операции из АЛУ. Между АЛУ и регистром файлов должны быть 3 шины; Плюсы регистровых архитектур: 43 1. Компактность получаемого кода; 2. Высокая скорость вычислений, за счёт замены обращений к основной памяти на обращение к быстрым регистрам. Минусы регистровых архитектур: 1. Требуются более длинные инструкции по сравнению с аккумуляторной архитектурой Архитектура с выделенным доступом к памяти. В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. В английской транскрипции данную архитектуру называют Load/Store architecture. Команда load (Загрузка) обеспечивает считывание значения из основной памяти и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и номер регистра). Пересылка информации в противоположном направлении производится командой store (сохранение). Операнды во всех командах обработки информации могут находиться только в регистрах процессора (чаще всего в регистрах общего назначения). Результат операции также заносится в регистр. В архитектуре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. Допускается наличие в АСК ограниченного числа команд, где операнд является частью кода команды. АСК с выделенным доступом к памяти характерна для всех вычислительных машин с RISC-архитектурой. Команды в таких ВМ, как правило, имеют длину 32 бита и трехадресный формат. К достоинствам АСК следует отнести простоту декодирования и исполнения команды. 44 6. Форматы команд Основные форматы команд Команда состоит из кода операции и некоторой дополнительной информации, позволяющей узнать, например, откуда поступают операнды и куда должны отправляться результаты. Процесс определения, где находятся операнды (то есть их адреса), называется адресацией. На рис. 5.6 показано несколько возможных форматов команд уровня архитектуры набора команд. Команды всегда содержат код операции. В команде могут присутствовать ни одного, один, два или три адреса. Код операции Код операции а) Код операции Адрес 1 Адрес б) Адрес 2 Код операции в) Адрес 1 Адрес 2 Адрес 3 г) Рис. 5.6. Четыре формата команд: безадресная команда (а); одноадресная команда (б); двухадресная команда (Б); трехадресная команда (г) В одних машинах все команды но длине одинаковы, в других могут быть разными. Кроме того, команды по длине могут быть короче слова, длиннее слова или быть равными слову. Если все команды одной длины, то это упрощает декодирование, но часто требует излишнего пространства, поскольку все команды должны быть такой же длины, как самая длинная. На рис. 5.7 показано несколько возможных соотношений между размерами команды и слова. Рис. 5.7. Некоторые возможные отношения между размерами команды и слова Критерии разработки форматов команд Если разработчикам нужно выбрать форматы команд для их машины, они должны принять во внимание ряд факторов. Нельзя недооценивать сложность этого решения. Если компьютер с коммерческой точки зрения получается удачным, набор команд может существовать на протяжении 20 лет и более. Имеет огромное значение возможность на протяжении 45 некоторого времени добавлять новые команды и другие элементы, но только в том случае, если архитектура (и компания, создавшая эту архитектуру) протянет достаточно долго. Эффективность конкретной архитектуры команд зависит от технологии, которая применялась при разработке компьютера. За длительный период времени эта технология значительно изменится, и некоторые характеристики архитектуры команд окажутся (если оглянуться лет на 20 назад) неудачными. Например, если доступ к памяти осуществляется быстро, то подойдет стековая архитектура (как в IJVM), но если доступ к памяти медленный, тогда желательно иметь множество регистров (как в UltraSPARC III). Тем читателям, которые считают, что выбор сделать просто, мы предлагаем взять лист бумаги и записать следующие предположения: + Какова будет типичная частота тактового генератора через 20 лет? + Каково будет типичное время доступа к ОЗУ через 20 лет? Даже дальновидные разработчики не всегда могут сделать правильный выбор. А если бы и смогли, то проработали бы недолго, поскольку если предлагаемая ими архитектура команд окажется дороже, чем у конкурентов, компания долго не продержится. Если речь идет об одинаковых машинах, то лучше иметь короткие команды, чем длинные. Программа, состоящая из п 16-разрядных команд, занимает в два раза меньше пространства памяти, чем программа из п 32разрядных. Поскольку цены на память постоянно падают, этот фактор не имел бы значения в будущем, но, к сожалению, программное обеспечение разрастается гораздо быстрее, чем снижаются цены. Более того, минимизация размера команд может усложнить их декодирование и перекрытие. Следовательно, стремление уменьшить размер команд должно уравновешиваться стремлением сократить время их декодирования и выполнения. Есть еще одна очень важная причина минимизации длины команд, и она становится все важнее с увеличением скорости работы процессоров: пропускная способность памяти (число битов в секунду, которое память может предоставлять). Значительное повышение быстродействия процессоров за последнее десятилетие не соответствует увеличению пропускной способности памяти. Ограничения здесь связаны с неспособностью системы памяти передавать команды и операнды с той же скоростью, с которой процессор может их обрабатывать. Пропускная способность памяти зависит от технологии разработки. Встречаемые на этом пути трудности имеют отношение не только к основной памяти, но и ко всем видам кэш-памяти. Если пропускная способность кэш-памяти команд составляет t бит/с, а средняя длина команды — г бит, то кэш-память способна передавать самое большее t/r команд в секунду. Отметим, что это — верхний предел скорости, с которой процессор может выполнять команды, хотя в настоящее время 46 предпринимаются попытки преодолеть данный барьер. Ясно, что скорость, с которой могут выполняться команды (то есть быстродействие процессора), может ограничиваться длиной команд. Чем короче команды, тем быстрее работает процессор. Поскольку современные процессоры способны выполнять несколько команд за один цикл, то вызов нескольких команд за цикл обязателен. Этот аспект применения кэш-памяти команд делает размер команд важным критерием, который нужно учитывать при разработке. Еще один критерий — достаточный объем пространства в формате команды для представления всех требуемых операндов. Машина, поддерживающая 2п операций и длину команды менее п бит, невозможна. В этом случае в коде операции было бы недостаточно места для того, чтобы указать, какая нужна команда. К тому же история снова и снова доказывает, что обязательно нужно оставлять большое количество свободных кодов операций для будущих дополнений набора команд. Третий критерий связан с числом битов в адресном поле. Рассмотрим проект машины с 8-разрядными символами и основной памятью, которая должна содержать 232 символов. Разработчики вольны были приписать последовательные адреса блокам по 8, 16, 24 или 32 бита. Представим, что бы случилось, если бы команда разработчиков разбилась на две воюющие группы, одна из которых утверждает, что основной единицей памяти должен быть 8-разрядный байт, а другая требует, чтобы основной единицей памяти было 32-разрядное слово. Первая группа предложила бы память из 232 байт с номерами 0, 1, 2, 3,4 294 967 295. Вторая группа предложила бы память из 230 слов с номерами 0, 1, 2, 3, 1 073 741 823. Первая группа скажет, что для того, чтобы сравнить два символа при организации по 32-разрядным словам, программе приходится не только вызывать из памяти слова, содержащие эти символы, но и выделять соответствующий символ из каждого слова для сравнения. А это потребует дополнительных команд и, следовательно, дополнительного пространства. 8разрядная организация, напротив, обеспечивает адресацию каждого символа, что значительно упрощает процедуру сравнения. Сторонники 32-разрядной организации скажут, что их проект требует всего лишь 230 отдельных адресов, что дает длину адреса всего 30 бит, тогда как при 8-разрядной организации требуется целых 32 бита для обращения к той же самой памяти. Если адрес короткий, то и команда будет более короткой. Она займет меньше пространства в памяти, и к тому же для ее вызова потребуется меньше времени. В качестве альтернативы они могут сохранить 32-разрядный адрес для обращения к памяти в 16 Гбайт вместо каких-то там 4 Гбайт. Этот пример демонстрирует, что для получения оптимальной дискретности памяти требуются более длинные адреса и, следовательно, более длинные команды. Одна крайность — это организация памяти, при которой адресуется каждый бит (например, Burroughs В1700). Другая 47 крайность — это память, состоящая из очень длинных слов (например, серия CDC Cyber содержала 60-разрядные слова). Современные компьютерные системы пришли к компромиссу, который, в каком-то смысле, объединил в себе худшие качества обоих вариантов. Они требуют, чтобы адреса были у отдельных байтов, но при обращении к памяти всегда считываются одно, два, а иногда даже четыре слова сразу. В результате считывания одного байта из памяти на машине UltraSPARC III единовременно вызываются минимум 16 байт (см. рис. 3.44), а иногда и вся строка кэш-памяти размером 64 байта. Расширение кода операций В предыдущем подразделе мы увидели, что короткие адреса препятствуют удачной дискретности памяти. В этом разделе мы рассмотрим компромиссы, связанные с кодами операций и адресами. Рассмотрим команду размером п + k бит с кодом операции в k бит и одним адресом в п k п бит. Такая команда допускает 2 различных операций и 2 адресуемых ячеек памяти. В качестве альтернативы те же п + k бит молено разбить на код операции в k - 1 бит и адрес в /2+ 1 бит. При этом будет либо в два раза меньше команд, но в два раза больше памяти, либо то же количество памяти, но дискретность вдвое выше. Код операции в k + 1 бит и адрес в п - 1 бит дает большее количество операций, но ценой этого является либо меньшее количество ячеек памяти, либо не очень удачная дискретность при том же объеме памяти. Наряду с подобными простыми компромиссами между битами кода операции и битами адреса существуют и более сложные. Обсуждаемый здесь механизм называется расширением кода операций. Понятие расширения кода операций можно пояснить на примере. Рассмотрим машину, в которой длина команд составляет 16 бит, а длина адресов — 4 бита, как показано на рис. 5.8. Это вполне разумно для машины, содержащей 16 регистров (а следовательно, 4-разрядный адрес регистра), с которыми совершаются все арифметические операции. Один из возможных вариантов — включение в каждую команду 4-разрядного кода операции и трех адресов, что дает 16 трехадресных команд. Рис. 5.8. Команда с 4-разрядным кодом операции и тремя 4-разрядными адресными полями Если разработчикам нужно 15 трехадресных команд, 14 двухадресных команд, 31 одноадресная команда и 16 безадресных команд, они могут использовать коды операций от 0 до 14 в качестве трехадресных команд, а код операции 15 уже интерпретировать по-другому (рис. 5.9). 48 Рис. 5.9. Расширение кода операции обеспечивает 15 трехадресных команд, 14 двухадресных команд, 31 одноадресную команду и 16 безадресных команд. Поля хххх, уууу и zzzz — это 4-разрядные адресные поля Это значит, что код операции 15 содержится в битах с 8-го по 15-й, а не с 12-го по 15-й. Биты с 0-го по 3-й и с 4-го по 7-й, как и раньше, формируют два адреса. Все 14 двухадресных команд содержат число 1111 в старших четырех битах и числа от 0000 до 1101 в битах с 8-го по 11-й. Команды с числом 1111 в старших четырех битах и числом 1110 или 1111 в битах с 8-го по 11-й рассматриваются особо. Они трактуются так, как будто их коды операций находятся в битах с 4-го по 15-й. В результате получаем 32 новых кода операций. А поскольку требуется всего 31 код, то код 111111111111 49 означает, что действительный код операции находится в битах с 0-го по 15-й, что дает 16 безадресных команд. Как видим, код операции становится все длиннее и длиннее: трехадресные команды имеют 4-разрядный код операции, двухадресные команды — 8-разрядный, одноадресные команды — 12-разрядный, а безадресные команды — 16-разрядный. Идея расширения кода операций наглядно демонстрирует компромисс между пространством для кодов операций и пространством для другой информации. Однако на практике все не так просто и понятно, как в нашем примере. Есть только два способа изменения размера кода операций. С одной стороны, можно иметь все команды одинаковой длины, приписывая самые короткие коды операций тем командам, которым нужно больше всего битов для спецификации чего-либо другого. С другой стороны, можно свести к минимуму средний размер команды, если выбрать самые короткие коды операций для часто используемых команд и самые длинные — для редко используемых. Если довести эту идею до конца, можно свести к минимуму среднюю длину команды, закодировав каждую команду, чтобы максимально уменьшить число требуемых битов. К сожалению, это ведет к наличию команд разных размеров, причем не выровненных в границах байтов. Пока существуют архитектуры команд с таким свойством (например, Intel 432), выравнивание будет иметь большое значение для быстрого декодирования команд. Тем не менее, эта идея часто применяется на уровне байтов. Далее мы рассмотрим архитектуру JVM-команд, чтобы показать, как можно менять форматы команд, чтобы максимально уменьшить размер программы. Форматы команд процессора Pentium 4 Форматы команд процессора Pentium 4 очень сложны и нерегулярны. Они содержат до шести полей разной длины, пять из которых не обязательны (общая модель показана на рис. 5.10). Такая ситуация сложилась из-за того, что архитектура развивалась на протяжении нескольких поколений, и ранее в нее были включены не очень удачные варианты команд. Из-за требования обратной совместимости позднее их нельзя было изменить. Например, если один из операндов команды находится в памяти, то другой не может там находиться. В результате, существуют команды сложения двух регистров, команды прибавления регистра к слову памяти, команды прибавления слова памяти к регистру, но не существует команд для прибавления одного слова памяти к другому слову памяти. В первых архитектурах Intel все коды операций были размером 1 байт, хотя для изменения некоторых команд часто использовался так называемый пре фиксный байт. Префиксный байт — это дополнительный код операции, который ставится перед командой, чтобы изменить ее действие. Примером применения префиксного байта может служить команда WIDE в машинах 50 IJVM. К сожалению, в какой-то момент компания Intel исчерпала запасы кодов операций, и один код операции, OxFF, стал кодом смены алфавита и использоваться для разрешения второго байта команды. Рис. 5.10. Форматы команд процессора Pentium 4 Отдельные биты в кодах операций процессора Pentium 4 дают довольно мало информации о команде. Единственной структурой такого рода в поле кода операции является младший бит в некоторых командах, который указывает, что именно вызывается — слово или байт, а также соседний бит, который указывает, является ли адрес памяти (если он вообще есть) источником или приемником. Таким образом, в большинстве случаев код операции нужно полностью декодировать, чтобы установить, к какому классу относится выполняемая операция и, следовательно, какова длина команды. Это значительно снижает производительность, поскольку необходимо производить декодирование еще до того, как определено, где начинается следующая команда. В большинстве команд вслед за байтом кода операции, который указывает местонахождение операнда в памяти, следует второй байт, несущий всю информацию об операнде. Эти 8 бит распределены в 2разрядном поле MOD и двух 3-разрядных регистровых полях REG и R/M. Иногда первые 3 бита этого байта используются в качестве расширения для кода операции, давая в сумме 11 бит для кода операции. Тем не менее 2разрядное поле означает, что существуют только 4 способа обращения к операндам и один из операндов всегда должен быть регистром. Логически должен идентифицироваться любой из регистров: ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, EBP, ESP, но правила кодирования команд запрещают некоторые комбинации, которые отводятся для особых случаев. В некоторых типах команд требуется дополнительный байт, называемый SIB (Scale, Index, Base — масштаб, индекс, база), который дает дополнительную спецификацию. Эта схема не идеальна, она является компромиссом между требованием обратной совместимости и желанием учесть новые особенности, которые не были предусмотрены изначально. 51 Добавим еще, что некоторые команды имеют 1, 2 или 4 дополнительных байта для определения адреса команды (смещение), а иногда еще 1, 2 или 4 байта, содержащих константу (непосредственный операнд). Форматы команд процессора UltraSPARC III Архитектура команд процессора UltraSPARC III состоит из 32разрядных команд, выровненных в памяти. Команды очень просты. Каждая из них выполняет только одно действие. Типичная команда задает два регистра, в которых находятся исходные операнды, и один выходной регистр. Вместо одного из регистров команда может использовать константу со знаком. При выполнении команды LOAD два регистра (или один регистр и 13-разрядная константа) складываются вместе для определения считываемого адреса памяти. Данные оттуда записываются в другой указанный в команде регистр. Изначально машина SPARC имела ограниченное число форматов команд (рис. 5.11). Со временем добавлялись новые форматы. Большинство новых вариантов были получены за счет отъема нескольких битов у какогонибудь поля. Например, изначально для команд перехода использовался вариант 3 формата (с 22-разрядным смещением). Когда были добавлены команды прогнозируемых ветвлений, из 22 бит было изъято 3: один из них стал использоваться для прогнозирования (совершать или не совершать переход), а два оставшихся определяли, какой набор битов условного кода нужно использовать. В результате получилось 19-разрядное смещение. Приведем другой пример. Существует много команд преобразования типов данных (целых чисел — в числа с плавающей точкой и т. д.). Для большинства этих команд используется вариант lb формата, в котором поле непосредственной константы разбито на 5-разрядное поле, указывающее входной регистр, и 8-разрядное поле, предоставляющее дополнительные биты кода операции. Однако в большинстве команд все еще используются форматы, показанные на рисунке. Первые 2 бита каждой команды помогают определить формат команды и сообщают аппаратному обеспечению, где найти оставшуюся часть кода операции, если она есть. В варианте 1а формата оба источника операндов представляют собой регистры; в варианте lb один источник — регистр, второй — константа в промежутке от -4096 до +4095. Бит 13 определяет один из этих двух форматов. (Биты нумеруются с 0.) В обоих случаях местом сохранения результатов всегда является регистр. Достаточный объем пространства имеется для 64 команд, некоторые из которых зарезервированы на будущее. Поскольку все команды 32-разрядные, включить в команду 32разрядную константу невозможно. Команда SETHI устанавливает 22 бита, оставляя пространство для другой команды, чтобы установить оставшиеся 10 бит. Это единственная команда такого необычного формата. 52 Рис. 5.11. Исходные форматы команд процессора SPARC Для непрогнозируемых условных переходов используется вариант 3 формата, в котором поле условия определяет, что проверяется. Бит А нужен для того, чтобы избегать пустых операций при определенных условиях. Формат команд прогнозируемых ветвлений тот же, только с 19-разрядным смещением, как было сказано ранее. Последний формат используется для команды вызова процедуры CALL. Эта команда особая, поскольку только в ней для определения адреса требуется 30 бит. В данной архитектуре существует один 2-разрядный код операции. Требуемый адрес — это целевой адрес, разделенный на четыре. Таким образом, относительно текущей команды диапазон составляет примерно 231 байт. 53 7. Методы адресации Вопрос, каким образом в адресном поле команды может быть указано место нахождения операнда, считается одним из центральных при разработке архитектуры вычислительной машины. С одной стороны разработчики стремятся уменьшить длину адресного поля при сохранении возможности доступа ко всему адресному пространству, с целью аппаратных затрат, с другой способ задания адреса должен способствовать max. сближению конструкций знаков при программировании высокого уровня и машинных команд. Для того, чтобы рассматривать методы адресации введем определение – исполнительным адресом операнда называется двоичный код номера ячейки памяти, служащий источником или преемником операнда по которому происходит фактическое обращение к указанной ячейке. Если операнд хранится не в основной памяти, а в реестре процессора, то его исполнительным адресом будет номер регистра. Адресный код команды – это двоичный код в адресном поле команды из которого необходимо сформировать исполнительный адрес. В операторах ассемблера могут использоваться операции следующих типов: 1. регистр; 2. адрес памяти; 3. сегментный регистр; В современных вычислительных машинах исполнительный адрес и адресный код, как правило, не совпадают и для доступа к данным требуются соотношения преобразования. Способ адресации – это способ формирования исполнительного адреса операнда по адресному коду команд. Чтобы устройство управления вычислительной машины могло определить, какой именно способ адресации принят в данной команде, в разных вычислительных машинах используются различные приемы. Часто 54 разным способам адресации соответствуют и разные коды операции. Другим вариантом является добавление в состав команды специального поля, содержимое которого определяет, какой из способов адресации применен. Иногда, в команде несколько таких полей, по 1-ому на каждый операнд. Отметим также, что иногда в команде вообще отсутствует адресная операция, т.е. имеет место неявная адресация. При неявной адресации адресное поле либо отсутствует, либо содержит не все необходимые адреса. Отсутствующий адрес в данном случае определяется кодом операции. Непосредственная адресация При непосредственной адресации в адресном поле команды вместо адреса содержится сам операнд. Этот способ может применяться в арифметических операциях, операциях сравнения, а также для разгрузки данных в регистр. Формат команды: КОП СА значение add R4,#3 – в регистр 4 помещается его предыдущее значение, сложенное с 3. move R5,4Ch где КОП – кол-во операций, СА – способ адресации. Когда появляется число оно обычно представлено дополнительным кодом. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд помещается в младшей части регистра, а остающиеся свободные позиции заполняются значением знакового бита операции. Помимо того, что в адресном поле указаны только константы, еще один недостаток непосредственного способа адресации заключается в том, что длина операнда ограничена длиной адресного поля команды, который обычно меньше длины машинного слова. 55 Достоинства – сокращение время выполнения команды, кроме того, экономится память, т.к. не требуется специальной ячейки для хранения операнда. Прямая адресация При прямой адресации (абсолютной) адресный код прямо указывает номер ячейки памяти, к которой производится обращение. КОП СА АК Операнд add R4,(1001) – R4 ← R4 + Mem[1001] где АК – исполнительный адрес команды. Недостаток – нужно длинное адресное поле. Кроме того, указанный в команде адрес не может быть изменен в процессе вычислений. Косвенная адресация Одним из способов преодоления проблемы прямой адресации является косвенная адресация, когда с помощью ограниченного кода адреса указывается адрес ячейки панели, в свою очередь содержащей адрес операндов. КОП СА АК АИСП Операнд add R1,@(R3) – R1 ← R1 + Mem[Mem[R3]] 56 где АИСП – исполнительный адрес. Недостаток – необходимость в двукратном обращении к памяти, сначала для извлечения адреса операнда, затем обращение к самому операнду. Также используется дополнительная ячейка памяти. Регистровая адресация Эта адресация подобна прямой адресации за исключением того, что адресное поле команды указывает не на ячейку памяти, а на номер регистра. Обычный размер адресного поля в данном случае составляет 3 или 4 бита, что позволяет указать соответственно на 1 из 8 или 16 регистров общего назначения. КОП СА R Операнд add R4,R3 где R – АИСП. Косвенная регистровая адресация Представляет собой косвенную адресацию, при которой исполнительный адрес операнда хранится не в ячейке основной памяти, а в регистре процессора. Соответственно адресное поле команды содержит не ячейку памяти, а регистр. КОП СА R Регистры Память Адрес Операнд 57 add R4,(R1) Достоинства и ограничения косвенной регистровой адресации те же, что и у обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится не в памяти, а в регистре, для доступа к операнду требуется на одно обращение к памяти меньше. Адресация со смещением При адресации со смещением исполнительный адрес формируется в результате тестирования содержимого адресного поля команды с содержимым одного или нескольких регистров процессора. Адресация со смещением предполагает, что адресная часть команды включает в себя как минимум 1 поле, в котором содержится константа, смысл которой в разных вариантах адресации со смещением может меняться. Константа может представлять собой некоторый базовый адрес, к которому добавляется хранящееся в регистре смещение. Допустим и противоположный подход: базовый адрес находится в регистре процессора, а в соответствующем поле указывается смещение относительно этого адреса. В некоторых процессорах для реализации адресации со смущением, предусмотрены специальные регистры (направленные базовые или индексные). КОП СА R Ак Регистры Составляющий адрес Такая адресация может быть еще более сложной. Обычно использование специальных регистров предполагается по умолчанию, поэтому адресная часть команды может содержать только одно поле – Aк (адрес команды). Если же составляющая адреса может 58 располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в команду включают дополнительное поле. В рамках адресации со смещением имеется еще один вариант, при котором адрес вычисляется не суммированием, а конкатенацией составляющих адреса. Относительная адресация Применяется для получения исполнительного адреса операнда. Содержимое поля Ак команды складывается с содержимым счетчика команды. Таким образом, адресный код Ак в команде представляет собой смещение относительно адреса текущей команды. Достоинства – программа становится перемещаемой в памяти. Базовая регистровая адресация В этом случае регистр называемый базовым, содержит полноразрядный адрес, а поле Ак – смещение относительно этого адреса. Ссылка на базовый регистр может быть явной или неявной, если в ВМ имеется специальный базовый регистр. Такой способ обычно используется для доступа к элементам массива, положение которых в памяти может меняться походу вычислений. Достоинства – смещение имеет меньшую длину, чем полный адрес, что позволяет сократить длину адресного поля команды. Индексная адресация 59 Поле Ак содержит название регистра, указывающего на адрес ячейки памяти, а регистр указный явно или неявно – смещение относительно этого адреса. Иногда базовую индексацию адресации объединяют в 1 тип, при этом в коде команды указываются регистры, содержащие базовые и индексные адреса. add R4,(R1+R2) После (или до) выполнения команды содержимое индексного регистра может быть увеличено или уменьшено на 1. Индексирование с увеличением содержимого индексного регистра называется автоинкрементной адресацией, а индексирование с уменьшением - автодекрементной адресацией. В крайнем случае может быть индексная адресация с масштабированием и смещением – содержимое индексного регистра умножается на масштабный коэффициент и суммируется с Ак. При этом может осуществляться автоинкрементная или автодекрементная индексация регистра. Страничная адресация Эта адресация предполагает разбиение всего адресного пространства на страницы. Каждая страница характеризуется своим начальным адресом, выступающим в качестве базы. Старшая часть этого адреса хранится в специальном регистре адреса страницы. В адресном коде команды указывается смещение внутри страницы, рассматриваемое как часть адреса. Используемый адрес образуется конкатенацией адресного кода команды и регистра страницы. 60 КОП СА Ак Память РАС Ас Старшая часть Страница Ас Операнд Регистр использующий адреса Способы адресации в командах управления потоком Основными способами адресации в командах управления потоками являются:   прямая;  относительная;  косвенная регистровая. Для команд безусловного и условного перехода наиболее типична относительная адресация, когда в адресной части команды указывается смещение адреса точки перехода относительно содержимого счетчика команд. Среди команд безусловного перехода доля относительной адресации – 90%. Для команд перехода важную роль играет средняя (типичная) величина смещения. В подавляющем большинстве случаев переход идет пределах 3-7 команд относительно команды перехода. Приблизительно 70% переходов идут в сторону увеличения адреса. Из оставшихся, 90% связаны с выполнением циклов. Косвенная регистровая адресация исполняется в следующих командах перехода: case (switch), исполнение виртуальных функций и методов в объектно-ориентированных языках, исполнение ссылок на функцию и исполнение DLL. 61 8. Цикл выполнения команд процессора В архитектуре Фон Кеймана команды обрабатываются под управлением УУ выполняется в систематизированном виде. Последовательность шагов выполняют команды – цикл выполнения команды. Адрес первой выполняемой команды передаётся микропроцессору и запоминается в счётчике команд. Начало работы процессора заключается в том, что адрес из счётчика команд на шину адреса системой магистрали. Одновременно на шину управления подаётся команда “Выборка из основной памяти”, которая воспринимается основной памятью. Получив с шины управления системой магистрали команду, основная память считывает адрес с шины адреса, находит ячейку с этим номером и её содержимое выставляет на шину данных, а на шину управления выставляет сигнал о выполнении команды. Процессор, получив по шине управления сигнал об окончании работы основной памяти, вводит число с шины данных на внутреннюю магистраль процессора и через неё посылает введённую информацию в регистр команд. В регистре команд полученная команда разделяется на кодовую и адресную части. Код команды поступает в блок управления для выработки сигналов, настраивающие микропроцессор на выполнение заданной операции, а также для определения адреса следующей команды, который сразу заносится в счётчик команд. Адресная часть команды выставляется на шину адреса системы магистрали и сопровождается сигналом выборка “из основной памяти” на шине управления выбранная из оперативной памяти информация поступает на внутреннюю магистраль микропроцессора, с которой вводится в арифметическое устройство. Если команда содержит несколько операндов, то операция выборки повторяется столько раз, сколько операндов надо ввести. На этом заканчивается подготовка микропроцессора к операции и начинается её выполнение в арифметико-логическом устройстве. Результат выполнения операции выставляется микропроцессором на шину данных. На шину адреса выставляется адрес оперативной памяти, по которому этот результат необходимо записать, а на шину управления выставляется команда “запись в оперативную (основную) память“. Получив шину управления команду, оперативная память считывает данные с сист. магистрали, организует запись данных по указанному адресу и после выполнения команды выставляет на шину управления сигнал, означающий, что число записано. Процессор получив этот сигнал начинает выборку очередной команды, т.е. снова вставляет команду и т.д. цикл повторяется. В каждом цикле получив команду в регистр команд и выделив код операции процессор определяет к какому устройству она относится. Если команда должна выполнятся процессором , организуется её выполнение по описанному (ЦП) циклу. Если же команда должна выполнятся в другом устройстве ЭВМ, центральный процессор передаёт её соответствующему устройству. Взаимодействие микропроцессора с внешними устройствами 62 предусматривает выполнение логической последовательности действий, связанных с поиском устройства, распределением его технического состояния, обменом командами и информацией. Это логическая последовательность действий вместе с устройствами, её реализующими называется интерфейсом ввода\вывода. Если при обращении ЦП к внешнему устройству продолжение выполнение основной программы возможно только после завершения операции ввода/вывода, то ЦП запустив внешнее устройство переходит в состояние ожидания и находится в нем до тех пор, пока внешнее устройство не сообщит ему об окончании обмена данными. Это – однопрограммный режим, т.к. в каждый момент времени се устройства находятся в режиме ожидания и только одно устройство выполняет программу – синхронный режим. Если же процессор запустив внешнее устройство пытается продолжить выполнение программы, то внешнее устройство самостоятельно организует свою работу по обмену данными и создаётся ситуация, когда в один и тот же момент времени различные устройства ЭВМ выполняют либо разные программы, либо разные части одной программы. – многопрограммный режим, асинхронный режим. В общем цикле выполнения команд выделяют 6 шагов: 1. выборка команды 2. декодирование команды 3. вычисление адреса операндов 4. выборка операндов 5. выполнение команды 6. запись результата 63 9. Совмещение операций Процессоры с линейным конвейером Выборка 1 Выборка 8 Выборка Декодирование 2 Выполнение 3 Декодирование 9 Декодирование Запись 4 Выполнение 10 Запись 11 Выполнение Запись Выборка 5 Декодирование 6 Переход 7 6 тактов вместо 11 Выборка Декодирование Переход Выборка Декодирование Выполнение Запись Характерно для конвейеров (конвейерных линий) Допустим, что процессор не может работать напрямую с памятью раб. с регистрами Регистр 1 Регистр 2 Регистр 3 ОП АЛУ Сдвиговый регистр Все современные процессоры являются синхронными, т. е. существует генератор тактовой часты, который регулярно посылает сигналы, представляя собой в идеале чередование прямоугольных импульсов. 64 такт При падении импульса выставляются затворы регистров, для того, чтобы данные поступающие из основной памяти записывались в 1 регистр. Кроме того по шине команд передаются инструкции для АЛУ. На это уходит время сигнала. Затем над надлежащие данные необходимо отправить в АЛУ. На доставание также тратится время Д , так как прежде чем АЛУ начинает производить вычислительные значения чисел в регистрах, они должны хорошо установиться. После этого АЛУ производит вычисление АЛУ . После этого этого результат передаются по шине данных в регистр р При «подъёме» следующих импульсы, они загружаются в регистр. В каждом цикле есть сигнал, который есть сигнал, который переключает определённые триггеры .Направленные в регистры данные можно загрузить данные лишь в начале импульса (при подъёме импульса), а считывать только в конце.(загрузка в это время блокируется) Именно поэтому АЛУ может течение 1-го такта считать и записывать данные в регистр. Для того чтобы стало возможным повысить тактовую частоту процессора необходимо : 1. увеличить скорость прохождения данных 2. сократить время вычисления 3. выполнять как можно меньше операций в течение 1-го такта На время прохождения данных прохождения данных влияние в основном технологический процесс разработки и температура процессора. Время вычислений можно уменьшить за счёт параллельной обработки команд. А для того чтобы сократить объём производимой в такт работы используется конвейерная обработка . Рассмотрим способ определения такта конвейера. Один такт работы конвейера – это техническое время операции из всех выполненных данных конвейером плюс время затраченное на выборку данных из регистра и сохранения результатов Время такта С= Ешн + Д+ АЛУ+ Р Пусть конвейер состоит из N стадий обработки обрабатывания из n команд . Ткоманды =(N+n-1)*С Эффекты конвейера – ускорение, даваемое в результате его использования делённое на количество шагов обработки : Е= n/N+n-1 таким образом при N ->эффективность ->1. 65 К сожалению, на практике добиться такого ускорения невозможно, т. е. в потоке данных могут возникнуть зависимости, которые приводят к так называемым конфликтам. Существует три класса конфликтов , которые приводят к сбоям в конвейере : 1. Структурные , которые могут возникнуть из-за конфликта по ресурсам, когда аппаратные средства не могут поддерживать все возможные комбинации команд в режиме одновременного выполнения . 2. По данным возникают в случае, когда выполнение данной команды зависит от результатов предыдущих; 3. По управлению, которые возникаю при конвейеризации команд переходов и других команд, которые изменяют значение счётчика команд Структурные конфликты и способы их минимизации Совмещённый режим выполнения команд в общем случаем требует конвейеризации функциональных устройств и дублирования ресурсов для разрешения всех возможных всех возможных комбинаций команд в конвейере. Если какая-нибудь комбинация команд не может быть принята изза конфликта по ресурсам следовательно в машине имеется структурный конфликт. Например машина может иметь только 1 порт записи в регистровый файл, но при определённых обстоятельствах конвейер потребовать выполнения двух записей в регистровый файл на 1-ном такте. Это и есть структурный конфликт Машины допускающие два обращения к памяти в такте должны иметь удвоенную пропускную способность памяти. Конфликты по данным Одним из факторов, которые оказывают существенное влияние на производительность конвейерных систем является межкомандные логические зависимости. Степень влияния этих зависимостей определяется как архитектурой процессора, в основном структурой управления конвейером команд и параметрами функциональных устройств, так и характеристиками программ Существует 3 вида взаимосвязей между данными, приводящими к сбоям конвейера: 1) Чтение после записи RAW (read after write)т.е попытка прочитать значение , которое ещё не было записано ; 2) Запись после записи WAW (write after write) то есть запись значения до того как предыдущие было записано. Такой тип взаимосвязи возникает в достаточно сложных устройствах., в которых имеется возможность записи на различных этапах обработки. Сбои такого типа наблюдаются также, если в процессоре реализовать сразу несколько конвейеров; 3) Запись перед чтением WAR (write after read) это попытка записи значения до окончания цикла чтения данных предыдущей команды. 66 Так же как и во втором случае (WAW) возникают при наличие нескольких конвейеров . В общем случае конфликт по данным возникают. Когда применение конвейерной обработки может изменить порядок обращения за операндами так, что этот порядок будет отличаться от порядка , который наблюдается при последовательном выполнение команд на не конвейерной машине . Проблема может быть при помощи достаточно простой аппаратной техники: продвижение (пересылка) данных: обход данных Это аппаратурная работа , следовательно образуется результат операции АЛУ с его выходного регистра, всегда снова подаётся назад на вход АЛУ. Если аппаратура обнаруживает , что предыдущая операция АЛУ записывает результат выполнения в регистр , соответствующего операнда для следующей операции, то логические схемы управления выбираются в качестве входа для АЛУ результат, поступающий по цепи обхода , а не значение прочитанное из файла регистра. Это техника «обходов» может быть обобщена для того, чтобы выполнить передачу результата прямо в ПО функционального устройства, которое в нём нуждается . Т. е. результат с выхода одного устройства поступает непосредственно на вход другого устройства. Существуют ситуации, относящиеся к 1-му типу, которые не удаётся предотвратить при помощи продвижения данных. Например, если обрабатывающие устройство обладает малым быстродействием и не может выдать результат, который может быть сразу записан . В простейшем случае будет иметь место задержка до загрузки данных. В данном случае переупорядочение потока команд непосредственно во время их выполнения, т. е. процессор должен выполнять тот же анализ что и компилятор, для выявления зависимости команд. Для того ему должен быть обеспечен доступ к окну предварительной выборки команд. Но т. к. окно может иметь малый размер , такой анализ будет менее эффективным Конфликты по управлению Этот самый суровые конфликт могут вызвать даже большие потери производительности, чем конфликт по данным. Когда выполнение команды условного перехода, может изменить (не изменять) значения счётчика команд. Если команда условного перехода заменяет значение счётчика на значением адреса, вычисляемого в команде, то переход называется выполняемый/не выполняемый В общем случае число тактов теряемых при остановках из-за условного перехода, может быть снижено 2-мя способами : 1. Обнаружение того, является ли условный переход выполнимым или нет на более ранних ступенях конвейера; 2. Более раннее вычисление значений счётчика команд для выполнения этого перехода. 67 Имеется несколько методов сокращения приостановок конвейера, возникающих из-за задержки выполнения условного перехода. I Метод выжидания простейшая схема обработки команд условного перехода заключается в замораживание операций в конвейере, путём планировки выполнения любых команд , следующих за командой условного перехода до тех пор пока не станет известно направление перехода. II Метод возврата Это более сложная схема состоит в том чтобы прогнозировать условный переход , как невыполненный. При этом аппаратура должна просто продолжать выполнять программу , как если бы переход вовсе не выполняется. В этом случае необходимо позаботиться о том чтобы не изменялось состояние машины, до тех пор пока направление перехода не станет окончательно известно. Если условный переход на самом деле не выполняется, то необходимо просто очистить конвейер от команд выбранных в след за командой условного перехода и повторить выборку команд. III Задержанные переходы Команда условного перехода Команда 1 Команда n Целевой адрес Команды 1..n находятся после команды задержанного перехода. Задача ПО в том, чтобы сделать команды, идущие за командой перехода действительно полезными. Аппаратура гарантирует выполнение этих команд перед реальным выполнением перехода. 1. Временной интервал задержки заполняется независимой командой находящейся перед командой перехода. АDD R1,R2,R3 If R1=0 THEN Первая задержка If R2=0 THEN АDD R1,R2,R3 R3 –адрес результата 68 Временно интервал задержки заполнен независимой командой, находящейся перед командой условного перехода. Это оптимальная схема, а вторая применяется только тогда , когда данный переход не возможен 2. Команда вычитания Sub R4,R5,R6 АDD R1,R2,R3 If R2=0 THEN Интервал задержки АDD R1,R2,R3 If R2=0 THEN Sub R4,R5,R6 R1,R4размеры результата Использование регистра R1 в качестве условного перехода препятствует перемещению команды add за командой перехода. В этом случае временной интервал задержки заполнен командой находящейся по целевому адресу команды перехода Обычно такую команду приходится копировать, т. к. к ней возможны обращения из других частей программы Данной стратегии отдаётся предпочтение, когда переход с большой вероятностью является выполнимым. АDD R1,R2,R3 If R2=0 THEN Интервал задержки Sub R4,R5,R6 АDD R1,R2,R3 If R2=0 THEN Sub R4,R5,R6 69 Временной интервал задержки заполняется командой, находящейся между командой невыполнимого перехода и командой , находящейся по целевому адресу, чтобы подобная оптимизация была законной необходимо, чтобы можно было выполнить команду SUB, если переход пойдёт по прогнозируемому направлению. При этом предполагается, что SUB выполнит не нужную работу, но вся операция будет выполнятся корректно. Такая ситуация может возникнуть когда R4 служит для временного хранения промежуточных данных и переход выполняется не по прогнозируемому направлению. В первом случае требуется : команда условного перехода не должна зависеть от переставляемой команды. От этого не страдает производительность. Во втором случае выполнение переставляемой команды должно быть корректным, даже если переход не выполняется. При этом может потребоваться копирование команды. Повышение быстродействия происходит при выполнение перехода. При этом размер программы может повысится. Для третьего случая, выполнение переставляемой команды должно быть корректным, даже если переход выполняется. Повышается быстродействие в случае не выполнения перехода. Компилятор должен соблюдать данные требования при подборе подходящей команды, для заполнения интервала задержки. Если такой команды не находится , то интервал задержки заполняется пустой операцией(конвейер приостанавливается) Планирование задержки перехода, осложняется наличием ограничения на команды размещаемые в интервале задержки и необходимостью предсказывать вовремя компиляции, будет ли условный переход выполнятся или нет. Имеются дополнительные аппаратные затраты на реализацию задержки переходов, т. е. для корректного восстановления состояния в случае появления прерываний нужно несколько счётчиков команд. Предсказание переходов Существует несколько способов снижения потерь путём предсказания переходов. 2 основных подхода: 1. Метод исследования структуры программы – статическое предсказание переходов 2. Метод использования информации о профиле выполнения программы, собранной в результате предыдущих запусков – динамическое предсказание переходов При использовании статического предсказания переходов можно предположить, например, что все условные переходы идущие назад по ходу выполнения программы, являются выполняемыми, все переходы идущие вперёд – невыполняемые. 70 При динамическом предсказании переходов принимается решение, которое было принято при выполнении прошлых команд, и эта информация используется для предсказания вероятного поведения следующей команды перехода. Направление для снижения за двумя ближайшими во времени переходами, может быть использован прямой конечный автомат четырьмя состояниями. Более распространённый подход принятый в современных процессорах, заключается использовании специального буфера – Branch Target Buffer. Этот буфер хранит адрес каждого перехода и счётчик, отражающий историю его поведения. Обычно эта история записывается при помощи 2ух бит, был ли принят переход. Когда команда ветвления встречается первый раз, оба бита равны нулю (нет знаний о её поведении), если один из битов равен единице, то выбран один из типов поведения команды. Если оба бита равны единице, то команда имеет предсказуемое поведение и должно применяться статическое предсказание переходов. Другой подход заключается в использовании 2ух потоков команд. Тогда слоты задержки могут заполняться независимыми командами из разных потоков. Ещё один подход заключается в совместном использовании статического и динамического предсказания переходов, путём использования статистики выполнения переходов во время выполнения программы и передачи этой информации компилятору. Повторная компиляция даёт эффективный код. Обработка исключительных ситуаций Обработка исключительных ситуаций более сложная задача, чем обработка ветвлений. Такие события, как переполнение, ввод/вывод, остановка, подкачка новых страниц кеш-памяти, могут возникать в случайный момент времени, причём некоторые из этих событий возникают асинхронно. Но распознавание их часто откладывается до момента окончания очередного такта работы. Некоторое исключительные ситуации могут возникать, непосредственно, во время выполнения команд. Например, команда загрузки из памяти может порождать исключения, говорящие о необходимости подкачки новой страницы. Типичный способ обработки такой ситуации заключается в откате выполнения команды, т.о., что загрузка значений из памяти, так же, как и следующая за ней команда должны быть выполнены заново, после того, как произойдёт обработка исключительной ситуации. Однако если последовательность выполнения команд была изменена в процессе обработки, то простой откат назад не позволит восстановить состояние конвейера для искомой последовательности. В связи с этим необходимо сохранить дополнительную информацию о состоянии процессора, который позволит восстановить исходную последовательность команд. В частности для этого требуется больше одного счётчика команд. Для других типов прерываний, например, для прерывания по 71 исключительной ситуации плавающей точки, команда вызывающая прерывание на некоторых машинах записывает свои результаты ещё до того момента, когда прерывание может быть обработано. В этих случаях аппаратура должна быть готова для восстановления операндов источников, даже если местоположение результата команды совпадает с местоположением одного из операндов. Вообще если конвейер может быть остановлен так, что команды непосредственно предшествующие вызвавшей прерывание команде завершаются, а следующие за ней могут быть заново запущены для выполнения, то это говорит о том, что конвеер обеспечивает точное прерывание. Выполнение команд Существует 2 способа выполнения команд на одноядерном процессоре: 1. По средствам организации конвейера. 2. Путём использования нескольких функциональных блоков, выполняющих одну и ту же операцию над несколькими командами одновременно. Когда число событий обработки в конвейере превышает обычные 5-6, которые мы рассматриваем такой процессор называют – суперконвейерным. Если процессор выполняет больше одной операции в 1 время, его называют – суперскалярным. Сочетание этих двух подходов приводит к суперконвейерной архитектуре Суперконвейерный процессор. Т=n-N*C; Tn= (N-n-1)*C Если выполнение первой операции конвейера = С, то возможно добиться наибольшей частоты выполнения команд, путём их запуска через интервал времени (С/N). Это достигается 2мя способами: 1. Дальнейшее разделение стадий обработки конвейера на N операции; 2. Построение N конвейеров, которые могут перекрываться; Суперконвейерные процессоры имеют естественные ограничения выполнения операций, определённой скоростью работы логических элементов и частотой появления конфликтов, которые не удаётся разрешить. Суперскалярные процессоры Суперскалярная обработка впервые была применена в суперкомпьютерах Cray. Параллельная организация обработки команд позволяет преодолеть ограничения быстродействия, свойственные 72 суперконвеерным процессам, Однако, суперконвейерная параллельная обработка требует меньшего времени для выбора из памяти и т.о. возникает необходимость в параллельном выборе команд. Одним из технологических достижений позволяющих этого добиться было размещение кеш 1го уровня на одном кристалле с процессором, что позволило разработчикам, организовать выполнение команд с меньшими расходами. В некоторых случаях суперскалярный компьютер использует одно устройство для выборки, декодирования и распределения команд между устройствами обработки. Например процессор Spark использует параллельную обработку, лишь после 3ей стадии конвейера. Вообще использование конвейера с параллельной обработкой команд требует: 1. Возможность выборки команд для всех конвейеров одновременно 2. Согласование работы отдельных конвейеров между собой 3. Переупорядочивание потоков команд сразу для нескольких конвейеров 4. Несколько дополнительных записей данных 5. Многопоточного кеша данных и разделение файлов регистров Переупорядоченная команда может быть статической или динамической. Сочетание этих подходов затруднительно, т.к. компилятор не всегда имеет возможность предсказать механизм аппаратного переупорядочивания. Суперскалярные операции ограничиваются количеством независимых команд , которые могут быть выбраны из памяти. Как показывают исследования, количество этих операций достаточно мало. Например, если алгоритм специально не предназначен для параллельной обработки данных, то параллельно могут быть выполнены не более шести команд, и не более четырёх для целочисленных операций. 73 10. Шины Расширение линий шины. К транзанция на шине начинается с выставления ведущим устройством адресной инф. Адрес позволяет выбрать ведомое устройство и установить соединение между ним и ведущим устройством. Для передачи адреса используется часть сигнальных линий шины, которые часто называют шиной адреса. На шину адреса могут выдаваться: адреса ячеек памяти;   номера регистров; Адреса портов в\в и т. д. Многообразие типов адресов предполагает наличие дополнительной информации, уточняющей вид адреса, использующегося в данной транзанции. Такая информация может косвенно содержаться в самом адресе, а может передаваться отдельно по специальным упр-им линиям шин. Разнообразной может быть и структура адреса. Например старшие биты могут указывать на модуль оперативной памяти, а младшие на ячейку внутри этого модуля. В шинах предусмотрены адреса специального вида, позволяющие выбрать определенную группу ведомых устройств или все ведомые устройства сразу. Такие адреса называют широковещательными (broadcast). Такая возможность обычно используется в транзациях записи от ведущих к ведомому. Однако существует специальный вид транзакций чтения, т. е. одновременно от нескольких ведомых к ведущим, который называется широковещательный опрос (broadcаll). Информация, возвращающаяся ведущему, представляет собой результат побитового сложения данных, поступивших от всех адресуемых ведомых. Число сигнальных линий, выделенных для передачи адреса, т. е. ширина шины адреса, определяет максимально возможный объем адресного производства. Это одна из базовых характеристик шины, т.к. от нее зависит потенциальная емкость адресуемой памяти и число обслуживаемых портов в\в. [ линий, служащих для пересылки данных между модулями системы называют шиной данных. Важнейшими ее характеристиками являются: Ее ширина;   Пропускная способность. Ширина шины данных определяется количеством битов информации, которая может быть передана по шине за одну транзакцию, т.е. цикл шины. Одна транзакция шины может занимать несколько периодов. Обычно это 32,64 или 128 бит. В случае ширину данных выбирают целому числу байтов. Причем это число – целая степень 2. Элементы данных, задействовавших всю ширину обмена данных называют словом. В большинстве шин используются адреса, позволяющие указать отдельный байт слова. При передачи по шине данных части слова пересылка обычно производится по тем линиям, что и пересылка полного слова. Однако в ряде шин урезанное слово 74 передается по младшим линиям шины данных, что может оказаться особо удобно при расширении шин. Ширина шин данных существенно влияет на производительность ВМ. Например, если ширина шины данных в 2 раза меньше длины команды, то ЦП в течение каждого цикла должен осуществлять доступ к памяти дважды. Пропускная способность шины характеризуется количеством единиц информации (байт, бит), которую допускается передавать по шине за единицу времени (сек). Пропускная способность определяется физическим построением шины и природой подключения к ней устройств. Очевидно, чем шире шина, тем выше ее пропускная способность. Рассмотрим последовательность событий, происходящих по шине данных в пределах одной тринзанции. Пусть устройство А на одном конце шины передает данные устройству В из другого конца.. Устройство А ведущее, В – ведомое. Для начала устройство А должно получить управление шиной. При этом сигнал на А и В равны нулю. Данные появляются на шине с некоторой задержкой, следовательно на А сигнал равен 1. Эта задержка fзад. Интервал tзад может составлять 1-4 нс. На В→0. Скорость распространения данных по шине реально не в состоянии превысить 70% скорости света. Поэтому на В данные появляются с задержкой: tрс (распространения). Единственный способ снизить tрс – сокращение длины шины (или изменение типов проводников). Захват данных устройством В может быть произведен только по прошествии tст ( стабилизации). tст – это время, в течение которого данные на входе В должны стабилизироваться с тем, чтобы их можно было однозначно распознать. Необходимо упомянуть tудержания т.е. вр. в течение которого информация должна оставаться на шине после того как они были зафиксирован устройством В. tуд – время удаления. А получет упр. Данные появл. На шине Данные появл. Данные появл. На B Могут быть счит. Данные появл. Могут быть удалены. Сигналы на устройстве А tзад Сигналы на устройстве В tст tрс tуд О бщее время передачи данных по шине tп = tзад+ tрс+ tст+ tуд Например, 4+1,5+2+0=7,5нс 133 мГц (частота шины). На практике передача данных осуществляется с задержкой на инициализацию транзакций. Учитывая эту задержку, максимальная vпередачи данных =1/(tп + tтр). Некоторые шины данных содержат дополнительные линии, применяемые для коррекции ошибок, возникших в процессе передачи. Выделение по одной 75 дополнительной линии на каждый байт данных. позволяет контролировать. Могут быть др. варианты коррекции ошибок, когда дополнительные линии используются совместно. По ним передается специальный корректировочный код, по которому он может быть не только обнаружен, но и скорректирован. Если адрес и данные в системе шины передаются по независимым сигнальным линиям, то ширина шины адреса и шины данных обычно выбирают независимо. Наиболее распространены комбинации 16 – 8, 16 – 16, 20 – 8, 20 – 16, 24 – 32, 32 – 32, 64 – 64. Во многих шинах адрес и данные передаются по одним и тем же линиям, но в разных тактах цикла шины – это прием – временное мультиплексирование. Кроме адреса и данных, непременным атрибутом  шины являются линии, по которым передается управляющая информация и информация о состоянии. Сумма таких линий называют шиной управления. Сигнальные линии, входящие в шину управления, можно разделить на несколько групп. I. Линии, по которым передаются сигналы управления транзикциями, т.е. сигналы, определяющие: 1. Тип выполнения транзикции; 2. Количество байт, передавшихся по шине данных, и если передается часть слова, то какие именно байты; 3. Какой тип адреса выставляется на шину адреса; 4. Какой протокол передачи должен быть применен. В эту группу обычно входят 2 – 8 сигнальных линий. II. Линии передачи информации о состоянии (статусе устройств, участвующих в данной транзакции). В эту группу входят 1 – 4 линии, по которым ведомое устройство сообщает ведеущему свое состояние или передает сигналы ошибок. III. Линии арбитража. Арбитраж необходим в тех случаях, когда несколько ведущих претендуют на доступ к шине. Число линий арбитража в разных шинах 3 – 11. В зависимости от типа шины могут применятся разные типы арбитража. При централизованном арбитраже только 1 устройство (например, ЦП) имеет соответствующую аппаратную поддержку арбитража. Этот «центральный арбитр» может определять приоритеты и обладает правом прерывать транзикции в случае необходимости Централизованный арбитраж является достаточно простой схемой, часто применяемой в однопроцессорной конфигурации. В распределенной схеме каждое из потенциально ведущих устройств может выступать в качестве арбитра, и все ведущие устройства имеют равные права. Схема арбитража основана на заранее определенных приоритетах устройств, которые могут быть изменены программой. Последовательный арбитраж (daisy chaining) – это комбинация централизованной и распределенной систем. Устройства, 76 подключенное к шине запрашивает доступ, посылая сигнал к своему непосредственному соседу, находящемуся ближе к центральному арбитру. Если более близкое устройство также запрашивает управление шиной, то запрос более дальнего устройства блокируется. Центральный арбитр передает управление устройству, которое находится ближе всего к нему. Т. о. приоритет каждого устройства определяется его физическим положением на шине и не может быть изменено программой. Иногда может использоваться несколько дополнительных сигнальных линий, которые позволяют обойти ближайшее устройство и т. о. получить схему распределения приоритетов, частично управляемую программно. IV. Линии прерывания – по ним передаются запросы на обслуживание, посылаемых от ведомых устройств к ведущим. Под сами запросы обычно отводят 1 – 2 линии. Однако при одновременном возникновении запросов от нескольких ведомых, могут возникнуть проблемы арбитража. Для этого выделяют дополнительные линии, если только для этих целей не используют линии (III). V. Линии для организации последовательных локальных сетей. Наличие 1 – 4 таких линий стало общепринятой практикой в современных шинах. Это обусловлено тем, что последовательная передача данных протекает значительно медленнее, чем II. И сети выгоднее строить не загружая выгодные линии основных шин адреса и данных. Кроме того, линии этой группы могут быть использованы как полноценный, хотя и медленный тракт для замены шины адреса и шины данных в случае их отказа. VI. В некоторых шинах управления есть (VI) группы сигнальных линий, 4 – 5 линий позиционного кода, подключенным к специальным выводам разъема. При помощи перемычек на этих выводах можно задать уникальный позиционный код разъема на материнской плате или вставленной в этот разъем дочерней плате. Такой код может быть использован для индивидуальной инициализации каждой отдельной платы при включении / перезапуске системы. В каждой шине обязательно присутствуют линии, входящие в VII группу. VII. Линии тактирования и синхронизации. При проектировании таким линиям уделяется особое внимание. В состав данной группы в зависимости от протокола шины (синхронный / асинхронный) входят 2 – 6 линий. VIII. Линии для подвода питающего напряжения и линии заземления. Большое количество линий системы шины предполагают использование разъемов со значительным числом контактов. В некоторых шинах разъемы имеют сотни контактов, где предусмотрено подключение вспомогательных шин специального назначения. Свободные линии для локального обмена между дочерними платами, 77 множественные параллельно расположенные контакты для размножения питаний и заземлений. 78 11. Организация подсистем памяти. Иерархия памяти. Существует множество технологий для хранения данных. Например, память на магнитных сердечниках, перфокарты, магнитные ленты, оптические дики, полупроводниковые запоминающие устройства и т. д. Каждая из этих технологий имеет свое место на рынке, т.к. покрывает соответствующий диапазон времени доступа с обратно пропорциональной стоимостью хранения 1 данных, которая в свою очередь пропорциональна стоимости записи. Тип записывающего Время выборки Типичный объем устройства Сверхоперативные 0,01 – 1 нс 32/64/128 бит записывающие устройства (регистры) Быстродействующие 0,5 – 2 нс 32 Кб – 2 Мб буферное 2,5 – 30 нс записывающее устройство (КЭШ) (основная память) 2 – 20 нс 128 Мб – 4 Гб Оперативные запоминающие устройства Вторичные 5 -20 мс 30 Гб – 1 Тб запоминающее устройство (жесткие диски) Накопители на 100 – 50 мс 600 Мб – 40 Гб оптических дисках On – line (магнитные 1 с -10 мин ∞ ленты и т.д.) В основе иерархии памяти РС лежат 2 принципа: 1. Принцип локальных обращений. 2. Соотношение «стоимость – производительность». 1. говорит о том, что большинство программ не выполняет обращений ко всем своим командам и данным равновероятно, а оказывает предпочтения некоторой части своего адресного производства. Свойство локальности определяются исключительно свойством программы, а не аппаратом обеспечения. Например, программы, написанные на языке hisp, имеют локальность, которая не соответствует локальности физических адресов. Тем не менее при организации иерархической памяти обычно учитывают 3 разных вида локальности: 79 временная локальность, т. е. данные, к которым был осуществлен доступ, будут задействованы снова в ближайшее время; 2. пространственная локальность, т. е. доступ к данным осуществляется в ограниченной области адресного пространства; 3. последовательная локальность, т.е доступ к командам осуществляется по последовательным адресам памяти в современном компьютере строится из нескольких уровней, причем более высокий уровень меньше по объему, быстрее меняет большую стоимость в пересчете на байт, чем более низкие уровни. Уровни иерархически взаимосвязаны, т. е. все данные на одном уровне могут быть также найдены на более низком уровне, все данные на этом – на следующем более низком и т. д. Иерархия памяти обычно состоит из многих уровней, но в каждый момент времени мы имеем дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в иерархии, называется блоком. Размер блока может быть фиксированным или переменным. Если размер фиксированный, то объем памяти является кратным размеру блока. Успешное или не успешное обращение к более высокому уровню называется соответственно попаданием (hit) или промахом (miss). Попадание – это обращение к объему памяти, который найден на более высоком уровне. Промах – не найден. Соответствующая доля попаданий hit rabe – это доля обращений, найденных на более высоких уровнях, miss rabe – доля обращений, которые не найдены на более высоких уровнях. Т. к. повышение производительности является одной из причин появления иерархической памяти, частота попаданий и промахов является важнейшей характеристикой. Время обращений при попадании hit time – это время, обращения к более высокому уровню иерархии, которое включает в себя в частности время, необходимое для определения того, является ли обращение попаданием / промахом. Потери на промах – это время для замещения блока в более высоком уровне с более низкого уровня плюс время для пересечения этого блока в требуемое устройство. кроме этого, потери на промах включают в себя.  Время доступа – время обращения к первому слову блока при промахе.  Время пересылки – время для оставшихся слов в блоке. Время доступа связано с задержкой памяти более низкого уровня, в то время, как время пересылки связаныс полосой пропуска, как и между устройствами памяти нашли 2-х смежных уровней. Чтобы понять некоторые уровни иерархии памяти необходимо ответить на некоторые вопросы. 1. Где может размещаться блок на верхнем уровне иерархии; 2. Как найти блок, когда он находится на верхнем уровне; 3. Какой блок должен быть замещен в случае промаха; 4. Что происходит во время записи ( какова стратегия записи). 1. 80 В целом уровни памяти характеризуются пятью параметрами. 1. Время доступа, включая задержки на всех промежуточных уровнях; 2. Объем памяти данного типа в системе; 3. Стоимость хранения единицы информации; 4. Полоса пропускания, т. е. количество единиц информации за единицу времени, переданные на следующий уровень; 5. Размер блока – приблизительное количество единиц информации, перемещаемых между соседними уровнями за 1 раз. Иерархия памяти РС должна обладать следующими тремя свойствами: 1. включение - если некоторые значения могут быть найдены на другом уровне, оно должно присутствовать на всех уровнях, расположенных ниже; 2. конкретность – все копии одного и того же значения должны быть идентичны; 3. локальность – программа осуществляет доступ к ограниченному адресному пр-ву памяти в каждый временной интервал. Для реальных иерархий эти требования не выполняются. Организация КЭШ – памяти. Кэш-память представляет собой быстродействующее ЗУ, размещенное на одном кристалле с ЦП или внешнее по отношению к ЦП. Кэш служит высокоскоростным буфером между ЦП и относительно медленной основной памятью. Идея кэш-памяти основана на прогнозировании наиболее вероятных обращений ЦП к оперативной памяти. В основу такого подхода положен принцип временной и пространственной локальности программы. Если ЦП обратился к какому-либо объекту оперативной памяти, с высокой долей вероятности ЦП вскоре снова обратится к этому объекту. Примером этой ситуации может быть код или данные в циклах. Эта концепция описывается принципом временной локальности, в соответствии с которым часто используемые объекты оперативной памяти должны быть "ближе" к ЦП (в кэше). При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению и большинство команд не пишут в память. Обычно операции записи составляют менее 10% общего трафика памяти. Желание сделать общий случай более быстрым означает оптимизацию кэш-памяти для выполнения операций чтения, однако при реализации высокопроизводительной обработки данных нельзя пренебрегать и скоростью операций записи. К счастью, общий случай является и более простым. Блок из кэшпамяти может быть прочитан в то же самое время, когда читается и сравнивается его тег. Таким образом, чтение блока начинается сразу как только становится доступным адрес блока. Если чтение происходит с попаданием, то блок немедленно направляется в процессор. Если же 81 происходит промах, то от заранее считанного блока нет никакой пользы, правда нет и никакого вреда. Однако при выполнении операции записи ситуация коренным образом меняется. Именно процессор определяет размер записи (обычно от 1 до 8 байтов) и только эта часть блока может быть изменена. В общем случае это подразумевает выполнение над блоком последовательности операций чтениемодификация-запись: чтение оригинала блока, модификацию его части и запись нового значения блока. Более того, модификация блока не может начинаться до тех пор, пока проверяется тег, чтобы убедиться в том, что обращение является попаданием. Поскольку проверка тегов не может выполняться параллельно с другой работой, то операции записи отнимают больше времени, чем операции чтения. Очень часто организация кэш-памяти в разных машинах отличается именно стратегией выполнения записи. Когда выполняется запись в кэшпамять имеются две базовые возможности:  сквозная запись (write through, store through) - информация записывается в два места: в блок кэш-памяти и в блок более низкого уровня памяти.  запись с обратным копированием (write back, copy back, store in) информация записывается только в блок кэш-памяти. Модифицированный блок кэш-памяти записывается в основную память только когда он замещается. Для сокращения частоты копирования блоков при замещении обычно с каждым блоком кэш-памяти связывается так называемый бит модификации (dirty bit). Этот бит состояния показывает был ли модифицирован блок, находящийся в кэш-памяти. Если он не модифицировался, то обратное копирование отменяется, поскольку более низкий уровень содержит ту же самую информацию, что и кэш-память. Оба подхода к организации записи имеют свои преимущества и недостатки. При записи с обратным копированием операции записи выполняются со скоростью кэш-памяти, и несколько записей в один и тот же блок требуют только одной записи в память более низкого уровня. Поскольку в этом случае обращения к основной памяти происходят реже, вообще говоря требуется меньшая полоса пропускания памяти, что очень привлекательно для мультипроцессорных систем. При сквозной записи промахи по чтению не влияют на записи в более высокий уровень, и, кроме того, сквозная запись проще для реализации, чем запись с обратным копированием. Сквозная запись имеет также преимущество в том, что основная память имеет наиболее свежую копию данных. Это важно в мультипроцессорных системах, а также для организации ввода/вывода. Когда процессор ожидает завершения записи при выполнении сквозной записи, то говорят, что он приостанавливается для записи (write stall). Общий 82 прием минимизации остановов по записи связан с использованием буфера записи (write buffer), который позволяет процессору продолжить выполнение команд во время обновления содержимого памяти. Следует отметить, что остановы по записи могут возникать и при наличии буфера записи. В структуре кэш-памяти выделяют два типа блоков данных:   память отображения данных (собственно сами данные, дублированные из  оперативной памяти); память тегов (признаки, указывающие на расположение кэшированных данных в  оперативной памяти). Пространство памяти отображения данных в кэше разбивается на строки - блоки фиксированной длины (например, 32, 64 или 128 байт). Каждая строка кэша может содержать непрерывный выровненный блок байт из оперативной памяти. Какой именно блок оперативной памяти отображен на данную строку кэша, определяется тегом строки и алгоритмом отображения. По алгоритмам отображения оперативной памяти в кэш выделяют три типа кэш-памяти:  полностью ассоциативный кэш;  кэш прямого отображения; множественный ассоциативный кэш. Для полностью ассоциативного кэша характерно, что кэш-контроллер может поместить любой блок оперативной памяти в любую строку кэшпамяти. В этом случае физический адрес разбивается на две части: смещение в блоке (строке кэша) и номер блока. При помещении блока в кэш номер блока сохраняется в теге соответствующей строки. Когда ЦП обращается к кэшу за необходимым блоком, кэш-промах будет обнаружен только после сравнения тегов всех строк с номером блока. Одно из основных достоинств данного способа отображения - хорошая утилизация оперативной памяти, т.к. нет ограничений на то, какой блок может быть отображен на ту или иную строку кэш-памяти. К недостаткам следует отнести сложную аппаратную реализацию этого способа, требующую большого количества схемотехники (в основном компараторов), что приводит к увеличению времени доступа к такому кэшу и увеличению его стоимости. 83 Полностью ассоциативный кэш 8х8 для 10-битного адреса Альтернативный способ отображения оперативной памяти в кэш - это кэш прямого отображения (или одновходовый ассоциативный кэш). В этом случае адрес памяти (номер блока) однозначно определяет строку кэша, в которую будет помещен данный блок. Физический адрес разбивается на три части: смещение в блоке (строке кэша), номер строки кэша и тег. Тот или иной блок будет всегда помещаться в строго определенную строку кэша, при необходимости заменяя собой хранящийся там другой блок. Когда ЦП обращается к кэшу за необходимым блоком, для определения удачного обращения или кэш-промаха достаточно проверить тег лишь одной строки. Очевидными преимуществами данного алгоритма являются простота и дешевизна реализации. К недостаткам следует отнести низкую эффективность такого кэша из-за вероятных частых перезагрузок строк. Например, при обращении к каждой 64-й ячейке памяти в системе кэшконтроллер будет вынужден постоянно перегружать одну и ту же строку кэш-памяти, совершенно не задействовав остальные. Кэш прямого отображения 8х8 для 10-битного адреса Несмотря на очевидные недостатки, данная технология нашла успешное применение, например, в МП Motorola MC68020, для организации кэша инструкций первого. Компромиссным вариантом между первыми двумя алгоритмами является множественный ассоциативный кэш или частично-ассоциативный кэш. При этом способе организации кэш-памяти строки объединяются в 84 группы, в которые могут входить 2, 4, : строк. В соответствии с количеством строк в таких группах различают 2-входовый, 4-входовый и т.п. ассоциативный кэш. При обращении к памяти физический адрес разбивается на три части: смещение в блоке (строке кэша), номер группы (набора) и тег. Блок памяти, адрес которого соответствует определенной группе, может быть размещен в любой строке этой группы, и в теге строки размещается соответствующее значение. Очевидно, что в рамках выбранной группы соблюдается принцип ассоциативности. С другой стороны, тот или иной блок может попасть только в строго определенную группу, что перекликается с принципом организации кэша прямого отображения. Для того чтобы процессор смог идентифицировать кэш-промах, ему надо будет проверить теги лишь одной группы (2/4/8/: строк). Двухвходовый ассоциативный кэш 8х8 для 10-битного адреса Данный алгоритм отображения сочетает достоинства как полностью ассоциативного кэша (хорошая утилизация памяти, высокая скорость), так и кэша прямого доступа (простота и дешевизна), лишь незначительно уступая по этим характеристикам исходным алгоритмам. Именно поэтому множественный ассоциативный кэш наиболее широко распространен. Для организации кэш-памяти можно использовать принстонскую архитектуру (смешанный кэш для команд и данных, например, в Intel-486). Это очевидное (и неизбежное для фон-неймановских систем с внешней по отношению к ЦП кэш-памятью) решение не всегда бывает самым эффективным. Разделение кэш-памяти на кэш команд и кэш данных (кэш гарвардской архитектуры) позволяет повысить эффективность работы кэша по следующим соображениям:  Многие современные процессоры имеют конвейерную архитектуру, при которой блоки конвейера работают параллельно. Таким образом, выборка команды и доступ к данным команды осуществляется на разных этапах конвейера, а использование раздельной кэш-памяти позволяет выполнять эти операции параллельно.  Кэш команд может быть реализован только для чтения, следовательно, не требует реализации никаких алгоритмов обратной записи, что делает этот кэш проще, дешевле и быстрее. 85 Именно поэтому все последние модели IA-32, начиная с Pentium, для организации кэш-памяти первого уровня используют гарвардскую архитектуру. Критерием эффективной работы кэша можно считать уменьшение среднего времени доступа к памяти по сравнению с системой без кэшпамяти. В таком случае среднее время доступа можно оценить следующим образом: Tср = (Thit x Rhit) + (Tmiss x (1 Rhit)) где Thit - время доступа к кэш-памяти в случае попадания (включает время на идентификацию промаха или попадания), Tmiss - время, необходимое на загрузку блока из основной памяти в строку кэша в случае кэш-промаха и последующую доставку запрошенных данных в процессор, - частота Rhit попаданий. Очевидно, что чем ближе значение Rhit к 1, тем ближе значение Tср к Thit. Частота попаданий определяется в основном архитектурой кэш-памяти и ее объемом. Влияние наличия и отсутствия кэш-памяти и ее объема на рост производительности ЦП показано в Основная память Это следующий уровень иерархии памяти и служит в качестве --------------- ввода /вывода между процессором и внешними устройствами. Для оценки производит осн.память исп.2 осн----1. задержка доступа 2. полоса пропускания Задержка памяти традиционно оценивается двумя параметрами : 1.временем доступа (access time) 2.длительностью цикла памяти (cycle time) Время доступа – это промежуток времени между выдачей запроса на чтение и поступление требуемого слова из памяти. Длительность цикла памяти – определяется min временем между 2 последовательными обращениями к памяти. Основная память современных компьютеров реализуется на статических и динамических ЗУ (запоминающее устройство) с произвольной выборкой. Микросхемы статических ЗУ имеют меньшее время доступа и требует циклов регенерации. Микросхемы динамических ЗУ характеризуется большей емкостью и меньшей стоимостью, но требует схем регенерации и имеют значительно большее время доступа. В процессе развития динамических ЗУ с ростом их емкости основным вопросом их стоимости таких микросхем был вопрос о количестве адресных линий и стоимости соответствующего корпуса. В те годы было принято решение о необходимости мультиплексирования адресных линий, позволивших 86 наполовину сократить количество контактов корпуса необходимых для передачи адреса . Поэтому обращение к динамическим ЗУ обычно происходит в 2 этапа: 1.начинается с выдачи сигнала RAS (ROW ACCESS STOKE), которые фиксируют в микросхеме поступивший адрес строки; 2.включает переключение адреса для указания адреса столбца и подачу сигнала CAS(COLUMN ACCESS STOKE), которые фиксируют этот адрес и разрешает работу выходных буферов микросхем. Назначение этих сигналов связано с внутренней организацией микросхем, которые обычно представляют собой прямоугольную матрицу которую можно адресовать с помощью указания № строки и № столбца. Дополнительным требованием организации динамических ЗУ является необходимость периодической регенерации ст. состояния. Поэтому ко всем строкам всех микросхем динамической памяти должны производится периодические обращения в пределах определенного временного интервала =8мс. Обычно контролер памяти включает в свой состав соответствующую аппаратуру регенерации, а время затраченное на регенерацию, стараются поддержать на уровне меньшем 5% от общего времени. В отличии от динамических, статические ЗУ не требуют регенерации и время доступа к ним совпадают с длительностью цикла. Согласование производительности современных компьютеров с νоснов.памяти ВС остается одной из важнейших проблем. Поэтому важным направлением современных разработок является методы ↑ полосы пропускания памяти за счет ее организации. Основными методами увеличения полосы пропускания является: - увеличение разрядности памяти; - использование расслоение памяти; - использование независимых банков памяти; - обеспечение режима бесконфликтного обращения к банкам памяти; - использование специальных режимов работы динамических микросхем памяти; Увеличение разрядности основной памяти. Связано с разрядностью кэш-п 1-го и 2-го уровня. Кэш-п 1-го уровня во многих случаях имеет физическую ширину шин данных, соответствующие разрядности машинного слова, так как большинство компьютеров выполняют обращение именно к этой единице информации. В ситемах буз кэш-п 2-го уровня ширина шин данных основной памяти часто соответствуеь ширине шин данных кэш-п. Удвоение или учетверение ширине шин кэш-п и основной памяти удваивает или учетверяет соответствующую полосу пропускания системной памяти. Реализация более широких шин вызывает необходимость мультиплексирования данных между кэш-п и процессором. Эти мультиплексоры оказывают на критические пути поступления информации в 87 процессор. Кэш-п 2-го уровня несколько смягчает эту проблему, т.о. мультиплексоры могут располагаться между 1 и 2 уровнями кэш-п. Другая проблема, связанная с увеличением разрядности памяти, определятся необходимостью вычисления min объема для поэтапного расширения памяти. Удвоение или учетверение шины памяти приводит и к удвоению\ учетверению этого min объема. Кроме того существуют проблема и с контролем и исправлением ошибок в системе с памятью большой разрядности. Расслоение памяти. Наличие в системе множества микросхем памяти позволяет использовать потенциальный параллелизм, заложенный в такой организации. Для этого микросхемы памяти объединяются в банки \ модули, содержащие фиксированное число слов. Причем только к одному из ятих слов банка возможно обращение. В реальных системах имеющаясяVдост. к таким банкам, редко оказывается достаточной =>,чтобы увеличить эту скорость нужно обращаться сразу к нескольким банкам одновременно. Одна из общих методик для этого называется расслоением памяти. При расслоении банки памяти обычно упорядочивают так, чтобы N последовательных адресов памяти (i,…,i+N) приходилось на N различных банков, т.е. в i-том банке памяти находятся только те слова, адреса которых имеют вид: K*N+i, где K(0;m-1), m-число слов в одном банке, т.е. можно достичь в N раз большей Vдост. и памяти в целом, чем у отдельного его бака, если обеспечить при каждом доступе обращения к данным в каждом из банков. Большинство способов реализации таких расслоенных структур напоминают конвейера, обеспечивающие рассылку адресов в различные банки и мультиплексирующие поступающие из банков данные. Таким образом, степень/коэффициент расслоения определяют распределение адресов по банкам памяти. Такие системы оптимизируют обращение по последовательным адресам памяти, что является характерным при подкачке информации в кэш-п. при чтении, а также при записывании в кэш-п. обратного отображения. Однако если требуется доступ к случайным адресам памяти, то производительность расслоенной памяти может значительно снижаться. Обобщением идеи расслоения памяти является возможность реализации нескольких независимых обращений, когда несколько контролеров памяти позволяют банкам памяти работать независимо. Если система памяти разработана для поддержки множество независимых запросов, как, например при реализации многопроцессорной и векторной обработки, эффективность систем будет в значительной степени зависеть от частоты поступления независимых запросов к разным банкам. Обращение по адресам отличающиеся на нечетное число, хорошо обрабатывается традиционными схемами расслоения памяти. Одно из решений, используемое для обработки последовательных обращений к памяти, если разница в адресах четная, заключается в том, чтобы 88 статистически снизить вероятность подобных обращений, путем значительного увеличения количества банков памяти. Использование специфических свойств динамических ЗУ с произвольной выборкой Обращение к динамическим ЗУ происходит в 2 этапа: 1.обращение к строке; 2.обращение к столбцу; При этом внутри микросхемы осуществляется буферизация битов строки прежде чем происходит обращение к столбцу. С целью увеличения производительности все современные микросхемы памяти обеспечивают возможности подачи сигналов синхронизации, которые позволяют выполнить последовательные обращения к буферу без дополнительного времени обращения к строке. Имеются 3 способа такой оптимизации: 1.блочный режим (nibble mode)→динамических ЗУ может обеспечить выдачу 4-ех последовательных ячеек для каждого сигнала строба адреса строки; 2.страничный режим (page mode) →буфер работает как статические ЗУ. При изменении адреса столбца возможен доступ к произвольным битам в буфере до тех пор, пока не будет обращение к другой строке или не наступит время регенерации; 3.режим статического столбца (static mode)→аналогично 2 за исключением того, что нет необходимости переключать строб адреса столбца каждый раз для изменения адреса столбца. Большинство современных ЗУ допускают использование  из этих режимов. При чем выбор режима осуществляется на стадии установки кристалла в корпус, путем выбора соответствующего соединения. Плюсом такой оптимизации является то, что она незначительно повышает стоимость системы, позволяя практически учетверить пропускную способность памяти. Например, блочный режим был разработан для поддержки режимов, аналогичных расслоению памяти. Кристалл за один раз читает значение 4-ех бит и выдает их наружу в течении 4-ех оптимизированных циклов. Если время пересылки по шине не превосходит времени оптимизации цикла единственное усложнение для организации памяти с 4-ех кратным расслоением заключается в несколько усложненной схеме синхронизации. Страничный режим и режим статического столбца также могут использоваться, обеспечивая также большую степень расслоения при усложнении схемы упр. Новое поколение динамических ЗУ разработано с учетом дальнейшей оптимизации интерфейса между памятью и процессором. К таким системам относятся памяти типа RAMBUS, DDR, DDR2 и т.д. Вторичная память Память на магнитных носителях 89 Жесткие диски включают в себя эл-мех. и электронную части. Эл-мех часть расположена в жестком корпусе, внутри которой закреплен двигатель с вращающим шпинделем и смонтированным на нем дисками накопителя + в том же корпусе подвижный блок чтение \ запись с приводом, обеспечивающий позиционирование головок. Поверхность дисков имеет магнитное покрытие, а процесс записи состоит в локальных изменениях магнитного состояния этого покрытия. Информация на диске расположена по окружностям – дорожкам. Дорожки для хранения информации разбиты на секторы. Каждый сектор обладает определенной структурой, включающей в себя заголовок, поле данных и контрольный код этого поля. В электронную часть диска входит контроллер, усилители сигналов интерфейсных шин и буферная память(кэш диска). Контроллер обеспечивает разгона \ установки шпинделя, позиционирование головок, чтение \ запись информации. Для чтения и записи данных головки удерживаются над диском при помощи спец. следящей системы, считываются с дисков специальные сервометки. Эти метки записываются либо в спец. местах дорожек, либо не в служебных серводорожках расположенных осн., или (редко) на специальной выделенной поверхности диска. Требования обеспечения работы сист. Позиционирования приводит к тому, что поперечная плотность записанных данных меньше продольной. Сервометки также используются для поддержания постоянной скорости вращения диска. Время позиционирования требуемой дорожки зависит от расстояния до него текущего положения головки чтения \ запись. Минимальное время затрачиваемого на переход к соседнему цилиндру. На переход с дорожки на дорожку в переделах 1-го цилиндра затрачивается приблизительно столько же времени, сколько на переход на дорожку другого цилиндра, т.о. система позиционирования даже при переключении дорожек в пределах цилиндра должна вымереть точность установки головок. Для предотвращения потери данных в случае выхода из строя диска его контроллер обычно осуществляет специальный мониторинг состояния диска, фиксируя изменение таких его параметров, как частота чтения данных; время разгона шпинделя до номинальной скорости вращения; кол-во перемещенных секторов кол-во ошибок системы позиционирования общее число отработанных часов и т.д. Средства: SMART (Self-Monitoring-Analyzing and Reporting-Technology) На основании изменений этих параметров с течением времени контроллер системы SMART способен предвидеть предположительное время выхода диска из строя. Интерфейсы работы с диском. I. Интерфейс Serial ATA является дальнейшем развитием семейства ATA.Последней версией \ специализацией является ATAP I-6(ATA/133). 90 Основные цели, которые преследовали его разработчики заключались в создании недорогого интерфейса , более высокопроизводительного, чем интерфейс ATA , полностью с ним программно совместимого; более удобное подключение дисков к компьютеру и большую длину кабеля; низковольтную и экономичную в энергопотреблении. Скорость передачи данных по этому интерфейсу в первоначальном варианте стандарта- 150 Mб/с, предположительно max 600 Mб/с. Интерфейсный кабель содержит 2 пары сигнальных проводов и 3 экранных провода. Его длина должна быть<1 м. Предполаг. возможности горячего отключения и переключения устройства. В интерфейсе Serial ATA к каждому кабелю подключено только 1 устройство. Различие дисков на ведущее и ведомое нет, но при необходимости контроллер интерфейса может эмулировать поведение 2-х независимых дисков как пары ведущий-ведомый. II. Интерфейс SCSI (Small Computer System Interface) – для малых вычислительных систем. Появился приблизительно тогда, когда и ATA, но предназначен для связи различных устройств, а не только дисков. Данный интерфейс имеет две модификации по разрядности передаваемых данных: - узкую (8 бит) – возможно подключение до 8 устройств. - широкую (16 бит) - возможно подключение до 16 устройств. Подключаемые устройства бывают 2 – х типов: 1. контролер периферийных устройств; 2. хост – адаптер. Устройства 1-го вида могут управлять работой до 8 – ми логических устройств, а хост – адаптер используется для связи шины SCASI с шиной расширения компьютера. За время существования Интернета были созданы различные его модификации, отличающиеся пропускной способностью. В начале 2000г. пропускная способность 320 Мб/сек. Еще 2 варианта: Fast (быстрый) и Ultra (сверхбыстрый). Кроме того, существует спецификация последовательного варианта интерфейса для оптического канала связи, которые относятся к этому семейству. Электрические параметры интерфейса SCASI также имеют несколько модификаций, отличающихся способом передачи сигнала и уровнем напряжения при допустимой длине шин до 25 м. Выполнение операций обмена по шинам SCASI осуществляется управлением контролера, инициализирующего устройства и предполагающее передачу сообщений, команд и данных плюс информацию о состоянии. Сообщения в основном указывают на необходимость каких – либо действий, либо информируют об их выполнении. Команды указывают на то, какие операции необходимо выполнить (чтение, запись, поиск и т.д.). Учитывая это, интерфейс разработан для связи различных устройств, все команды разделены на группы: есть группа команд для устройств прямого доступа (диски и т.д.); группа СД- команд; группа сканеров и т.д. 91 Для установления связи с целым устройством инициализатор обменивается с ним сообщением. После установки связи он посылает устройству команды, в процессе выполнения которых осуществляется обмен данными, дополняющийся по мере необходимости сообщениями. Для адресации данных на дисках команды SCASI используют 32–х разрядные адреса , что ограничивает объем дисков 2 терабайтами. Интерфейс SCASI считается более надежным и производительным, чем АТА, но и более дорогим. Он применяется в серверных системах. Управление диском. Обычно операционная система поддерживает очередь запросов к жесткому диску. Это создает возможность изменять порядок запросов с тем, чтобы сделать обращение к диску более организованными и вносящими минимальные задержки в работу системы. Если очередь работает по принципу «1 пришел, 1 ушел», это может привести к крайне неэффективной работе диска. В частности при этом повышается время поиска информации на диске и повышается износ его механической части. В связи с этим разработаны специальные алгоритмы доступа к дискам. В настоящее время используют 3 варианта алгоритма доступа: I. Алгоритм работает по кратчайшему времени доступа ( SSTF – shortest Suck Time First). Данный алгоритм работает так: когда заканчивается очередная операция доступа к диску, следующим обрабатывается запрос к данным, расположенным на минимальном расстоянии от текущего положения считывающей головки. Данный алгоритм минимализирует задержку и дает общее увеличение производительности. Однако время ответа на запрос зависит от того, насколько запрос близок к предыдущему, и теоретически ответ на некоторые запросы может быть получен на ∞ большое время. II. Алгоритм подъемника. Elevator Algorithm. При использовании этого алгоритма считывающие головки преимущественно в одном направлении (от центра диска к краю (наоборот)), каждый раз обрабатывая ближайший запрос в данном направлении. Когда запросы в одном направлении оказываются исчерпаны, головка движется в обратном направлении. Этот алгоритм обеспечивает более равномерное время отклика, но он не гарантирует выполнение запроса. Однако, если осуществляются непосредственные запросы к одному и тому же цилиндру, то считывающая головка может находится над ним ∞ долго. Данная проблема решается ограничением, которое может располагать блок головок над одним цилиндрам. Еще одно простое решение заключается в том, что обслуживаются только те запросы, которые уже были на момент перемещения головки. III. Односторонний алгоритм подъемника. One way Elevator Algorithm. Обычный двусторонний алгоритм медленнее обрабатывает запросы к внешней и внутренней стороне диска, чем запросы, приходящиеся на его середину. Эта проблема может быть решена следующим образом: 92 допускается движение головки только в одном направлении. Когда запросы исчерпаны, блок головки возвращается на исходное положение и начинает новый проход. В этом случае возникает дополнительное время на возврат головок в исходное положение. Но если обращение к диску происходит достаточно часто, то возврат головок будет происходить редко и больших различий по скорости доступа с I. не будет, но вопросы обрабатываются равномерно. Дисковый КЭШ. Концепция КЭШ – памяти применима к дисковым записывающим устройствам. Принцип кэширования дисков во многом схож с принципом кэширования основной памяти, несмотря на то, что способы доступа к диску и основнай памяти существенно различаются. Дисковая КЭШ – память представляет собой память с произвольным доступом, размещается между диском и основной памятью. Емкость такой памяти велика от 8 Мб и более. Пересылка информацию между дисками основной памяти осуществляется контролером КЭШ – памяти.. Изготавливают диски КЭШ – памяти по той же технологии, что и основную. Основная память или основная память системы может использоваться в качестве дискового КЭШа. В качестве 1 пересылки (блока) может выступать сектор, несколько секторов или 1/несколько дорожек диска. В случае пересылки секторов КЭШ – память заполняется не только текущим сектором, но и секторами, расположенными за ним – это называют опережающим чтением (Read Ahead). В дисковых КЭШах используют а.п.совокупной записи. Обычно дисковая КЭШ – память включает в себя средство коррекции ошибок и архитектура КЭШ – памяти. На современных магнитных дисках обычно реализуют полностью ассоциативное отображение. 93 12. Многопроцессорные системы. Классификация систем параллельной обработки данных. Можно выделить 4 основных типа архитектур систем параллельной обработки. I. Конвейерная и векторная обработка. Основу конвейерной обработки составляет раздельное выполнение некоторых операций в несколько этапов с передачей данных от одного этапа к другому. Рост производительности при этом обеспечивается за счет того, что одновременно на различных ступенях конвейера выполняется несколько операций. При выполнении векторной команды одна и та же операция применяется ко всем элементам вектора. Для настройки конвейерного выполнения операций при этом может потребоваться некоторое время, однако затем операнды могут поступать в конвейере с максимальной скоростью, которая способна обеспечить аппаратура. При этом не возникает пауз в связи с выборкой новой команды или определением адреса перехода при условных вычислениях. Т. о., главный принцип операций на векторной машине состоит в выполнении комбинаций из нескольких элементарных операций, которые должны повторно применяться к некоторому блоку данных. II. Машина типа SIMD (Single Instruction Multiple Date). Машина типа SIMD состоят из большого числа идентичных процессорных элементов, имеющих собственную память. Все процессорные элементы в такой машине выполняют одну и ту же программу. Очевидно, что такая машина эффективна лишь при решении задач, которые позволяют процессорам выполнять одну и ту же работу. Модель вычисления для машины SIMD очень похожа на модель вычислений для векторного процессора, т. е. одиночная операция выполняется над большим блоком данных. В отличие от ограничения конвейерного функционирования векторного процессора матричный процессор может быть более гибким, т. к. обрабатывающие элементы таких процессоров представляют собой универсальные программирующие ЭВМ, так, что задача, решаемая параллельно, может быть достаточно сложной и содержать ветвления. Модели вычисления на векторных и матричных настолько схожи, что часто объединяются в один класс. III. Машины типа MIMD (Multiple Instruction). Подобно тому как термин матричный процессор применяют к машинам типа SIMD, термин мультипроцессор является практически применимо для машины типа MIMD. В мультипроцессорной системе каждый процессорный элемент выполняет свою программу, достаточно независимо от других процессорных элементов. В мультипроцессоре с общей памятью (сильно связанные мультипроцессоры) имеется КЭШ – данных и КЭШ – команд, доступные всем процессорным элементам. С общей памятью процессорные элементы связаны при помощи общей шины или сети обмена. В противоположность этому варианту в 94 слабосвязанных мультипроцессорных системах (система с локальной памятью) вся память разделена между процессорными элементами, и каждый блок памяти доступен только связанному с ним процессору. Процессорные элементы соединены друг с другом при помощи сети обмена. Базовой моделью вычислений в мультипроцессоре является независимых процессоров, который эпизодически обращается к разделяемым данным. Существует большое количество вариантов этой модели. На одном конце спектра модель распределенных вычислений, в которой программа делится на довольно большое число параллельных задач, состоящих из множества подпрограмм. Модель потоковых вычислений, в которых каждая операция в программе может рассматриваться как отдельный процессор. IV. Многопроцессорные машины с SIMD (MSIMD). Многие современные суперкомпьютеры представляют собой многопроцессорные системы, в которых в качестве процессоров используют векторные процессоры или процессоры типа SIMD. Машины такого типа дают возможность использовать векторные операции для некоторых частей программы и гибкие возможности архитектуры MIMD для других частей программы. Одной из отличительных особенностей многопроцессорных вычислительных систем, при помощи которых процессоры соединяются друг с другом и с памятью. Многие характеристики производительности выражаются отношением времени обработки к времени обмена, что придает сети обмена важное значение в обеспечении производительности. Существует 2 основные модели межпроцессорного обмена: 1) основана на передачи сообщений; 2) на использовании общей памяти. В многопроцессорной системе общей памяти один процессор осуществляет запись в конкретную ячейку, а другие производят считывание из этой ячейки. Чтобы обеспечить согласование данных и синхронизировать процесс обмена часто реализуют по принципу взаимного исключения доступа к общей памяти. В архитектурах с локальной памятью непосредственное распределение памяти невозможно. Вместо этого процессоры получают доступ к совместно используемым данным по средствам передачи сообщений по сети обмена. Эффективность системных коммуникаций зависит от протокола обмена и пропускной способности каналов обмена и памяти. Т. о., существующие многопроцессорные машины распадаются на 2 основных класса в зависимости от количества объединяемых процессоров, которая определяет и способ организации памяти и межпроцессорных соединений. К 1 – й группе относятся машины с общей, реже разделяемой основной памятью, объединенных до нескольких десятков (более 32) процессоров. сравнительно небольшое количество процессоров в таких машинах позволяет иметь одну централизованную общую память и объединение процессора с помощью одной общей шины. При наличии у процессоров КЭШ – памяти достаточного объема. Высокопроизводительная шина и общая память могут удовлетворять обращение к памяти, поступающей от нескольких процессоров. Т. к. имеется единственная память 95 с одним и тем же временем доступа, эти машины иногда называются ИМА (Uniform memory Access). Такой способ организации является в настоящее время наиболее популярным для серверов малого и среднего класса. Типовая архитектура Процессор Процессор Кэш-п Кэш-п ОП . . . . . Процессор Кэш-п Устр. В/в 2 - ую группу машин составляют крупномасштабные системы с распределенной памятью. Чтобы поддерживать большое количество процессоров, приходится распределять основную память между ними. Иначе полосы пропускания памяти может не хватать для удовлетворения запросов. Модель, которая при этом получается, фактически представляет собой объединение машин ↑ при помощи сети:↓ Процессор Процессор Кэш-п Кэш-п Локальная Подсист. Локальная Подсист. память В/в память В/в Высокопроизводительная сеть Локальная Подсист. память В/в Кэш Процессор 96 С ростом числа процессоров просто невозможно обойти необходимость реализации модели. Распределение памяти с высокопроизводительной сетью для связи процессоров . Распределение памяти мужду узлами системы имеет 2 главных преимущества: 1. Это эффективный способ повышения полосы пропускания памяти; 2. Это снижает задержку обращения к локальной памяти. Обычно устройства в/в также кА Ки память распределяется по узлам и в действительности узлы могут содержать небольшое число процессоров, соединенных между собой другим способом. Основная разница в архитектуре, которую следует выделять в машине с распределенной памятью, заключается в том, как осуществляется связь и какова логическая модель памяти. Модели связи и архитектуры памяти. Имеется 2 альтернативы организации устройств памяти и связанные с этим 2 альтернативных метода для передачи данных между процессорами. Физически отдельные устройства памяти могут адресоваться, как логически единое адресное пр-во. Это означает, что  проц.-р может выполнять обращение к  ячейкам памяти, предполагая, что он при этом имеет соответствующие права доступа. Такие машины называются машинами с распределенной распределяемой памятью DSM (Distributed Shared Memory) или NUMd т. к. время доступа в таких системах зависит от расположения ячейки памяти. В альтернативном случае адресное производство состоит из отдельных логически несвязанных адресных пр-в. В этом случае, каждый модуль «Процессор – память» представляет собой отдельную ВМ, поэтому такие системы называют многомашинными. С каждой из этих организаций адресного производства связан свой механизм обмена. В 1–м случае используется разделяемая общая память, а во 2-м – механизм передачи сообщений. Каждый из этих механизмов обмена имеет свои плюсы и минусы. 1. Для обмена в общей памяти: «+» а) совместимость с хорошо изученными механизмами, использующихся в однопроцессорной системе; б) простота программирования, особенно если модели обмена между процессорами достаточно сложны или динамически смешиваются в процессе использования; в) более низкая задержка обмена и лучшее использование полосы пропускания при обмене малыми порциями данных; г) возможность использования аппаратно – управляемого кэширования для снижения частоты уделенного обмена, допускающая кэширование всех данных, как разделяемых, так и не разделяемых. 97 Для обмена при помощи передачи сообщений: «+» а)аппаратура может быть более простой; б) понятные модели обмена, позволяющие сократить число передаваемых данных при написании или оптимизации программы. Требуемая модель обмена может быть надстроена над аппаратной, моделью, которая использует  из этих механизмов. Поддержку передачи сообщения над общей памятью реализовать намного проще, если предположить, что полосы пропускания канала связи достаточно. Трудности, возникают при рабате с сообщениями произвольной длины и с выровненными сообщениями. Эти трудности можно преодолеть программным способом с некоторой потерей производительности, либо без потерь с использованием соответствующей аппаратной поддержки. Построение механизмов реализации разделяемой памяти над механизма передачи сообщений намного сложнее. Без поддержки со стороны аппаратуры все обращения к разделяемой памяти потребует привлечения ОС, как для обеспечения преобразованных адресов и защиты памяти, так и для преобразования обращений к памяти в передачу и прием сообщений. Т. к. операции чтения / записи обычно работают с небольшим объемом данных, то большие накладные расходы на поддержку такого обмена делают невозможной чисто программную реализацию. При оценке  механизма обмена критичными являются 3 характеристики производительности: 1. Полоса пропускания. 2. Задержка. 3. Скрытие задержки. Насколько хорошо механизм обмена скрывает задержку путем перекрытия обмена с вычислениями или с другими обменами. Каждый из этих параметров производительности воздействует на характеристики отдельно. Мультипроцессорная когерентность КЭШ – памяти. Значение элемента данных, хранящимся в 2-х различных процессорах, доступно этим программам только через их индивидуальный КЭШ. Это способствует возникновению проблем согласования между собой содержимого КЭШа разных процессоров. Обычно в малых мультипроцессорах используется механизм – протокол, позволяющий решить эту проблему. Такие протоколы называются протоколами когерентности КЭШ памяти. Существует 2 класса таких протоколов. I. Протоколы на основе справочника (Directory Based). Информация о состоянии блока физической памяти при этом содержится только в одном месте – справочник. (Физический справочник может быть распределен). II. Протоколы наблюдения (Snooping). При их использовании каждый КЭШ, который содержит копию данных некоторого блока физической памяти, имеет собственную служебную информацию о его состоянии. Централизованная система записи отсутствует. Обычно КЭШ расположена 98 на общей разделяемой шине, и контролеры КЭШ – памяти всех процессоров наблюдают за шиной для определения того, не содержат ли они копии передаваемого блока. В мультипроцессорных системах, используются микропроцессоры с КЭШ – памятью, подключенные к централизованной общей памяти, протоколы наблюдения приобрели популярность, т. к. для обзора состояния КЭШа могут быть использованы заранее существующие физические соединения – шина памяти. Проблема когерентности памяти состоит в необходимости гарантировать, что  считывание элемента данных возвращает последние по времени записанное в него значение. Вопрос о том, когда записываемое значение должно быть доступно процессору, выполняемому чтение, определяется выбранной моделью непротиворечивого состояния памяти и связан с реализацией синхронизации параллельных вычислений. Поэтому с целью упрощения предположим, что требование только, чтобы записанное операция записи значения было доступно операции чтения, возникшей немного позже записи, и что операция записи данного процессора всегда видны в порядке их выполнения. С данным определением согласно состоянию памяти, мы можем гарантировать когерентность путем обеспечения 2-х свойств. 1. Операция чтения ячейки памяти одним процессором, который следует за операцией записи в ту же ячейку памяти другим процессором, получит записанное значение, если чтение / запись достаточно отделены друг от друга по времени. 2. Операция записи в одну и ту же ячейку памяти выполняется строго последовательно, т. е. 2 подряд идущие операции записи в одну и ту же ячейку памяти будут наблюдаться другими процессорами именно в том порядке, в котором они появлялись в программе процессора, выполняющего эти операционные записи. Это свойство называется последовательным выполнением или сериализацией операционной записи. Имеются 2 методики, поддерживающие описанную выше когерентность. 1. Заключается в том. Чтобы гарантировать процессору исключительные права доступа к элементу данных перед выполнением записи в этот элемент. Этот тип протоколов называется протоколом записи с аннулированием (write invalidate protocol), т. к. при выполнении записи он аннулирует другие копии. Это наиболее часто встречающийся протокол, как в схемах на основе справочников, так и в схемах наблюдения. Исключительное право доступа означает, что во время выполнения записи не существует никаких других копий элемента данных, в которые можно писать или из которых можно читать. Все другие копии элемента аннулированы. 2. Альтернативой (1) является обновление всех копий элемента данных в случае записи в этот элемент. Этот тип протокола называется протоколом записи с обновлением (write update protocol или write broadcast protocol). В 99 этом протоколе для снижения требований к полосе пропускания полезно отслеживать, является ли слово в КЭШ – памяти разделяемым объектом (нет). Разница в производительности между протоколами записи с обновлением и аннулированием определяется 3-мя характеристиками. 1. Несколько последовательностей оперативной записи в одно и то же слово не перемещающихся с оперативного чтения требует несколько трансляций при использовании протокола записи с обновлением, но только одной начальной операции аннулирования при использовании протокола записи с аннулированием. 2. При наличии многословных блоков в КЭШ – памяти каждое слово, записывающееся в блок КЭШа, требует трансляции при исполнении протокола с обновлением в то время, как только первая запись в  слово блока нуждается в генерации операции аннулирования при использовании соответствующего протокола. Протокол записи с аннулированием работает на уровне блоков КЭШ – памяти в то время, как протокол записи с обновлением должен работать на уровне отдельных слов. 3. Задержка между записью слова в одном процессоре и чтения записанного слова другим процессором обычно меньше при использовании схемы записи с обновлением , т.к. записанные данные немедленно транслируются в процессор выполнения чтений, если этот процессор имеет копию данных, следовательно промаха при обращении к КЭШу не возникает. Эти 2 схемы во многом похожи на схему работы КЭШ – памяти со сквозной и обратной записью. 100 13. Grid системы Определения и терминология Грид(Grid) – географически распределеная инфраструктура, объединяющая множество ресурсов разных типов (процессоры, долговременная и оперативная память, хранилища и базы данных, сети), доступ к которым пользователь может получить из любой точки, независимо от места их расположения. Грид предполагает коллективный разделяемый режим доступа к ресурсам и к связанным с ними услугам в рамках глобально распределенных виртуальных организаций, состоящих из предприятий и отдельных специалистов, совместно использующих общие ресурсы. В каждой виртуальной организации имеется своя собственная политика поведения участников, которые должны соблюдать установленные правила. Виртуальная организация может образовываться динамически и иметь ограниченное время существования. Первые полнофункциональные прототипы грид-систем относятся к проекту Distributed Computing System (DCS) project начала 70-х годов, над которым велись работы в Калифорнийском Университете под руководством Дэвида Фарбера. Технология описывалась как “Кольцо (сеть) работающее как одна очень гибкая система, на которой отдельные узлы (компьютеры) могут запрашивать задачи”. Эта схема очень похожа на то, как вычислительные возможности ипользуется на гриде. Однако в 80х годах, эта технология была практически заброшена, так как трудности администрирования и безопасности связанные с выполнением вашей задачи на компьютере, которым вы не можете управлять, казались (и до сих пор кажутся некоторым) непреодолимыми. Идеи грид были собраны вместе Яном Фостером, Карлом Кессельманом и Стивом Тьюком, так называемыми “отцами грид”. Они стояли и у истоков разработки первого стандарта конструирования гридсистем, свободно распространяемого программного инструмента с открытым кодом Globus Toolkit. Этот стандарт объединил не только управление процессорным временем, но и управление хранением данных, обеспечением безопасности, движениями данных, контроль состояний, а также инструментарий для разработки дополнительных сервисов. Он основан на той же инфраструктуре, включая переговоры о соглашении, механизмы уведомления, триггерные сервисы и агрегирование информации Термин грид имеет более далекие последствия, чем принято считать. В то время как Globus Toolkit остается стандартом де-факто для создания решений на базе грид корпоративного и военного назначения, было создано большое количество других средств, которые включают в себя определенное подмножество сервисов необходимых для создания промышленного грида. Для дальнейшего развития Globus Toolkit в 1999 году была создана специальная организация Global Grid Forum (GGF), в которую наряду с 101 академическими организациями вошли многие производители компьютерных систем и программного обеспечения. В 2002 году GGF и корпорацией IBM в рамках версии Globus Toolkit 3.1 была представлена новая системная разработка Open Grid Services Architecture (OGSA), инкорпорировавшая в грид понятия и стандарты вебсервисов. В этой архитектуре грид-сервис определяется как специальный тип веб-сервиса, благодаря чему становится возможной работа с ресурсами грид на базе стандартных интернет-протоколов. В своей статье “Что такое грид? Три критерия” в 2002 году Ян Фостер приводит простой список критериев, в соответствии с которым, грид – это система которая:    координирует использование ресурсов при отсутствии централизованного управления этими ресурсами (Грид интегрирует и координирует ресурсы и пользователей, которые находятся в разных местах, например, персональный компьютер пользователя и центральный компьютер, разные административные отделения одной компании или разные компании, и направляет участникам уведомления о гарантиях, страховке, платежах, членстве и т.д. Если это не так, мы имеем дело с локальной системой управления);  использует стандартные, открытые, универсальные протоколы и интерфейсы (Грид строится на базе многоцелевых протоколов и интерфейсов, позволяющих решать такие фундаментальные задачи как аутентификация, авторизация, обнаружение ресурсов и доступ к ресурсам. Если это не так, мы имеем дело со специализированной прикладной системой);  должна нетривиальным образом обеспечивать высококачественное обслуживание (грид позволяет использовать входящие в его состав ресурсы таким образом, чтобы обеспечивалось высокое качество обслуживания, касающееся, например, таких параметров, как время отклика, пропускная способность, доступность и надежность, а совместное использование ресурсов различных типов, готовых соответствовать сложным запросам пользователей, делает выгоду от использования комбинированной системы значительно выше, чем от суммы ее отдельных частей).  Также в 2002 году было создана грид система BOINC (англ. Berkeley Open Infrastructure for Network Computing — открытая программная платформа (университета) Беркли для распределённых вычислений) — некоммерческое межплатформенное ПО для организации распределённых вычислений. Изначально она была разработа для проекта SETI@Home, но с течением времени она нашла большую популярность среди университетов и научно исследовательских учреждений, так как она изначально была открытая и создавалась с ориентированием на научные вычисления. 102 В настоящее время считается, что ключевыми свойствами грида являются: грид работает с вычислениями;   грид работает с данными; грид обеспечивает безопасность;   грид предоставляет информационную систему (возможность мониторинга выполнения работ в гриде);   грид обеспечивает поддержку различных сред программирования. Изначально грид-технологии предназначались для решения сложных научных, производственных и инженерных задач, которые невозможно решить в разумные сроки на отдельных вычислительных установках. Однако теперь область применения технологий грид не ограничивается только этими типами задач. По мере своего развития грид проникает в промышленность и бизнес, крупные предприятия создают грид для решения собственных производственных задач. Таким образом, грид претендует на роль универсальной инфраструктуры для обработки данных, в которой функционирует множество служб (Grid Services), которые позволяют решать не только конкретные прикладные задачи, но и предлагают сервисные услуги: поиск необходимых ресурсов, сбор информации о состоянии ресурсов, хранение и доставка данных. Применение грид может дать новое качество решения следующих классов задач: массовая обработка потоков данных большого объема;   многопараметрический анализ данных;   моделирование на удаленных суперкомпьютерах;   реалистичная визуализация больших наборов данных;   сложные бизнес-приложения с большими объемами вычислений. Грид-технологии уже активно применяются как государственными организациями управления, обороны, сферы коммунальных услуг, так и частными компаниями, например, финансовыми и энергетическими. Область применения грид сейчас охватывает ядерную физику, защиту окружающей среды, предсказание погоды и моделирование климатических изменений, численное моделирование в машино- и авиастроении, биологическое моделирование, фармацевтику. Поколения Grid 103 Первое поколение Grid Ранние попытки по созданию Grid были предприняты как проекты по связи суперкомпьютеров между собой; в то время этот подход был известен как метакомпьютинг (metacomputing). Этот термин был употреблен в проекте CASA, одном из нескольких проектов системы гигабитной связи в США. К середине 1990-х отмечают появление раннего метакомпьютинга или Gridсред. Как правило, цель ранних проектов метакомпьютинга заключалась в обеспечении вычислительными ресурсами некоторого набора приложений, требующих высокой производительности. Двумя показательными проектами этого типа были FAFNER и I-WAY. Они во многом различались, но для обеспечения эффективной работы должны были решить ряд аналогичных проблем, таких, как связь, управление ресурсами и манипулирование удаленными данными. Свои решения предоставлять ресурсы метакомпьютинга они попытались выполнить с противоположных концов вычислительного спектра. Если FAFNER мог вовлекать в работу любую рабочую станцию с объемом памяти не менее 4 Мб, то I-WAY предназначался для объединения ресурсов больших суперкомпьютерных центров США. Проект FAFNER был нацелен на решение задачи разложения на множители для алгоритма шифрования с публичными ключами по методу RSA, широко используемому, например, в протоколе безопасных соединений SSL (Secure Sockets Layer). Разложение на множители в вычислительном отношении занимает очень много времени. По этой причине были разработаны параллельные алгоритмы разложения на множители, выполнение которых можно было распределить. Алгоритмы оказались тривиально параллельными и не требовали никакой связи между отдельными ветвями после начальной установки, которая позволила многим исполнителям выполнять некоторую небольшую часть большой задачи разложения на множители. Так был создан проект по разложению на множители через Web, известный как FAFNER (Factoring via Network-Enabled Recursion). В проекте использовался новый метод, под названием NFS (Number Field Sieve), разложения на множители на основе вычислительных Web-серверов. Исполнитель на основе Web-форм вызывал на сервере сценарии CGI (стандартного интерфейса обмена данных), написанные на языке Perl. Исполнители, основываясь на некотором наборе Web-страниц, могли обращаться к широкому набору сервисов для шагов просеивания при разложении на множители, а именно: распространению программного обеспечения NFS, документации проекта, анонимной регистрации исполнителя, распространению просеивающих заданий и др. Сценарии CGI поддерживали также администрирование кластера компьютеров, направляя активность отдельных просеивающих рабочих станций на ночное время, чтобы уменьшить пересечение с работой их владельцев. Исполнители 104 загружали и монтировали просеивающего программного демона, который становился их Web-клиентом, использовавшим протокол HTTP для получения заданий и возвращения результатов через сценарий CGI на Webсервере. Чтобы сделать этот подход успешным, важны три фактора: реализация программы NFS позволяла рабочим станциям с 4 Мб памяти выполнить полезную работу, используя малые границы и малое решето;   поддержка анонимной регистрации; исполнители могли добровольно давать свои ресурсы аппаратных средств, объявляясь только администратору локальной сети;   формирование иерархической сети Web-серверов из сайтов, задействованных для локального выполнения пакета сценария CGI, с целью минимизации критической потребности в администрировании сети, что позволяло просеивать данные круглосуточно с наименьшим вмешательством оператора.   Проект FAFNER был отмечен наградой в конкурсе TeraFlop на конференции по суперЭВМ 1995 г., что позволило появиться множеству других проектов, основанных на метакомпьютинге.   Проект I-WAY, напротив, был экспериментальной высокоэффективной сетью, связывающей множество высокопроизводительных компьютеров и развитых сред визуализации. Проект начался в начале 1995 года с идеи не строить новую сеть, а интегрировать существующие сети высокой пропускной способности. Виртуальные среды, наборы данных и компьютеры, постоянно находящиеся в семнадцати различных городах США, были соединены десятью сетями с переменной пропускной способностью. При этом использовались различные технологии маршрутизации и коммутации. Сеть была основана на технологии асинхронной передачи данных АТМ, которая в то время находилась в стадии становления,   и поддерживала протоколы TCP/IP над АТМ и непосредственно ATMориентированные протоколы. Для стандартизации интерфейсов программирования и управления клю-чевые сайты установили I-POP-серверы ("пункты присутствия"), которые действовали как шлюзы стыковки к I-WAY. Серверы I-WAY были рабочими станциями под UNIX, сконфигурированными для выполнения среды стандартного программного обеспечения I-Soft. На I-Soft возлагалось решение задач, связанных с неоднородностью, масштабируемостью, производительностью и безопасностью. В проекте I-WAY был также разработан планировщик ресурсов (вычислительный брокер ресурсов CRB), который состоял из протоколов CRB-пользователь и CRB-планировщик. Фактическое выполнение брокера CRB было распределено между центральным планировщиком и множеством локальных демоновпланировщиков, по одному на I-POP-сервер. Центральный планировщик вел очереди задач и таблицы, представляющие состояние локальных машин, 105 помещая задания на обработку и информацию о состоянии вычислений в распределенную файловую систему AFS, которая давала возможность хостмашинам совместно использовать ресурсы локальных и глобальных сетей. В I-POP-серверах защита обеспечивалась с использованием клиента telnet, модифицированного для использования аутентификации и шифрования Kerberos. Кроме того, CRB играли роль агента, исполняющего последовательное удостоверение подлинности доступа к ресурсам I-WAY от имени пользователя. Для поддержки инструментальных средств библиотека обменов Nexus поддерживала автоматические конфигурационные механизмы, которые давали возможность выбрать соответствующую конфигурацию в зависимости от используемой технологии, например связь через TCP/IP или АТМ. Библиотека MPICH (переносимая реализация стандарта MPI) была также расширена для использования Nexus. Проект IWAY определял несколько типов приложений: вычисления на суперЭВМ; доступ к удаленным ресурсам; виртуальный мир, видео и графические интерфейсы. Таким образом, FAFNER и I-WAY попытались создать метакомпьютерную среду для интеграции ресурсов, но с разных сторон. FAFNER стал широкомасштабной вездесущей (ubiquitous) системой, которая могла работать на любой платформе с Web-сервером. Как правило, его клиентуру составляли обычные терминальные компьютеры, в то время как IWAY объединил ресурсы в крупных центрах вычислений на суперЭВМ. Два проекта также различались типами приложений, которые могли использовать их среды. FAFNER был приспособлен к конкретному приложению разложения на множители, которое само по себе было тривиально параллельным и не зависело от быстрых коммуникаций. I-WAY был разработан для другого набора приложений различной производительности, которые обычно нуждались в быстрых обменах и мощных ресурсах. Однако оба проекта испытывали недостаток масштабируемости. Они были весьма новаторскими и успешными, и каждый проект был в авангарде метакомпьютинга, прокладывая путь ко многим последующим проектам Grid второго поколения. FAFNER стал предвестником проектов, подобных SETI@home и Distributed.Net , а I-WAY — Globus и Legion . Второе поколение Grid Акцент ранних работ по Grid-вычислениям был, в частности, вызван потребностью связать ряд американских национальных центров суперЭВМ, и проект I-WAY успешно достиг этой цели. Но сегодня инфраструктура Grid может объединять вместе не только специализированные центры суперЭВМ, она постепенно превращается в повсеместную распределенную инфраструктуру глобального масштаба, которая вместе с технологиями сетей высокой пропускной способности и принятием стандартов может поддерживать различные приложения, требующие крупномасштабных 106 вычислений и данных. Такая перспектива для Grid сформулирована в и расценивается как второе поколение этих систем. Системы второго поколения сосредоточились на трех главных проблемах. Неоднородность. Grid включает множество ресурсов, которые являются разнородными по своей природе, и может пересекать многие административные границы даже в глобальном масштабе.   Масштабируемость. Размер Grid может возрастать до миллионов единиц ресурсов. Это порождает проблему потенциального уменьшения ускорения вычислений по мере увеличения размера Grid. Поэтому приложения, которые требуют большого количества географически распределенных ресурсов, должны быть разработаны с учетом устойчивости   к задержкам и использования местоположения ресурсов. Кроме того, поскольку увеличение масштаба также предполагает пересечение большого количества административных границ, есть потребность в решении проблемы доверия и аутентификации (удостоверения подлинности). Приложения большого масштаба могут создаваться как композиции других приложений, что увеличивает интеллектуальную сложность систем. Адаптируемость. В Grid неисправность ресурса есть правило, а не исключение, поскольку вероятность отказа при таком количестве ресурсов очень высока. Поэтому администраторы ресурсов или сами приложения должны динамически приспосабливать свое поведение так, чтобы они могли получать максимальную производительность на используемых ими ресурсах и  сервисах.  Программное обеспечение (ПО) промежуточного уровня (middleware) обычно рассматривают как ПО, расслоенное между операционной системой и приложениями и предоставляющее ряд сервисов для корректного и эффективного их функционирования. В последнее время его стали воспринимать как способ интегрирования приложений, работающих в распределенных разнородных средах. В Grid промежуточное ПО используется, чтобы скрыть разнородность платформ и предоставить потребителям и приложениям однородную и монолитную (бесшовную — seamless) среду с набором стандартизированных интерфейсов и сервисов.   Принятие и использование стандартов также является ключевым моментом в борьбе с неоднородностью. Стандарты и системные интерфейсы API позволяют переносить сервисы и приложения на множество компьютерных систем, использующихся в среде Grid. Очевидно, что если   Grid состоит из n компонентов, то лучше принять n соглашений о приведении 2 форматов обмена к стандартному, чем иметь n преобразователей каждого формата в каждый.   Далее в этом разделе рассматриваются общие требования второго поколения Grid, а также его базовые технологии, брокеры ресурсов и планировщики, полностью интегрированные системы и одноранговые (peerto-peer) системы. 107 Необходимые условия для инфраструктуры данных и вычислений. Инфраструктура данных может состоять из всевозможных ресурсов с сетевыми связями от компьютеров и запоминающих устройств большой емкости до баз данных и специальных научных установок (инструментов). Главными проектными характеристиками, требуемыми от данных и вычислительной структуры Grid, являются следующие. Административная иерархия. Это способ распределения среды Grid, который потенциально способен обеспечить глобальный масштаб сети. Административная иерархия определяет, в частности, как распространяется административная информация по сети. Сервисы связи. Инфраструктура связи должна поддерживать протоколы для транспортировки массивов данных и потоковых данных, поддержки групповых обменов и использования распределенных объектов. Сетевые сервисы также обеспечивают Grid важными параметрами качества обслуживания QoS, такими, как задержка, пропускная способность, надежность, отказоустойчивость, и др. Информационные сервисы. Grid представляет собой динамическую среду, в которой место размещения и тип доступных сервисов постоянно изменяются. Информационные сервисы Grid (регистрация и каталогизация) обеспечивают механизмы для регистрации и получения текущей информации относительно структуры, ресурсов, сервисов, состояния и свойств среды. Сервисы именования. В Grid имена используются для различения большого многообразия объектов, таких, как компьютеры, сервисы или данные. Сервис именования обеспечивает универсальное пространство имен во всей распределенной среде. Типичным примером сервиса именования является DNS, обеспечиваемый международным стандартом X.500 (схема Internet). Распределенные файловые системы и кэширование. Распределенные приложения часто требуют доступа к файлам, находящимся на разных серверах, поэтому распределенная файловая система является ключевым компонентом, она может снабжать универсальное глобальное пространство имен, поддерживает множество протоколов ввода-вывода, не требует многого или вообще ничего для модификации программы и обеспечивает средства для оптимизации производительности, такие как кэши. Защита и авторизация. Любая распределенная система включает все четыре аспекта безопасности: конфиденциальность, целостность, аутентификация и отчетность (accountability). Безопасность в пределах Grid — это комплексная проблема, требующая от различных ресурсов автономного управления и взаимодействия между собой таким способом, который не влияет на использование ресурсов. Состояние системы и отказоустойчивость. Для обеспечения надежной и устойчивой среды важно наличие средств управления ресурсами и приложениями. Для этого должны быть развернуты инструментальные средства мониторинга ресурсов и приложений. 108 Управление ресурсами и планирование. Администрирование процессорным временем, памятью, сетью, памятью хранения и другими компонентами в Grid является важной частью эффективного планирования приложений. С пользовательской точки зрения управление ресурсами и планирование приложений должны быть прозрачными, а их взаимодействие с управлением — сводиться к разрешению на выполнение приложений. Пользовательский и административный графические интерфейсы. Интерфейсы сервисов и доступных ресурсов должны быть интуитивными и легкими в использовании, а также разнородными по природе. Как правило, пользовательский и административный доступы к приложениям Grid основаны на Web-сервисах. Базовые технологии для Grid второго поколения. В настоящее время имеется большое количество проектов, связанных с Grid и имеющих дело с такими категориями, как инфраструктура, сервисы, сотрудничество, специальные приложения и порталы домена. К наиболее значительным относится проект Globus. Globus обеспечивает программную инфраструктуру, которая дает возможность приложениям работать с распределенными разнородными вычислительными ресурсами как с единой виртуальной машиной. Проект Globus — это исследовательская программа в США, ставящая своей целью построение вычислительных сетей Grid. Вычислительная сеть в этом контексте является программно-аппаратной инфраструктурой, которая обеспечивает надежный, непротиворечивый и проникающий (pervasive) доступ к предельным вычислительным возможностям систем, несмотря на географическое размещение ресурсов и их потребителей. Центральным элементом системы Globus является инструментарий Globus Toolkit, который определяет основные сервисы и возможности, требующиеся для создания Grid. Инструментарий состоит из набора компонентов, реализующих базовые сервисы, такие, как защита, размещение ресурса, управление ресурсами и связь. Для вычислительных сетей Grid необходимо поддерживать широкое многообразие парадигм программирования и приложений. Следовательно, вместо обеспечения универсальной модели программирования, такой как объектно-ориентированная модель, инструментарий Globus Toolkit обеспечивает набор сервисов, которые разработчики инструментальных средств или приложений могут использовать для их специфических нужд. Он создан как слоистая архитектура, в которой сервисы верхнего глобального уровня смонтированы на уже существующих низкоуровневых локальных сервисах ядра. Инструментарий является модульным и приложение может использовать функции Globus без библиотеки обменов. Инструментарий Globus состоит из следующих функций (точный набор зависит от версии): основанный на протоколе HTTP администратор распределения ресурсов GRAM — используется для распределения вычислительных ресурсов, контроля и управления вычислением на этих ресурсах; 109 расширенная версия протокола передачи файлов GridFTP — применяется для доступа к данным; расширения включают использование протоколов защиты уровня связности, частичного доступа к файлу и управления параллелизмом для высокоскоростных передач; аутентификация и связанные с ней сервисы безопасности GSI (Grid Security Infrastructure); распределенный доступ к информации о структуре и состоянии, который основан на протоколе облегченного доступа к каталогам LDAP (Lightweight Directory Access Protocol); этот сервис используется для определения стандартного протокола информации о ресурсе и связанной с ним информационной модели; удаленный доступ к данным через последовательный и параллельный интерфейсы GASS (Global Access to Secondary Storage), включая интерфейс к GridFTP; построение, кэширование и размещение выполнимых программ GEM (Globus Executable Management); резервирование и распределение ресурсов GARA (Globus Advanced Reservation and Allocation). Globus прошел в своем развитии этапы своего первого воплощения в IWAY, первой версии GT1 и текущей версии GT2. Протоколы и сервисы Globus изменялись по мере его развития. Главный акцент перешел от поддержки высокопроизводительных приложений к более охватывающим (pervasive) сервисам, которые могут поддерживать виртуальные организации. Эволюция Globus продолжается введением Открытой архитектуры сервисов Grid (OGSA). Брокеры ресурсов и планировщики Grid. В этом разделе различаются следующие виды систем. Пакетные и планирующие системы. Имеется несколько известных систем, где основное внимание уделено планированию ресурсов и пакетному выполнению заданий. Следует заметить, что все пакетные системы начали свое существование как системы управления заданиями или задачами на локально распределенных вычислительных платформах. К ним относятся следующие. Condor — это пакет программ для выполнения пакетных заданий на платформах UNIX, особенно когда они бывают незагруженными. Главными особенностями Condor являются автоматическое нахождение ресурсов, распределение работ, установка контрольных точек и миграция процессов. Эти характеристики реализованы без модификации ядра UNIX. Однако пользователю необходимо подключать библиотеки Condor к исходному тексту. Condor контролирует все действия с участием вычислительных ресурсов, к которым принадлежат все доступные Condor компьютеры. Пул ресурсов является динамическим — компьютеры попадают в него, как только перестают использоваться, и покидают, когда получают задания. 110 Переносимая пакетная система PBS (Portable Batch System) — это пакетная организация очереди заданий и управления рабочей нагрузкой, первоначально разработанная для NASA. Работает на ряде платформ UNIX от кластеров на суперЭВМ. Планировщик заданий PBS позволяет локальным узлам устанавливать их собственную дисциплину планирования во времени и пространстве. PBS адаптирован к различным вариантам политики администрирования и обеспечивает расширяемую аутентификацию и модель защиты. PBS имеет графический интерфейс пользователя при регистрации заданий, отслеживании их выполнения и для других административных функций. Платформа Sun Grid Engine (SGE) основана на программном обеспечении, разработанном фирмой Genias, известном как Codine/GRM. В SGE задания находятся в зоне ожидания, а очереди на серверах обеспечивают сервисы для заданий. Потребитель вводит задание в SGE и объявляет профиль необходимых требований для его выполнения. SGE определяет заданию соответствующую очередь и распределяет его либо с высшим приоритетом, либо с самым длинным временем ожидания, пробуя запускать новые задания на наиболее соответствующей или наименее загруженной очереди. Средство распределения нагрузки LSF (Load Sharing Facility) — это коммерческая система от Platform Computing Corp. LSF возникла из системы Utopia, разработанной в Университете Торонто, и в настоящее время является наиболее широко используемой коммерческой системой для управления выполнением заданий. LSF включает распределенный механизм разделения нагрузки и программное обеспечение для организации очередей заданий, которое управляет, контролирует и анализирует ресурсы и рабочие нагрузки на сети разнородных компьютеров, имея при этом возможности обеспечения отказоустойчивости. Брокеры памяти хранения. Брокер памяти хранения SRB (Storage Resource Broker) был разработан для обеспечения универсального доступа к распределенной памяти хранения запоминающих устройств. SRB поддерживает репликацию файлов, и это может происходить как в автономном (offline), так и оперативном (on-the-fly) режимах. Взаимодействие с SRB осуществляется через графический интерфейс пользователя. Серверы SRB могут быть объединены. Каждым SRB управляет администратор с полномочиями создавать группы пользователей. Главная особенность разработки состоит в поддержке метаданных, связанных с распределенной файловой системой, таких, как место нахождения, размер и информация о дате создания, а также метаданных уровня приложений (или предметно-зависимых), специфичных для конкретного содержания, которое не может быть обобщено для всех наборов данных. В отличие от традиционных сетевых файловых систем SRB является привлекательным для приложений Grid, которые работают с большими объемами данных, превышающими вместимость индивидуальных 111 запоминающих устройств, и потому используют метаданные со всеми преимуществами репликации файлов. Брокеры ресурсов Nimrod/G и GRACE. Nimrod/G — это брокер для Grid, который выполняет управление ресурсами и планирование независимых приложений. Он состоит из четырех компонентов: генератора независимых заданий, планировщика, диспетчера и агента ресурсов. Генератор независимых заданий позволяет подключать определяемые пользователем планировщики, настраиваемые приложения или решатели задач в качестве компонентов приложений по умолчанию. Диспетчер использует Globus для развертывания компонентов Nimrod/G на удаленных ресурсах и управления выполнением назначенных заданий. Планировщики Nimrod/G имеют способность предоставлять ресурсы Grid и сервисы в зависимости от их возможностей, стоимости и доступности. Планировщики обеспечивают обнаружение ресурсов, отбор, планирование и выполнение заданий пользователей на удаленных ресурсах. Пользователи могут устанавливать конечный срок, к которому следует получить результаты, и брокер Nimrod/G пробует находить наилучшие ресурсы, доступные в Grid, и использовать их для удовлетворения пользовательских требований и минимизации затрат на выполнение задания. Nimrod/G поддерживает определяемый пользователем конечный срок выполнения и бюджетные ограничения для планирования оптимизаций и управляет спросом и предложением ресурсов в Grid, используя набор сервисов торговли ресурсами GRACE (Grid Architecture for Computational Economy). Имеются четыре алгоритма планирования Nimrod/G: оптимизация стоимости использует самые дешевые ресурсы, гарантирующие выполнение требования крайнего срока при наименьшей стоимости; оптимизация времени реализует все возможные ресурсы для скорейшего параллельного выполнения задания; оптимизация время – стоимость подобна стоимостной оптимизации, но при множестве ресурсов одинаковой стоимости применяется стратегия оптимизации времени; консервативная по времени стратегия подобна оптимизации времени, но гарантирует каждому необработанному заданию минимум расходов на одно задание. Брокер Nimrod/G с этими стратегиями планирования использовался в решении крупномасштабных вычислительных приложений, таких, как моделирование калибровки камеры ионизации и молекулярного моделирования при создания лекарств. Порталы Grid. Web-портал дает возможность ученым и исследователям иметь доступ к информационным ресурсам, специфическим для их предметной области, с помощью Web-интерфейса. В отличие от обычных тематических Web-порталов портал Grid может также обеспечивать доступ к вычислительным ресурсам Grid (например, подтверждать подлинность 112 пользователей, давать им разрешение на доступ к удаленным ресурсам, помогать принимать решения относительно планирования заданий, получать и обрабатывать информацию о ресурсах, хранящуюся в удаленных базах данных). Портал Grid может также быть индивидуализирован при помощи профилей, которые создаются и сохраняются для каждого пользователя портала. Эти свойства, как и другие, превращают порталы Grid в адекватные средства для пользователей приложений Grid при обращении к ресурсам Grid. Портал HotPage разработан для одноточечного входа в компьютерные ресурсы и упрощения доступа к распределенным ресурсам, которые представляются и как части интегральной системы Grid и как индивидуальные компьютеры. Два ключевых сервиса, обеспечиваемых HotPage, — это информация и доступ к ресурсам, а также администрирование. Информационные сервисы разработаны с целью увеличения эффективности использования ресурсов посредством: документации пользователя и навигации; статьи текущих новостей; информации об обучении и консультациях; данных относительно платформ и приложений; информации о ресурсах, такой как регистрация пользователей и данные расчетов. Интерактивный Web-сервис HotPage также предлагает безопасные транзакции для доступа к ресурсам и позволяет пользователю исполнить команды выполнения, трансляции и запуска программ. Другим ключевым сервисом является информирование о статусе ресурсов и поддержка простых механизмов назначения заданий ресурсам. Информация о статусе включает: загрузку (процент использования) центрального процессора; карту процессорного узла; резюме использования очереди; текущую информацию об очереди для всех участвующих платформ. Другим примером портала Grid является GridPort — переналаживаемый портальный инструментарий, который использует инфраструктуру HotPage. Двумя ключевыми компонентами GridPort являются сервисы Web-портала и прикладные API. Модуль Web-портала работает на Web-сервере и обеспечивает безопасное подключение к Grid. Прикладные API обеспечивают Web-интерфейс, который помогает пользователям разрабатывать заказные приложения без необходимости знать инфраструктуру портала. GridPort разработан для выполнения портальных сервисов и клиентских приложений на отдельных Web-серверах. Модули инструментария GridPortal использовались для разработки научных порталов в таких областях приложений, как моделирование фармакинетики, молекулярного моделирования, кардиофизиологии и томографии. Инструментарий сотрудничества порталов Grid — это пример развитой формы сотрудничества между несколькими научными агентствами США, целью которой является поддержка общего набора компонентов и утилит для упрощения разработки порталов и интероперабельности различных порталов 113 при использовании той же самой инфраструктуры ядра (а именно Grid Security Infrastructure (GSI) и Globus). Возможности портала следующие: передача файлов, загрузка в удаленный (file upload) и в локальный компьютеры (file download), передача файлов третьих лиц (перемещение файлов между различными системами хранения данных); запрос баз данных о спецификации ресурса/задания; поддержка параметров пользователя, которые содержат информацию относительно прошлых заданий, использованных ресурсов, результатов выполнения и предпочтений пользователя. В целом, портальные архитектуры основаны на трехъярусной модели, где клиентский браузер безопасно сообщается с Web-сервером по безопасным протоколам и подключениям. Web-сервер имеет доступ к различным сервисам Grid, использующим соответствующую инфраструктуру (например, Globus). Инструментарий Globus Toolkit обеспечивает механизмы для надежной передачи заданий цензору Globus (gatekeeper), запрашивая информацию об аппаратных и программных средствах через LDAP и безопасной инфраструктуре через GSI. Интегрированные системы. По мере появления компонентов второго поколения Grid ряд международных групп начали проекты по их объединению в когерентные системы. Эти проекты были направлены на конкретные высокопроизводительные приложения из широкого круга применений. Одним из первых примеров такого рода систем был Cactus — среда решения задач с открытым кодом. Cactus имеет модульную структуру, которая допускает выполнение параллельных приложений на широком диапазоне архитектур и возможность совместной разработки кода распределенными группами разработчиков. Cactus разработан в академической исследовательской среде, где физики и компьютерщики вместе работали над моделированием черных дыр. Cactus является входной системой ко многим внутренним сервисам параллельной файловой системы ввода/вывода HDF5 (универсальной библиотеки для хранения и форматирования файлов научных данных), научной библиотеки PETSc (набора программ и структур данных для параллельного решения научных задач, моделируемых дифференциальными уравнениями в частных производных с использованием MPI) и продвинутых инструментальных средств визуализации. Портал содержит опции для компиляции и развертывания приложений на распределенных ресурсах. Аналогичный eвропейский проект DataGrid, выполняемый в CERN, финансируется Европейским Союзом с целью создания крупномасштабной вычислительной и информационной сети ресурсов Grid для анализа данных научно-исследовательских работ. Первичным пилотным проектом для DataGrid явился Большой коллайдер адронов (Large Hadron Collider — LHC), который должен работать в CERN в 2005–2015 гг. и осуществить прорыв в изучении энергии, напряженности и частоты столкновений в пучках частиц. 114 Этот рывок стал необходимым для поставки некоторых экспериментов с ранее неизвестными частицами, такими, как бозоны и сверхсимметричные кварки и лептоны. Главной проблемой, стоящей перед проектом, являются средства коллективного использования огромного количества данных, распределенных по инфраструктуре компьютерных сетей. DataGrid основывается на находящихся на стадии становления технологях Grid, которые, как ожидается, позволят развертывать крупномасштабные вычислительные среды, состоящие из распределенных коллекций файлов, баз данных, компьютеров, научных приборов и устройств. Целями проекта DataGrid являются: реализация промежуточного ПО для администрирования структуры Grid, включая оценку, тестирование и интеграцию существующих средств промежуточного ПО и разработку новых средств программного обеспечения; развертывание крупномасштабной системы испытаний; обеспечение демонстрационных приложений промышленного качества. Работа сосредоточена на распределенной обработке крупномасштабных приложений в области физики высоких энергий, биоинформатики, наук о земле. DataGrid разрабатывается на основе Globus и включает следующие компоненты: Язык описаний заданий (JDL) — сценариев для описания параметров заданий. Интерфейс пользователя (UI) — посылает работу брокеру ресурсов RB и принимает результаты. Брокер ресурсов (RB) — находит и выбирает целевой вычислительный элемент (Computing Element — CE). Сервис представления заданий (JSS) — представляет задание целевому CE. Регистрация и бухгалтерский учет (L&B) — запись информации о статусе заданий. Информационная служба Grid (GIS) — индекс информации о состоянии структуры Grid. Каталог репликаций — список наборов данных и их дубликатов, находящихся на запоминающих элементах (Storage Elements — SE). Еще один европейский проект UNICORE (UNIform Interface to COmputer REsources) — это проект, финансируемый Министерством образования и науки Германии. Цели разработки UNICORE включают единый и легкий в использовании графический интерфейс пользователя, открытую архитектуру, основанную на понятии абстрактного задания, целостную (непротиворечивую) архитектуру защиты, минимальную зависимость от локальных административных процедур, эксплуатацию существующих и находящихся на стадии становления технологий, основанных на стандарте Java и Web-технологиях. UNICORE обеспечивает интерфейс для подготовки заданий и безопасного их представления на распределенные ресурсы суперЭВМ. 115 Распределенные приложения в UNICORE определены как многосторонние, где различные части могут выполняться разными компьютерными системами асинхронно или синхронно-последовательно. Задание в UNICORE содержит многостороннее приложение, оснащенное информацией о системе, для которой оно предназначено к выполнению, о необходимых требованиях ресурса и зависимостях между различными частями. Структурно задание UNICORE — это рекурсивный объект, содержащий группы заданий и задач. Задания UNICORE и группы заданий несут информацию о системе назначения для содержащихся задач. Задание есть модуль, который сводится к пакетному заданию для системы назначения. Главные компоненты UNICORE: агент подготовки заданий (JPA); контроллер монитора заданий (JMC); сервер https UNICORE, также называемый шлюзом (Gateway); супервизор сетевых заданий (NJS); графический интерфейс пользователя, основанный на Java-аплетах, с интерактивной справкой и средством помощи. Клиент UNICORE дает возможность потребителю создавать, представлять и управлять заданиями с любой рабочей станции или персонального компьютера, подключенных к Internet. Клиент соединяется с UNICORE через шлюз, который подтверждает подлинность клиента и пользователя перед контактированием с серверами UNICORE, которые в свою очередь управляют представленными UNICORE заданиями. Задания, предназначенные для локальных компьютеров, выполняются на их пакетных подсистемах, те же, которые будут выполнены на удаленных узлах, передаются на просмотр шлюзу. Все необходимые передачи данных и синхронизации выполняются серверами. Серверы также сохраняют информацию о статусе и результатах работы, передавая их клиентам по запросу пользователя. Компоненты третьей стороны, такие как Globus, могут быть интегрированы в структуру UNICORE для расширения его функциональности. UNICORE широко используется и разрабатывается для проекта EuroGrid [30], финансируемого Европейской Комиссией. Этот проект направлен на изучение возможностей и специфических требований использования Grid в таких научных и промышленных направлениях, как биология, метеорология и автоматизация проектирования. Цели проекта EuroGrid включают поддержку инфраструктуры программного обеспечения EuroGrid, разработку программных компонентов и прототипов программ распределенного моделирования в различных прикладных областях (биомолекулярное моделирование, прогноз погоды, интегрированное моделирование в автоматизации конструирования, структурный анализ и обработка данных в реальном масштабе времени). WebFlow — еще одно вычислительное расширение модели Web, которое может быть использовано как основа для распределенной широкомасштабной обработки. Главная цель построения WebFlow состояла в 116 том, чтобы сформировать единый «бесшовный» каркас для опубликования и многократного использования вычислительных модулей на Web так, чтобы конечные пользователи с помощью браузера сети могли участвовать в создании распределенных приложений, использующих модули WebFlow как визуальные компоненты, а редакторы как визуальные средства установления подлинности. WebFlow имеет трехъярусную основанную на Java архитектуру, которая может рассматриваться как визуальная система потока данных. Входные аплеты используются для авторизации, визуализации и управления средой. WebFlow использует основанный на сервлетах промежуточное ПО для управления и взаимодействия с прикладными модулями, такими, как унаследованные коды для баз данных или высокопроизводительного моделирования. WebFlow аналогичен Web; Web-страницы можно сравнить с WebFlowмодулями, а гиперсвязи, которые связывают Web-страницы, — с межмодульными каналами потоков данных. Разработчики содержимого WebFlow создают и публикуют модули, подсоединяя их к Web-серверам. Интеграторы приложений используют визуальные инструментальные средства, чтобы связать выходы исходных модулей со входами модулей назначения, формируя таким образом распределенные вычислительные графы (или вычислительные Web) и публикуют их как составные объекты модулей WebFlow. Пользователь инициирует эти вычислительные Web, переходя по соответствующим гиперссылкам, настраивая вычисление в терминах доступных параметров или используя высокоуровневые инструментальные средства для визуальной авторизации графов. Прикладные модули WebFlow реализованы с используованием Globus Toolkit, в частности MDS, GRAM и GASS. Одноранговые вычисления. Одним из подходов к решению проблем масштабирования является децентрализация. Традиционная клиентсерверная модель может стать узким местом в повышении производительности и единственным источником отказов, хотя все еще остается превалирующей, потому что децентрализация несет с собой собственные проблемы. Тем не менее одноранговые (Peer-to-Peer — P2P) вычисления (в Napster и Gnutella) и Internet-вычисления (в SETI@home и Entropia) являются примерами весьма общих вычислительных структур, которые пользуются преимуществом глобально распределенных ресурсов. В вычислениях P2P компьютеры разделяют данные и ресурсы, такие как процессорное время и емкость долговременной памяти, через Internet или частные сети. Компьютеры могут также сообщаться непосредственно и управлять вычислительными заданиями без использования центральных серверов. Это позволяет масштабировать вычисления P2P более эффективно, чем традиционные клиент-серверные системы, которые должны развернуть для этого серверную инфраструктуру для обеспечения возможностей расширения. Децентрализация клиента и сервера одновременно является привлекательной не только относительно масштабируемости, но и 117 отказоустойчивости. Однако имеются некоторые препятствия на пути широкого принятия систем P2P, которые сводятся к следующему. От персональных компьютеров и рабочих станций, используемых в сложных приложениях P2P, потребуются большие вычислительные возможности для выполнения дополнительной нагрузки по связи и защите информации, которые обычно несут серверы. Защита является серьезной проблемой, поскольку компьютеры для приложений P2P требуют доступа к ресурсам других компьютеров (памяти, жестким дискам и т.д.). Загрузка файлов из других компьютеров делает системы уязвимыми со стороны вирусов. Системы P2P должны работать с разнородными ресурсами, использующими различные компоненты работы с сетями и операционные системы. Одним из самых больших проблем P2P-вычислений является возможность устройств находить друг друга в вычислительной структуре, в которой отсутствует центральное управление. Идеи Р2Р начинают привлекать и больших производителей. В 2001-м г. Sun Microsystems возвестила о начале проекта JXTA с открытым кодом для инфраструктуры и приложений P2P. Таким образом, второе поколение базового программного обеспечения для Grid в своем развитии перешло от ранних систем типа Globus-GT1 и Legion, специализированных для конкретных потребностей больших и высокопроизводительных приложений, к более универсальным и открытым средам, таким, как Globus-GT2. Вместе с базовым программным обеспечением во втором поколении также разработан ряд сопровождающих инструментальных средств и утилит для сервисов верхнего уровня, которые охватили планировщиков ресурсов и брокеров, а также предметноориентированные интерфейсы пользователей и порталы. В течение этого периода появилась и техника одноранговых систем. Современное (третье) поколение Grid Второе поколение обеспечило интероперабельность, которую было существенно достичь для крупномасштабных вычислений. По мере дальнейших исследований возникли и другие подходы к разработкам проблем построения Grid. Стало очевидным, что для создания новых приложений Grid желательно иметь возможность многократно использовать существующие компоненты и информационные ресурсы и собирать эти компоненты некоторым гибким способом. Таким образом, усилилось внимание к сервисно-ориентированной модели и использованию метаданных, которые стали двумя ключевыми характеристиками систем третьего поколения. Они тесно связаны между собой, ибо сервисно-ориентированный подход имеет непосредственное значение для структуры информации. Гибкая сборка ресурсов Grid в приложения требует информации о функциональных возможностях, доступности и интерфейсах различных 118 компонентов, и эта информация должна иметь согласованное истолкование, которое может быть обработано машиной. Если традиционно Grid описывался в терминах крупномасштабных данных и вычислений, то в фокусе третьего поколения оказались новые и более общие понятия. В частности, если термины “распределенное взаимодействие” и “виртуальная организация” были приняты в основополагающей работе по исследованию Grid второго поколения, то для третьего поколения стало характерным более целостное представление вычислений Grid. Оно затрагивает не только технологию вычислений, но и всю инфраструктуру и приводит к новому понятию Е-науки (новые способы ведения исследований и организации труда ученого). Как заметил J. Fox, ожидаемое использование вычислительных средств с массовым параллелизмом — только часть появляющейся панорамы Grid, у которой имеется намного больше пользователей. Автоматизации вычислительных процессов в системах третьего поколения придается гораздо более общий и глубокий смысл. В частности, пользователи непосредственно больше не должны иметь дело с немасштабируемостью и неоднородностью, отслеживание этих свойств делегируются процессам (в частности, посредством сценариев-скриптов), что ведет к автономности этих процессов в пределах всей системы. Это подразумевает потребность в координации, которая, в свою очередь, должна быть определена программно на различных уровнях описания процессов. Точно так же большая вероятность неисправности подразумевает потребность в автоматическом восстановлении, поскольку конфигурирование и наладка уже не могут оставаться ручными операциями. Эти требования становятся похожими на самоорганизацию в биологических системах, состоящих из автономных подсистем. Выдвинутая IBM концепция системы автономных вычислений содержит следующие свойства: 1) нуждается в детальном познании своих компонентов и их состояния; 2) должна конфигурировать и реконфигурировать себя динамически; 3) стремится оптимизировать свое поведение, чтобы достичь своей цели; 4) способна восстанавливаться после неисправности; 5) защищает себя от атак; 6) должна знать свою среду; 7) реализует открытые стандарты; 8) оптимизирует использование ресурсов. Разрабатываемые ныне системы Grid третьего поколения уже начинают выявлять многие из этих свойств. Сервисно-ориентированная архитектура. К 2001 году свойства архитектуры Grid уже были присущи многим проектам; например, в проекте Information Power Grid показан обширный набор сервисов, размещаемых по слоям. В это же время приобрела популярность модель Web-сервисов с 119 обещанием стандартов в поддержку сервисно-ориентированного подхода. К тому времени исследовательское сообщество агентно-ориентированных вычислений уже выполнило обширную работу в этой области: современные программные агенты уже стали как поставщики, потребители и брокеры сервисов. В целом было очевидно, что сервисно-ориентированная парадигма обеспечивает гибкость, требуемую для третьего поколения Grid. И, таким образом, оказалось, что три технологии (агентные, Grid-вычислений и Webсервисов) тесно связаны друг с другом и вместе составляют три источника и три составляющих технологии Е-науки. Web-сервисы. Создание стандартов Web-сервисов — это основа деятельности консорциума Всемирной паутины W3C, состоящая из нескольких находящихся в стадии становления стандартов, включающих: SOAP (протокол XML) обеспечивает конверт (оболочку), который инкапсулирует данные XML для передачи через инфраструктуру Web (например, по протоколу HTTP с помощью кэшей и промежуточных процессов) в соответствии с правилами для удаленного вызова и механизмами сериализации, основанными на типах данных XML Schema. SOAP развивается W3C в сотрудничестве с рабочей группой Internet Engineering (IETF). Язык описаний Web-сервисов (WSDL) описывает сервисы в XML, используя XML Schema; имеется также отображение на язык описаний ресурсов Resource Description Framework (RDF). В некотором роде WSDL подобен языку описания интерфейсов IDL. Универсальное описание обнаружения и интеграции (UDDI) представляет собой спецификацию для распределенных реестров Web-сервисов наподобие сервисов “Желтых страниц” — адресных справочников. UDDI поддерживает парадигму “publish, find and bind” (издать, найти и связать), где поставщик услуг описывает и оповещает о подробностях обслуживания в каталоге; потребитель услуги делает запрос к системному реестру, чтобы найти провайдера услуги; эти услуги “связываются” c использованием технических деталей от UDDI. Следующие стандарты Web-сервисов, привлекающие интерес, находятся на уровне процессов. Например, язык потоков данных Webсервисов (Web Services Flow Language — WSFL) является предложением от IBM, которое определяет последовательности работ как комбинации Webсервисов и дает возможность последовательностям работ самим выступать как сервисы. Предложение XLANG от Microsoft поддерживает комплексные транзакции, которые могут включать множество Web-сервисов. В дополнение к программному обеспечению для самих Web-сервисов сделаны важные шаги в конструировании систем Web-сервисов. Например, каркас моделирования Web-сервисов (WSMF) обеспечивает концептуальную модель для разработки и описания Web-сервисов, основанных на принципах максимального расщепления и масштабирования медиаторных сервисов. 120 Web-сервисы тесно вплетены в структуру Grid третьего поколения: они поддерживают сервисно-ориентированный подход и следуют стандартам для обеспечения описаний информации, в том числе самих сервисов. Фактически WSDL описывает, как взаимодействовать с сервисом, а не его функциональные возможности. Дальнейшие усилия по описанию сервисов затрагивают агентные технологии, например DAML-S. Каркас открытой архитектуры сервисов Grid (OGSA). Каркас открытой архитектуры сервисов Grid (OGSA) — это совместный взгляд Globus и IBM на процесс слияния Web-сервисов и вычислений Grid. OGSA направлена на создание, ведение и применение наборов сервисов, поддерживаемых виртуальными организациями. Сервис определяется как объект в сети, который обеспечивает возможности вычислительных ресурсов, ресурсов памяти хранения, сетей, программ и баз данных. Это позволяет подходу Webсервисов удовлетворять некоторым требованиям Grid. Таковыми являются, например, стандартные интерфейсы, определенные в OGSA: обнаружение: клиентам требуются механизмы для обнаружения доступных сервисов и определения их характеристик, чтобы они могли конфигурировать себя и запросы к этим сервисам соответственно; динамическое создание сервисов: стандартный интерфейс Factory и семантика, которую любой сервис создания сервиса должен обеспечивать; администрирование жизненного цикла: в системе, в которой сочетаются сервисы с состояниями и без таковых, должны быть предусмотрены механизмы восстановления сервисов и состояний после неправильных действий; уведомления: динамические распределенные сервисы должны уметь асинхронно уведомлять друг друга относительно тех изменений, которые происходят с их состояниями; управляемость: должны обеспечиваться действия по администрированию и контролю большого количества сервисов Grid; простая среда пребывания (hosting) — набор ресурсов, находящийся в одном административном домене и поддерживающий первичные средства для обслуживания пользователя, например сервер приложений J2EE, система Microsoft.NET или кластер Linux. Больше всего архитектура OGSA повлияла на такие части Globus, как протокол распределения и управления ресурсами Grid (GRAM), сервис метакаталогов (MDS-2), используемый для обнаружения информации, регистрации, моделирования данных и локального системного реестра, и инфраструктуру безопасности Grid (GSI), которая поддерживает условия одиночного входа, ограниченного делегирования и отображения мандатов. Ожидается, что будущие реализации инструментария Globus будут основаны на архитектуре OGSA. Агенты. Web-сервисы обеспечивают средства интероперабельности, являющиеся ключевыми для вычислений на Grid, и поэтому OGSA является существенным элементом стратегии, которое адаптирует Web-сервисы к Grid 121 и приближает потребность в приложениях Grid. Однако сами Web-сервисы не дают новых решений для главных проблем крупномасштабных распределенных систем, они даже не обеспечивают новых методов их разработки. Поэтому следует рассмотреть другие сервисно-ориентированные модели, основанные на агентах вычисления, которые являются существенным дополнением сервисно-ориентированной модели Grid. Парадигма агентных вычислений представляет перспективу программных систем в использовании объектов, которые обычно имеют следующие свойства, обозначаемые как слабые агенты: автономность — агенты функционируют без вмешательства извне и имеют некоторый контроль над своими действиями и внутренним состоянием; социальная способность — агенты взаимодействуют с другими агентами, используя язык коммуникаций агентов; реактивность — агенты воспринимают и реагируют на их среду; проактивность (инициативность) — агенты выявляют управляемое целью поведение. Агентные вычисления особенно подходят для динамически изменяющейся среды, где их автономность дает возможность адаптироваться к изменяющимся обстоятельствам. Это характерное свойство для третьего поколения Grid. Один из методов для достижения этого свойства — переговоры между компонентами, и имеется существенный задел в исследованиях техники переговорных механизмов. В частности, методы, основанные на рынкоподобных механизмах, имеют весомое значение для вычислительной экономики, которая возникает в приложениях Grid. Следовательно, можно рассматривать Grid как ряд взаимодействующих компонентов и информацию, которая передается в этих взаимодействиях. Последнюю можно отнести к нескольким категориям. Одна из них — информация контекста предметной области. Другие типы включают следующую информацию: о компонентах и их функциональных возможностях в пределах предметной области; о связях с компонентами; об общем потоке работ и конкретных потоках как частей общего. Компоненты должны быть связаны стандартным способом для обеспечения интероперабельности между ними на основе согласованных общих словарей. В языках взаимодействия агентов (ACL) эти вопросы рассматриваются на формальной основе. В частности, Организация по вопросам интеллектуальных физических агентов (Foundation for Intelligent Physical Agents — FIPA) разрабатывает подходы к определению семантики для этой информации на основе интероперабельности, а также стандарты на программное обеспечение для разнородных и взаимодействующих агентов и агентно-ориентированных систем, включая обширные спецификации. В абстрактной архитектуре FIPA агенты взаимодействуют, обмениваясь сообщениями, которые представляют собой речевые акты, закодированные в языке их взаимодействия; сервисы предоставляют услуги агентам (включая 122 службы каталогов и передачи сообщений) и могут быть реализованы или как агенты, или как вызываемое программное обеспечение, к которому обращаются с использованием программного интерфейса (например, в Java, C++ или IDL). Таким образом, можно идентифицировать обмен информацией между агентами и обращения к каталогам как форматы информации, распознаваемые на инфраструктурном уровне. Соотношение Web и Grid. Важно понимать причины быстрого внедрения Web и то, как это может воздействовать на разработку Grid, которая имеет такие же устремления в смысле масштаба и развертывания. Первая причина — это простота. HTTP и HTML внесли не так много нового для современного пользователя, и это облегчило их массовое распространение. Следует однако понимать большую разницу между Web и Grid: несмотря на крупный масштаб Интернета количество хост-машин, вовлеченных в типичную транзакцию на Web, все еще незначительно и намного меньше, чем предусмотрено для многих приложений Grid. Web как информационная инфраструктура Grid. Первоначально Web была создана для распределения информации в контексте Е-науки в CERN. Естественно выяснить, удовлетворяет ли сейчас эта архитектура распределения информации требованиям Grid. При этом возникают следующие вопросы: Управление версиями. Популярная парадигма публикаций на Web предполагает непрерывное обновление страниц без контроля версий, и сама инфраструктура Web явно не поддерживает такую возможность. Качество обслуживания. Гиперссылки являются встроенными и постоянными, они ненадежны и бесполезны, если изменяется сервер, местоположение, название или содержание документа предназначения. Ожидания непротиворечивости ссылок низки, и Е-наука может требовать более высокого качества обслуживания. Происхождение информации. В Web нет никакого стандартного механизма для обеспечения юридически значимого свидетельства того, что документ был представлен на Web в означенное время. Цифровое управление правами. E-наука требует специфических функциональных возможностей относительно управления цифровым содержанием, включая, например, защиту от копирования и управление интеллектуальной собственностью. Надзор. Многое из инфраструктуры Web сосредоточено на технике доставки информации, а не на средствах создания и управления содержанием. Проектировщики инфраструктуры Grid должны обратить внимание на поддержку метаданных с самого начала. Рассмотрим, как некоторые из этих вопросов решаются в других областях. Например, в индустрии мультимедийной информации также требуется поддержка для цифрового управления правами. Ее элементы включают декларацию, идентификацию, обработку содержания, управление 123 интеллектуальной собственностью и защиту. Авторское право (Authoring) — еще один важный момент, особенно совместное авторское право. Действие на Web-документ Distributed Authoring and Versioning (WebDAV [50]) предписывает определить расширения протокола HTTP, необходимые для интероперабельного использования распределенных инструментов авторского права на Web при поддержке потребностей пользователя. В результате, хотя Web и предоставляет эффективную среду для транспортировки информации, это не обеспечивает всесторонней информационной инфраструктуры для Е-науки. Выражение содержания и мeтaсодержания. Web все больше становится инфраструктурой для распределенных приложений, где скорее происходит обмен информацией между программами, нежели чтение ее человеком. Такой информационный обмен обеспечивается семейством рекомендаций XML от W3C. XML предназначен для разметки документов и не имеет никакого установленного словаря тегов; они определены для каждого приложения и используют Document Type Definition (DTD) или XML Schema. RDF — это стандартный способ выражения метаданных, особенно ресурсов на Web, хотя им можно воспользоваться для представления структурированных данных вообще. Использование XML и RDF делает возможным стандартное выражение содержания и метасодержания. Появляются дополнительные наборы инструментов для работы с этими форматами, и это увеличивает поддержку со стороны других инструментов. Все вместе это обеспечивает инфраструктуру для информационных систем третьего поколения Grid. W3C опубликовал документ, в котором рассмотрена перспективная технология Semantic Web, определяемая как расширение нынешней сети Web, при которой информация имеет четко определенное значение, предоставляющее лучшие возможности для сотрудничества людей и компьютеров. Главное, что несет эта технология, — это идея наличия данных на Web, определенных и связанных таким способом, который позволяет использовать их для более эффективного обнаружения, автоматизации, интеграции и повторного использования в различных приложениях. Таким образом, Web может достигнуть раскрытия своего полного потенциала, если станет местом совместного использования и обработки автоматизированными инструментами и людьми, а Semantic Web предназначена сделать для представления знаний то, что Web сделала для гипертекста. Исследовательская программа языка разметки агентов DAML (DARPA Agent Markup Language) привносит в Semantic Web коммуникации агентов. DAML расширяет XML и RDF с помощью онтологий — мощного способа описания объектов и их отношений. Сравнение Web и Grid. Состояние развития Grid сегодня напоминает Web десятилетие тому назад с ограниченным распространением, в значительной степени управляемым энтузиастами от науки, с появляющимися стандартами и некоторыми попытками коммерческой 124 деятельности. То же самое можно было бы сказать и относительно Semantic Web. Тем временем коммуникации в Web измененились от типа "машина – человек" (с помощью HTML) к типу "машина – машина" (с помощью XML), и это оказалось именно той инфраструктурой, которая необходима для Grid. Связанная с этим парадигма Web-сервисов, кажется, обеспечивает соответствующую инфраструктуру для Grid, хотя требования Grid уже расширяют эту модель. Из этих сравнений напрашивается вывод, что развертывание Grid будет следовать той же экспоненциальной модели, что и рост Web. Однако типичное приложение Grid может вовлекать огромное количество процессов, взаимодействующих скоординированным способом, в то время как типичная транзакция на Web сегодня все еще использует лишь небольшое количество ресурсов (например, сервер, кэш, браузер). Достижение желательного поведения от крупномасштабной распределенной системы ставит важные технические проблемы, которые сама Web не должна рассматривать, хотя Web-сервисы заставляют нас обратиться к ним. Web обеспечивает инфраструктуру для Grid. Обратно, можем спросить, что Grid предлагает для Web. Как Web-приложение Grid поднимает некоторые вопросы, мотивирующие развитие технологий Web, например усиление Web-сервисов в OGSA, которые могут хорошо выходить за пределы приложений. Grid также обеспечивает высокопроизводительную инфраструктуру для различных аспектов Web-приложений, например в поиске, выявлении зависимостей данных, переводе и представлении мультимедийной информации. Semantic Grid. Понятия Grid и Semantic Grid имеют много общего, но могут различаться в акцентах: Grid традиционно сосредоточена на вычислениях, в то время как Semantic Grid — больше на выводе, доказательстве и проверке. Grid, которая теперь строится в своем третьем поколении, ведет к тому, что называем Semantic Grid, а именно это Grid, основанная на использовании метаданных и онтологий. Третье поколение Grid идет по пути, где информация представляется, запоминается, становится доступной и совместно используемой и поддерживается. Такая информация понимается как данные, имеющие значение. Предполагается, что следующее поколение будет иметь дело уже со знаниями, которые приобретаются, используются, представляются, публикуются и поддерживаются, чтобы помочь Е-ученым достигать их специфических целей. Знание понимается как информация, примененная для достижения цели, решения проблемы или принятия решения. Semantic Grid вовлекает все три концептуальных слоя Grid: знание, информация и вычисление/данные. Эти дополнительные слои в конечном счете обеспечат богатый, бесшовный и распространяющийся доступ к глобально распределенным гетерогенным ресурсам. Новые формы для научных исследований — живые информационные системы. Третье поколение Grid акцентируется на распределенном сотрудничестве. Один из аспектов совместной работы пользуется идеей «ко125 лаборатории», или центра без стен, в котором национальные исследователи могут выполнять исследования безотносительно к географическому местоположению путем взаимодействия с коллегами, совместно используя инструментарий, данные и вычислительный ресурс и обращаясь за информацией к цифровым библиотекам. Такое представление фактически превращает информационные приборы, какими являются компьютеры и сетевая инфраструктура, в лабораторные установки, которые могут, например, включать электронные журналы и другие портативные устройства. В Web сейчас широко распространена подача информации, что является мощным стимулом для создании кругов общения. Однако такая парадигма взаимодействия по существу реализует принцип “издания один у одного”, подкрепленный службами электронной почты и групп новостей, которые также поддерживают асинхронное сотрудничество. Несмотря на это основная инфраструктура Интернета, однако, полностью способна к поддержке живых (в реальном масштабе времени) информационных услуг и синхронного сотрудничества: живые данные от экспериментального оборудования; живое видео с помощью Web-камер через одностороннюю или широковещательную передачи; видеоконференции; чаты; системы моментального информирования; многопользовательские диалоги и игры; колаборативные виртуальные среды. Все они играют определенную роль в поддержке Е-науки, непосредственно связывая людей вне сцен и процессов инфраструктуры. В частности, они поддерживают расширение Е-науки по направлению к новым сообществам, преодолевая установленные организационные и географические границы. Акцент делается на обеспечении распределенного сотрудничества, охватывающего все более и более интеллектуальные (smart) сферы работы Е-ученых. Эта область исследований подпадает под направление "Перспективные колаборативные среды" Рабочей группы Глобального форума Grid (АСЕ Grid), в котором рассматриваются среды коллективной работы и вездесущие (ubiquitous) вычисления. Другим примером живых информационных систем являются сети доступа — собрания ресурсов, поддерживающие сотрудничество людей в Grid, в частности крупномасштабные распределенные встречи и обучение. Ресурсы включают показ мультимедийной информации и взаимодействие, особенно через комнаты видеоконференций "группа-на-группу", а также интерфейсы к промежуточному ПО и средам визуализации. Узлы Grid для доступа обладают специальными средствами обслуживания, которые поддерживают высокое качество звуковых и видеотехнологий, необходимых для эффективной работы пользователей. Во время встречи происходит живой обмен информацией, что выдвигает на первый план информационные аспекты. Это приводит к изменению метаданных, генерируемых автоматически программным обеспечением и устройствами, что может быть использовано для обогащения конференции и записи для более позднего воспроизведения. Могут понадобиться новые формы обмена информацией, 126 чтобы обеспечить крупный масштаб встреч, таких как распределенный опрос и голосование. Еще один источник живой информации — замечания, принятые членами встречи, или аннотации, которыми они сопроводили существующие документы. Как и выше, их можно совместно использовать и записывать для обогащения содержания встреч. Особенность текущих технологий сотрудничества заключается в том, что могут легко быть созданы и без помех частные обсуждения, которые также обеспечивают обогащенное содержание. В видеоконференциях живое видео и звук обеспечивают эффект присутствия для удаленных участников (для них также можно установить другие формы присутствия, например использование искусственных образов (олицетворений — avatars) в колаборативной виртуальной среде). 127 14. Основы метрической теории ВС. Основные понятия и определенеия Теория вычислительных систем – инженерная дисциплина, объединяющая методы решения задач проектирования и эксплуатации ЭВМ, вычислительных комплексов, систем и сетей. Предмет теории. Предметом исследования в теории вычислительных систем являются вычислительные системы в аспектах их производительности, надежности и стоимости. В системе выделяются следующие составляющие: 1) технические средства, определяемые конфигурацией системы – составом устройств и структурой связей между ними; 2) режим обработки, определяющий порядок функционирования системы; 3) рабочая нагрузка, характеризующая класс обрабатываемых задач и порядок их поступления в систему. Когда ЭВМ, вычислительный комплекс, система или сеть исследуется в целом, как органическое единство составляющих во взаимодействии с окружающей средой, и при этом проявляются общесистемные свойства и характеристики, говорят, что исследование проводится на системном уровне. Представление исследуемых объектов (ЭВМ, комплексы, системы и сети) на системном уровне – наиболее характерная черта теории вычислительных систем. Предметом исследования может быть функционирование процессора, внешнего запоминающего устройства и канала ввода – вывода, обмен данными между уровнями памяти, планирование, обработка, системный ввод – вывод и др. При этом свойства элементов и подсистем изучаются применительно к целям исследования всей системы, например к оценке производительности, и рассматриваются как части системы, функционирующие во взаимодействии с остальными частями. Задачи анализа. Анализ вычислительных систем – определение свойств, присущих системе или классу систем. Типичная задача анализа – оценка производительности и надежности систем с заданной конфигурацией, режимом функционирования и рабочей нагрузкой. Другие примеры задач: определение (оценка) вероятности конфликта при доступе к общей шине, распределения длительности занятости процессора, загрузки канала ввода – вывода. В общем случае задача анализа формулируется следующим образом. Исходя из цели исследования назначается набор характеристик Y  y1 ,..., yM  исследуемого объекта (вычислительная система, ее элемент,  1,...,M  подсистема, некоторый процесс и др.) и точность , с которой они должны быть определены. Требуется найти способ оценки характеристик Y 128  и на основе этого способа определить объекта с заданной точностью характеристики. При анализе систем в процессе эксплуатации оценка характеристик Y производится, как правило, измерением параметров функционирования с обработкой измерительных данных. В этом случае используется методика, устанавливающая состав измеряемых параметров, периодичность и длительность измерений, а также измерительные средства и средства обработки данных. В целях сокращения затрат на анализ стремятся измерять по возможности меньшее число наиболее просто измеримых параметров X  x ,..., x  1 N , а требуемый набор характеристик определять косвенным методом – вычислением с использованием зависимостей y  m m X , m 1,..., M   . Эти зависимости либо имеют статистическую природу, либо создаются на основе фундаментальных закономерностей теории вычислительных систем. При анализе проектируемых систем для оценки характеристик Y необходимо располагать моделью F, устанавливающей зависимость Y  F X  характеристик от параметров системы X, определяющих ее конфигурацию, режим функционирования, рабочую нагрузку. В этом случае решение задачи сводится к проведению на модели экспериментов, позволяющих дать ответы на интересующие вопросы. Точность оценки характеристик проектируемой системы зависит от адекватности модели и погрешности измерения параметров X. Задачи идентификации. При эксплуатации вычислительных систем возникает необходимость в повышении их эффективности путем подбора конфигурации и режима функционирования, соответствующих классу решаемых задач и требованиям к качеству обслуживания пользователей. В связи с ростом нагрузки на систему и переходом на новую технологию обработки данных может потребоваться изменение конфигурации системы, использование более совершенных операционных систем и реализуемых ими режимов обработки. В этих случаях следует оценить возможный эффект, для чего необходимы модели производительности и надежности системы. Построение модели системы на основе априорных сведений об ее организации и данных измерений называется идентификацией системы. Порядок идентификации вычислительной системы иллюстрируется рис. 7.1. В соответствии с природой исследуемых явлений для их представления предлагается функциональная модель, описывающая явления с точностью до значений пара-: метров функций. Процесс создания такой модели называется функциональной идентификацией системы. В качестве функциональных моделей могут использоваться различные математические системы – дифференциальные и алгебраические уравнения, сети массового обслуживания и др., адекватно представляющие исследуемые аспекты. 129 Рабочая нагрузка Вычислительная система Функциональная модель Измерительные средства Система оценки параметров и характеристик Y A, X * Модель F X Y * Оценка адекватности модели  Рис. 7.1. Схема идентификации вычислительной системы После того как выбрана функциональная модель, необходимо определить ее параметры. Этот процесс называется параметрической идентификацией. Для параметрической идентификации к вычислительной системе подключаются необходимые измерительные средства. Получаемые данные используются системой оценки параметров и характеристик для вычисления параметров X* и характеристик Y* системы, а также параметров модели А={аn}. Система оценки представляет собой набор программ для обработки измерительных данных, реализующий набор методов оценки параметров и характеристик. Вычисленные значения параметров А вводятся в модель, полностью определяя ее. Значения параметров X* и характеристик Y* системы используются для проверки адекватности модели, т.е. оценки погрешности  воспроизведения моделью характеристик системы. Оценка производится путем сравнения значений характеристик Y=F(X*), порождаемых моделью, с зарегистрированными характеристиками Y* системы. Если модель адекватна системе, то используется для прогнозирования свойств системы, что сводится к вычислению на основе модели характеристик Y=F(X), соответствующих новым значениям X параметров системы. Задачи синтеза. Синтез – процесс создания вычислительной системы, наилучшим образом соответствующей своему назначению. Исходными в задаче синтеза являются следующие сведения, характеризующие назначение системы: 1) функция системы (класс решаемых задач); 2) ограничения на характеристики системы, например на производительность, время ответа, надежность и др.; 3) критерий эффективности, устанавливающий способ оценки качества системы в целом. Необходимо выбрать конфигурацию системы и режим обработки данных, удовлетворяющие заданным 130 ограничениям и оптимальные по критерию эффективности. Типичная постановка задачи синтеза: спроектировать систему, обеспечивающую решение заданного класса задач А с производительностью не менее  задач в час, средней наработкой на отказ не менее Т0 и минимальной стоимостью. Математически задача синтеза вычислительной системы  1,...,Q  формулируется следующим образом. Пусть – вектор параметров, характеризующих класс задач А, решение которых является функцией S  s1 ,..., sP  системы; – вектор параметров, характеризующий конфигурацию (структуру)  C  c1 ,..., cR  Y   y1 ,..., yM  системы; – вектор параметров режима обработки; – вектор характеристик системы, связанный с параметрами задач 0, конфигурации S и режима обработки С зависимостью Y  F , S , C  ; S= {Si} – множество возможных конфигураций вычислительных систем; С={Сj} – множество возможных режимов обработки. Ограничения на характеристики и параметры * * z z ,..., z  z     системы *  z * ,..., где  z ,..., z  YUX    будем представлять в виде  z  – области допустимых значений соответствующих характеристик и параметров. Критерий эффективности системы представляется заданной функцией E=Ф(Y), зависящей от характеристик системы, которые в свою очередь предопределяются ее параметрами Y  F , S , C  . В установленных обозначениях задача синтеза вычислительной системы формулируется так: определить конфигурацию S и режим обработки С, максимизирующие эффективность системы. max E  max Y  (7.1) при выполнении ограничений S s , Cc * z  z ,..., z  z * (7.2) В отличие от задачи анализа, направленной на определение характеристик системы Y по заданным параметрам X, задача синтеза состоит в определении параметров конфигурации S и режима обработки С, соответствующих параметрам рабочей нагрузки 0 и характеристикам системы Y, заданным в виде (7.1), (7.2). Для задач синтеза характерны два следующих момента; Во-первых, предполагается наличие модели   Y  F , S , C    , устанавливающей зависимость характеристик системы от ее параметров. Во-вторых, задача синтеза представляет собой оптимизационную задачу и предполагает использование метода оптимизации, соответствующего виду целевой функции (7.1) и ограничениям (7.2). Метод оптимизации должен гарантировать определение глобального оптимума целевой функции E=Ф(Y), определенной на множестве конфигураций S и режимов обработки С. Сложность задачи синтеза вычислительной системы обусловлена числом варьируемых параметров, описывающих конфигурацию и режим 131 функционирования системы, и областью варьирования параметров. При общей постановке задачи синтеза, когда множества конфигураций S и режимов обработки С включают в себя все мыслимые варианты построения систем (одномашинные и многомашинные, мультипроцессорные н сетевые) и различные способы управления задачами, данными и заданиями, сложность задачи синтеза превосходит возможности методов моделирования и оптимизации. Поэтому в общей постановке задача синтеза вычислительных систем оказывается неразрешимой. Для решения задачи синтеза ее упрощают разделением на последовательность этапов, на каждом из которых выявляются отдельные аспекты организации системы. 1. Исходя из назначения системы (класс решаемых задач, технология обработки данных, требования к производительности и условия работы) и состояния элементной базы определяется класс вычислительной системы: одномашинная система, мультипроцессорный комплекс, локальная сеть и др. При этом анализируется эффективность систем разных классов и выбирается класс, наилучшим образом удовлетворяющий назначению системы. 2. В выбранном классе систем синтезируется архитектура системы: определяется состав устройств, их функциональные возможности и технические характеристики, типы интерфейсов и структура связей между устройствами, наилучшим образом соответствующие назначению системы. 3. Определяется режим обработки данных и его параметры (состав и функции системных процессов, алгоритмы распределения ресурсов между заданиями и задачами, типы и диапазоны приоритетов и др.). Этим устанавливаются функции управляющих программ операционной системы и состав системного программного обеспечения. Даже при разделении задачи синтеза на три или большее число этапов синтез, связанный с каждым этапом не удается свести к единой математической процедуре – задаче математического программирования. Это обусловлено двумя основными причинами. Во-первых, синтез связан с разнотипными параметрами: одни являются количественными, а другие – качественными, т. е. признаками типа структуры, устройств, памяти, интерфейсов, способов управления процессами и др. Поэтому синтез сводится к задачам численного математического программирования, а также к комбинаторным задачам на сочетаниях, отношениях и т. д. Объединение разнотипных задач в одну задачу оптимизации оказывается нерезультативным из-за разнотипности вычислительных процедур, которые должны использоваться в процессе оптимизации. Во-вторых, имеющиеся в распоряжении исследователей модели носят, как правило, локальный характер, воспроизводя свойства достаточно узкого класса структурных решений и режимов функционирования. Объединение простых моделей в сложную приводит к разрывам функций, невыпуклым зависимостям, что не только затрудняет, но практически исключает возможность применения методов оптимизации. 132 По этим причинам при синтезе систем стремятся по возможности уменьшать размерность задач путем разделения задачи синтеза на последовательность этапов, сводящихся к чисто комбинаторным задачам или задачам численной оптимизации. При этом проектирование системы ведется сверху вниз – от наиболее общих решений, связанных с системой в целом, к частным решениям, относящимся к отдельным подсистемам и их частям. При решении многих задач синтеза приходится использовать весьма простые модели функционирования системы и ее составляющих, приближенно представляющие зависимости между характеристиками и параметрами. В этих условиях выбор проектных решений производится на основе опыта и интуиции разработчиков. Таким образом, синтез вычислительных систем сводится к решению значительного числа взаимосвязанных задач выбора способов организации и определения параметров проектируемой системы в различных аспектах ее организации и в отношении к различным подсистемам и элементам. При этом используются как формальные, так и эвристические методы, причем на долю последних приходится значительное число проектных задач, выходящих за рамки возможностей известных методов теории вычислительных систем. Модели и методы Специфика предмета и задач теории вычислительных систем порождает особый класс моделей, используемых для представления порядка функционирования систем и их составляющих с целью прогнозирования производительности, надежности и других характеристик, а также совокупность методов решения задач анализа, идентификации и синтеза, опирающихся на соответствующие модели. Задачи анализа производительности и надежности, а также задачи синтеза систем с заданной производительностью и надежностью – наиболее массовые задачи проектирования и эксплуатации вычислительных систем. Поэтому в теории вычислительных систем наибольшее внимание уделяется моделям производительности и надежности и методам обеспечения требуемой производительности и надежности при проектировании и эксплуатации систем различного назначения. Принципы построения и свойства моделей. Модель – физическая или абстрактная система, адекватно представляющая объект исследования. В теории вычислительных систем используются преимущественно абстрактные модели – описания объекта исследования на некотором языке. Абстрактность модели проявляется в том, что компонентами модели являются не физические элементы, а понятия, в качестве которых наиболее широко используются математические. Абстрактная модель, представленная на языке математических отношений, называется математической моделью. Математическая модель имеет форму функциональной зависимости Y=F(X), Y  y ,..., y X  x , ..., x где  1 M и  1 N – соответственно характеристики и параметры моделируемой системы и F – функция, воспроизводимая моделью. 133 Построение модели сводится к выявлению функции F и представлению ее в форме, пригодной для вычисления значений Y=F(X). Модель позволяет оценивать характеристики Y для заданных параметров X и выбирать значения параметров, обеспечивающие требуемые характеристики, с использованием процедур оптимизации. Модель создается исходя из цели исследования, устанавливающей: 1) состав воспроизводимых характеристик 2) состав параметров влиять на характеристики Y; Y  y ,..., y  1 M , X  x ,..., x  1 N , изменение которых должно x  x , n 1,..., N * 3) область изменения параметров n n , – область определения модели. 4) точность – предельная допустимая погрешность оценки характеристик Y на основе модели. Состав характеристик Y определяется в зависимости от исследуемых свойств системы – производительности, надежности и других и должен гарантировать полноту отображения этих свойств. Состав параметров X должен охватывать все существенные аспекты организации системы, изучение влияния которых на качество функционирования составляет цель исследования, производимого с помощью модели. Область определения модели характеризует диапазон исследуемых вариантов организации систем. Чем обширнее состав характеристик и параметров, а также область определения модели, тем универсальнее модель в отношении задач, которые можно решать с ее использованием. Предельные допустимые погрешности оценки характеристик и точность задания параметров определяют требования к точности модели. Так, если изменения характеристик в пределах 10% несущественны для выбора того или другого варианта построения системы, то точность определения характеристик должна составлять ±5%. В большинстве случаев параметры, в первую очередь параметры рабочей нагрузки, могут быть заданы лишь приблизительно, с относительной погрешностью 10–25%. В таких случаях чет смысла предъявлять высокие требования к точности воспроизведения моделью характеристик системы и погрешности их оценки на уровне 5–15 % вполне приемлемы. Модель, удовлетворяющая вышеперечисленным требованиям по составу характеристик и параметров и точности воспроизведения характеристик во всей области определения, называется адекватной системе. Свойство адекватности модели является относительным, связанным с целью исследования. Больше всего адекватность проявляется в точности воспроизведения характеристик системы моделью. Существенное влияние на адекватность оказывает область определения модели. Практически любая модель обеспечивает высокую точность воспроизведения характеристик в пределах малой окрестности точки 134 X  x1 ,..., xN , но только высококачественные модели гарантируют точность характеристик в широком диапазоне параметров X. Чем шире область определения модели, тем меньше шансов, что некоторая модель окажется адекватной системе. Другое свойство модели – сложность. Сложность модели принято характеризовать двумя показателями: размерностью и сложностью вычислений, связанных с определением характеристик. Размерность модели – число величин, представляющих в модели параметры и характеристики. Так, если модель FA служит для вычисления двух характеристик, зависящих от 5 параметров, а модель FB – двух характеристик, зависящих от 10 параметров, то размерность модели FA равна 7, а модели Fв – 12 и модель FB рассматривается как более сложная. Сложность вычислений, выполняемых при расчете характеристик Y=F(X), оценивается числом операций, приходящихся на одну реализацию оператора Р. Обычно сложность вычислений связывается с затратами ресурсов ЭВМ и характеризуется числом процессорных операций и емкостью памяти для хранения информации, относящейся к модели. Сложность вычислений – монотонно возрастающая функция размерности модели. Поэтому более сложной модели присущи одновременно большая размерность и сложность вычислений. Сложность модели определяется сложностью моделируемой системы и назначением модели (состав характеристик и параметров, воспроизводимых в модели), размером области определения и точностью модели. Чем сложнее система, т. е. чем больше число входящих в нее элементов и процессов, из которых слагается функционирование системы, тем сложнее модель. Увеличение числа воспроизводимых характеристик и параметров, области определения и точности оценки характеристик приводят к увеличению сложности модели. Вероятностный подход к моделированию процессов. Производительность и надежность вычислительных систем связаны с временными аспектами функционирования. При оценке производительности первостепенное значение имеет продолжительность вычислительных процессов. При оценке надежности исследуется продолжительность пребывания системы в различных состояниях, которые меняются из-за отказов оборудования и последующего восстановления работоспособности. Для вычислительных систем, рассматриваемых на системном уровне, типично наличие случайных факторов, влияющих на характер протекания процессов. Так, продолжительность процессорной обработки, число и порядок обращений к периферийным устройствам зависят от исходных данных, которые порождаются вне системы и носят для нее случайный характер. Случайными являются поток отказов и время восстановления отказавших элементов. В связи с этим при оценке функционирования вычислительных систем используется вероятностный подход, предполагающий, что на процессы воздействуют случайные факторы и свойства процессов проявляются статистически, на множестве их реализаций. 135 Процессы, происходящие в вычислительных системах, представляются в моделях как непрерывные или дискретные случайные процессы. При исследовании вычислительных систем чаще всего приходится иметь дело с дискретными случайными процессами определенными на конечном множестве состояний, причем процессы рассматриваются или в непрерывном, или в дискретном времени. Вероятностный подход к описанию функционирования вычислительных систем приводит к использованию аппарата теории вероятностей и математической статистики в качестве математической базы методов исследования. Случайные величины, соответствующие параметрам, характеристикам и другим элементам моделей, могут представляться на разных уровнях, среди которых наиболее широко используются следующие четыре: 1) a ,..., a статистическая выборка 1 n , определяющая случайную величину набором значений, имевших место в некоторой реализации случайного процесса; 2) закон распределения случайной величины; 3) математическое ожидание и дисперсия; 4) математическое ожидание. На первом уровне случайная величина определяется наиболее полно, с наибольшей подробностью, а на последнем уровне – наименее детально. Марковские модели. Основополагающими в теории вычислительных систем являются модели и аппарат теории марковских процессов. Марковским называется случайный процесс, состояние которого в очередной момент времени t  зависит только от текущего состояния в момент времени t. Это означает, что поведение марковского процесса в будущем определяется текущим состоянием процесса и не зависит от предыстории процесса – состояний, в которых пребывал процесс до момента t. В классе марковских процессов выделяют процессы с дискретными состояниями, называемые марковскими цепями. Когда множество состояний S  s1 ,..., sK  процесса конечно марковскую цепь называют конечной. Конечная марковская цепь может быть определена в непрерывном или дискретном времен ч. В первом случае переходы процесса из одного состояния в другое t0 , t1 , t 2 ,... связываются с произвольными моментами времени непрерывной; во втором – только в фиксированные моменты времени, обозначаемые порядковыми номерами t  0,1, 2,... дискретной. Дискретная марковская цепь определяется: S  s ,..., s и цепь называют , и цепь называется 1) множеством состояний  1 K  2) .матрицей вероятностей переходов (переходных вероятностной) характеризующей вероятности перехода процесса с текущим состоянием si в следующее состояние sj; 136 s1 s2 ... sK p s1 p11 p12 ... 1K  p  p P  pij  s2  21 p12 ... 2 K    ...  ...... ... ...   s p p... p  K  K1 (7.3) KK  вероятностей (начальным распределением) K1 3) вектором начальных  0   0 p 0 определяющим вероятности pi того, что в начальный момент времени t=0 процесс находится в состоянии Si. Марковская цепь изображается в виде графа, вершины которого соответствуют состояниям цепи и дуги – переходам между состояниями. Дуги (i, j), связывающие вершины st и s}, отличаются вероятностями 0  ,..., pK 1 pij переходов состояний . На рис. 7.2 представлен граф марковской цепи с множеством S  s ,..., s  1 5  , матрицей вероятностей переходов s 1 s2 s3 s4 s5 s1 0 0 1 s   0 0, 4 0,3 0, 2 2 0,1   P  s3 0 1 0    s40,1  s5 0 0,9 0   1    1,0,0,0,0   и вектором начальных вероятностей . S3 0,4 0,3 1 1 1 0,1 S1 S2 0,2 0,1 S4  Рис. 7.2. Граф марковской цепи /2  S1 S2 1 S5 S5   Рис. 7.3. Граф непрерывной марковской цепи Марковская цепь порождает множество реализаций случайного процесса f(t), который представляется последовательностью состояний f t  f , f , f ,..., f t S  0 1 2   , соответствующих моментам времени t=0, 1, 2, ... f s Начальное состояние  . Следующее состояние i определяется вектором начальных вероятностей f1  s j определяется i-й строкой матрицы 137 f s состояние 1 j с вероятностей переходов Р: процесс f(t) переходит в f  s pij k , определяемое . Затем процесс переходит в состояние 2 вероятностью p , соответствующими состоянию Sj, и т. д. В результате n вероятностями ik шагов n  p  n   процесс  n ,..., pK 1  попадает в состояния s1 ,..., sK с вероятностями соответственно. Марковские цепи классифицируются в зависимости от возможности перехода из одних состояний в другие. Основными являются два класса: поглощающие и эргодические цепи. Поглощающая марковская цепь содержит поглощающее состояние, достигнув которого, процесс уже никогда его не покидает, т. е. по сути прекращается. Поглощающее состояние будем обозначать s0. Вероятность перехода p00 1 и, следовательно, все остальные вероятности p0 j  0, j 1,..., K . Матрица вероятностей переходов поглощающей цепи имеет следующий вид: s0 s 0  1 p P  p   s1  10  ij ...  ... s  p p 11 ... p ... sK ... 0  p  ... 1K  ... ...   ... p  (7.4) KK  K1 Из какого бы состояния ни начался процесс, при n с вероятностью s 1 он окажется в поглощающем состоянии 0 . Основная характеристика K  s1 K0 случайного процесса, порождаемого поглощающей марковской цепью, – s 1 ,..., s s 1 ,..., s Число пребываний в каждом из состояний S , i=l,...,К и i число пребываний процесса в состояниях на множестве невозвратных состояний K  – случайные величины, характеризуемые средними значениями, дисперсиями и распределениями. Для определения указанных характеристик используются методы алгебраической теории марковских цепей [14]. Поглощающие марковские цепи широко используются в качестве временных моделей программ и вычислительных процессов. При моделировании программы состояния цепи отождествляются с блоками программы, а матрица переходных вероятностей определяет порядок переходов между блоками, зависящий от структуры программы и распределения исходных данных, значения которых влияют на развитие вычислительного процесса. В результате представления программы поглощающей цепью удается вычислить число обращений к блокам программы и время выполнения программы, оцениваемое средними значениями, дисперсиями и при необходимости – распределениями. Аналогично вычислительный процесс, сводящийся к последовательности обращений к ресурсам системы в порядке, определяемом программой, можно представить поглощающей марковской цепью, состояния которой соответствуют использованию ресурсов системы – процессора и периферийных устройств, а переходные вероятности отображают порядок обращения к различным ресурсам. За счет этого вычислительный процесс представляется в компактной форме, удобной для анализа характеристик процесса. K до м 138 Эргодическая марковская цепь представляет собой множество состояний, связанных матрицей переходных вероятностей таким образом, что из какого бы состояния процесс ни исходил, после некоторого числа шагов он может оказаться в любом состоянии. Это означает, что в любое состояние эргодической цепи можно перейти из любого другого состояния за сколько-то шагов. По этой причине состояния эргодической цепи называются эргодическими (возвратными). Процесс, порождаемый эргодической цепью, начавшись в некотором состоянии, никогда не завершается, а последовательно переходит из одного состояния в другое, попадая в различные состояния с разной частотой, зависящей от переходных вероятностей. Поэтому основная характеристика эргодической цепи – S , j 1,..., K j вероятности пребывания процесса в состояниях , – относительные частоты попадания процесса в состояния Sj и одновременно доля времени, которую процесс проводит в каждом из состояний. В качестве дополнительных характеристик, эргодических цепей используются математическое ожидание и дисперсия времени (числа шагов) первого попадания в состояние Sj из состояния Si и предельная корреляция числа попаданий в состояния Si и Sj. Эти характеристики определяются методами алгебраической теории марковских цепей [8]. Эргодические цепи широко используются в качестве моделей надежности систем. При этом состояния системы, различающиеся составом исправного и отказавшего оборудования, трактуются как состояния эргодической цепи, переходы между которыми связаны с отказами и восстановлением устройств и реконфигурацией связей между ними, проводимой для сохранения работоспособности системы. Оценки характеристик эргодической цепи дают представление о надежности поведения системы в целом. Кроме того, эргодические цепи широко, используются в качестве базовых моделей взаимодействия устройств с задачами, поступающими на обработку. s1 ,..., sK Марковский процесс с дискретными состояниями , переходы между которыми разрешаются в любой момент времени, называется непрерывной марковской цепью. Однородная непрерывная марковская цепь, поведение которой в любой момент времени подчиняется одному и тому же закону, задается матрицей интенсивностей переходов Интенсивность переходов определяется следующим образом: q  lim pii t1 t 0 t ; pii t  qij  lim ij t 0 Q qij, i , j 1,..., K   . pij t  t s s где – вероятность перехода процесса из состояния i в состояние i , за время t . Это означает, что если процесс находится в состоянии Si, то вероятность перехода в  t течение промежутка времени в состояние Sj, отличное вероятность перехода процесса в течение промежутка времени равна qij t t ii из состояния Si в состояние Sj . Интенсивность переходов должна удовлетворять условию 139  q t от Si, равна . Аналогично K qij i 1,..., K  0, (7.5) j 1 На рис. 7.3 представлен граф непрерывной марковской цепи с тремя состояниями S1, S2, S3. Дуги графа нагружены интенсивностями переходов. Графу соответствует следующая матрица интенсивностей переходов: s1 s1 3  2 Q q   s     2 s  0 s2 s3   / 2          ij 3  При построении матрицы значения следующим образом: q  ii  qii , (7.6) i 1,..., K , в соответствии с (7.5) определяются K  q ij j 1 j i Основная характеристика непрерывной марковской цепи – стационарное (финальное) распределение вероятностей состояний s1 ,..., s K процесса в состояниях системы линейных уравнений Q  0   a ,..., a 1  K , где a ,..., a 1 K – вероятности пребывания соответственно. Распределение задается вероятностным решением (7.7) которая в развернутой форме имеет следующий вид: K q a  ji   0, i 1,..., K j j 1 Решение системы, составленной из (К–1) уравнений (7.8) и нормирующего уравнения   a ,..., a a ...  a 1  1 K , определяет значения вероятностей . Уравнения (7.7), (7.8) называются уравнениями равновесия. Они легко составляются по графу марковской цепи с учетом того, что в каждом состоянии входящий поток должен равняться исходящему потоку. Так, для цепи на рис. 7.3 имеем 1 K Состояние Интенсивность входящего потока Интенсивность исходящего потока s1 2  s   2      a 2 1 2  s3 2 a 1  3   2 a3 С учетом равенства интенсивности входящего и исходящего потока   a2  / 2   a1;  a1  a3     a2 ;   a  a  a ;   2 1 2 3 140     a1 Полученная система является системой уравнений равновесия для цепи, изображенной на рис. 7.3 и заданной матрицей (7.6). В соответствии с марковским свойством вся предыстория процесса сказывается на его поведении в будущем только через текущее состояние, которое и определяет дальнейший ход процесса. Таким образом, нет необходимости знать, как долго процесс находится в текущем состоянии. Отсюда следует, что распределение остающегося времени пребывания процесса в sj состоянии должно зависеть только от самого состояния, а не от времени пребывания в нем. Этим свойством обладает только одно распределение – экспоненциальное, функция плотности p t 1/  exp t / вероятности которого имеет следующий вид:     , где  – параметр распределения, определяющий математическое ожидание случайной величины t. Таким образом, непременное свойство непрерывного марковского процесса – экспоненциальность распределения времени пребывания процесса в каждом из состояний. s1 ,..., sK Если снять указанное ограничение на время пребывания процесса в состояниях , т.е. допустить произвольное распределение времени пребывания, то процесс становится полумарковским. Полумарковский процесс ведет себя относительно моментов изменения состояний как обычная дискретная марковская цепь, и принято говорить, что в эти моменты времени имеет место вложенная марковская цепь. Характеристики полумарковского процесс» определяются значительно сложнее, чем для марковского процесса, поскольку вероятности состояний связаны с параметрами процесса системой дифференциальных уравнений в частных производных. Поэтому вычисление стационарных вероятностей состояний в общем случае выливаются в сложную математическую задачу. Модели массового обслуживания. Для построения моделей производительности вычислительных систем широко используется аппарат теории массового обслуживания. В ней изучаются системы, на вход которых поступает поток заявок (требований), приходящихся в общем случае в случайные моменты времени. Поступившая заявка обслуживается в системе путем предоставления ей некоторых ресурсов на какое-то время и, будучи обслуженной, покидает систему. Определение времени пребывания заявок в системе составляет сущность теории массового обслуживания. Наиболее характерный момент функционирования систем массового обслуживания – наличие очередей, в которых поступившие заявки ждут момента освобождения ресурсов, занятых обслуживанием других, например, ранее поступивших заявок. ЭВМ можно рассматривать как систему массового обслуживания, на вход которой поступают задания, обслуживаемые путем предоставления им процессорного времени и времени остальных устройств ЭВМ. Анализ ЭВМ как системы массового обслуживания позволяет определить число заданий, находящихся в ЭВМ на различных стадиях обслуживания, время ожидания заданий в очередях, время пребывания задании в ЭВМ и другие характеристики процесса обработки заданий, функционирования ЭВМ и ее устройств. Система массового обслуживания (рис. 7.4) состоит из входящего потока заявок а, очереди Q, дисциплины обслуживания D, определяющей порядок выбора заявок из очереди, и обслуживающего прибора П или К П ,..., П одинаковых обслуживающих приборов (каналов) 1 К . Система, содержащая только один прибор (канал), называется одноканальной, а несколько приборов, – многоканальной. Функционирование системы состоит 141 в постановке поступающих заявок в очередь на обслуживание, выборе из очереди заявки, подлежащей первоочередному обслуживанию, и предоставлении прибора заявке на определенное время. По окончании обслуживания заявка покидает систему. На выходе системы образуется выходной поток заявок. Таким образом, система массового обслуживания характеризуется следующим набором параметров: 1) распределением длительности интервалов между заявками входящего потока р(а); 2) дисциплиной обслуживания заявок D; 3) числом обслуживающих приборов (каналов) К; 4) распределением длительности обслуживания заявок приборами (каналами) р(b). Указанный набор параметров полностью определяет порядок функционирования системы. Процесс функционирования количественно оценивается следующим набором основных характеристик: 1) загрузкой – средним по времени числом приборов (каналов), занятых обслуживанием (для одноканальной системы загрузка определяет долю времени, в течение которой прибор занят обслуживанием, т. е. не простаивает); 2) длиной очереди – числом заявок, ожидающих обслуживания; 3) числом заявок, находящихся в системе (в очереди и на обслуживании приборами); 4) временем ожидания заявки – от момента поступления заявки в систему до начала обслуживания; 5) временем пребывания заявки в системе – от момента поступления заявки до окончания ее обслуживания, т. е. до выхода из системы. б) Q a а) D П1 П2 ... Q D a П Пk Рис. 7.4. Одноканальная (а) и многоканальная (б) система массового обслуживания Наряду с основными характеристиками для оценки функционирования системы используются дополнительные характеристики: длительность простоя, непрерывной занятости приборов и др. Все указанные характеристики, кроме загрузки,– случайные величины, представляемые соответствующими распределениями: распределением длины очереди, числа заявок в системе, времени ожидания и т. д. На более низком уровне детализации случайные величины характеризуются средними значениями и дисперсиями или только средними. Зависимости характеристик 142 системы от ее параметров– предмет исследования элементарной теории массового обслуживания. В теории массового обслуживания изучаются и более сложные объекты – сети. Сеть массового обслуживания – совокупность взаимосвязанных систем массового обслуживания. Пример сети представлен на рис. 7.5. Здесь S ,..., S S0 – узел – источник заявок, 1 4 – системы массового обслуживания и S5– узел, представляющий выход из сети. Дуги показывают направления движения заявок по сети. Если из вершины выходит единственная дуга, то все заявки, обслуженные соответствующей системой, направляются по этой дуге. Если из вершины выходит несколько дуг, то каждая заявка направляется по одной выходящей дуге, выбор которой производится в соответствии с вероятностями передачи заявок S , S ,..., S j k l соответственно, причем pij , pik ,..., pil p  p ...  p 1 ij ik il из узла Si в узлы . S3 S0 S1 S2 S5 S4 Рис. 7.5. Граф сети массового обслуживания Сеть функционирует следующим образом. Заявка от источника S0 поступает на обслуживание в систему, определенную дугой, выходящей из источника. После обслуживания в этой системе заявка поступает в следующую систему и циркулирует по сети, последовательно обслуживаясь в различных системах, до тех пор, пока не покинет сеть по дуге, ведущей к выходу. В сети заявка либо стоит в очереди к одной из систем, либо обслуживается прибором системы. Сеть массового обслуживания задается следующим набором параметров: 1) параметрами источника заявок; 2) структурой, определяющей конфигурацию связей и вероятности передачи заявок между узлами сети; 3) параметрами систем массового обслуживания Si, i=1, ... ..., N – дисциплиной обслуживания Di, числом каналов Ki и распределением p  bi  длительности обслуживания заявок . Функционирование сети массового обслуживания определяется совокупностью узловых и сетевых характеристик. Узловые характеристики оценивают функционирование каждой системы массового обслуживания и 143 включают в себя характеристики потока заявок, поступающего на вход узла, и весь набор характеристик, присущий системам массового обслуживания. Сетевые характеристики оценивают функционирование сети в целом и включают в себя: 1) загрузку – среднее по времени число заявок, обслуживаемых сетью, и одновременно среднее число приборов (каналов), занятых обслуживанием; 2) число заявок, ожидающих обслуживания в сети; 3) число заявок, находящихся в сети (в состоянии, ожидания и обслуживания); 4) суммарное время ожидания заявки в сети; 5) суммарное время пребывания заявки в сети. Теория массового обслуживания предлагает способы расчета характеристик сетей различных типов, а также способы выбора параметров сетей, обеспечивающих заданные характеристики функционирования. Для воспроизведения в моделях различных способов организации процессов функциональные возможности сетей массового обслуживания расширяются путем включения в сети специальных узлов. Так, для отображения эффектов, связанных с использованием запоминающих устройств, в сетевые модели включаются узлы, моделирующие работу запоминающих устройств, – узлы памяти. Память характеризуется емкостью, которая распределяется между заявками. Обслуживание заявки, поступившей на вход узла памяти, сводится к выделению затребованного числа ячеек памяти. Если в памяти, отсутствует область требуемого размера, заявка ставится в очередь и ожидает момента освобождения памяти, предоставленной ранее поступившим заявкам. Возможности сети могут расширяться за счет использования специальных узлов, управляющих маршрутами заявок: направляющих заявку одновременно по нескольким маршрутам; синхронизирующих движение заявок; изменяющих атрибуты заявок и т. д. Сети, воспроизводящие процессы массового обслуживания в форме взаимодействия систем массового обслуживания и дополнительных узлов, моделирующих работу памяти (накопителей), источников и приемников заявок и процессы маршрутизации заявок, называются стохастическими сетями. Стохастические сети включают в себя сети массового обслуживания как один из вариантов организации процессов массового обслуживания. В отличие от систем массового обслуживания, стохастические сети, в том числе и сети массового обслуживания, воспроизводят процессы многоэтапного обслуживания, когда обслуживание заявки производится за счет последовательного обращения к ресурсам, в том числе и многократного. Характерное свойство сети – ее структурное подобие реальной системе. Состав узлов сети л конфигурация связей между ними соответствует составу устройств и порядку их взаимодействия в реальной системе. За счет этого значительно упрощается процесс построения сетевых моделей и обеспечивается адекватность процессов функционирования сетей и моделируемых ими систем. Статистические модели. В тех случаях, когда причинно-следственные отношения в исследуемом объекте трудно охарактеризовать из-за их многообразия, сложности и невыясненной природы процессов или когда эти отношения несущественны, а желательно представить свойства объекта в достаточно компактной форме, используются статистические методы для математического выражения зависимостей между характеристиками и параметрами объекта. Статистические методы – совокупность способов сбора, анализа и интерпретации данных о некотором объекте или 144 совокупности объектов с целью получения теоретических или практических выводов. Сущность статистических методов состоит в следующем. На основе эмпирических представлений о свойствах, исследуемого объекта и в соответствии с целью исследования определяется состав признаков, характеризующих объект, и тип статистической модели (математические выражения, структуры). Признаки, посредством которых описывается объект,– величины, соответствующие параметрам x ,..., x и характеристикам собираются 1 M объекта. Наблюдением (измерения, регистрация) статистические данные, образующие выборку следующего вида: 1 N y ,..., y Ном ер наблюдения x1 x 1 где  i  x 1  i  1 x N x1 xN 1 yM1 2 y2 y1 … n x1 yM 1 … n i y 2 …  i  y1 1 1 2 2 … n xN y xN M …  n yn M 1 ,..., xN , y1 ,..., yM – значения признаков при i-м наблюдении. На основе этой выборки строится статистическая модель заданного типа, устанавливающая количественную взаимосвязь признаков. Математическая статистика предлагает обширный набор моде лей и методов установления статистических закономерностей, присущих исследуемым объектам. Наиболее широкое применение при исследовании вычислительных систем получил регрессионный анализ. y i  f x ,..., x  i 1 N связывающих Регрессионный анализ состоит, в построении функций характеристики (зависимые переменные) с параметрами (независимыми переменными), на основе статистической выборки, содержащей статистически независимые данные. Статистическая независимость данных состоит в том, что значения признаков разных наблюдений статистической выборки не должны зависеть друг от друга. Чтобы проявились статистические зависимости, число наблюдений должно превосходить число признаков в 6-8 раз. Выборка должна быть однородной, т. е. относиться к объектам одного класса. Зависимость характеристики от полинома параметров y  b0  b1 x1 ...  bN xN x ,..., x 1 N представляется в виде линейного (7.9) а при необходимости – в виде полинома более высокого порядка y  b  b x ...  b x  b x x  b x x ...  b x x ...  b 1 1 N N 12 1 2 13 1 3 1N 1 N 123 x x x ...  b x2 ... 1 2 3 11 1 Параметры b называются коэффициентами регрессии. Если число признаков N=1, то (7.9) называют уравнением парной регрессии, если N2, – уравнением множественной регрессии. Переменная у рассматривается как случайная величина, которая распределена в окрестности среднего значения y , зависящего от хj т. е. считается, что переменные x j влияют лишь на среднее 145 y значение . минимизацией i y Коэффициенты регрессии оцениваются по методу дисперсии отклонения уравнения регрессии от наименьших квадратов наблюдаемых значений , i 1,..., n . При построении регрессионной модели основными являются два момента: 1) выбор числа независимых признаков x , ..., x 1 N ; 2) выбор формы полинома, посредством которого представляется зависимость y  f x1 ,..., xN  . Процедуры оценки качества и совершенствования моделей реализованы в пакетах прикладных программ статистического анализа, используемых при исследованиях. Регрессионные модели обладают следующими особенностями. Во-первых, они применимы x1 ,..., xN для прогноза значений у только при аргументах , принадлежащих области определения переменных, для которой построено уравнение регрессии. Во-вторых, уравнения регрессии принципиально необратимы, т. е. недопустимо путем тождественных преобразований из y  f x ,..., x x   x ,..., x , y  1 N строить уравнение j  1 N , поскольку это уравнения две совершенно различные регрессии, каждая из которых должна строиться самостоятельно. Дополнительно отметим, что регрессионные модели не раскрывают механизм взаимосвязи характеристик и параметров и фиксируют лишь количественную взаимосвязь величин. Регрессионные и другие статистические модели наиболее широко используются для описания рабочей нагрузки, создаваемой прикладными задачами, а также системными процессами (управление заданиями, задачами, данными, ввод – вывод и др.). Применение статистических методов для этого класса объектов объясняется тем, что хотя рабочая нагрузка, как правило, хорошо наблюдаема, однако по своей природе – это чрезвычайно сложный объект. В нем совмещены свойства прикладных задач, технология обработки данных, организация операционной системы и даже конфигурация ЭВМ, для которой разрабатывается программное обеспечение. Поэтому рабочую нагрузку приходится рассматривать как черный ящик и описывать количественные взаимосвязи статистическими методами. Регрессионные модели применяются также для компактного представления и анализа зависимостей, воспроизводимых на имитационных моделях. Аналитические методы. Аналитические методы исследования вычислительных систем сводятся к построению математических моделей, которые представляют физические свойства как математические объекты и отношения между ними, выражаемые посредством математических операций. При использовании аналитических методов оператор F, устанавливающий зависимость Y = F(X) между характеристиками и параметрами объекта, представляется совокупностью математических выражений (формул) – алгебраических, дифференциального и интегрального исчисления и др. Модели, построенные этими методами, называются аналитическими моделями. В таких моделях зависимость между характеристиками и параметрами может быть представлена в явной y f x ,..., x аналитической форме – в виде выражений m m  1 N , решенных относительно искомых величин, или в неявной форме – в виде уравнений Ф(Y, Х)=0, связывающих характеристики и параметры. При построении аналитических моделей свойства объектов описываются исходя из свойств составляющих – физических элементов или элементарных процессов. Для этого используется подходящий математический аналог и с помощью соответствующего математического аппарата строятся выражения, которые связывают показатели, 146 характеризующие элементы. Последовательным применением математических правил совокупность выражений, моделирующих свойства элементов, сводится к форме, представляющей зависимость Y=F(X) между характеристиками и параметрами всей системы. Как правило, свойства элементов и систем удается представить в аналитической форме, если принимаются определенные допущения о свойствах и поведении описываемых объектов: независимость одних факторов от других, линейность некоторых зависимостей, мгновенность переходов между состояниями и т. д. Если допущения соответствуют реальности, модель хорошо воспроизводит зависимость между характеристиками и параметрами. Однако во многих случаях допущения приводят к существенным отличиям модели от реального объекта, вследствие чего моделируемая зависимость существенно отличается от реальной и характеристики представляются на модели с большой погрешностью. Так, предположение о том, что процессы обладают марковским свойством, может оказаться ошибочным, что приводит к большим погрешностям марковских моделей и даже к неверным оценкам. Основные аналитические методы теории массового обслуживания базируются на предположении, что интервалы времени между заявками входящих потоков и длительности обслуживания распределены по экспоненциальному закону. Когда это предположение выполняется, аналитические методы позволяют точно оценивать характеристики системы. Если же потоки и длительности существенно отличаются от предполагаемых, моделируемые характеристики могут сколь угодно отличаться от реальных. Таким образом, аналитические модели, базируясь на допущениях о свойствах объектов, применимы для исследования только тех систем, в отношении которых справедливы принятые допущения. Многие системы изза специфики своей организации недоступны для исследования аналитическими методами. Ценность аналитических методов и моделей для теории и практики обусловлена следующими причинами. Во-первых, зависимости, полученные аналитическими методам», являются строго доказанными и их достоверность не вызывает сомнений, конечно с учетом принятых при выводе допущений. Поэтому аналитические зависимости используются в качестве своеобразных эталонов, с которыми сопоставляются результаты, получаемые другими методами. Некоторые аналитические зависимости носят абсолютно общий характер и используются в качестве законов, отображающих фундаментальные свойства вычислительных систем. Во-вторых, аналитические модели имеют большую познавательную ценность. Аналитические зависимости определяют характеристики для всей области значений параметров и несут в себе информацию о поведении соответствующих систем при любых сочетаниях параметров. На основе аналитических моделей легко определяются экстремальные и предельные значения характеристик и оцениваются эффекты от изменения параметров. 147 В-третьих, аналитические модели характеризуются наименьшей сложностью вычислений. Это свойство чрезвычайно важно при решении задач синтеза, поскольку оптимизация связана с многократными вычислениями характеристик при различных значениях параметров. Аналитические методы и модели раскрывают фундаментальные свойства вычислительных систем и составляют ядро теории вычислительных систем. Имитационные методы. Имитационные методы основаны на представлении порядка функционирования системы в виде алгоритма, который называется имитационной (алгоритмической) моделью. Программа содержит процедуры, регистрирующие состояния имитационной модели и обрабатывающие зарегистрированные данные для оценки требуемых характеристик процессов и моделируемой системы. b1 b2 bi ... a1 a ak ... Фq ... 2 Рис. 7.6. Агрегат как элемент модели B4 B1 c   B 1,1 1 a B c 3,1 3 2   2  a 4,1 3  a c 3,2 4,1 z1 B6 a a 5,1 2,1 a  c B5 3,1   4  5,2  5  6,1 c a 5,1  6,2  6  c 6,1 z2 Рис. 7.7. Агрегатная модель При построении имитационных моделей широко используется агрегатный подход. Для моделирования заданного класса систем создается  ,...,  Q набор агрегатов – элементов модели. Агрегаты могут 1 соответствовать элементам систем, например процессорам, оперативным запоминающим устройствам, каналам ввода–вывода, каналам передачи данных и другим, воспроизводя определенные аспекты их функционирования. В качестве агрегатов могут выступать математические объекты, с помощью которых генерируются и преобразуются необходимые процессы. Так, для моделирования систем на основе сетей массового обслуживания в качестве агрегатов представляются источники потоков заявок, системы массового обслуживания, узлы, управляющие 148 распределением заявок по нескольким направлениям, и т.д. По существу агрегат – описание функции некоторого объекта в аспектах, соответствующих цели моделирования – оценке производительности,  ,...,  Q надежности и т. д. Функции агрегатов представляются в 1 параметрической форме, т. е. в записи функций используются параметры, характеризующие конкретный объект. Так, параметром процессора является производительность (быстродействие), оперативной памяти – емкость, системы массового обслуживания– дисциплина обслуживания, число каналов  и распределение длительности обслуживания. Функция агрегата  q , q 1,...,Q , представляется в алгоритмической форме – в виде процедуры a ,..., a   a ,..., a , b ,..., b , c ,..., c k 1 l 1 m , где параметры 1 k – определяют q  1 b ,..., b c ,..., c состояние входов элемента, 1 l – режим его функционирования и 1 m – состояние выходов элемента. Сколь ни была бы. сложна функция агрегата  q в модели агрегат выглядит как элемент (рис. 7.6), настраиваемый на заданный режим функционирования множеством параметров Bq  b1 ,...,bl и преобразующий A  a ,..., a C  c ,..., c входные воздействия q  1 k в выходные состояния q  1 m в  соответствии с функцией агрегата qи значениями параметров Bq. Множество агрегатов разного типа  ,...,  1 Q  составляет базис имитационных моделей заданного класса систем. Имитационная модель собирается из агрегатов путем соединения выходов агрегатов с входами других агрегатов (рис. 7.7). На рисунке  i агрегаты обозначены где – тип и i –порядковый номер агрегата в  ,   модели. Агрегаты  и  – генераторы, формирующие воздействия в соответствии с параметрами В1 и В2. Состав агрегатов, структура связей между ними и наборы параметров агрегатов В1,...,В6 определяют модель. 1 2    ,...,    6 Процесс моделирования состоит в реализации процедур  1  в необходимом порядке. При этом значения, формируемые на выходах агрегатов, переносятся на входы связанных с ними агрегатов, в результате чего вычисляются значения z1 и z2. Путем обработки данных, наблюдаемых в характерных точках модели (на выходах элементов), получают оценки качества функционирования любого из агрегатов и системы в целом. Имитационные модели воспроизводят процесс функционирования и свойства исследуемых систем исходя из априорно известных свойств элементов системы – за счет объединения моделей элементов в структуру, соответствующую исследуемой системе, и имитации функционирования элементов в их взаимодействии. Исследование вычислительных систем имитационными методами состоит из нескольких этапов. 149 1. Определение принципов построения модели. Цель этого этапа – сформировать общий замысел модели (состав характеристик и параметров, подлежащих отображению, область определения модели, требования к точности результатов моделирования, тип математической модели, программные и технические средства для описания и реализации модели). На этом этапе выдвигаются гипотезы о свойствах моделируемой системы, принимаются допущения для использования соответствующих математических методов и конкретизируются эксперименты, проводимые на модели. 2. Разработка модели. Цель этого этапа – создание программы моделирования для ЭВМ. При этом общий замысел модели преобразуется в конкретное алгоритмическое описание. Этап завершается проверкой работоспособности и адекватности модели. 3. Моделирование на ЭВМ. Цель этого этапа – получение с помощью модели данных о поведении исследуемой системы, обработка полученных данных, а при синтезе системы – выбор параметров, оптимизирующих заданные характеристики системы и удовлетворяющих заданным ограничениям. Важнейшее свойство метода имитационного моделирования – универсальность, проявляющаяся в следующем. Во-первых, метод имитации позволяет исследовать системы любой степени сложности. Усложнение объекта исследования приводит к увеличению объема данных, вводимых в модель, и времени моделирования на ЭВМ, но при этом принципы построения моделей остаются неизменными. Во-вторых, метод имитации не ограничивает уровень детализации в моделях. С помощью алгоритмов можно воспроизводить любые, сколь угодно своеобразные взаимосвязи между элементами системы и процессы функционирования. Более детальное представление организация и функционирования системы сказывается только на объеме алгоритмического описания модели (программы) и затратах времени на моделирование. Особенности организации и функционирования, препятствующие использования аналитических методов, легко воспроизводятся в имитационных моделях. В-третьих, имитационная модель является неограниченным источником данных о поведения исследуемой системы – новые эксперименты на модели позволяют получать дополнительные данные о системе. За счет этого гарантируется детальная оценка характеристик, функционирования как системы в целом, так и ее составляющих. Как правило, увеличивая длительность экспериментов на моделях или число экспериментов, т. е. время моделирования, можно добиться высокой точности результатов моделирования. Недостатки имитационных методов – большие затраты времени на моделирование и частный характер получаемых результатов. В имитационной модели процесс функционирования системы воспроизводится во всех существенных для исследования деталях за счет последовательного выполнения на ЭВМ операций над величинами. Число операций, 150 обеспечивающее воспроизведение представленных интервалов функционирования системы, оказывается значительным и при 8 12 моделировании систем умеренной сложности составляет 10 –10 операций на одну реализацию модели. Поэтому при моделировании на ЭВМ, имеющей быстродействие миллион операций в секунду, для одного прогона модели требуются минуты и часы процессорного времени. При этом модель позволяет оценить характеристики системы только в одной точке, соответствующей значениям параметров X, введенных в модель перед началом моделирования. Чтобы определить зависимость между характеристиками и параметрами, необходимы многократные прогоны модели, в результате которых значения Y определяются для многих наборов параметров. Возможности методов оптимизации параметров на имитационных моделях ограничиваются большими затратами времени на моделирование системы в одной точке. Несмотря на указанные недостатки, методы имитационного моделирования в силу их универсальности широко используются при теоретических исследованиях и проектировании вычислительных систем. Имитационные модели позволяют исследователю к разработчику формировать представления о свойствах системы и, познавая систему через ее модель, принимать обоснованные проектные решения. Экспериментальные методы. Экспериментальные методы основываются на получении данных о функционировании вычислительных систем в реальных или специально созданных условиях с целью оценки качества функционирования и выявления зависимостей, характеризующих свойства систем и их составляющих. Типичные задачи, решаемые экспериментальными методами,– оценка производительности и надежности системы, определение состава и количественных показателей системной нагрузки в зависимости от прикладной нагрузки и т. д. Экспериментальные исследования выполняются в следующем порядке: 1. Формулируется цель исследования. 2. Выбирается или разрабатывается методика исследования, которая устанавливает модель исследуемого объекта; способ и средства измерения; способ я средства обработки измерительных данных, а также интерпретация результатов измерений и обработок. 3. Проводятся измерения процесса функционирования объекта в реальных или специально создаваемых условиях. 4. Измерительные данные обрабатываются и соответствующим образом интерпретируются. Экспериментальные, методы обеспечивают получение наиболее достоверных данных о вычислительных системах, в чем их преимущество по сравнению с аналитическими и имитационными методами, основанными на использовании моделей. Во многих случаях экспериментальные методы являются единственным источником информации о функционировании и свойствах вычислительных систем. Например, количественная оценка 151 параметров рабочей нагрузки систем общего назначения производятся в основном экспериментальными методами. Особенно велико значение экспериментального метода при решении задач эксплуатации, так как совершенствование конфигурации и режима функционирования систем не мыслимо без использования измерительных данных, представляющих конкретные условия работы системы. Недостатки экспериментальных методов – большие затраты труда и времени на проведение экспериментальных исследований, а также частный характер получаемых результатов, распространение которых на системы с другой конфигурацией и режимом функционирования требует достаточно сложной работы. Принципы анализа производительности Производительность вычислительных систем общего назначения оценивается в зависимости от области применения номинальной, комплексной, системной производительностью и производительностью на рабочей нагрузке (см. § 1.3). Номинальная производительность характеризует только быстродействие, или производительность устройств, входящих в состав системы. Комплексная производительность учитывает не только быстродействие устройств, но и структуру системы – ее влияние на быстродействие совместно функционирующих устройств. Системная производительность учитывает как вышеназванные факторы – быстро действие устройств и структуру связей между ними, так и влияние операционной системы. Производительность на рабочей нагрузке (кратко – производительность) отображает все факторы, влияющие на системную производительность, и, кроме того, свойства рабочей нагрузки – задач, решаемых вычислительной системой. С производительностью тесно связана такая характеристика качества обслуживания пользователей, как время ответа, т. е. время пребывания задач в системе. Поэтому при оценке производительности определяется не только количество работы, выполняемое системой в единицу времени, но и время ответа для всего множества задач и отдельных классов задач. Производительность вычислительной системы проявляется, с одной стороны, в скорости обработки задач, а с другой – в степени использования ресурсов системы. Чем больше загружены ресурсы, тем выше производительность системы, и недогрузка ресурсов свидетельствует о наличии резервов для повышения производительности. Поэтому при анализе производительности системы оцениваются не только показатели производительности, но и показатели, характеризующие использование ресурсов. Производительность вычислительной системы связана с продолжительностью процессов обработки задач, которая зависит от трех факторов: 1) рабочей нагрузки; 2) конфигурации системы; 3) режима обработки задач. Эти три фактора в совокупности определяют порядок развития вычислительных процессов во времени, и первая задача анализа 152 производительности сводится к порску компактных и информативных форм представления вычислительных процессов. Эти формы создают концептуальную (понятийную) основу для оценки функционирования вычислительных систем в процессе эксплуатации и при исследовании с помощью моделей производительности. Вторая задача анализа – создание моделей, позволяющих прогнозировать производительность систем для различной конфигурации, режимов обработки и, возможно, разной рабочей нагрузки. Способы описания процессов функционирования. Применительно к задачам анализа производительности функционирование вычислительной системы рассматривается как совокупность процессов, связанных с R R ,..., R использованием ресурсов системы. К ресурсам  1 N P относятся R ,..., R устройства 1 N , разделяемые между процессами во времени, а также R ,..., R устройства памяти (память) N 1 N P , разделяемые во времени и по J  t , A, T  емкости. Процесс характеризуется тройкой параметров: , где t – момент начала процесса; А – атрибуты, устанавливающие имя источника процесса (пользователя, программы и т.п.), и факторы, влияющие на режим обработки (имя класса, приоритет и др.); Т – трасса процесса. Трасса характеризует порядок использования ресурсов и представляется последовательностью событий состояния процесса. Событие T  S ,..., S  1 K ,связанных t с изменением моментом его характеризуется Sk возникновения k , именем ресурса, с которым связано событие, и параметрами, определяющими использование ресурса (занятие или освобождение, тип операции, выполняемой устройством, емкость выделяемой памяти и т. д.). В трассе фиксируется весь объем данных, отображающих взаимодействие процесса с ресурсами и позволяющих установить порядок обращения к ресурсам и объем их использования. Трасса представляет процесс наиболее полно. Однако у этой характеристики существенный недостаток – большой объем данных. Так, обычно на одну 3 6 реализацию вычислительного процесса приходится 10 –10 обращений к 3 6 периферийным устройствам, что составляет 10 –10 смен состояний 5 7 процесса или 10 –10 байт данных.  ВВ вод  ВХ О жидание во входной очереди  П О жидание памяти  Р О жидание ресурсов  ПР Проц ессорная обработка абота с НМД  НМД  НМЛ Р Р абота с НМЛ  ВЫВ О жидание вывода В ывод Рис. 7.8. Профиль вычислительного процесса Более компактная форма представления процесса – профиль процесса (рис. 7.8). Для построения профиля выделяются фазы процесса: ввод, 153  ВЫВ ожидание во входной очереди, ожидание памяти и т. д. Реализация процесса представляется в виде последовательности фаз, продолжительность пребывания в которых характеризуется значениями   i (время использования устройств) и i (время ожидания). Сумма этих значений составляет время пребывания задания в системе. Профиль процесса дает наглядное представление о продолжительности каждой фазы и соотношении длительности фаз. Для повышения информативности профиль снабжается данными о числе обращений к устройствам, а также о емкости используемой памяти, в том числе о минимальной, средней и максимальной требуемой емкости. Таким образом, профиль определяет время R ,..., R n ,..., n  ,..., 1 N использования устройств 1 N и число обращений 1 N к каждому из устройств, а также потребность в памяти. Профиль процесса отображает свойства программы и одновременно режима обработки. Свойства программы проявляются в объеме использования ресурсов – времени использования устройств и емкости памяти. Режим обработки сказывается на времени ожидания. В однопрограммном режиме состояние ожидания отсутствует. С увеличением уровня мультипррграммирования время ожидания возрастает, особенно для низкоприоритетных процессов. На время ожидания влияет уровень загрузки системы, который возрастает с интенсивностью поступления заданий на обработку и приводит к увеличению времени пребывания заданий в очередях. Процессы в вычислительных системах разделяются на два класса: прикладные и системные. Прикладной процесс связан с актом обслуживания пользователя и представляет собой некоторую единицу работы – выполнение задания. Прикладные процессы поддерживаются системными процессами, порождаемым управляющими программами операционной системы. К системным относятся процессы системного ввода – вывода и супервизорные Системные процессы, как и прикладные; потребляют ресурсы системы – оперативную и внешнюю память, процессорное время каналы ввода–вывода и НМД. Объем использования ресурса зависит от режима обработки (уровень мультипрограммирования число инициированных процессов системного ввода – вывод и т. д.), а также от параметров заданий (число шагов и описаний наборов данных, число обращений к наборам данных и т. д.). Путем измерений определяется загрузка ресурсов со стороны системных процессов. Потребность системных процессов в ресурса: обычно выражается в виде уравнений регрессии, аргументами которых являются параметры прикладных процессов. Способы описания загрузки ресурсов. Производительность системы непосредственно связана с загрузкой устройств. Загрузка устройства – время, в течение которого устройство занято работой, т. е. не простаивает. Если  ,... 1 K – длительность рабочих интервалов и Т – время работы системы, то загрузка устройств; на отрезке времени Т. 154  1 K   k  1 (7.10) Если номинальное быстродействие устройства равно V операций в секунду, то фактическое быстродействие с учетом простоев устройства из-за T k 1  V недогрузки составляет операций в секунду. Если - среднее число операций, выполняемых устройством при обработке одного задания, то производительность системы, исчисляемая в обрабатываемых за секунду заданиях, (7.11)   V / Следовательно, загрузка устройства характеризует производительность системы с точностью до коэффициента пропорциональности. При анализе производительности большую роль играет не только значение, но и структура загрузки – составляющие, из которых складывается значение р. Типичная структура представлена на рис. 7.9. В данном случае выделено три класса процессов (видов нагрузки): системные процессы, пакетная и оперативная обработка. Два последних относятся к прикладным процессам. Указанные классы процессов создают загрузку рс, рп и р0 соответственно.; Эти значения характеризуют время работы устройства, используемое для реализации соответствующих функций. Сумма    c n o 1 равна загрузке устройства, а значение     характеризует  простой. Простой обусловлен двумя факторами. Во-первых, для компенсации пульсаций нагрузки, связанной с оперативной обработкой данных, выделяется резерв, за счет чего обеспечивается приемлемое время ответа при пиковых нагрузках, во-вторых, возможна нехватка других ресурсов, из-за чего рассматриваемое устройство не может быть загружено полностью в рамках данной конфигурации, режима функционирования системы и текущей нагрузки. Структуру загрузки можно представить более детально, если, например, в составе системных процессов выделить ввод – вывод, пакетную обработку разделить на несколько классов задач и т.д. Структура загрузки всех ресурсов системы дает представление о распределении ресурсов между процессами и о резервах для увеличения производительности и улучшения качества обслуживания пользователей. Оперативная обработка o Пакетная обработка n Системные процессы c  1  Простой Рис. 7.9. Структура загрузки устройства 155 Сумма N P  n (7.12) называется загрузкой вычислительной системы. Если система функционирует в однопрограммном режиме, причем не простаивает из-за отсутствия нагрузки, Р = 1. Если Р>1, то производительность системы в этом режиме в Р раз выше, чем в однопрограммном. Таким образом, загрузка системы характеризует производительность системы по отношению к производительности однопрограммного режима. n1 Эффективный способ повышения производительности вычислительных систем – мультипрограммирование, позволяющее совместить во времени работу многих устройств, в результате чего увеличивается загрузка каждого устройства, а следовательно, загрузка и производительность системы. Для анализа степени совмещения, а также для выбора конфигурации и режима обработки используется профиль загрузки системы (диаграммы Ганта). Профиль загрузки системы строится следующим образом. Пусть =0, если устройство не загружено (простаивает), и системы будем характеризовать вектором которого – состояния устройств R1 ,..., RN я Sn Sn – состояние устройства: Sn =1, если устройство занято работой. Состояние S  S1 ,..., SN  , составляющие . Система, содержащая N устройств, может пребывать в 2 состояниях (0, ...,0,0), (0, ...,0,1), (0, ..., 1, 0), .... (1, ,..., 1). Первое из них соответствует простою и последнее – одновременной работе всех устройств. Состояние системы будем нумеровать числами, представляющими десятичные значения двоичных наборов N S1=(0,..., 0, 1), ... ...,SM=(1, ..., 1, 1), где M=2 -1. S1 ,..., SN  : S0=(0, ..., 0, 0), а) R 1 R 2 R 0r r r r r 3 1 2 3 r 4 r r t 5 6 r r t 7 б) R1 R2 R3 0r r r r r r 1 3 2 6 7 5 4 Рис. 7.10. Профиль загрузки системы Пусть за время Т система находилась в состояниях S 0 ,..., SM на протяжении интервалов  ,...,  M  соответственно. Значение rm m / T , m  0,..., M , характеризует долю времени, в 156 Sm течение которого система находилась в состоянии , а также вероятность этого состояния. Распределение вероятностей состояний системы наиболее наглядно представляется в графической форме, на пример для трех устройств (рис. 7,10,с). Каждому устройству длиной 1. Оси разделяются на отрезки длиной r0 ,..., r  R1 , R2 , R 3 соответствует ось , соответствующие интервалам времени, S 0 ,..., ST на протяжении которых система пребывает в состояниях . Отрезки rm выделяются жирной линией, если в состоянии Sm устройство Rn, n=1, 2, 3, загружено работой. Для устройства r4 ,..., r R1 такими являются отрезки  , а для устройства R2– отрезки r1, r3, r5 и r7. Полученная таким способом диаграмма называется профилем загрузки системы. Из профиля загрузки видна степень совмещения работы разных устройств во времени. В данном случае очевидно, что возможна совместная работа устройств R1 и R2 и одиночная работа устройства R2, а работа устройства R1 в основном совмещается с работой остальных устройств. Суммарная длина отрезков, выделенных 1 , 2 , 3 на осях R1, R2, R3, характеризует соответственно загрузку устройств. Наглядность профиля загрузки возрастает, если состояния Sm и соответствующие им отрезки rm размещать в порядке, определяемом кодом Грея. При этом уменьшается число разрывов между отрезками, выделенными жирными линиями. Так, трехразрядный код Грея порождает последовательность кодов 000, 001, 011, 010, 110, 111, 101, 100, которой соответствует r ,r ,r ,r ,r ,r ,r последовательность состояний 0 3 2 6 7 5 4 . Профиль загрузки системы, построенный на основе кода Грея и эквивалентный рассмотренному выше, изображен на рис. 7.10, б. Данный профиль содержит только один разрыв между отрезками занятости, в то время как предыдущий – четыре разрыва. N Профиль загрузки системы, отображающий каждое из 2 состояний, где N – число устройств, называется полным. Сложность полного профиля растет как показательная функция r0 ,..., rM числа устройств N. При N  5 число отрезков оказывается большим и профили теряют наглядность. Поэтому для отображения загрузки устройств часто используются неполные профили, в которых представляются лишь наиболее существенные состояния. Модели производительности. При проектировании, а также при совершенствовании конфигурации и режимов функционирования систем, находящихся в эксплуатации, возникает необходимость оценивать производительность различных вариантов. Для этого используются модели производительности вычислительных систем, позволяющие к тому же оценивать характеристики процессов и использования ресурсов. Характеристики необходимы для выявления факторов, влияющих на производительность, а также узких мест и недоиспользованных ресурсов, т. е. в конечном итоге – для выбора подходящего варианта. Имитационные модели производительности систем общего назначения состоят из трех основных блоков (рис. 7.11): рабочей нагрузки, планирования работ и выполнения задач. Модель рабочей нагрузки создает потоки заданий, формируемых пользователями на входе системы, и определяет параметры заданий. Модель настраивается на конкретный тип нагрузки набором параметров В1. Модель планирования работ воспроизводит обеспечение заданий ресурсами. Модель настраивается на конкретный режим обработки набором параметров В2 (число разделов или инициаторов, распределение классов задач между инициаторами и т. д.). Задания, обеспеченные на фазе планирования ресурсами, образуют задачи, обработка которых воспроизводится моделью выполнения задач. Набор параметров 157 В3характеризует структуру системы и быстродействие устройств, влияющие на продолжительность выполнения задач. Состояние процессов в общем случае влияет на состояние процессов планирования и порядок поступления задач в систему: данные о состоянии последующих фаз обработки передаются в предыдущие фазы (штриховая линия на рисунке). Для разных целей необходимы различные модели производительности, отличающиеся составом воспроизводимых параметров и точностью воспроизведения характеристик. Наиболее сложны модели, которые предназначены для выбора режима обработки, согласованного с рабочей нагрузкой и обеспечивающего заданное качество обслуживания – максимальную пропускную способность при заданных ограничениях на время ответа. В таких моделях приходится детально воспроизводить конфигурацию системы, состав рабочей нагрузки и параметры операционной системы, посредством которых она настраивается на заданный режим обработки. Точность оценки характеристик должна быть высокой. Повышаются требования к информативности: из модели должны выводиться подробные данные о профиле процессов и загрузке ресурсов, в том числе о структуре загрузки. B1 Модель рабочей нагрузки B2 Задания B3 Модель планирования работ Задачи Модель выполнения задач Выход Рис. 7.11. Состав модели производительности Для выбора конфигурации при совершенствовании эксплуатируемых систем и проектировании новых используются более простые модели, воспроизводящие рабочую нагрузку и режим об работки лишь в общих чертах. Основное внимание уделяется моделированию фазы выполнения задач, влияние которой на производительность наиболее велико. В этом случае оценка производительности с погрешностью 20–25 % вполне приемлема. Более того, при выборе конфигурации модель считается адекватной системе, если воспроизводит хотя бы тенденцию изменения производительности, т. е. прирост или снижение ее при изменении конфигурации системы. Состав процессов, воспроизводимых моделью, и точность их воспроизведения существенно зависит от априорных данных о моделируемой системе, которыми располагает исследователь. Модель рабочей нагрузки не может воспроизвести свойства нагрузки, о которых мы не имеем четкого представления. То же самое можно сказать и о воспроизводимости процессов управления обработкой и процессов выполнения задач. Состав данных о рабочей нагрузке и функционировании системы предопределяет воспроизводимые в модели закономерности и точность оценок. Недостаточность данных о моделируемой системе является более 158 существенным препятствием при построении моделей, чем ограниченные возможности методов моделирования и математических моделей. Модели производительности могут строиться как имитационные, аналитические или статистические. Из-за существенного различия этих классов моделей по точности и затратам на реализацию могут использоваться различные методы при построении элементов модели производительности: рабочей нагрузки, фаз планирования работ и выполнения задач. Такие модели производительности называются гибридными. В типичной гибридной модели рабочая нагрузка и планирование воспроизводятся имитационными, а выполнение задач – аналитическими методами. Методы и средства измерений и оценки функционирования Измерения являются источником наиболее достоверных данных о функционировании вычислительных систем и проводятся в следующих целях: 1) для учета выполненных работ: 2) для оценки функционирования; 3) для идентификации вычислительной системы – построения моделей. Измерения могут быть направлены на исследование как системы в целом, так и отдельных подсистем. Схема измерений представлена на рис. 7.12. Объектом измерений является вычислительная система, функционирующая, как правило, в рабочем режиме. К системе подключаются измерительные средства – мониторы, реагирующие на изменение состояний системы и измеряющие параметры состояний (моменты изменения состояний, продолжительность пребывания в них и др.). Измерительные данные поступают от мониторов в архив на протяжении заданного промежутка времени, накапливаются и затем обрабатываются. 159 Рабочая нагрузка Вычислительная система Измерительные средства Система оценки функционирования Архив Средства оценки Выходные документы Рис. 7.12. Организация измерений и оценки функционирования Функционирование вычислительной системы проявляется в изменении состояний процессов и ресурсов. Состояния отображаются в управляющих таблицах, которые формируются управляющими программами операционной системы, и в первую очередь супервизором. Состояния процессов и ресурсов изменяются в моменты выполнения специальных команд – обращения к супервизору и привилегированных, с помощью которых супервизор управляет процессами и ресурсами, а также при поступлении сигналов прерывания, извещающих супервизор о моментах окончания операций ввода – вывода, особых ситуациях в системе и сигналах на ее входах. Наряду с этим состояния устройств отображаются соответствующими электрическими сигналами. Мониторы строятся с использованием различных методов измерений и средств и классифицируются в зависимости от этого (рис 7.13). Трассировочный и выборочный методы измерений. Трассировочный метод измерений основан на регистрации событий, соответствующих моментам изменения состояний вычислительной системы. К таким событиям, в частности, относятся начало и конец ввода задания, шага задания, этапа процессорной обработки, обращения к внешней памяти и т. д. События регистрируются монитором в виде событийного набора данных T (рис. 7.14), состоящего из последовательности записей s1, s2, ..., соответствующих последовательности событий. В записи регистрируется момент возникновения события, имена процесса и ресурса, с которыми оно связано, и параметры события, – например емкость занимаемого или освобождаемого блока памяти, число передаваемых байтов данных и т. д. 160 Событийный набор данных, создаваемый монитором, содержит информацию J , J2 ,... о процессах 1 и одновременно о ресурсах. На рисунке изображена диаграмма использования устройства Ri , представляющая его состояния (0 – M j свободно и 1 – занято), и диаграмма использования памяти , характеризующая суммарную емкость, занятую процессами. Мониторы, измеряющие процесс функционирования системы трассировочным методом, называются трассировочными. Мониторы Выборочные Трассировочные Универсальные Программные Встроенные Специализи- Гибридные Автономные Рис. 7.13. Классификация мониторов 161 рованные Аппаратные Встроенные Автономные С жесткой логикой С программируемой логикой T S1 S2S3 ... J J1 4 J2 J 3 R i 1 t Mj t Рис. 7.14. Состав измерительных данных Выборочный метод измерений основан на регистрации состояний вычислительной системы в заданные моменты времени, как правило, через  t  n , n  0,1, 2..., промежутки длительностью . В моменты , выборочный монитор регистрирует состояние системы, фиксируя в соответствующих записях данные из управляющих таблиц, или значения электрических сигналов, характеризующих состояния устройств системы. Полученные данные позволяют с погрешностью не более 26 оценивать продолжительность пребывания процессов и ресурсов в различных состояниях и вероятности состояний. Последние определяются значениями pi  ni / n , где ni – число выборок, при которых было зарегистрировано состояние i, и n – длительность процесса измерений, определяемая числом выборок. Трассировочные мониторы измеряют отдельные процессы, например обработку одного задания, более точно, чем выборочные. Однако, если функционирование системы оценивается статистическими методами, выборочный монитор обеспечивает такую же точность, как и трассировочный, правда при большей продолжительности измерений. Основное достоинство выборочных мониторов – возможность измерений сколь угодно быстрых процессов при ограниченном быстродействии. Универсальные и специализированные мониторы. В зависимости от регистрируемого состава событий (состояний) мониторы подразделяются на универсальные и специализированные. Универсальный монитор регистрирует все события (состояния) или подавляющее большинство их, благодаря чему событийный набор данных достаточен для построения трасс процессов и использования ресурсов. Объем измерительных данных чрезвычайно велик и составляет 105–107 байт на один процесс. Поэтому в мониторы встраиваются средства настройки, 162 позволяющие регистрировать часть событий, соответствующих целым исследований. Универсальные мониторы используются в основном периодически для оценки, например, конкретных системных или прикладных процессов. Специализированный монитор регистрирует определенную часть событий (состояний), соответствующих конкретной цели измерений, что приводит к умеренному объему измерительных данных и снижает сложность их обработки. Специализированные мониторы широко применяются для учета выполненных работ и оценки загрузки ресурсов. Благодаря умеренному потоку данных специализированные мониторы используются как постоянно действующие измерительные средства для оценки функционирования систем в течение всего рабочего периода. Программные мониторы. Мониторы, реализованные в виде программы, выполняемой вычислительной системой, называются программными. Программные мониторы трассировочного типа реагируют на определенный класс событий за счет «перехвата» обращений к супервизору, сигналов пребывания и других сигналов, что приводит к передаче управления программным блокам монитора. Приняв управление, монитор выбирает из управляющих таблиц супервизора, программ управления заданиями и данными необходимую информацию, формирует запись, соответствующую событию, и помещает ее в заданную область памяти. Затем передает управление в точку, перед обращением к которой включается в работу в момент возникновения событий, соответствующих смене состояний. Программные мониторы выборочного типа включаются в работу по  таймеру, отмечающему интервалы времени , через которые производится опрос состояний вычислительной системы. Как и мониторы трассировочного типа, они получают необходимые данные о состоянии системы из управляющих таблиц и заносят сформированные данные в заданную область памяти. В зависимости от местоположения и от статуса программные мониторы подразделяются на встроенные и автономные (см. рис. 7.13). Встроенный программный монитор – совокупность программных блоков, входящих в состав управляющих программ операционной системы. Встроенный монитор создается совместно с операционной системой и является ее частью. За счет этого обращение к блокам монитора реализуется короткими цепочками команд и минимизируются затраты процессорного времени на выполнение измерительных процедур. Встроенные программные мониторы, как правило, имеют статус управляющих программ операционной системы. В операционные системы встраиваются специализированные измерительные средства для учета выполненных работ, контроля использования ресурсов и получения данных о сбоях и отказах системы. Такого рода измерительные средства дают минимальные сведения о функционировании вычислительной системы. 163 Для расширения измерительных возможностей используются автономные программные мониторы – измерительные программы, выполняемые системой в основном как прикладной процесс. Автономные мониторы загружаются в оперативную память как прикладные программы. Монитор программно связывается с супервизором, за счет чего в момент возникновения событий монитору передается управление. Монитор выбирает необходимые данные из управляющих таблиц, обрабатывает их, формирует запись в наборе измерительных данных и возвращает управление супервизору. Автономные мониторы, как правило, универсальны и позволяют регистрировать широкую номенклатуру событий при трассировочном и состояний и состояний при выборочном методе измерений. Специализированные автономные мониторы используются для контроля за функционированием отдельных подсистем вычислительной системы, например процессов ввода – вывода, работы внешних запоминающих устройств и др. В отличие от встроенных автономные мониторы используются для оценки функционирования системы лишь периодически. Основное достоинство программного способа построения мониторов – возможность получения сколь угодно детальной информации. Недостатки – зависимость программных мониторов от типа ЭВМ и операционной системы, а также влияние монитора на временные аспекты функционирования системы. Программные мониторы создаются для ЭВМ и операционных систем конкретных типов. Поэтому постановка на ЭВМ новой операционной системы или расширение операционной системы требует модификации измерительных средств. Поскольку программы монитора реализуются совместно с прикладными и системными программами, обработка заданий при измерениях растягивается во времени. Встроенные программные мониторы характеризуются незначительной ресурсоемкостью и порождаемая ими нагрузка на процессор невелика. Автономные программные мониторы имеют значительную ресурсоемкость, которая может составлять 10-15% процессорного времени. Выборочные мониторы позволяют снижать нагрузку на ресурсы за счет увеличения периода регистрации, однако при этом для получения представительного объема данных приходится увеличивать продолжительность измерений. Аппаратные мониторы. Аппаратный монитор – комплекс технических и, возможно, программных средств, предназначенных для измерения процессов функционирования вычислительных систем. Принцип измерений с помощью аппаратного монитора иллюстрируется рис. 7.15. Монитор получает информацию о состоянии системы посредством электрических сигналов, характеризующих состояние отдельных устройств и блоков. Для измерений выявляются точки подключения монитора к системе, в которых присутствуют сигналы, представляющие состояние устройств. В качестве точек подключения наиболее часто используются выходы триггеров и линии 164 интерфейсов. Точки подключения связываются с монитором при помощи зондов. Зонд состоит из усилителя, обеспечивающего передачу сигнала по длинной линии и имеющего высокое входное сопротивление, и линии, соединяющей усилитель с входом монитора. Сигналы с зондов обрабатываются селектором – схемой, формирующей на основе входных сигналов сигналы состояний (событий) обрабатываться монитором. s1 ,..., sM , которые должны s ,..., s M Сигналы 1 с селектора поступают в измерительный блок, в котором выполняются типичные измерительные процедуры: определяется время поступления сигнала, длительность промежутка между двумя событиями, отмечаемыми соответствующими сигналами, и число событий. Результаты измерений вводятся в микро-ЭВМ по сигналам прерывания или по таймеру. Микро-ЭВМ обрабатывает поступающие измерительные данные, записывает их на некоторый носитель (например, на магнитную ленту) и оперативные оценки функционирования отображает на терминале. Оперативные оценки используются для контроля за ходом процесса изменений и функционированием вычислительной системы. Зарегистрированные на носителе измерительные данные в дальнейшем подвергаются обработке с помощью ЭВМ монитора или другой ЭВМ, в том числе исследуемой. Вычислительная система Монитор S1 S 2 ... Селектор событий и состояний Измерительный блок ЭВМ Т SM Рис. 7.15. Измерения с помощью аппаратного монитора В зависимости от назначения и способа построения аппаратные мониторы подразделяются на автономные, встроенные, с жесткой и программируемой логикой (см. рис. 7.13). Автономный аппаратный монитор – переносное устройство для измерений различных вычислительных систем. Встроенный аппаратный монитор – устройство или блок, конструктивно встроенный в вычислительную систему. Аппаратные мониторы с жесткой логикой предназначены для получения фиксированного набора оценок функционирования, который вычисляется с помощью схемных средств или программ, хранимых в постоянной памяти. Мониторы с жесткой логикой наиболее широко используются для контроля за использованием ресурсов системы, оцениваемым с помощью коэффициентов загрузки. Аппаратные мониторы с программируемой логикой имеют в своем составе ЭВМ, путем программирования которой можно получать различные данные о 165 функционировании исследуемой системы. В таких мониторах возможна перестройка функций селектора событий и состояний и функций измерительного блока в зависимости от состава входных сигналов и цели измерений. Пропускная способность аппаратного монитора, определяемая затратами времени на измерение и регистрацию состояний, ограничивается быстродействием используемых в мониторе средств обработки и хранения измерительных данных. Если частота изменения состояний в системе не превосходит пропускной способности монитора, используется трассировочный метод измерений. В противном случае измерения проводятся по выборочному методу, который не налагает ограничений на скорость процессов в измеряемой системе. Основные достоинства аппаратных мониторов – системная независимость и независимость процесса функционирования системы от процедуры измерений. Системная независимость обусловлена тем, что аппаратные мониторы прямо не связаны с программными средствами, а поэтому могут использоваться для измерений функционирования любых ЭВМ, работающих в различных режимах под управлением любых операционных систем. Аппаратные мониторы не используют ресурсов исследуемой системы, и поэтому процесс измерений не влияет на функционирование системы. Недостаток аппаратного способа измерений – существенные ограничения на состав информации о функционировании системы, доступный для монитора. Монитор может получать только ту информацию, которая отображается в устройствах в виде сигналов, и ему недоступна информация, формируемая программами и отображаемая в памяти системы. Поэтому аппаратные мониторы не могут регистрировать атрибуты заданий (имена пользователей и программ), состояние очередей и другую информацию. Наиболее доступна для регистрации информация, связанная с использованием ресурсов: загрузка устройств, интенсивность обращения к устройствам, частота различных операций, интенсивность потоков данных, передаваемых через интерфейсы, и др. Гибридные мониторы. Для использования преимуществ программного и аппаратного способа измерений создаются гибридные мониторы, в которых используются программные средства для получения данных о состояниях системы и аппаратные средства для регистрации измерительных данных, поступающих от программных средств. В структурном отношении гибридный монитор состоит из программной и аппаратной части. Программная часть – совокупность программных блоков, фиксирующих изменение состояний прикладных и системных процессов. Программные блоки формируют данные для аппаратной части монитора, которые выводятся через соответствующий канал (интерфейс) ввода – вывода. Аппаратный монитор подключается к каналу и, получая данные от измерительных программ, обрабатывает их собственными средствами. За счет такой организации измерительных средств 166 обеспечивается доступ к информации, формируемой на программном уровне, и существенно снижаются затраты ресурсов системы на измерения, поскольку измерительные программы занимают небольшую область памяти и выполняются с незначительными затратами процессорного времени. Аппаратный монитор имеет статус периферийного устройства и работает в основном автономно, используя собственную память, процессор и средства ввода – вывода. Организация оценки функционирования. Оценка функционирования вычислительных систем сводится к обработке измерительных данных, зарегистрированных программными и аппаратными мониторами, с целью определения системных характеристик (производительность, время ответа и надежность), показателей использования ресурсов, характеристик рабочей нагрузки, а также с целью идентификации системы. Наиболее широко используется двухэтапный способ оценки функционирования (см. рис. 7.12), На первом этапе собираются и накапливаются в архиве измерительные данные. На втором этапе данные обрабатываются. Программные средства хранения, доступа к данным и оценки функционирования совместно с положенными в их основу концептуальными и математическими моделями функционирования и методами измерений образуют систему оценки функционирования (рис. 7.16). A Конвертор A B Конвертор B Z ... Конвертор Z ... Программа z Архив Средства выборки данных Временные наборы данных Программа a Программа b Рис. 7.16. Состав системы оценки функционирования Средства хранения создают наборы измерительных данных. Как правило, измерительные данные, формируемые монитором, представляют собой событийные наборы, в которых записи соответствуют отдельным событиям. С целью экономии памяти, используемой для хранения данных, 167 событийные наборы перед записью в архив преобразуются в наборы с объектной структурой, в которых записи соответствуют таким объектам, как задание. Объектные наборы, как и событийные, имеют последовательную организацию с упорядоченными во времени записями об объектах. Преобразование событийных наборов в объектные выполняется программами конвертирования, каждая из которых соответствует монитору определенного типа. Оценка функционирования системы в большинстве случаев производится на основе некоторого подмножества хранимых в архиве измерительных данных, относящихся к' определенным периодам работы системы или к определенным классам заданий. Селективная выборка данных из архива выполняется программными средствами выборки, которые затем формируют наборы данных об определенных классах объектов (временные интервалы, группы пользователей, продолжительность пребываний заданий в системе и др.). Сформированные наборы данных обрабатываются программами оценки системных характеристик, загрузки ресурсов, рабочей нагрузки и т. д. Результаты оценки представляются в виде выходных документов. Для оценки характеристик используются как специально разрабатываемые программы, так и пакеты программ общего применения, например программ статистического анализа. Модели рабочей и системной нагрузки Эффективность вычислительной системы существенно зависит от степени согласованности конфигурации и режима функционирования системы с нагрузкой, создаваемой прикладными задачами и операционной системой. Поэтому для решения задач системной и технической эксплуатации и при проектировании систем необходимо располагать сведениями о потребностях задач в ресурсах системы. Для получения этих сведений существует два способа: 1) анализ программ, в процессе которого оценивается потребность в памяти, процессорном времени и других ресурсах в расчете на одну реализацию каждой программы; 2) измерения процесса функционирования ЭВМ и обработки измерительных данных. Анализ программ с целью определения создаваемой ими нагрузки достаточно сложный процесс, требующий детальных сведений, во-первых, о структуре программы и. во-вторых, о распределении значений исходных величин, влияющих на порядок выполнения программы. Поэтому оценка нагрузки путем анализа программ производится только для специализированных систем, реализующих небольшое число относительно несложных программ. Оценка нагрузки на основе измерительных данных – наиболее широко используемый способ анализа нагрузки систем общего назначения и проблемно-ориентированных. При этом проводятся измерения процесса 168 функционирования ЭВМ в течение представительного промежутка времени, охватывающего выполнение I– 2 тыс. заданий. Полученные данные обрабатываются применительно к выбранной модели нагрузки, в результате чего оцениваются параметры нагрузки, воспроизводимые моделью. 0,9 0,99 5 ,2 1 1 1 3 1 4 , 1 2 6 1 8 1 0,1 9 K+1 , 7 5 0,2 7 1 5 0,8 Рис. 7.17. Граф программы Марковская модель программы. Для определения нагрузки, создаваемой программой в отношении устройств системы, используется марковская модель программы. Как правило, модель представляет собой граф, в вершинах которого, соответствующих операторам программы, отмечены объемы ресурсов, используемых при выполнении оператора, а на дугах – вероятностных переходов к следующим операторам. Пример графа программы приведен на рис. 7.17. Вершины графа обозначены номерами 0, 1, ..., К, К+1... Вершина 0 – начальная, а вершина К+1 – конечная. Если – устройства вычислительной системы, то каждой из вершин k=1, ..., К ставится в соответствие вектор  1k  ,..., Nk R ,..., R 1 N  , определяющий потребность оператора k в ресурсах устройств. Значения  1k ,..., Nk могут задаваться в виде объемных характеристик ресурса (число процессорных операций, вводимых и выводимых символов или записей, обращений к внешним запоминающим устройствам и т. д.) или в виде временных характеристик (время использования процессора, устройств ввода – вывода и других устройств системы). Если из оператора выходит единственная дуга, то переход по ней происходит с вероятностью i. Если из оператора k выходит несколько дуг k , l , k , m , ..., k, , то выбор направления перехода рассматривается как случайное p , p ,..., p событие, характеризуемое вероятностями исходов ki km k , p  p ...  p  1 причем ki km k . Вероятности определяются путем анализа операторов переходов и циклов, влияющих на пути вычислительного процесса. Так, если вероятность выполнения условия в операторе перехода равна 0,25, то двум путям развития вычислительного процесса соответствуют вероятности 0,25 и 0,75. Если цикл повторяется в среднем 100 раз, то вероятность выхода из цикла равна 0,01, а возврата в начало цикла – 0,99. На основе графа программы строится поглощающая марковская цепь, определяющая порядок выполнения программы. При этом операторам 1, ..., К. программы ставятся в соответствие невозвратные состояния s ,..., s 1 K марковской цепи, а конечной вершине графа (К+1) – поглощающее состояние s0. Расчетом характеристик поглощающей марковской цепи 169 процесса  определяется среднее число попаданий s ,..., s 1 K идисперсия числа попаданий 1k ,..., Nk  2 1  2 ,..., K .На n ,..., n 1 K всостояния основе полученных значений и заданных потребностей операторов в ресурсах определяются средние значения потребности программы в ресурсах: K n  nk nk , n 1,..., N k 1  ,...,  Значения 1 N характеризуют использование ресурсов в объемных или временных единицах при одной реализации программы. Если потребности операторов в ресурсах определены во временных единицах, то   значение  n характеризует среднее время выполнения программы. Марковская модель хорошо воспроизводит ресурсные свойства программ. Погрешности оценок связаны в первую очередь с ошибками в определении вероятностей переходов рij, обусловленными приближенностью априорных сведений о распределении значений исходных данных. Оценка рабочей нагрузки по измерительным данным. Рабочая нагрузка вычислительных систем общего назначения оценивается на основе измерений процесса функционирования. Для оценки рабочей нагрузки выбирается учетная единица работ: при пакетной обработке – задание, а при оперативной – взаимодействие пользователя с системой, называемое транзакцией. На основе измерительных данных, полученных с помощью монитора, формируется объектный набор данных, каждая запись которого характеризует одну учетную единицу работы, например отдельное задание. В зависимости от типа монитора состав данных в записи может быть различным. Так, запись может содержать трассу процесса выполнения работы либо менее детальные сведения, соответствующие некоторой модели процесса. Эти данные используются для оценки рабочей нагрузки – определения ее состава и параметров. Рис. 7.18. Модель центрального обслуживания 170 Для повышения достоверности оценки необходима обширная статистика – объемом 1–2 тыс. заданий. Чтобы описать рабочую нагрузку в компактной форме, следует, во-первых, процесс выполнения каждого задания характеризовать небольшим числом параметров и, во-вторых, множество заданий представлять ограниченным числом классов заданий, характеризуя свойства каждого класса среднестатистическим заданием. Для компактного описания процессов выполнения заданий наиболее широко используется модель центрального обслуживания. P x a x 2 3 x1 a 1 x2 a 3 x4 Рис. 7.19. Распределение параметра заданий для неоднородной нагрузки Модель центрального обслуживания. В модели центрального обслуживания процесс выполнения программы представляется поглощающей марковской цепью с множеством состояний s0 , s1 ,..., sN , где s0 – s1 ,..., sN – а невозвратные выполнения процесса на поглощающее состояние, соответствующие этапам R ,..., R состояния, устройствах (процессор и периферийные), причем состояние s1 отождествляется с этапом процессорной обработки. Матрица вероятностей переходов для марковской цепи 1 N s0 s0 1  s1 p0 P  s2 0 ... ... s  0 s1 s2 ... sN 0 0 ... 0   0 p2 ... pN  1 0 ... 0  ... ... ... ...   ... 0  (7.13) и распределение вероятностей начальных состояний π0= (0, 1, 0, .... 0). Граф марковской цепи представлен на рис. 7.18. Процесс начинается этапом процессорной обработки, которому соответствует состояние S1. По N 1 окончании этого этапа с вероятностью p ,..., p 2 N процесс переходит в состояние R ,..., R s ,..., s , соответствующие работе периферийных устройств 2 N , т. е. вводу – выводу. По окончании этапа ввода–вывода следует очередной этап процессорной обработки, затем переход к очередному этапу ввода – вывода. p Процесс продолжается до тех пор, пока с вероятностью 0 не перейдет в поглощающее состояние, в котором и заканчивается. 2 N 171 Параметры p , p ,..., p 2 N цепи (7.13) рассчитываются по среднему числу R ,..., R n ,..., n * обращений 2* N к периферийным устройствам 2 N (при одной реализации процесса) следующим образом. Из рис. 7.13 видно, что среднее число этапов процессорной обработки N n1  ni* 1 * i2 С учетом этого p0 1/ n1* ;pi  ni* / n1* ; i  2,..., N (7.14) Продолжительность пребывания процесса в состояниях s ,..., s 1 N характеризуется распределениями длительности этапов процессорной обработки p  p  ,..., p   1 и этапов ввода-вывода  2   N  или средней  , ...,  ,..., длительностью 1 N и средними квадратическими отклонениями оцениваемыми по результатам измерений. Когда на основе измерительных  ,..., 1 данных получены средние значения времени работы 1 N на устройствах p N , средняя длительность этапов процессорной обработки и ввода –   / n , i 1,..., N N , p ,..., 1 вывода i ii . Модель центрального обслуживания базируется на следующих допущениях: 1) процесс однороден во времени, т.е. этапы ввода – вывода, выполняемые разными устройствами, распределены равномерно во времени продолжительность этапов процесса; 2) процесс обладает марковским свойством, т.е. следующее состояние процесса зависит только от текущего состояния и не связано с предысторией процесса. Матрица вероятностей переходов (7.13) порождает случайный процесс со n ,..., n следующими характеристиками. Среднее число этапов 1 N , дисперсии D n1,..., D nN  в состоянии и распределения s ,..., s 1 N p n1  ,..., p nN числа попаданий n ,..., n 1 равны n1 1/ p0 ; ni  pi / p0 ; D n1   1  p0 / p0 p n1   p0 1 p0 ni 1 ;  p ni   p0  2 ; i  2,..., N ; D ni   pi  pi  p0 / p0 2 ni  0,1, 2,... ; pi 1 p0  1  172 (7.15) ni    1 p0 1 pi   , ; ni  0,1, 2,... N процесса и одноименные характеристики числа попаданий n процесса во все невозвратные состояния, т.е. числа этапов, составляющих процесс – n1  2  p0 / p0 ; p n   p0 1 p0 n D n   4 1  p0 / p0 n  3,5,7,... (7.16) , Таким образом, если модель центрального обслуживания применима для представления реальных процессов, то сведения о числе обращений n ,..., n R ,..., R к периферийным устройствам 2 N и длительности процессорной   ,..., обработки и ввода-вывода 2 достаточны для определения параметров марковского процесса. Более детально можно представить процессы, 2 N 1 N задаваясь дисперсиями длительности этапов p  ,..., p  D*  ,..., D*   1  N или их * распределениями *  1   N . Однородное и неоднородное представление рабочей нагрузки. Рабочую нагрузку, зафиксированную при измерении процесса функционирования системы в достаточном интервале времени, можно представить среднестатистическим заданием, параметры которого – среднее R ,..., R n * ,..., n * число обращений 2 N к периферийным устройствам 2 N и  ,..., длительностью процессорной обработки и ввода-вывода 1 N определяются как статистические средние на множестве выполненных заданий. Представление рабочей нагрузки заданием одного типа со среднестатистическими параметрами называется однородным. В подавляющем большинстве случаев рабочая нагрузка состоит из неоднородных заданий, существенно различающихся по объему используемых ресурсов – в десятки и даже сотни раз. Различия в ресурсоемкости учитываются при обработке данных путем разбиения заданий на классы, каждый из которых объединяет задания с примерно одинаковыми свойствами, но существенно отличными от свойств заданий других классов. Классификация заданий используется для создания мультипрограммных смесей, позволяющих равномерно загружать ресурсы и за счет этого повышать производительность системы, а также при назначении заданиям приоритетов, с помощью которых обеспечивается необходимое время ответа, например малое время для коротких заданий. Представление о неоднородности нагрузки дает распределение (гистограмма) параметров, таких, как суммарное время выполнения заданий, n R , i  2,..., N число обращений i* к периферийным устройствам i , и время  R использования заданием 1 устройства i . Обычно распределение параметров заданий имеет вид, изображенный на рис. 7.19. Представленное распределение является многомодальным, и его можно трактовать как смесь распределений, соответствующих различным классам заданий в рабочей 173 нагрузке. В данном случае можно предполагать существование четырех классов заданий со значениями параметра x, близкими к модам распределения Представление рабочей нагрузки в виде совокупности классов называется неоднородным. При нем класс характеризуется долей заданий, относящихся к этому классу, и среднестатистическими свойствами задания, определяющими потребность задания в ресурсах системы (память, процессорное время и объем ввода-вывода). Необходимость неоднородного представления рабочей нагрузки связана, во-первых, с организацией рациональных режимов обработки, т.е. с высокой производительностью системы и требуемым качеством обслуживания пользователей. Во-вторых, неоднородное представление позволяет более точно идентифицировать нагрузку, например, моделями центрального обслуживания и создавать более информативные модели производительности вычислительных систем. Классификация рабочей нагрузки. Наиболее существенный момент классификации – выбор признаков, в качестве которых при классификации рабочей нагрузки выступают параметры, характеризующие потребность заданий в ресурсах системы. Набор признаков должен быть достаточным для разделения на классы объектов с различными свойствами (существенными для классификации) и вместе с тем по возможности минимальным, чтобы упростить процесс классификации. При классификации заданий, выполняемых в режиме пакетной обработки, стремятся оптимизировать мультипрограммную смесь путем составления ее из заданий разных классов, создающих в совокупности одинаковую нагрузку на все ресурсы. Поэтому в качестве признаков классификации используются емкость занимаемой' оперативной памяти и интенсивность обращений к периферийным ч устройствам – в расчете на один миллион процессорных операций. При классификации заданий, выполняемых в режиме оперативной обработки, стремятся обеспечить в первую очередь, наилучшее время ответа для работ разной продолжительности и поэтому в качестве признаков применяется объем используемых ресурсов. Существенными для классификации являются параметры с большими коэффициентами вариации (отношением среднего квадратического отклонения к математическому ожиданию), а параметры, коэффициенты вариации которых, определенные на множестве классифицируемых объектов, близки к нулю, исключаются из состава признаков. Если несколько параметров коррелированы (парные коэффициента корреляции не меньше 0,7), в качестве признака классификации используется только один из них. Для классификации рабочей нагрузки наиболее широко используются три метода: 1) параметрическая классификация; 2) классификация по ядру нагрузки; 3) автоматическая классификация – кластер-анализ. Параметрическая классификация основана на так называемых решающих правилах, которые устанавливают области значений параметров, 174 x1 ,..., x4 . соответствующие каждому классу. следующие решающие правила: Например, могут использоваться Интенсивность ввода-вывода, Класс A B C D E Емкость памяти, кбайт с-1 x 128 x 128 128  x  512 128  x  512 x  512 z 10 z 10 z5 z5 Любая а) б) 1 1 8 2 7 8 3 7 4 6 2 3 4 6 5 5 Рис. 7.20. Диаграммы Кивиата для разных заданий x2 C3 C2 C1 x Ai 2i x1 x 1i Рис. 7.21. Классификация задач Согласно этим правилам задание с параметрами х=200 и z=12,5 будет отнесено к классу D. Решающие правила назначаются исходя из целевых требований к классификации и Ц состава ресурсов системы. Часто границы классов назначаются на основе многомодальных распределителей значений признаков. При этом в качестве границ принимаются средние точки между соседними модами распределения. Например для распределения на рис. 7.19 могут использоваться следующие правила распределения на классы: 175 x  a1 ; a1  x  a2 ; a2  x  a3 ; x  a3 Классификация по ядру нагрузки сводится к выделению подмножества заданий, создающих основную нагрузку на систему, например 90% нагрузки. Ядро нагрузки выделяется следующим образом. Для заданий одного наименования определяется число реализаций и средние показатели нагрузки, по которым вычисляется суммарная нагрузка, создаваемая всеми реализациями задания. Задания упорядочиваются по убыванию суммарной нагрузки на ресурсы системы. Первые Н заданий, создающие в сумме 90%ную нагрузку, рассматриваются в качестве ее ядра. Как правило, ядро состоит из небольшого числа заданий, обычно 10–20, и вполне обозримо. Путем анализа параметров заданий, входящих в ядро, назначаются классы каждый из которых состоит из небольшого числа заданий, обычно 1–3. Для выделенных классов устанавливаются граничные значения параметров, на основе которых строятся решающие правила для параметрической классификации заданий, не вошедших в ядро. Во многих случаях последние просто объединяются л в один дополнительный класс. При классификации удобно представлять свойства объектов в виде диаграммы Кивиата (рис. 7.20). Диаграмма состоит из совокупности осей 1, 2, 3,..., на которых в определенном масштабе в направлении от центра отмечаются значения параметров объекта. Затем точки на осях соединяются прямыми линиями, образующими некоторую фигуру (образ объект а). (Использование диаграмм Кивиата основано на способности человека распознавать сходство и различие геометрических фигур). Если диаграммы, соответствующие заданиям, имеют сходную: конфигурацию, задания можно объединить в один класс. Различие конфигураций свидетельствует о несходстве заданий и является основанием для отнесения заданий к разным классам. Методы автоматической классификации – кластер-анализа: – основаны на использовании вычислительных процедур, оценивающих расстояния между классифицируемыми объектами в объединяющих близлежащие объекты в компактные множества, называемые кластерами (классами). При классификации объектов по п признакам каждый объект рассматривается как точка в n-мерном пространстве с координатами, oопределяемыми признаками классификации. На рис. 7.21 приведена типичная картина образования кластеров. Здесь х1 и х2 – значения признаков классификации, Аi – объект с признаками (х1i, x2i) и С1, C2, С3 – кластеры, образованные подмножествами классифицируемых объектов. Число кластеров, выявляемых в процессе автоматической классификации, зависит от числа признаков классификации, их дисперсии и свойств объектов. Чем больше число признаков и их дисперсии, тем больше вероятность существования значительного числа кластеров. В силу автоматизма, присущего всем методам кластер-анализа, классификация ведется вне прямой связи с ее целями. Процесс 176 классификации управляется путем выбора признаков, их масштабирования и задания значений управляющих параметров, используемых процедурами классификации для оценки компактности подмножеств. При классификации десятков или нескольких сотен объектов затраты машинного времени умеренны, а большего числа объектов – весьма значительны. Классификация позволяет представить множество заданий, составляющих рабочую нагрузку, небольшим числом классов заданий, обычно 3–10 классами. 3а счет этого, описание рабочей нагрузки становится весьма компактным и в то же время сохраняется возможность дифференцировать системные характеристики, характеристики процессов и использования ресурсов по отношению к разнотипным заданиям, связанным с различными группами пользователей. Системная нагрузка. Выполнение прикладных процессов воздерживается системными процессами. Нагрузка, создаваемая системными процессами, оказывается достаточно большой и составляет десятки процентов для процессора и внешней памяти. Поэтому системная нагрузка учитывается при анализе производительности систем, а также в моделях производительности, используемых для выбора конфигурации и режимов функционирования. В отличие от рабочей нагрузки, для которой потребность в ресурсах связывается с отдельными заданиями, системная нагрузка представляется как единое целое, относящееся ко всем выполняемым работам. Системная нагрузка регистрируется мониторами как одна из системных характеристик, оцениваемая, например, коэффициентом загрузки процессора со стороны системных процессов. Для определения объема используемых ресурсов необходимо системную нагрузку распределить между всеми заданиями. Аналогично для прогнозирования системной нагрузки при изменении рабочей нагрузки необходимо установить зависимость между ними. Поэтому системную нагрузку стремятся выразить как функцию параметров рабочей нагрузки. Наиболее широко используется представление системной нагрузки в виде уравнений регрессии. В качестве параметров нагрузки используются емкость памяти, выделяемая для размещения операционный системы, число процессорных операций или коэффициент загрузки процессора системными процессами и аналогичные параметры каналов ввода–вывода. Системная загрузка процессора и каналов ввода–вывода наиболее существенно зависит от следующих параметров заданий: числа шагов и числа операторов языка управления, указанных в задании. При измерениях регистрируются параметры системной нагрузки и одновременно указанные параметры заданий. Затем измерительные данные обрабатываются с помощью программ регрессионного анализа с целью получения уравнений регрессии. 177
«Этапы развития и поколения вычислительных машин. Модели памяти. Организация подсистем памяти. Grid системы» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 462 лекции
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot