Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
Областное бюджетное образовательное учреждение среднего профессионального образования «Железногорский горно-металлургический колледж» является некомме...полностью>>
'Документ'
ЛПУ амбулаторной и стационарной сети: заместители главных врачей по лечебной работе, врачи-терапевты, врачи по спортивной медицине, врачи по лечебной ...полностью>>
'Документ'
БюджетМы не берем стоимость проекта с потолка в зависимости от финансовых возможностей клиента. Цена зависит от времени работы специалистов студии. До...полностью>>
'Документ'
Основанием для установления указанной в заявлении квалификационной категории считаю следующие результаты работы за последние 5 лет (указываются в соот...полностью>>

Главная > Документ

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

1

Смотреть полностью

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

Вычислительная машина (ВМ) – комплекс технических и программных средств для автоматизации, подготовки и решения задач пользователя.

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

Архитектура ЭВМ – логическое построение ВМ, т.е. т.о. какой машина представляется программисту.

Уровни детализации архитектуры компьютера:

  1. Уровень «чёрного ящика» – это когда ЭВМ представляется как устройство, способное хранить и обрабатывать информацию, а так же обмениваться данными со внешним миром

Выход

  1. Уровень общей архитектуры. ЭВМ представляется в виде четырёх составляющих:

  • центрального процессора

  • основной памяти

  • устройства ввода/вывода

  • системной шины

  1. Уровень архитектуры ЦП. Детализируется каждое из устройств второго уровня.

  • Арифметико-логическое устройство

  • Блок обработки чисел в формате с плавающей запятой

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

  • Устройство управления, обеспечивающее совместное функционирование

  • шины

  1. Уровень архитектуры устройства управления. Детализируются элементы третьего уровня. Например, УУ:

  • логика программной последовательности

  • регистры и дешифраторы

  • логика формирования управления

Выделяют 6 уровней иерархии:

5

Язык высокого уровня

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

4

Уровень ассемблера

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

3

Уровень операционной системы

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

2

Уровень архитектуры набора команд

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

или непосредственное выполнение

1

Микроархитектурный уровень

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

0

Цифровой логический уровень

На самом нижнем уровне, на цифровом логическом уровне, объекты называются вентилями. Хотя вентили состоят из аналоговых компонентов, таких как транзисторы, они могут быть точно смоделированы как цифровые устройства. У каждого вентиля есть один или несколько цифровых входов (сигналов, представляющих 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1. Биты памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры. Каждый регистр может содержать одно двоичное число до определенного предела. Из вентилей также может состоять сам компьютер.

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

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

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

Между уровнями 3 и 4 есть существенная разница. Нижние три уровня задуманы не для того, чтобы с ними работал обычный программист. Они изначально ориентированы на интерпретаторы и трансляторы, поддерживающие более высокие уровни. Эти трансляторы и интерпретаторы составляются так называемыми системными программистами, которые специализируются на разработке новых виртуальных машин. Уровни с четвертого и выше предназначены для прикладных программистов, решающих конкретные задачи. Еще одно изменение, появившееся на уровне 4, — механизм поддержки более высоких уровней. Уровни 2 и 3 обычно интерпретируются, а уровни 4, 5 и выше обычно, хотя и не всегда, транслируются. Другое различие между уровнями 1, 2, 3 и уровнями 4, 5 и выше — особенность языка. Машинные языки уровней 1, 2 и 3 — цифровые. Программы, написанные на этих языках, состоят из длинных рядов цифр, которые воспринимаются компьютерами, но малопонятны для людей. Начиная с уровня 4, языки содержат слова и сокращения, понятные человеку. Уровень 4 представляет собой символическую форму одного из языков более низкого уровня. На этом уровне можно писать программы в приемлемой для человека форме. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей машиной. Программа, которая выполняет трансляцию, называется ассемблером. Уровень 5 обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня. Существуют сотни языков высокого уровня. Наиболее известные среди них — С, C++, Java, LISP и Prolog. Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, называются компиляторами. Отметим, что иногда также имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоминающий ISA и называемый байт-кодом Java, который затем интерпретируется. В некоторых случаях уровень 5 состоит из интерпретатора для конкретной прикладной области, например символической логики. Он предусматривает данные и операции для решения задач в этой области, выраженные при помощи специальной терминологии. Таким образом, компьютер проектируется как иерархическая структура уровней, которые надстраиваются друг над другом. Каждый уровень представляет собой определенную абстракцию различных объектов и операций. Рассматривая компьютер подобным образом, мы можем не принимать во внимание ненужные нам детали и, таким образом, сделать сложный предмет более простым для понимания.

Историческое развитие архитектуры ЭВМ

Нулевое поколение – механические компьютеры (1642-1945)

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

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

Еще через 150 лет Бэббидж, разработал и сконструировал разностную машину. Эта механическая машина, могла лишь складывать и вычитать, подсчитывала таблицы чисел для морской навигации. В машину был заложен только один алгоритм. У этой машины был довольно интересный способ вывода информации: результаты выдавливались стальным штампом на медной дощечке, что предвосхитило более поздние средства ввода-вывода — перфокарты и компакт-диски.

Вскоре Бэббидж разработал аналитическую машину. У неё было 4 компонента: запоминающее устройство (память), вычислительное устройство, устройство ввода (для считывания перфокарт), устройство вывода (перфоратор и печатающее устройство). Память состояла из 1000 слов по 50 десятичных разрядов; каждое из слов содержало переменные и результаты. Вычислительное устройство принимало операнды из памяти, затем выполняло операции сложения, вычитания, умножения или деления и возвращало полученный результат обратно в память. Как и разностная машина, это устройство было механическим.

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

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

язык программирования — Ada.

Говард Айкен в Гарварде упорно проектировал ручные счетные машины в рамках докторской диссертации. Работа над первым компьютером Айкена «Mark I» была закончена в 1944 го- году. Компьютер имел 72 слова по 23 десятичных разряда каждое и мог выполнить любую команду за 6 секунд. В устройствах ввода-вывода использовалась перфолента. К тому времени, как Айкен закончил работу над компьютером «Mark II», релейные компьютеры уже устарели. Началась эра электроники.

Первое поколение – электронные лампы (1945-1955)

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

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

Приблизительно в это же время в МТИ был создан компьютер Whirlwind-1. Особенности компьютера: слова небольшой длины (16 бит). Он является прототипом мини-компьютера. В 1953 году IBM создала свой первый компьютер IBM-704

Второе поколение – транзисторы (1955-1065)

Транзисторы были изобретены в лаборатории Bell Бардином, Браттейном и Шокли, за что в 1956 году им была присуждена Нобелевская премия. Первый компьютер на транзисторах был построен в МТИ (Массачусетский технологический институт) и назывался ТХ-1, а затем ТХ-2. Практического значения эти компьютеры не имели, но один из разработчиков, основал фирму DEC и произвели первую серийную машину на транзисторах PDP-1 (1961 г.). Эта была самая быстродействующая машина того времени. Время цикла – 5 микросекунд. Это в два раза меньше, чем у IBM-7090 (транзисторного аналога IBM-709). Стоил PDP-1 $120 000, а IBM – миллионы. Компания DEC продала десятки компьютеров PDP и так возникла компьютерная промышленность. Один из компьютеров был отдан в МТИ, где был создан первый графический дисплей, а студенты написали первую компьютерную игру – «Война миров». Затем была создана машина PDP-8, которая была 12-разрядной, и главное нововведение – одна шина. Шина – это набор параллельно соединенных проводов для связи компонентов компьютера. Структура компьютера с общей шиной приведена на рисунке. Такая структура с тех пор используется во всех компьютерах.

В 1964 году компания CDC выпустила машину CDC-6600, которая имела производительность на порядок выше, чем IBM-7090. Высокая производительность обеспечивалась за счет того, что внутри центрального процессора находилась машина с высокой степенью параллелизма. Разработчиком этого компьютера был Сеймур Крей. Он посвятил свою жизнь созданию мощных компьютеров, которые сейчас называются суперкомпьютерами (это компьютеры CDC-6600, CDC-7600, Crey-1). Разработчики упомянутых выше компьютеров занимались в первую очередь аппаратным обеспечением, стремясь повысить его надежность, быстродействие и снизить стоимость. Следует отметить еще один проект – Burroughs B50000. Разработчики создавали компьютер с намерением программировать ее на языке Algol 60 (предшественник языка Pascal), сконструировав аппаратное обеспечение так, что бы упростить работу компилятору. Так появилась идея, что программное обеспечение тоже надо учитывать при разработке компьютера.

Третье поколение – интегральные схемы (1965-1980)

Компьютеры на интегральных схемах были меньшего размера, работали быстрее, стоили дешевле. К 1964 г. Фирма IBM лидировала на рынке, но выпускаемые ей компьютеры были программно несовместимы. Компания сделала решительный шаг. Она выпустила серию компьютеров на транзисторах System 360, которые были предназначены как для научных, так и для коммерческих расчетов. System 360 содержала много нововведений. Это было семейство компьютеров с одним и тем де ассемблером. Каждая новая модель была больше и мощнее предыдущей. Идея создания семейств компьютеров вскоре стала популярной и в течении нескольких лет большинство компьютерных компаний выпустило целые серии сходных машин. Еще одно нововведение – мультипрограммирование. В памяти располагалось несколько программ и пока одна программа ждала окончания ввода-вывода, другая выполнялась.

Мир микрокомпьютеров сделал также большой шаг вперед вместе с производством компьютеров PDP-11. Во многих отношениях PDP-11 была младшим братом IBM 360 по организации компьютера и наличию в семействе машин разной стоимости и производительности.

Четвертое поколение – сверхбольшие интегральные схемы (1980-?)

Появление СБИС в 80-х годах позволило помещать на одну плату сначала десятки тысяч, а затем и миллионы транзисторов. К 80-м годам цены на компьютеры упали на столько, что приобретать компьютеры смогли не только организации, но и отдельные люди. Началась эра персональных компьютеров. Первые персональные компьютеры продавались в виде комплектов, как правило, на базе Intel 8080. Программное обеспечение пользователь писал сам. Затем появилась операционная система CP/M. Эта ОС помещалась на дискету, включала систему управления файлами и интерпретатор для выполнения пользовательских команд, которые набирались на клавиатуре. Компания IBM, лидирующая в то время на рынке компьютеров, тоже решила заняться производством персоналок. Компьютер IBM PC появился в 1981 году и стал самым покупаемым в истории.

Первая версия IBM PC была оснащена операционной системой MS-DOS, которую выпускала крошечная компания Microsoft. Эта компания разработала также собственную ОС Windows, которая работала на базе MS-DOS.

Пятое поколение – невидимые компьютеры

Пятое поколение компьютеров материализовалось весьма неожиданном виде — компьютеры начали стремительно уменьшаться. Модель Apple Newton, появившаяся в 1993 году, наглядно доказала, что компьютер можно уместить в корпусе размером с кассетный плеер. Рукописный ввод, реализованный в Newton, казалось бы, усложнил дело, но впоследствии пользовательский интерфейс подобных машин, которые теперь называются персональными электронными секретарями (Personal Digital Assistants, PDA), или просто карманными компьютерами, был усовершенствован и приобрел широкую популярность. Многие карманные компьютеры сегодня не менее мощны, чем обычные ПК двух-трехлетней давности. Но даже карманные компьютеры не стали по-настоящему революционной разработкой. Значительно большее значение придается так называемым «невидимым» компьютерам — тем, что встраиваются в бытовую технику, часы, банковские карточки и огромное количество других устройств. Процессоры этого типа предусматривают широкие функциональные возможности и не менее широкий спектр вариантов применения за весьма умеренную цену. Вопрос о том, можно ли свести эти микросхемы в одно полноценное поколение (а существуют они с 1970-х годов), остается дискуссионным. Факт в том, что они на порядок расширяют возможности бытовых и других устройств. Уже сейчас влияние невидимых компьютеров на развитие мировой промышленности очень велико, и с годами оно будет возрастать.

Нулевое поколение (1492-1945)

Для полноты картины упомянем два события, произошедшие до нашей эры: пер­вые счеты — абак, изобретенные в древнем Вавилоне за 3000 лет до н. э., и их более «современный» вариант с косточками на проволоке, появившийся в Китае при­мерно за 500 лет так же до н. э.

«Механическая» эра (нулевое поколение) в эволюции ВТ связана с механичес­кими, а позже — электромеханическими вычислительными устройствами. Основ­ным элементом механических устройств было зубчатое колесо. Начиная с XX века роль базового элемента переходит к электромеханическому реле.

Первое поколение (1937-1953)

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

Второе поколение(1954-1962)

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

Третье поколение(1963-1972)

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

Четвертое поколение (1972-1984)

Отсчет четвертого поколения обычно ведут с перехода на интегральные микро­схемы большой (large-scale integration, LSI) и сверхбольшой (very large-scale inte­gration, VLSI) степени интеграции. К первым относят схемы, содержащие около 1000 транзисторов на кристалле, в то время как число транзисторов на одном кри­сталле VLSI имеет порядок 100 000. При таких уровнях интеграции стало возмож­ным уместить в одну микросхему не только центральный процессор, но и вычис­лительную машину (ЦП, основную память и систему ввода/вывода).

Пятое поколение(1984-1990)

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

Шестое поколение (1990-)

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

Процессоры и шины

Организация шин

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

•   центральным процессором и памятью;

•   центральным процессором и модулями ввода/вывода;

•   памятью и модулями ввода/вывода.

Информационные потоки, характерные для основных устройств ВМ, показаны на рис


Рис - Информационные потоки в вычислительной машине

Шина – это совокупность трактов объединяющих между собой основные устройства ВМ (ЦП, память, УВВ). Шина обеспечивает структуру взаимосвязи ВМ.

С развитием вычислительной техники менялась и структура взаимосвязей ус­тройств ВМ. На начальной стадии преобладали непосредственные связи между взаимодействующими устройствами ВМ.

Рис. - Эволюция структур взаимосвязей (ЦП — центральный процессор, ПАМ — модуль основной памяти, МВВ — модуль ввода/вывода)

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

Основные пути повышения быстродействия ЭВМ:

1. Сумматоры (параллельные)

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

Таблица истинности для сложения одноразрядных двоичных кодов.

S реализовать через ИЛИ нельзя, т.к. существует отличие в четвертой строке.
Результат сложения не может быть представлен двоичным кодом, разрядность которого равна разряду.

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

2. Периферийные процессоры и шины

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

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

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

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

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

3.Многопрограммный режим работы

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

• независимости подготовки заданий пользователями;

• разделения ресурсов ЭВМ в пространстве и времени;

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

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

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

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

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

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

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

4.Внедрение в процессор нескольких АЛУ

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

В зависимости от кодов, используемых для представления операндов, АЛУ делятся на:

1)Последовательные

2)Параллельные.

В последовательных АЛУ операнды представляются в последовательном коде, а операции производятся последовательно во времени над их отдельными разрядами.

В параллельных АЛУ операнды представлены параллельными кодами и операции совершаются одновременно над всеми разрядами операндов.

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

По способу представления чисел различают АЛУ:

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

• для чисел с плавающей точкой;

• для десятичных чисел.

По характеру использования элементов и узлов АЛУ делятся на:

- блочные;

- многофункциональные.

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

Система обработки данных (СОД) – совокупность технических средств ПО, предназначенных для обработки данных.

По способу построения СОД выделяют:

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

2.Вычислительные комплексы. Начиная с 60-х годов для повышения надежности и производительности СОД, несколько ЭВМ связывались между собой, образуя многомашинный вычислительный комплекс.

В ранних многомашинных комплексах связь между ЭВМ обеспечивалась через общие внешние запоминающие устройства – накопители на магнитных дисках (НМД) или магнитных лентах (НМЛ) (рис, а), т.е. за счет доступа к общим наборам данных. Такая связь называется косвенной и оказывается эффективной только в том случае, когда ЭВМ взаимодействуют достаточно редко, например, при отказе одной из ЭВМ или в моменты начала и окончания обработки данных. Более оперативное взаимодействие ЭВМ достигается за счет прямой связи через адаптер, обеспечивающий обмен данными между каналами ввода – вывода ЧКВВ) двух ЭВМ (рис. 1.1, б) и передачу сигналов прерывания. За счет этого создаются хорошие условия для координации процессов обработки данных и повышается оперативность обмена данными, что позволяет вести параллельно процессы обработки и существенно увеличивать производительность СОД. В настоящее время многомашинные вычислительные комплексы широко используются для повышения надежности и производительности СОД.

Рис - Многомашинный вычислительный комплекс с косвенной (а) и прямой (б) связью между ЭВМ

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

Рис. - Многопроцессорный вычислительный комплекс

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

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

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

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

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

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

Рис - Система телеобработки данных

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

Рис - Вычислительная сеть

В конце 60-х годов был предложен способ построения вычислительных сетей, объединяющих ЭВМ (вычислительные комплексы) с помощью базовой сети передачи данных. Структура вычислительной сети в общих чертах представлена на рис. 1.4. Ядром является базовая сеть передачи данных (СПД), которая состоит из каналов и узлов связи (УС). Узлы связи принимают данные и передают их в направлении, обеспечивающем доставку данных абоненту. ЭВМ подключаются к узлам базовой сети передачи данных, чем обеспечивается возможность обмена данными между любыми парами ЭВМ. Совокупность ЭВМ, объединенных сетью передачи данных, образует сеть ЭВМ. К ЭВМ непосредственно или с помощью каналов связи подключаются терминалы, через которые пользователи взаимодействуют с сетью. Совокупность терминалов и средств связи, используемых для подключения терминалов к ЭВМ, образует терминальную сеть. Таким образом, вычислительная сеть представляет собой композицию базовой сети передачи данных, сети ЭВМ и терминальной сети. Такая вычислительная сеть называется глобальной или распределенной (в дальнейшем – «вычислительная сеть», в отличие от локальной). Вычислительные сети используются для объединения ЭВМ, находящихся на значительном расстоянии друг от друга в пределах региона, страны или континента.

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

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

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

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

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

Микропрограммный уровень организации ЭВМ.

Принцип микропрограммного управления.

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

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

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

1) Любая машинная команда рассматривается, как некоторое сложное действие, которое состоит из последовательности элементарных действий над словами информации – микроопераций.

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

3) Процесс выполнения машиной команды описывается в виде некоторого алгоритма в терминах микроопераций и логических условий. Описание информационных сигналов – микропрограмма.

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

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

В соответствии с выполняемыми МО операционные элементы процессора разделяются на:

  • шины,

  • регистры,

  • счетчики,

  • сумматоры (вычитатели),

  • логические устройства,

  • сдвигатели,

  • преобразователи и формирователи кодов,

  • комбинированные операционные элементы.

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

Передача информации происходит по сигналу, который имитирует передачу.

Ширина шины – количество одновременно передаваемых данных.

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

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

3Счетчики.

Обеспечивает МО счета (прямого или обратного) Сч:=Сч±const const = 2k – степень двойки. Суммирующие счетчики (прямое) Вычитающие счетчики (обратное)

Реверсирующие счетчики (то и другое направление)

Счетчики строятся с использованием запоминающих элементов (регистров). Кроме МО

счета счетчика можно реализовать все МО, которые характерны для регистров, то есть

прием, выдачу, сдвиг кода, хранение.

4Сумматоры.

Операционный элемент, который реализует МО:

1) С:=А+В

2) С:=С+В – рекуррентная схема.

Различают комбинационные и накапливающие сумматоры, которые реализуют соответственно (1) и (2).

Комбинационный сумматор.

На самом деле сумматор обрабатывает три операнда: А, В – слова одной разрядности, а третий операнд однобитовый. CY.C(n:0) = A(n:0) + B(n:0)+C0

Обычно используют комбинационный сумматор, т.к. написание упрощенное.

Комбинационный сумматор – техническое устройство (схема), в которой результат

присутствует на выходе до тех пор, пока на входе присутствуют входные сигналы.

Накапливающие сумматоры строятся на основе регистров, поэтому результат

суммирования может быть считан из соответствующего выхода регистра в любой момент

времени до новой МО.

Также может быть реализован с помощью комбинационного сумматора.

5Преобразователи кодов.

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

Если m = 2n+1 –1, то такой дешифратор называется полным.

В противном случае – неполным. Эти операционные элементы используются для

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

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

шифратора.

Более сложные преобразования (из бинарного кода в десятичный) требуют более сложных преобразователей.

6Вычисление значений логических условий.

Эти функции операционным элементом в виде булевой функции.

φ1(s1,s2,…,sn) si – некоторые слова, поля слов или отдельные биты слов.

Функция вычисления комбинационной схемой:

Наиболее распространенными схемами для вычисления логических условий являются схемы, которые вычисляют отношение 2-х слов А и В: φ1(А,В)

7Комбинированные операционные элементы.

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

CISC и RISC архитектуры

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

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

Двумя основными архитектурами набора команд, используемыми компьютерной промышленностью на современном этапе развития вычислительной техники являются архитектуры CISC и RISC.

Лидером в разработке микропроцессоров c полным набором команд (CISC - Complete Instruction Set Computer) считается компания Intel со своей серией x86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокомпьютеров.

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

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

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

  • большое количество методов адресации;

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

  • преобладание двухадресного формата команд;

  • наличие команд обработки типа регистр-память.

Основой архитектуры современных рабочих станций и серверов является архитектура компьютера с сокращенным набором команд (RISC - Reduced Instruction Set Computer). Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин.

Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д.Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. В 1981году Дж.Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки.

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

Среди других особенностей RISC-архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC-процессорах реализуются 32 или большее число регистров по сравнению с 8 - 16 регистрами в CISC-архитектурах), что позволяет большему объему данных храниться в регистрах на процессорном кристалле большее время и упрощает работу компилятора по распределению регистров под переменные. Для обработки, как правило, используются трехадресные команды, что помимо упрощения дешифрации дает возможность сохранять большее число переменных в регистрах без их последующей перезагрузки.

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

Следует отметить, что в последних разработках компании Intel (имеется в виду Pentium P54C и процессор следующего поколения P6), а также ее последователей-конкурентов (AMD R5, Cyrix M1, NexGen Nx586 и др.) широко используются идеи, реализованные в RISC-микропроцессорах, так что многие различия между CISC и RISC стираются. Однако сложность архитектуры и системы команд x86 остается и является главным фактором, ограничивающим производительность процессоров на ее основе.

Микропроцессоры типа CISC

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

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

Организация первых моделей процессоров - i8086/8088 - была направлена, в частности, на сокращение объёма программ, критичного для систем того времени, отличавшихся малой оперативной памятью. Расширение спектра операций, реализуемых системой команд, позволило уменьшить размер программ, а также трудоёмкость их написания и отладки. Однако увеличение числа команд повысило трудоёмкость разработки их топологических и микропрограммных реализаций. Последнее проявилось в удлинении сроков разработки CISC-процессоров, а также в проявлении различных ошибок в их работе. Кроме того, нерегулярность потока команд ограничила развитие топологии временным параллелизмом обработки инструкций на конвейере “выборка команды- дешифрация команды- выборка данных- вычисление- запись результата”.

Эти недостатки обусловили необходимость разработки альтернативной архитектуры, нацеленной, прежде всего, на снижение нерегулярности потока команд уменьшением их общего количества. Это было реализовано в RISC-процессорах, название которых означает “чипы с сокращённой системой команд” (Reduced Instruction Set Computer).

Микропроцессоры типа RISC

Микропроцессоры с архитектурой RISC ( Reduced Instruction Set Computers ) используют сравнительно небольшой (сокращённый ) набор наиболее употребимых команд, определённый в результате статистического анализа большого числа программ для основных областей применения CISC (Complex Instruction Set Computer )- процессоров исходной архитектуры. Все команды работают с операндами и имеют одинаковый формат. Обращение к памяти выполняется с помощью специальных команд загрузки регистра и записи. Простота структуры и небольшой набор команд позволяет реализовать полностью их аппаратное выполнение и эффективный конвейер при небольшом объеме оборудования. Арифметику RISC - процессоров отличает высокая степень дробления конвейера. Этот прием позволяет увеличить тактовую частоту ( значит, и производительность ) компьютера; чем более элементарные действия выполняются в каждой фазе работы конвейера, тем выше частота его работы. RISC - процессоры с самого начала ориентированны на реализацию всех возможностей ускорения арифметических операций, поэтому их конвейеры обладают значительно более высоким быстродействием, чем в CISC - процессорах. Поэтому RISC - процессоры в 2 - 4 раза быстрее имеющих ту же тактовую частоту CISC - процессоров с обычной системой команд и высокопроизводительней, несмотря на больший объем программ, на ( 30 % ). Дейв Паттерсон и Карло Секуин сформулировали 4 основных принципа RISC :

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

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

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

4. Состав системы команд должен быть “ удобен “ для компиляции операторов языков высокого уровня

Скалярные и векторные процессоры

SISD – Single Instruction, Single Data – скалярный процессор обрабатывающий один элемент данных за одну инструкцию. Типичными элементами данных могут быть целые числа и числа с плавающей запятой.

SIMD – single instruction, multiple data – векторный процессор выполнения команды, в котором операндами могут быть упорядоченные массивы данных (векторы).

Векторные процессоры делятся на:

Векторные расширения SSE (Streaming SIMD Extensions, потоковое SIMD-расширение процессора). Этот набор инструкций был разработан фирмой Intel и применён в Pentium 3. В этой архитектуре процессоры имеют восемь 120-битовых регистров. Набор инструкций позволяет работать со скалярными и упакованными типами данных. Их преимущество достигается когда необходимо произвести одну и ту же последовательность действий над разными данными. Тогда блок SSE осуществляет распараллеливание вычислительного процесса между данными.

Конвейер

Главным препятствием высокой скорости выполнения команд является необходимость их вызова из памяти. Для разрешения этой проблемы можно вызывать команды из памяти заранее и хранить в специальном наборе регистров. Эта идея использовалась еще в 1959 году при разработке компьютера Stretch компании IBM, а набор регистров был назван буфером выборки с упреждением. Таким образом, когда требовалась определенная команда, она вызывалась прямо из буфера, а обращения к памяти не происходило.

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

Пятиступенчатый конвейер:

Первая ступень (блок С1) вызывает команду из памяти и помещает ее в буфер, где она хранится до тех пор, пока не потребуется. Вторая ступень (блок С2) декодирует эту команду, определяя ее тип и тип ее операндов. Третья ступень (блок СЗ) определяет местонахождение операндов и вызывает их из регистров или из памяти. Четвертая ступень (блок С4) выполняет команду, обычно проводя операнды через тракт данных. И наконец, блок С5 записывает результат обратно в нужный регистр.

На рис. б мы видим, как действует конвейер во времени. Во время цикла 1 блок С1 обрабатывает команду 1, вызывая ее из памяти. Во время цикла 2 блок С2 декодирует команду 1, в то время как блок С1 вызывает из памяти команду 2. Во время цикла 3 блок СЗ вызывает операнды для команды 1, блок С2 декодирует команду 2, а блок С1 вызывает команду 3. Во время цикла 4 блок С4 выполняет команду 1, СЗ вызывает операнды для команды 2, С2 декодирует команду 3, а С1 вызывает команду 4. Наконец, во время цикла 5 блок С5 записывает результат выполнения команды 1 обратно в регистр, тогда как другие ступени конвейера обрабатывают следующие команды.

Зависимость по данным в узле конвейера

Процессор без конвейера выполняет команды с частотой N. Разделим вычисление команды на M одинаковых частей по длительности. Конвейер может работать с частотой N*M. Если конвейер загружен без задержки, то после переходного процесса, n-1 блоков, будем иметь скорость выполнения K=N*M2

Но в работе конвейера возникают конфликты:

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

Конфликты делятся на три группы:

  • структурные,

  • по управлению,

  • по данным.

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

Причины структурных конфликтов.

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

Пусть этап выполнения команды i+1 занимает 3 такта. Тогда диаграмма работы конвейера будет иметь вид, представленный в таблица 11.3.

Таблица 11.3.

Команда

Такт

1

2

3

4

5

6

7

8

9

i

IF

ID

OR

EX

WB

i+1

IF

ID

OR

EX

EX

EX

WB

i+2

IF

ID

OR

O

O

EX

WB

i+3

IF

ID

OR

O

O

EX

i+4

IF

ID

OR

O

O

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

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

  1. Недостаточное дублирование некоторых ресурсов.

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

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

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

Таблица 11.4.

Этап

Такт

1

2

3

4

5

6

7

IF

K1

K2

K3

K4

K5

K6

K7

K8

K7

K9

K7

K10

K11

K12

ID

K1

K2

K3

K4

K5

K6

K5

K8

K5

K9

K7

K10

OR

K1

K2

K3

K4

K3

K6

K3

K8

K5

K9

EX

K1

K2

K1

K4

K1

K6

K3

K8

WB

K2

K4

K1

K6

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

К2-К4-К1-К6-...

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

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

Суть конфликтов этой группы наиболее удобно проиллюстрировать на примере команд условного перехода. Пусть в программе, представленной в таблица 11.1, команда i+1 является командой условного перехода, формирующей адрес следующей команды в зависимости от результата выполнения команды i. Команда i завершит свое выполнение в такте 5. В то же время команда условного перехода уже в такте 3 должна прочитать необходимые ей признаки, чтобы правильно сформировать адрес следующей команды. Если конвейер имеет большую глубину (например, 20 ступеней), то промежуток времени между формированием признака результата и тактом, где он анализируется, может быть еще большим. В инженерных задачах примерно каждая шестая команда является командой условного перехода, поэтому приостановки конвейера при выполнении команд переходов до определения истинного направления перехода существенно скажутся на производительности процессора.

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

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

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

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

В современных микропроцессорах вероятность правильного предсказания направления переходов достигает 90-95 %.

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

При обсуждении этих конфликтов будем предполагать, что команда i предшествует команде j.

Существует несколько типов конфликтов по данным.

  1. Конфликты типа RAW (Read After Write): команда j пытается прочитать операнд прежде, чем команда i запишет на это место свой результат. При этом команда j может получить некорректное старое значение операнда.

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

i) ADD R1,R2; R1 = R1+R2 i+1=j) SUB R3,R1; R3 = R3-R1

Команда i изменит состояние регистра R1 в такте 5. Но команда i+1 должна прочитать значение операнда R1 в такте 4. Если не приняты специальные меры, то из регистра R1 будет прочитано значение, которое было в нем до выполнения команды i.

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

Конфликты типа RAW обусловлены именно конвейерной организацией обработки команд.

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

  1. Конфликты типа WAR (Write After Read): команда j пытается записать результат в приемник, прежде чем он считается оттуда командой i, При этом команда i может получить некорректное новое значение операнда:

i) ADD R1,R2 i+1 =j) SUB R2,R3

Этот конфликт возникнет в случае, если команда j вследствие неупорядоченного выполнения завершится раньше, чем команда i прочитает старое содержимое регистра R2.

  1. Конфликты типа WAW (Write After Write): команда j пытается записать результат в приемник, прежде чем в этот же приемник будет записан результат выполнения команды i, то есть запись заканчивается в неверном порядке, оставляя в приемнике результата значение, записанное командой i:

i) ADD R1,R2 . . . j) SUB R1,R3

Устранение конфликтов по данным типов WAR и WAW достигается путем отказа от неупорядоченного исполнения команд, но чаще всего путем введения буфера восстановления последовательности команд.

Как отмечалось выше, наличие конфликтов приводит к значительному снижению производительности микропроцессора. Определенные типы конфликтов требуют приостановки конвейера. При этом останавливается выполнение всех команд, находящихся на различных стадиях обработки (до 20 ти команд в Pentium-4). Другие конфликты, например, при неверном предсказанном направлении перехода, ведут к необходимости полной перезагрузки конвейера. Потери будут тем больше, чем более длинный конвейер используется в микропроцессоре. Такая ситуация явилась одной из причин сокращения числа ступеней в микропроцессорах последних моделей. Так, в микропроцессоре Itanium конвейер содержит всего 10 ступеней. При этом его тактовая частота составляет около 1 МГц . Однако на каждой ступени выполняется больше функциональных действий, чем в Pentium-4

Динамическое исполнение команд

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

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

Выдача (декодирование команд, проверка структурных конфликтов)

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

CPI (cycles per instruction) – количество тактов процессора на инструкцию.

Для начала запишем выражение, определяющее среднее количество тактов для выполнения команды в конвейере:

CPI конвейера = CPI идеального конвейера +

+ Приостановки из-за структурных конфликтов +

+ Приостановки из-за конфликтов типа RAW +

+ Приостановки из-за конфликтов типа WAR +

+ Приостановки из-за конфликтов типа WAW +

+ Приостановки из-за конфликтов по управлению

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

рисунок

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

for (i = 1; i <= 1000; i = i + 1)

x[i] = x[i] + y[i];

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

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

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

Динамическая оптимизация с централизованной схемой обнаружения конфликтов

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

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

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

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

  • путем конвейеризации всех функциональных устройств.

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

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

Алгоритм Томасуло

Другой подход к параллельному выполнению команд при наличии конфликтов был использован в устройстве плавающей точки в машине IBM 360/91. Эта схема приписывается Р. Томасуло и названа его именем. Разработка IBM 360/91 была завершена спустя три года после выпуска CDC 6600, прежде чем кэш-память появилась в коммерческих машинах. Задачей IBM было достижение высокой производительности на операциях с плавающей точкой, используя набор команд и компиляторы, разработанные для всего семейства 360, а не только для приложений с интенсивным использованием плавающей точки.

Схема Томасуло имеет много общего со схемой централизованного управления CDC 6600, однако имеются и существенные отличия.

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

Во-вторых, результаты операций посылаются прямо в функциональные устройства, а не проходят через регистры. В IBM 360/91 имеется общая шина результатов операций (которая называется общей шиной данных (common data bus - CDB)), которая позволяет производить одновременную загрузку всех устройств, ожидающих операнда. CDC 6600 записывает результаты в регистры, за которые ожидающие функциональные устройства могут соперничать. Кроме того, CDC 6600 имеет несколько шин завершения операций (две в устройстве ПТ), а IBM 360/91 - только одну. В устройствах ПТ на базе алгоритма Томасуло станции резервирования хранят команды, которые выданы и ожидают выполнения в соответствующем функциональном устройстве, а также информацию, требующуюся для управления командой, когда ее выполнение началось в функциональном устройстве. Буфера загрузки и записи хранят данные поступающие из памяти и записываемые в память. Регистры ПТ соединены с функциональными устройствами парой шин и одной шиной с буферами записи. Все результаты из функциональных устройств и из памяти посылаются на общую шину данных, которая связана со входами всех устройств за исключением буфера загрузки. Все буфера и станции резервирования имеют поля тегов, используемых для управления конфликтами. В отличие от централизованной схемы управления, имеется всего три стадии выполнения команды:

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

  2. Выполнение - Если один или более операндов команды не доступны по каким либо причинам, контролируется состояние CDB и ожидается завершение вычисления значений нужного регистра. На этой стадии выполняется контроль конфликтов типа RAW. Когда оба операнда доступны, выполняется операция.

  3. Запись результата - Когда становится доступным результат, он записывается на CDB и оттуда в регистры и любое функциональное устройство, ожидающее этот результат.

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

Спекулятивное выполнение

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

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

Существуют следующие варианты спекулятивного выполнения:

  • предикация (predication) - одновременное исполнение нескольких ветвей программы вместо предсказания переходов (выполнения наиболее вероятного);

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

Эти возможности осуществляются комбинированно - при компиляции и выполнении программы.

Предикация.

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

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

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

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

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

Опережающее чтение данных

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

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

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

Буфер прогнозирования условных переходов

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

Двухбитовая схема прогнозирования в действительности является частным случаем более общей схемы, которая в каждой строке буфера прогнозирования имеет n-битовый счетчик. Этот счетчик может принимать значения от 0 до 2n - 1. Тогда схема прогноза будет следующей:

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

  • Если значение счетчика меньше, чем 2n-1, то переход прогнозируется как невыполняемый. Если направление перехода предсказано правильно, из значения счетчика вычитается единица (если только не достигнуто значение 0); если прогноз был неверным, к значению счетчика добавляется единица.

  1. Любая машинная команда рассматривается, как некоторое сложное действие, которое состоит из последовательности элементарных действий над словами информации – микроопераций.

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

  3. Процесс выполнения машиной команды описывается в виде некоторого алгоритма в терминах микроопераций и логических условий. Описание информационных сигналов – микропрограмма

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

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

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

Суперскалярные архитектуры. Один конвейер – хорошо, а два – лучше

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

Сначала конвейеры (как сдвоенные, так и обычные) использовались только в RISC-компьютерах. У процессора 386 и его предшественников их не было. Конвейеры в процессорах компании Intel появились, только начиная с модели 486. Процессор 486 имел один пятиступенчатый конвейер, a Pentium — два таких конвейера. Похожая схема изображена на рис. 2.4, но разделение функций между второй и третьей ступенями (они назывались декодер 1 и декодер 2) было немного другим. Главный конвейер (u-конвейер) мог выполнять произвольные команды. Второй конвейер (v-конвейер) мог выполнять только простые команды с целыми числами, а также одну простую команду с плавающей точкой (FXCH).

Имеются сложные правила определения, является ли пара команд совместимой в отношении возможности параллельного выполнения. Если команды, входящие в пару, были сложными или несовместимыми, выполнялась только одна из них (в u-конвейере). Оставшаяся вторая команда составляла затем пару со следующей командой. Команды всегда выполнялись по порядку. Таким образом, процессор Pentium содержал особые компиляторы, которые объединяли совместимые команды в пары и могли порождать программы, выполняющиеся быстрее, чем в предыдущих версиях. Измерения показали, что программы, в которых применяются операции с целыми числами, при той же тактовой частоте на Pentium выполняются почти в два раза быстрее, чем на 486. Вне всяких сомнений, преимущество в скорости было достигнуто благодаря второму конвейеру. Переход к четырем конвейерам возможен, но требует громоздкого аппаратного обеспечения. Вместо этого используется другой подход. Основная идея — один конвейер с большим количеством функциональных блоков, как

показано на рис. 2.5. Pentium II, к примеру, имеет сходную структуру. В 1987 году для обозначения этого подхода был введен термин суперскалярная архитектура. Однако подобная идея нашла воплощение еще тридцатью годами ранее в компьютере CDC 6600. Этот компьютер вызывал команду из памяти каждые 100 не и помещал ее в один из 10 функциональных блоков для параллельного выполнения. Пока команды выполнялись,

центральный процессор вызывал следующую команду.

Со временем значение понятия «суперскалярный» несколько изменилось. Теперь суперскалярными называют процессоры, способные запускать несколько команд (зачастую от четырех до шести) за один тактовый цикл. Естественно, чтобы передавать все эти команды, в суперскалярном процессоре должно быть несколько функциональных блоков. Поскольку в процессорах этого типа, как правило, предусматривается один конвейер, его устройство обычно соответствует рис. 2.5. В свете такой терминологической динамики на сегодняшний день можно утверждать, что компьютер 6600 не был суперскалярным с технической точки зрения — ведь за один тактовый цикл в нем запускалось не больше одной команды.

Однако при этом был достигнут аналогичный результат — команды запускались быстрее, чем выполнялись. На самом деле разница в производительности между ЦП с циклом в 100 не, передающим за этот период по одной команде четырем функциональным блокам, и ЦП с циклом в 400 не, запускающим за это время четыре команды, трудноуловима. В обоих процессорах соблюдается принцип превышения скорости запуска над скоростью управления; при этом рабочая нагрузка распределяется между несколькими функциональными блоками. Отметим, что на выходе ступени 3 команды появляются значительно быстрее, чем ступень 4 способна их обрабатывать. Если бы на выходе ступени 3 команды появлялись каждые 10 нс, а все функциональные блоки делали свою работу также за 10 нс, то на ступени 4 всегда функционировал бы только один блок, что сделало бы саму идею конвейера бессмысленной. В действительности большинству функциональных блоков ступени 4 (точнее, обоим блокам доступа к памяти и блоку выполнения операций с плавающей точкой) для обработки команды требуется значительно больше времени, чем занимает один цикл. Как видно из рис. 2.5, на ступени 4 может быть несколько АЛУ.

VLIW процессоры

Архитектура с командными словами сверхбольшой длины или со сверхдлинными командами (VLIW, Very Long Instruction Word) известна с начала 80-х. VLIW - это набор команд, организованных наподобие горизонтальной микрокоманды в микропрограммном устройстве управления.

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

  • количество простых команд, объединяемых в одну команду сверхбольшой длины, равно числу имеющихся в процессоре функциональных (исполнительных) блоков (ФБ);

  • в сверхдлинную команду входят только такие простые команды, которые исполняются разными ФБ, то есть обеспечивается одновременное исполнение всех составляющих сверхдлинной команды

Длина сверхдлинной команды обычно составляет от 256 до 1024 бит. Такая метакоманда содержит несколько полей (по числу образующих ее простых команд), каждое из которых описывает операцию для конкретного функционального блока. Сказанное иллюстрирует рис, 13,26, где показан возможный формат сверхдлинной команды и взаимосвязь между ее полями и ФБ, реализующими отдельные операции.

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

В качестве простых команд, образующих сверхдлинную, обычно используются команды RISC-типа, поэтому архитектуру VLIW иногда называют пocтRISC-apхитектурой. Максимальное число полей в сверхдлинной команде равно числу вычислительных устройств и обычно колеблется в диапазоне от 3 до 20. Все вычислительные устройства имеют доступ к данным, хранящимся в едином многопортовом регистровом файле. Отсутствие сложных аппаратных механизмов, характерных для суперскалярных процессоров (предсказание переходов, внеочередное исполнение и т. д.), дает значительный выигрыш в быстродействии и возможность более эффективно использовать площадь кристалла. Подавляющее большинство цифровых сигнальных процессоров и мультимедийных процессоров с производительностью более 1 млрд операций/с базируется на VLIW-архитектуре. Серьезная проблема VLIW - усложнение регистрового файла и связей этого файла с вычислительными устройствами.

Преимущества.

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

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

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

Недостатки.

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

  2. Компилятор должен учитывать конкретные детали аппаратных средств.

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

Основные сферы применения.

VLIW-процессоры пока еще распространены относительно мало. Основными сферами применения технологии VLIW-являются цифровые сигнальные процессоры и вычислительные системы, ориентированные на архитектуру IA-64. Наиболее известной была VLIW-система фирмы Multiflow Computer, Inc. (Уже не существующей.) В России VLIW-концепция была реализована в суперкомпьютере Эльбрус 3-1 и получила дальнейшее развитие в его последователе - Эльбрус-2000 (Е2к). К VLIW можно причислить семейство сигнальных процессоров TMS320C6x фирмы Texas Instruments. С 1986 года ведутся исследования VLIW-архитектуры в IBM. В начале 2000 года фирма Transmeta заявила процессор Crusoe, представляющий собой программно-аппаратный комплекс. В нем команды микропроцессоров серии х86 транслируются в слова VLIW длиной 64 или 128 бит. Оттранслированные команды хранятся в кэш-памяти, а трансляция при многократном их использовании производится только один раз. Ядро процессора исполняет элементы кода в строгой последовательности.

EPIC архитектуры

Дальнейшим развитием идеи VLIW стала новая архитектура IA-64 — совместная разработка фирм Intel и Hewlett-Packard (IA - это аббревиатура от Intel Architecture). В IA-64 реализован новый подход, известный как вычисления с явным параллелизмом команд (EPIC, Explicitly Parallel Instruction Computing) и являющийся усовершенствованным вариантом технологии VLIW. Первым представителем данной стратегии стал микропроцессор Itanium компании Intel. Корпорация HewlettPackard также реализует данный подход в своих разработках.

В архитектуре IA-64 предполагается наличие в процессоре 128 64-разрядных регистров общего назначения (РОН) и 128 80-разрядных регистров с плавающей запятой. Кроме того, процессор IA-64 содержит 64 однобитовых регистра предикатов.

Формат команд в архитектуре IA-64 показан на рис. 13.27.

Команды упаковываются (группируются) компилятором в сверхдлинную команду — связку (bundle) длиною в 128 разрядов. Связка содержит три команды и шаблон, в котором указываются зависимости между командами (можно ли с командой I0 запустить параллельно I1 или же I1 должна выполниться только после Iо), а также между другими связками (можно ли с командой I2 из связки So запустить параллельно команду I3 из связки S1).

Перечислим все варианты составления связки из трех команд:

- I0 || I1 || 12 — все команды исполняются параллельно;

- Iо & I1 || I г — сначала I0, затем исполняются параллельно I1 и I2;

- I0 || I 1 & I2 - параллельно обрабатываются I0 и I1 после них - I2;

- I0& I1 & I2 — команды исполняются в последовательности I0,I1, I2.

Одна связка, состоящая из трех команд, соответствует набору из трех функциональных блоков процессора. Процессоры IA-64 могут содержать разное количество таких блоков, оставаясь при этом совместимыми по коду. Благодаря тому что в шаблоне указана зависимость и между связками, процессору с N одинаковыми блоками из трех ФБ будет соответствовать сверхдлинная команда из N х 3 команд (Nсвязок). Тем самым обеспечивается масштабируемость IA-64.

Поле каждой из трех команд в связке, в свою очередь, состоит из пяти полей:

- 13-разрядного поля кода операции;

- 6-разрядного поля предикатов, хранящего номер одного из 64 регистров предиката;

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

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

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

Следует пояснить роль подполя предикатов. Предикация - это способ обработки условных ветвлений. Суть в том, что еще компилятор указывает, что обе ветви выполняются на процессоре параллельно, ведь EPIC-процессоры должны иметь много функциональных блоков. Если в исходной программе встречается условное ветвление (по статистике — через каждые шесть команд), то команды из разных ветвей помечаются разными регистрами предиката (команды имеют для этого соответствующие поля), далее они выполняются совместно, но их результаты не записываются, пока значения регистров предиката (РП) не определены. Когда, наконец, вычисляется условие ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а другой - в 0. Перед записью результатов процессор проверяет поле предиката и записывает результаты только тех команд, поле предиката которых указывает на РП с единичным значением. Предикаты формируются как результат сравнения значений, хранящихся в двух регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП, но одновременно с этим во второй РП записывается инверсное значение полученного результата. Такой механизм позволяет процессору более эффективно выполнять конструкции типа I F - T H E N-E L S E . Логика выдачи команд на исполнение сложнее, чем в традиционных процессорах типа VLIW, но намного проще, чем у суперскалярных процессоров с неупорядоченной выдачей. По мнению специалистов Intel и HP, концепция EPIC, сохраняя все достоинства архитектурной организации VLIW, свободна от большинства ее недостатков. Особенностями архитектуры EPIC являются:

- большое количество регистров;

- масштабируемость архитектуры до большого количества функциональных блоков. Это свойство представители компаний Intel и HP называют наследственно масштабируемой системой команд (Inherently Scaleable Instruction Set);

- явный параллелизм в машинном коде. Поиск зависимостей между командами осуществляет не процессор, а компилятор;

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

- предварительная загрузка — данные из медленной основной памяти загружаются заранее.

Первые процессоры Intel 80 86

Корпорация Intel разработала три типа ISA, которые ориентируются на различные секторы рынка. Для их именования часто используется акроним из выражения IntelArchitecture, IA

  • Архитектура IA-32 предназначена для выполнения массовых 32-разрядных приложения на ПК начального уровня и реализована в следующих семействах процессоров:

    • Intel Celeron и Intel Pentium (в корпусе FC-PGA2);

    • процессорах Intel, использующих технологии ультранизкого напряжения питания;

    • Intel Core Duo.

  • Архитектура набора команд IA-64 реализована в семействе процессоров Intel Itanium.

  • Архитектура Intel 64 предназначена для современных ПК и серверов среднего уровня, оптимизированных для выполнения 64-разрядных приложений. Эта архитектура реализована в следующих семействах процессоров:

    • Intel Xeon;

    • Intel Core 2 Duo.

Intel архитектура 64

Знание архитектуры процессора, или в более узком смысле, его системы команд, необходимо не только для программирующих на языке ассемблера данного процессора. В учебные курсы в области информатики традиционно входят дисциплины, в которых рассматривается программирование на ассемблере. В период доминирования больших универсальных ЭВМ большинство специалистов знали ассемблер мэйнфреймов IBM S/360-370 (соответственно ЕС ЭВМ). Затем доминирующим стал, вероятно, ассемблер x86. Современные специалисты по компьютерным архитектурам хорошо знают и системы команд RISC-процессоров.

Системы команд современных RISC-процессоров во многом похожи друг на друга. Например, говорят, что в этом смысле MIPS и Alpha близки друг к другу. Однако появление архитектуры IA-64, которая претендует на монополию на рынке микропроцессоров, разработчики из HP и Intel характеризуют как наступление эры "пост-RISC". Доступная информация свидетельствует, что IA-64 революционным образом отличается от предшественников, даже от своих прямых предков таких, как HP PA-RISC. Процессоры с архитектурой IA-64 (Merced, McKinley и т.д.) могут обойти RISC-процессоры по производительности.

Со временем архитектура IA-64 способна вытеснить в будущем x86 (IA-32) не только на рынке, но и в качестве багажа "базовых знаний" специалистов по информатике. Однако необходимость разработки для IA-64 весьма сложных компиляторов и трудности с созданием оптимизированных машинных кодов может вызвать дефицит специалистов, пишущих на ассемблере IA-64, особенно на начальных этапах. Это делает актуальным анализ IA-64.

На момент подготовки статьи детали микроархитектуры процессора Merced, получившего официальное название Itanium, все еще не раскрыты. Официальная информация [1,2] позволяет сделать определенные предположения о характеристиках Itanium. Укажем также на публикацию по микроархитектуре E2K [3] отечественной разработки, имеющей близкие к IA-64 архитектурные особенности.

Основным источником данных для данной статьи послужили, естественно, публикации [1,2]. Мы остановимся в первую очередь на концептуально новых особенностях IA-64 и общем описании. Более традиционные части системы команд IA-64 напоминают обычный набор команд RISC, в первую очередь архитектуры PA-RISC. Cовместимость с PA-RISC в IA-64 обеспечивается за счет динамической трансляции команд (т.е. подобно Compaq/DEC FX!32). Применительно к прикладным программам такой подход оказывается вполне эффективным благодаря близости части команд PA-RISC к соответствующим командам IA-64.

Что касается аппаратно поддерживаемой совместимости с архитектурой IA-32, то, с точки зрения автора, это тема для отдельного разговора; основной интерес представляет собой в первую очередь принципиально новые черты IA-64. По мнению автора, аппаратная совместимость с IA-32 препятствует эффективному развитию IA-64 и росту производительности. Косвенным подтверждением этому служат неофициальные "приватные" данные о том, что McKinley, производительность которого должна быть гораздо выше Merced, якобы не имеет столь развитых средств аппаратной поддержки IA-32, как у Merced.

Наиболее кардинальным нововведением IA-64 по сравнению с RISC является "явный параллелизм команд (EPIC - Explicitly Parallel Instruction Computing), привносящий в IA-64 некоторые элементы, напоминающие архитектуру "сверхбольшого командного слова" (VLIW - Very Large Instruction Word). В обеих архитектурах явный параллелизм представлен уже на уровне команд, управляющих одновременной работой функциональных исполнительных устройств (ФИУ). Соответствующие "широкие команды" HP/Intel назвали связками (bundle).

Рис. 1. Формат связки команд IA-64

Связка имеет длину 128 разрядов (рис. 1). Она включает 3 поля - "слота" для команд длиной 41 разрядов каждая, и 5-разрядное поле шаблона. Предполагается, что команды связки могут выполняться параллельно разными ФИУ. Возможные взаимозависимости, препятствующие параллельному выполнению команд связки, отражаются в поле шаблона. Не утверждается, впрочем, что параллельно не могут выполняться и команды разных связок.

Шаблон указывает, какого типа команды находятся в слотах связки. В общем случае команды одного типа могут выполняться в более чем одном типе ФИУ (табл.1). Шаблоном задаются так называемые остановки, определяющие слот, после начала выполнения команд которого команды последующих слотов должны ждать завершения. Порядок слотов в связке (возрастание справа налево) отвечает и порядку байт - little endian. Однако данные в памяти могут располагаться и в режиме big endian. Режим устанавливается специальным разрядом в регистре маски пользователя.

Таблица 1. Типы команд и исполнительных устройств

Тип команд

Тип исполнительного устройства

Описание команд

A

I или M

Целочисленные, АЛУ

I

I

Целочисленные неарифметические

M

M

Обращение в память

F

F

C плавающей запятой

B

B

Переходы

L+X

I

Расширенные

При использовании ассемблера остановки отмечаются двумя подряд знаками "точка с запятой" - ";;". Места, в которых необходимо указывать остановку выглядят интуитивно понятными, по крайней мере, в приведенных в [1,2] примерах.

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

Процессоры Itanium

64-разрядные процессоры семейства Itanium созданы на базе архитектуры EPIC. Архитектура EPIC позволяет проводить программно достаточно серьезные оптимизации, при этом задействуя и ILP на аппаратном уровне, за счет чего существенно растет эффективность работы системы в целом. 

Семейство процессоров Itanium разрабатывалось совместно Intel и HP. Следует отметить обратную совместимость процессоров Itanium с процессорами Intel x86 и HP PA-RISC.

В процессорах Itanium 2 применяются 64-разрядные инструкции непосредственно на аппаратном уровне, чего не было на процессорах Itanium.

В целом, в Itanium 2 стало больше функциональных устройств, чем было у Itanium:

  • Всего в Itanium 2 есть 6 АЛУ, в то время как Itanium может использовать лишь 4 за такт.

  • В Itanium 2 есть 4 порта памяти, позволяющие по 2 целочисленных загрузки и сохранения за такт, в то время как в Itanium есть только 2 порта.

  • Itanium 2 может выполнить одну SIMD инструкцию с плавающей точкой за такт, в то время как Itanium - две.

  • При определенных условиях Itanium 2 может перенаправлять выполнение инструкций на непрофильные функциональные элементы.

  • При обработке операций Itanium 2 учитывает многократно повторяющиеся операции.

Основы многопоточной (мультитредовой) архитектуры

Классификация ВС по соотношению потока команд и потока данных

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

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

  • с одним потоком команд и одним потоком данных (ОКОД);

  • с одним потоком команд и множеством данных (ОКМД);

  • с множеством команд и одним потоком данных (МКОД);

  • с множеством команд и множеством данных (МКМД);

К 1-ой группе относятся традиционные или классические ЭВМ и построенные на их основе вычислительные системы. Работа таких ЭВМ или вычислительных систем иллюстрируется рисунком 1а (на этом рисунке для обозначения потока данных применяется аббревиатура ПД, а потока команд – ПК, П-1, П-2,……П-N –процессоры или процессорные элементы).

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

Процессор

Память программ


ЦУУ ВС


ПД ПК Рез-ты

Результаты ПК

Память

П-1

П-2

П-N


а)

ПД-1 ПД-2 ПД-N

Память данных и результатов


б)

Память программ

Память программ


ЦУУ ВС

ЦУУ ВС


ПК-1 ПК-N ПК-1 ПК-N

П-1

П-2

П-N

П-1

П-2

ПД Рез-ты ПД-1 ПД-2 ПД-N

Память данных и результат.

Память данных и результатов


в) г)

Рисунок – Классы ВС по признаку соотношения потока команд и потока данных: а) – ОКОД; б) – ОКМД; в) – МКОД; г) – МКМД.

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

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

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

Сравнение параллельной и конвейерной организации ВС

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

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

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

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

Таблица – Сравнение параллельной и конвейерной организации ЭВМ

Наименование параметра

Организация

параллельная

конвейерная

Базовая структура

Независимое исполне-ние подзадач на отдель-ных блоках аппаратуры

Разбиение функции на N подфункций

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

N результатов за каждые Т секунд

Один результат за каждые N/T секунд

Основной период синхронизации

Время для вычисления одной функции

Время для одной ступени (выполнение подфункции)

Типичная архитектура

ОКМД, МКМД

ОКОД, МКОД

Предпочтительная структура задачи

Матричные задачи с длинами векторов, крат-ными числу процессо-ров; процессы, поддаю-щиеся разбиению на независимые части

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

Типичная организация памяти

Многократно повторен-ные независимые моду-ли памяти

Одна многократно расслоеная память

Особенности управления

Осуществляется пользователем

Во многом осуществ-ляется аппаратурой

Факторы, ограничиваю-щие производитель-ность

Стоимость, структура задач

Элементная база, скорость доступа к памяти

Обеспечение надежности

Легко достижима за счет “горячего” резерва

Обходится дорого за счет немодульной организации

SMP-архитектура. Симметрично-многопроцессорная

SMP-архитектура

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

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

2. Эффективность организации программного кода задачи, которая обеспечивается системным программным обеспечением, так как в процессе генерации кода нет необходимости учитывать разнообразие размещения данных в ОП.

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

Наряду с достоинствами рассматриваемая технология обладает и рядом существенных недостатков.

1. Единый путь доступа к ОП, который становится узким местом, при увеличение числа процессоров в системе, т.е. достигается такой предельный трафик, при котором увеличение числа процессоров приводит к нелинейному росту производительности системы, либо, как предельный случай, к её снижению по причине конфликтных ситуаций возникающих на пути доступа к ОП. Попытка технологически решить эту проблему лишь отодвигает граничный трафик. Так архитектура с синхронной шиной доступа позволяла линейно увеличивать производительность системы в пределах до 8-ми процессоров. Пакетная организация системной шины, уменьшая количество взаимных блокировок, позволяет довести количество процессоров в системе до 16-ти. Технология crossbar, т.е. когда элементы вычислительной системы коммутируются напрямую друг с другом по протоколу точка-точка, позволила довести количество процессоров до 72-х. Однако, с увеличением количества коммутируемых элементов системы происходит резкий рост сложности crossbar и, как следствие, рост цены устройства.

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

Примеры компьютеров с SMP архитектурой: HP 9000 (до 32 процессоров), Sun HPC 100000 (до 64 проц.), Compaq AlphaServer (до 32 проц.)

MPP-архитектура. Массивно-параллельная архитектура

MPP-архитектура

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

MPP система нач-ся со 128 проц-в. Если число проц-в < 64 то это точно не MPP, хотя тоже оборудование, тот же компилятор. Сообщения пересылаются через ряд проц-в. Нет узкого горлышка как у SMP.

Рассм. MPP систему Paragon (Intel): Таких систем было выпущено несколько сотен, причем каждая из них была не похожа на другую (кол-во проц-в, размер ОП). Для реализации использовались проц-ры i860.

MRC (маршрутизатор) – набор портов, которые могут связ-ся между собой и к каждому марш-ру может подклю-ся компьютер.

Node – процессные узлы. 3 типа: 1) вычислительные 2) сервисные (UNIX-вые возможности для разр-ки прог-м, т.е. узлы для взаим-я прогр-та). 3) узлы в/в (могут подкл-ся либо к общим ресурсам (дисковым), либо через них реал-ся интерфейс с др. сетями). 

Схема процессорного ядра: 1) Исполни-тельный монитор (позволяет отлаживать, конролировать, записывать работу узла). 2) Проц-р прил-ий 3) ОП (32-64Mb) 4) Машины передачи данных (2 шт) Одна на прием др. на передачу. 5) проц-р сообщений (i860) 6) Контроллер сетевого инт-са (порты кот-ые выходят на MRC) 7) порт расширения, к кот-у через интерфейсные карты могли подкл-ся: 8) Интерфей в/в 9) к кот-у подкл0сь либо ЛВС либо ЖД.

Число проц-ов для Paragon достигало 5000-8000.

Примерами MPP систем можно упомянуть: IBM RS/6000 SP, NCR WorldMark 5100M (До 128 узлов, 4096 процессоров).

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

Кластерные системы представляют собой некоторое число недорогих рабочих станций или персональных компьютеров, объединенных в общую вычислительную сеть (подобно массивно-параллельным системам). Причиной возникновения кластерной архитектуры было то, что необходимую для пользователя работу было невозможно выполнить на одном компьютере или эта работа была настолько важна, чтобы приобрести дублирующее оборудование. Много позже этот подход удостоился общепринятого названия (термин "кластер" был введен в обиход компанией DEC), и его стали поддерживать поставщики систем. Сегодня кластерная архитектура является козырной картой практически каждого поставщика компьютерных систем, ориентированных на применение ОС UNIX, Novell Netware или Windows NT.

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

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

Кластеры демонстрируют высокий уровень доступности, поскольку в них отсутствуют единая операционная система и совместно используемая память с обеспечением когерентности кэшей. Кроме того, специальное программное обеспечение в каждом узле постоянно производит контроль работоспособности всех остальных узлов. Этот контроль основан на периодической рассылке каждым узлом сигнала "Я еще бодрствую". Если такой сигнал от некоторого узла не поступает, то этот узел считается вышедшим из строя; ему не дается возможность выполнять ввод/вывод, его диски и другие ресурсы переназначаются другим узлам (включая IP-адреса), а выполнявшиеся в вышедшем из строя узле программы перезапускаются в других узлах.

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

Примером кластерного решения можно назвать системы Compaq AlphaServer на базе своих серверов AlphaServer ES40.

Основная память

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

  • оперативные за­поминающие устройства (ОЗУ) RAM

  • постоянные запоминающие устройства (ПЗУ) ROM

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

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

Большинство из применяемых в настоящее время типов микросхем оперативной памяти не в состоянии сохранять данные без внешнего источника энергии, то есть являются энергозависимыми (volatile memory). Широкое распространение таких устройств связано с рядом их достоинств по сравнению с энергонезависимыми типами ОЗУ (non-volatile memory): большей емкостью, низким энергопотребле­нием, более высоким быстродействием и невысокой себестоимостью хранения еди­ницы информации.

  Энергозависимые ОЗУ можно подразделить на две основные подгруппы: динамическую память (DRAM — Dynamic Random Access Memory) и статическую память (SRAM — Static Random Access Memory).

Статическая и динамическая оперативная память

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

Статические оперативные запоминающие устройства

Напомним, что роль запоминающего элемента в статическом ОЗУ исполняет триг­гер. Статические ОЗУ на настоящий момент — наиболее быстрый, правда, и наи­более дорогостоящий вид оперативной памяти. Известно достаточно много раз­личных вариантов реализации SRAM, отличающихся по технологии, способам организации и сфере применения (рис. 5.9). Асинхронные статические ОЗУ. Асинхронные статические ОЗУ применялись в кэш-памяти второго уровня в течение многих лет, еще с момента появления мик­ропроцессора i80386. Для таких ИМС время доступа составляло 15-20 не (в луч­шем случае — 12 не), что не позволяло кэш-памяти второго уровня работать в тем­пе процессора.

Рис. 5.9. Виды статических ОЗУ

Синхронные статические ОЗУ. В рамках данной группы статических ОЗУ вы­деляют ИМС типа SSRAM и более совершенные РВ SRAM.

  Последние модификации микропроцессоров Pentium, начиная с Pentium II, взамен SSRAM оснащаются статической оперативной памятью с пакетным кон­вейерным доступом (РВ SRAM — Pipelined Burst SRAM). В этой разновидности SRAM реализована внутренняя конвейеризация, за счет которой скорость обмена пакетами данных возрастает примерно вдвое. Память данного типа хорошо рабо­тает при повышенных частотах системной шины. Время доступа к РВ SRAM со­ставляет от 4,5 до 8 нс, при этом формула 3-1-1-1 сохраняется даже при частоте системной шины 133 МГц.

  Особенности записи в статических ОЗУ. Важным моментом, характеризующим SRAM, является технология записи. Известны два варианта записи: стандартная и запаздывающая. В стандартном режиме адрес и данные выставляются на соот­ветствующие шины в одном и том же такте. В режиме запаздывающей записи дан­ные для нее передаются в следующем такте после выбора адреса нужной ячейки, что напоминает режим конвейерного чтения, когда данные появляются на шине в следующем такте. Оба рассматриваемых варианта позволяют производить запись данных с частотой системной шины. Различия сказываются только при переклю­чении между операциями чтения и записи.

Динамические оперативные запоминающие устройства

Динамической памяти в вычислительной машине значительно больше, чем стати­ческой, поскольку именно DRAM используется в качестве основной памяти ВМ. Как и SRAM, динамическая память состоит из ядра (массива ЗЭ) и интерфейсной логики (буферных регистров, усилителей чтения данных, схемы регенерации и др.).

В отличие от SRAM адрес ячейки DRAM передается в микросхему за два шага — вначале адрес столбца, а затем строки, что позволяет сократить количество выво­дов шины адреса примерно вдвое, уменьшить размеры корпуса и разместить на материнской плате большее количество микросхем. Это, разумеется, приводит к снижению быстродействия, так как для передачи адреса нужно вдвое больше вре­мени. Для указания, какая именно часть адреса передается в определенный момент, служат два вспомогательных сигнала RAS и CAS. При обращении к ячейке памя­ти на шину адреса выставляется адрес строки. После стабилизации процессов на шине подается сигнал RAS и адрес записывается во внутренний регистр микро­схемы памяти. Затем на шину адреса выставляется адрес столбца и выдается сиг­нал CAS. В зависимости от состояния линии WE производится чтение данных из ячейки или их запись в ячейку (перед записью данные должны быть помещены на шину данных). Интервал между установкой адреса и выдачей сигнала RAS (или CAS) оговаривается техническими характеристиками микросхемы, но обычно ад­рес выставляется в одном такте системной шины, а управляющий сигнал — в сле­дующем. Таким образом, для чтения или записи одной ячейки динамического ОЗУ требуется пять тактов, в которых происходит соответственно: выдача адреса строки, выдача сигнала RAS, выдача адреса столбца, выдача сигнала CAS, выполнение операции чтения/записи (в статической памяти процедура занимает лишь от двух до трех тактов).

Рис. 5.10. Классификация динамических ОЗУ: а — микросхемы для основной памяти; б — микросхемы для видеоадаптеров

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

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

  Микросхемы DRAM. В первых микросхемах динамической памяти применялся наиболее простой способ обмена данными, часто называемый традиционным (con­ventional). Он позволял считывать и записывать строку памяти только на каждый пятый такт (рис. 5.11, а). Этапы такой процедуры были описаны ранее. Традици­онной DRAM соответствует формула 5-5-5-5. Микросхемы данного типа могли работать на частотах до 40 МГц и из-за своей медлительности (время доступа со­ставляло около 120 не) просуществовали недолго.

  Микросхемы FPMDRAM. Микросхемы динамического ОЗУ, реализующие ре­жим FPM, также относятся к ранним типам DRAM. Сущность режима была пока­зана ранее. Схема чтения для FPM DRAM (рис. 5.11, 6) описывается формулой 5-3-3-3 (всего 14 тактов). Применение схемы быстрого страничного доступа по­зволило сократить время доступа до 60 не, что, с учетом возможности работать на более высоких частотах шины, привело к увеличению производительности памя­ти по сравнению с традиционной .DRAM приблизительно на 70%. Данный тип микросхем применялся в персональных компьютерах примерно до 1994 года.

  Микросхемы EDO DRAM. Следующим этапом в развитии динамических ОЗУ стали ИМС с гиперстраничным режимом доступа (НРМ, Hyper Page Mode), бо­лее известные как EDO (Extended Data Output — расширенное время удержания данных на выходе). Главная особенность технологии — увеличенное по сравне­нию с FPM DRAM время доступности данных на выходе микросхемы. В микро­схемах FPM DRAM выходные данные остаются действительными только при ак­тивном сигнале CAS, из-за чего во втором и последующих доступах к строке нужно три такта: такт переключения CAS в активное состояние, такт считывания данных и такт переключения CAS в неактивное состояние. В EDO DRAM по активному (спадающему) фронту сигнала CAS данные запоминаются во внутреннем регистре, где хранятся еще некоторое время после того, как поступит следующий активный фронт сигнала. Это позволяет использовать хранимые данные, когда CAS уже переведен в неактивное состояние (рис. 5.11, б). Иными словами, временные пара­метры улучшаются за счет исключения циклов ожидания момента стабилизации данных на выходе микросхемы.

Схема чтения у EDO DRAM уже 5-2-2-2, что на 20% быстрее, чем у FPM. Вре­мя доступа составляет порядка 30-40 не. Следует отметить, что максимальная ча­стота системной шины для микросхем EDO DRAM не должна была превышать 66 МГц.

  Микросхемы BEDO DRAM. Технология EDO была усовершенствована компа­нией VIA Technologies. Новая модификация EDO известна как BEDO (Burst EDO — пакетная EDO). Новизна метода в том, что при первом обращении считы­вается вся строка микросхемы, в которую входят последовательные слова пакета. За последовательной пересылкой слов (переключением столбцов) автоматически следит внутренний счетчик микросхемы. Это исключает необходимость выдавать адреса для всех ячеек пакета, но требует поддержки со стороны внешней логики. Способ позволяет сократить время считывания второго и последующих слов еще на один такт (рис. 5.11, г), благодаря чему формула приобретает вид 5-1-1-1.

Микросхемы EDRAM. Более быстрая версия DRAM была разработана подраз­делением фирмы Ramtron — компанией Enhanced Memory Systems. Технология реализована в вариантах FPM, EDO и BEDO. У микросхемы более быстрое ядро и внутренняя кэш-память. Наличие последней — главная особенность технологии. В роли кэш-памяти выступает статическая память (SRAM) емкостью 2048 бит. Ядро EDRAM имеет 2048 столбцов, каждый из которых соединен с внутренней кэш-памятью. При обращении к какой-либо ячейке одновременно считывается целая строка (2048 бит). Считанная строка заносится в SRAM, причем перенос информации в кэш-память практически не сказывается на быстродействии, по­скольку происходит за один такт. При дальнейших обращениях к ячейкам, отно­сящимся к той же строке, данные берутся из более быстрой кэш-памяти. Следую­щее обращение к ядру происходит при доступе к ячейке, не расположенной в строке, хранимой в кэш-памяти микросхемы.

Технология наиболее эффективна при последовательном чтении, то есть когда среднее время доступа для микросхемы приближается к значениям, характерным для статической памяти (порядка 10 нс). Главная сложность состоит в несовмес­тимости с контроллерами, используемыми при работе с другими видами DRAM.

Синхронные динамические ОЗУ. В синхронных DRAM обмен информацией син­хронизируется внешними тактовыми сигналами и происходит в строго определен­ные моменты времени, что позволяет взять все от пропускной способности шины «процессор-память» и избежать циклов ожидания. Адресная и управляющая ин­формация фиксируются в ИМС памяти. После чего ответная реакция микросхе­мы произойдет через четко определенное число тактовых импульсов, и это время процессор может использовать для других действий, не связанных с обращением к памяти. В случае синхронной динамической памяти вместо продолжительности цикла доступа говорят о минимально допустимом периоде тактовой частоты, и речь уже идет о времени порядка 8-10 не.

  Микросхемы SDRAM. Аббревиатура SDRAM (Synchronous DRAM — синхрон­ная DRAM) используется для обозначения микросхем «обычных» синхронных динамических ОЗУ. Кардинальные отличия SDRAM от рассмотренных выше асин­хронных динамических ОЗУ можно свести к четырем положениям:

         синхронный метод передачи данных на шину;

         конвейерный механизм пересылки пакета;

         применение нескольких (двух или четырех) внутренних банков памяти;

         передача части функций контроллера памяти логике самой микросхемы.

Синхронность памяти позволяет контроллеру памяти «знать» моменты готов­ности данных, за счет чего снижаются издержки циклов ожидания и поиска дан­ных. Так как данные появляются на выходе ИМС одновременно с тактовыми им­пульсами, упрощается взаимодействие памяти с другими устройствами ВМ.

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

  Значительный эффект дает разбиение всей совокупности ячеек на независи­мые внутренние массивы (банки). Это позволяет совмещать доступ к ячейке одного банка с подготовкой к следующей операции в остальных банках (перезарядкой управляющих цепей и восстановлением информации). Возможность держать открытыми одновременно несколько строк памяти (из разных банков) также спо­собствует повышению быстродействия памяти. При поочередном доступе к бан­кам частота обращения к каждому из них в отдельности уменьшается пропор­ционально числу банков и SDRAM может работать на более высоких частотах. Благодаря встроенному счетчику адресов SDRAM, как и BEDO DRAM, позволя­ет производить чтение и запись в пакетном режиме, причем в SDRAM длина паке­та варьируется и в пакетном режиме есть возможность чтения целой строки памя­ти. ИМС может быть охарактеризована формулой 5-1-1-1. Несмотря на то, что формула для этого типа динамической памяти такая же, что и у BEDO, способ­ность работать на более высоких частотах приводит к тому, что SDRAM с двумя банками при тактовой частоте шины 100 МГц по производительности может по­чти вдвое превосходить память типа BEDO.

  Микросхемы DDR SDRAM. Важным этапом в дальнейшем развитии техноло­гии SDRAM стала DDR SDRAM (Double Data Rate SDRAM - SDRAM с удвоен­ной скоростью передачи данных). В отличие от SDRAM новая модификация вы­дает данные в пакетном режиме по обоим фронтам импульса синхронизации, за счет чего пропускная способность возрастает вдвое. Существует несколько специ­фикаций DDR SDRAM, в зависимости от тактовой частоты системной шины: DDR266, DDR333, DDR400, DDR533. Так, пиковая пропускная способность мик­росхемы памяти спецификации DDR333 составляет 2,7 Гбайт/с, а для DDR400 — 3,2 Гбайт/с. DDR SDRAM в настоящее время является наиболее распространен­ным типом динамической памяти персональных ВМ.

  Микросхемы RDRAM, DRDRAM. Наиболее очевидные способы повышения эффективности работы процессора с памятью — увеличение тактовой частоты шины либо ширины выборки (количества одновременно пересылаемых разрядов). К сожалению, попытки совмещения обоих вариантов наталкиваются на существен­ные технические трудности (с повышением частоты усугубляются проблемы элек­тромагнитной совместимости, труднее становится обеспечить одновременность поступления потребителю всех параллельно пересылаемых битов информации). В большинстве синхронных DRAM (SDRAM, DDR) применяется широкая вы­борка (64 бита) при ограниченной частоте шины.

  Принципиально отличный подход к построению DRAM был предложен ком­панией Rambus в 1997 году. В нем упор сделан на повышение тактовой частоты до 400 МГц при одновременном уменьшении ширины выборки до 16 бит. Новая па­мять известна как RDRAM (Rambus Direct RAM). Существует несколько разно­видностей этой технологии: Base, Concurrent и Direct. Во всех тактирование ведется по обоим фронтам синхросигналов (как в DDR), благодаря чему результирующая частота составляет соответственно 500-600, 600-700 и 800 МГц. Два первых ва­рианта практически идентичны, а вот изменения в технологии Direct Rambus (DRDRAM) весьма значительны.

  Сначала остановимся на принципиальных моментах технологии RDRAM, ори­ентируясь в основном на более современный вариант — DRDRAM. Главным от­личием от других типов DRAM является оригинальная система обмена данными между ядром и контроллером памяти, в основе которой лежит так называемый «канал Rambus», применяющий асинхронный блочно-ориентированный протокол. На логическом уровне информация между контроллером и памятью передается пакетами.

  Различают три вида пакетов: пакеты данных, пакеты строк и пакеты столбцов. Пакеты строк и столбцов служат для передачи от контроллера памяти команд уп­равления соответственно линиями строк и столбцов массива запоминающих эле­ментов. Эти команды заменяют обычную систему управления микросхемой с по­мощью сигналов RAS, CAS, WE и CS.

Микросхемы SLDRAM. Потенциальным конкурентом RDRAM на роль стандарта архитектуры памяти для будущих персональных ВМ выступает новый вид ди­намического ОЗУ, разработанный консорциумом производителей ВМ SyncLink Consortium и известный под аббревиатурой SLDRAM. В отличие от RDRAM, тех­нология которой является собственностью компаний Rambus и Intel, данный стан­дарт — открытый. На системном уровне технологии очень похожи. Данные и ко­манды от контроллера к памяти и обратно в SLDRAM передаются пакетами по 4 или 8 посылок. Команды, адрес и управляющие сигналы посылаются по однонап­равленной 10-разрядной командной шине. Считываемые и записываемые данныепередаются по двунаправленной 18-разрядной шине данных. Обе шины работают на одинаковой частоте. Пока что еще эта частота равна 200 МГц, что, благодаря технике DDR, эквивалентно 400 МГц. Следующие поколения SLDRAM должны работать на частотах 400 МГц и выше, то есть обеспечивать эффективную частоту более 800 МГц.

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

  Микросхемы ESDRAM. Это синхронная версия EDRAM, в которой использу­ются те же приемы сокращения времени доступа. Операция записи в отличие от чтения происходит в обход кэш-памяти, что увеличивает производительность ESDRAM при возобновлении чтения из строки, уже находящейся в кэш-памяти. Благодаря наличию в микросхеме двух банков простои из-за подготовки к опера­циям чтения/записи сводятся к минимуму. Недостатки у рассматриваемой мик­росхемы те же, что и у EDRAM — усложнение контроллера, так как он должен учитывать возможность подготовки к чтению в кэш-память новой строки ядра. Кроме того, при произвольной последовательности адресов кэш-память задейству­ется неэффективно.

  Микросхемы CDRAM. Данный тип ОЗУ разработан в корпорации Mitsubishi, и его можно рассматривать как пересмотренный вариант ESDRAM, свободный от некоторых ее несовершенств. Изменены емкость кэш-памяти и принцип размеще­ния в ней данных. Емкость одного блока, помещаемого в кэш-память, уменьшена до 128 бит, таким образом, в 16-килобитовом кэше можно одновременно хранить копии из 128 участков памяти, что позволяет эффективнее использовать кэш-па­мять. Замена первого помещенного в кэш участка памяти начинается только после заполнения последнего (128-го) блока. Изменению подверглись и средства доступа. Так, в микросхеме используются раздельные адресные шины для статического кэша и динамического ядра. Перенос данных из динамического ядра в кэш-память со­вмещен с выдачей данных на шину, поэтому частые, но короткие пересылки не снижают производительности ИМС при считывании из памяти больших объе­мов информации и уравнивают CDRAM с ESDRAM, а при чтении по выбо­рочным адресам CDRAM явно выигрывает. Необходимо, однако, отметить, что вышеперечисленные изменения привели к еще большему усложнению кон­троллера памяти.

Постоянные запоминающие устройства

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

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

  • EPROM (Erasable Programmable ROM — стираемые программируемые ПЗУ);

  • EEPROM (Electrically Erasable Programmable ROM — электрически стираемые программируемые ПЗУ);

  • флэш-память.

Микросхемы EPROM. В EPROM запись информации производится электри­ческими сигналами, так же как в PROM, однако перед операцией записи содержи­мое всех ячеек должно быть приведено к одинаковому состоянию (стерто) путем воздействия на микросхему ультрафиолетовым облучением1. Кристалл заключен в керамический корпус, имеющий небольшое кварцевое окно, через которое и про­изводится облучение. Чтобы предотвратить случайное стирание информации, пос­ле облучения кварцевое окно заклеивают непрозрачной пленкой. Процесс стира­ния может выполняться многократно. Каждое стирание занимает порядка 20 мин.

  Данные хранятся в виде зарядов плавающих затворов МОП-транзисторов, играю­щих роль конденсаторов с очень малой утечкой заряда. Заряженный ЗЭ соответ­ствует логическому нулю, а разряженный — логической единице. Программиро­вание микросхемы происходит с использованием технологии инжекции горячих электронов. Цикл программирования занимает нескольких сотен миллисекунд.

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

Флэш-память. Относительно новый вид полупроводниковой памяти — это флэш-память (название flash можно перевести как «вспышка молнии», что под­черкивает относительно высокую скорость перепрограммирования). Впервые анон­сированная в середине 80-х годов, флэш-память во многом похожа на EEPROM, но использует особую технологию построения запоминающих элементов. Анало­гично EEPROM, во флэш-памяти стирание информации производится электри­ческими сигналами, но не побайтово, а по блокам или полностью. Здесь следу­ет отметить, что существуют микросхемы флэш-памяти с разбивкой на очень мелкие блоки (страницы) и автоматическим постраничным стиранием, что сближает их по возможностям с EEPROM. Как и в случае с EEPROM, микро­схемы флэш-памяти выпускаются в вариантах с последовательным и парал­лельным доступом.

По организации массива ЗЭ различают микросхемы типа:

         Bulk Erase (тотальная очистка) — стирание допустимо только для всего масси­ва ЗЭ;

         Boot Lock — массив разделен на несколько блоков разного размера, содержи­мое которых может очищаться независимо. У одного из блоков есть аппарат­ные средства для защиты от стирания;

          Flash File — массив разделен на несколько равноправных блоков одинакового размера, содержимое которых может стираться независимо.

Полностью содержимое флэш-памяти может быть очищено за одну или несколь­ко секунд, что значительно быстрее, чем у EEPROM. Программирование (за­пись) байта занимает время порядка 10 мкс, а время доступа при чтении со­ставляет 35-200 нс.

  Как и в EEPROM, используется только один транзистор на бит, благодаря чему достигается высокая плотность размещения информации на кристалле (на 30% выше чем у DRAM).

Оперативные запоминающие устройства для видеоадаптеров

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

Кратко рассмотрим некоторые из типов ОЗУ, ориентированных на примене­ние в качестве видеопамяти.

Микросхемы SGRAM. Аббревиатура SGRAM (Synchronous Graphic DRAM - синхронное графическое динамическое ОЗУ) обозначает специализированный вид синхронной памяти с повышенной внутренней скоростью передачи данных. SGRAM может самостоятельно выполнять некоторые операции над видеоданными, в част­ности блочную запись. Предусмотрены два режима такой записи. В первом — ре­жиме блочной записи (Block Write) — можно изменять цвет сразу восьми элементов изображения (пикселов). Назначение второго режима — блочной записи с маски­рованием определенных битов (Masked Write или Write-per-Bit) — предотвратить изменение цвета для отдельных пикселов пересылаемого блока. Имеется также модификация данной микросхемы, известная как DDR SGRAM, отличие которой очевидно из приставки DDR. Использование обоих фронтов синхросигналов ве­дет к соответствующему повышению быстродействия ИМС.

  Микросхемы VRAM. ОЗУ типа VRAM (Video RAM) отличается высокой про­изводительностью и предназначено для мощных графических систем. При разра­ботке ставилась задача обеспечить постоянный поток данных при обновлении изоб­ражения на экране. Для типовых значений разрешения и частоты обновления изображения интенсивность потока данных приближается к 200 Мбит/с. В таких условиях процессору трудно получить доступ к видеопамяти для чтения или за­писи. Чтобы разрешить эту проблему, в микросхеме сделаны существенные архи­тектурные изменения, позволяющие обособить обмен между процессором и яд­ром VRAM для чтения/записи информации и операции по выдаче информации на схему формирования видеосигнала (ЦАП — цифро-аналоговый преобразова­тель). Связь памяти с процессором обеспечивается параллельным портом, а с ЦАП — дополнительным последовательным портом. Кроме того, динамическое ядро DRAM дополнено памятью с последовательным доступом (SAM — Serial Access Memory) емкостью 4 Кбайт. Оба вида памяти связаны между собой широ­кой внутренней шиной. Выводимая на экран информация порциями по 4 Кбайт из ядра пересылается в SAM и уже оттуда, в последовательном коде (последователь­ный код формируется с помощью подключенных к SAM сдвиговых регистров), поступает на ЦАП. В момент перезаписи в SAM новой порции ядро VRAM полно­стью готово к обслуживанию запросов процессора. Наряду с режимами Block Write и Write-per-Bit микросхема реализует режим Flash Write, позволяющий очистить целую строку памяти. Имеется также возможность маскировать определенные ячейки, защищая их от записи.

  Микросхемы WRAM. Данный вид микросхем, разработанный компанией Sam­sung, во многом похож на VRAM. Это также двухпортовая память, допускающая одновременный доступ со стороны процессора и ЦАП, но по конструкции она не­сколько проще, чем VRAM. Имеющиеся в VRAM, но редко используемые функ­ции исключены, а вместо них введены дополнительные функции, ускоряющие вывод на экран текста и заполнение одним цветом больших площадей экрана. В WRAM применена более быстрая схема буферизации данных и увеличена раз­рядность внутренней шины. Ускорено также ядро микросхемы, за счет использо­вания режима скоростного страничного режима (UFP — Ultra Fast Page), что обес­печивает время доступа порядка 15 нс. В среднем WRAM на 50% производительнее, чем VRAM, и на 20% дешевле. Применяется микросхема в мощных видеоадапте­рах.

  Микросхемы MDRAM. Микросхема типа MDRAM (Multibank DRAM — мно­гоблочное динамическое ОЗУ) разработана компанией MoSys и ориентирована на графические карты. Память содержит множество независимых банков по 1К 32-разрядных слов каждый. Банки подключены к быстрой и широкой внутренней шине. Каждый банк может выполнять определенные операции независимо от дру­гих банков. Отказ любого из банков ведет лишь к сокращению суммарной емкости памяти и некоторому снижению показателей быстродействия. Благодаря блочно­му построению технология позволяет изготавливать микросхемы практически любой емкости, не обязательно кратной степени числа 2.

Микросхемы 3D-RAM. Этот тип памяти разработан совместно компаниями Mitsubishi и Sun Microsystems с ориентацией на трехмерные графические ускори­тели. Помимо массива запоминающих элементов, микросхема 3D-RAM (трехмер­ная RAM) содержит процессор (арифметико-логическое устройство) и кэш-па­мять. Процессор позволяет выполнять некоторые операции с изображением прямо в памяти. Основные преобразования над пикселами реализуются за один такт, поскольку стандартная последовательность действий «считал, изменил, записал» сводится к одной операции — «изменить», выполняемой в момент записи. Про­цессор микросхемы позволяет за секунду выполнить около 400 млн операций по обработке данных и закрасить до 4 млн элементарных треугольников. Кэш-память обеспечивает более равномерную нагрузку на процессор при интенсивных вычис­лениях. Ядро 3D-RAM состоит из четырех банков общей емкостью 10 Мбит. Раз­мер строк памяти выбран таким, чтобы в пределах одной и той же области памяти находилось как можно больше трехмерных объектов. Это дает возможность сэко­номить время на переходы со строки на строку. По цене данный тип микросхем сравним с VRAM.

Многопортовые ОЗУ

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

Обнаружение и исправление ошибок

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

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

На рисунке показано, каким образом осуществляются обнаружение и исправ­ление ошибок. Перед записью М-разрядных данных в память производится их об­работка, обозначенная на схеме функцией «f», в результате которой формируется добавочный K-разрядный код. В память заносятся как данные, так и этот вычис­ленный код, то есть + K)-разрядная информация. При чтении информации по­вторно формируется K-разрядный код, который сравнивается с аналогичным ко­дом, считанным из ячейки. Сравнение приводит к одному из трех результатов:

  • Не обнаружено ни одной ошибки. Извлеченные из ячейки данные подаются на выход памяти.

  • Обнаружена ошибка, и она может быть исправлена. Биты данных и добавоч­ного кода подаются на схему коррекции. После исправления ошибки в М-раз­рядных данных они поступают на выход памяти.


  • Обнаружена ошибка, и она не может быть исправлена. Выдается сообщение о неисправимой ошибке.

 

Рис. 5.15. Общая схема обнаружения и исправления ошибок [200]

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

СИСтемы ввода/вывода

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

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

Технически система ввода/вывода в рамках ВМ реализуется комплексом мо­дулей ввода/вывода (МВВ). Модуль ввода/вывода выполняет сопряжение ВУ с ядром ВМ и различные коммуникационные операции между ними. Две основ­ные функции МВВ:

         обеспечение интерфейса с ЦП и памятью («большой» интерфейс);

         обеспечение интерфейса с одним или несколькими периферийными устрой­ствами («малый» интерфейс).

Анализируя архитектуру известных ВМ, можно выделить три основных спосо­ба подключения СВВ к ядру процессора (рис. 8.1).

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

 

Рис. 8.1. Место системы ввода/вывода в архитектуре вычислительной машины:

а — раздельными шинами памяти и ввода/вывода;

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

в — подключение на общих правах с процессором и памятью

 

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

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

Адресное пространство системы ввода/вывода

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

Адресное пространство ввода/вывода может быть совмещено с адресным про­странством памяти или быть выделенным. При совмещении адресного пространства для адресации модулей ввода/выво­да отводится определенная область адресов (рис. 8.2). Обычно все операции с моду­лем ввода/вывода осуществляются с использованием входящих в него внутренних регистров: управления, состояния, данных. Фактически процедура ввода/вывода сводится к записи информации в одни регистры МВВ и считыванию ее из других регистров. Это позволяет рассматривать регистры МВВ как ячейки основной па­мяти и работать с ними с помощью обычных команд обращения к памяти, при этом в системе команд ВМ вообще могут отсутствовать специальные команды ввода и вывода. Так, модификацию регистров МВВ можно производить непосредствен­но с помощью арифметических и логических команд. Адреса регистрам МВВ на­значаются в области адресного пространства памяти, отведенной под систему вво­да/вывода.

 

Рис. 8.2. Распределение совмещенного адресного пространства

Такой подход представляется вполне оправданным, если учесть, что ввод/вы­вод обычно составляет малую часть всех операций, выполняемых вычислитель­ной машиной, чаще всего не более 1% от общего числа команд в программе.

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

  Сформулируем преимущества и недостатки совмещенного адресного простран­ства.

  Достоинства совмещенного адресного пространства:

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

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

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

  Недостатки совмещенного адресного пространства:

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

  • усложнение декодирующих схем адресов в СВВ;

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

  • трудности при построении СВВ на простых модулях ввода/вывода: сигналя управления не смогут координировать сложную процедуру ввода/вывода. По­этому МВВ часто должны генерировать дополнительные сигналы под управ­лением программы.

  Совмещенное адресное пространство используется в вычислительных маши­нах MIPS и SPARC.

 

В случае выделенного адресного пространства для обращения к модулям вво­да/вывода применяются специальные команды и отдельная система адресов. Это позволяет разделить шины для работы с памятью и шины ввода/вывода, что дает возможность совмещать во времени обмен с памятью и ввод/вывод. Кроме тог:., адресное пространство памяти может быть использовано по прямому назначению в полном объеме. В вычислительных машинах фирмы IBM и микроЭВМ на базе процессоров фирмы Intel система ввода/вывода, как правило, организуется в со­ответствии с концепцией выделенного адресного пространства.

  Достоинства выделенного адресного пространства:

  • адрес внешнего устройства в команде ввода/вывода может быть коротким. В большинстве СВВ количество внешних устройств намного меньше количе­ства ячеек памяти. Короткий адрес ВУ подразумевает такие же короткие ко­манды ввода/вывода и простые дешифраторы;

  • программы становятся более наглядными, так как операции ввода/вывода вы­полняются с помощью специальных команд;

  • разработка СВВ может проводиться отдельно от разработки памяти, Недостатки выделенного адресного пространства: ввод/вывод производится только через аккумулятор центрального процессо­ра. Для передачи информации от ВУ в РОН, если аккумулятор занят, требуется выполнение четырех команд (сохранение содержимого аккумулятора, be из ВУ, пересылка из аккумулятора в РОН, восстановление содержимого аккумулятора);

  • перед обработкой содержимого ВУ это содержимое нужно переслать в ЦП.

Внешние устройства

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

  • для общения с пользователем;

  • для общения с ВМ;

  • для связи с удаленными устройствами.

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

Рис. 8.3. Структура внешнего устройства

 

Обобщенная структура ВУ показана на рис. 8.3. Интерфейс с МВБ реализует­ся в виде сигналов управления, состояния и данных. Данные представлены сово­купностью битов, которые должны быть переданы в модуль ввода/вывода или по­лучены из него. Сигналы управления определяют функцию, которая должна быть выполнена внешним устройством. Это может быть стандартная для всех устройств функция — посылка данных в МВБ или получение данных из него, либо специ­фичная для данного типа ВУ функция, такая, например, как позиционирование головки магнитного диска или перемотка магнитной ленты. Сигналы, состояния характеризуют текущее состояние устройства, в частности включено ли ВУ и го­тово ли оно к передаче данных.

Логика управления — это схемы, координирующие работу ВУ в соответствии с направлением передачи данных. Задачей преобразователя является трансфор­мация информационных сигналов, имеющих самую различную физическую при­роду, в электрические сигналы, а также" обратное преобразование. Обычно совместно с преобразователем используется буферная память, обеспечивающая временное хранение данных, пересылаемых между МВБ и ВУ.

Модули ввода/вывода

Функции модуля

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

  • локализация данных;

  • управление и синхронизация;

  • обмен информацией;

  • буферизация данных;

  • обнаружение ошибок.

Локализация данных

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

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

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

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

 Управление и синхронизация

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

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

В отличие от обмена с памятью процессы ввода/вывода и работа ЦП протека­ют не синхронно. Очередная порция информация может быть выдана на устрой­ство вывода лишь тогда, когда это устройство готово их принять. Аналогично, ввод от устройства ввода допустим только в случае доступности информации на уст­ройстве ввода. Несинхронный характер процессов ввода/вывода предполагает об­мен сигналами, аналогичный процедуре «рукопожатия» (handshake), описанной в главе 4. Для двухпроводной системы синхронизации эта процедура состоит из четырех шагов, которые применительно к операции вывода можно описать следу­ющим образом:

1.       Центральный процессор с помощью сигнала ДД = 1 (данные достоверны) изве­щает о доступности данных, подлежащих выводу.

2.       Приняв данные, устройство вывода сообщает процессору об их получении сиг­налом ДП = 1 (данные приняты).

3.       Получив подтверждение, ЦП обнуляет сигнал ДД и снимает данные с шины, после чего может выставить на шину новые данные.

4.       Обнаружив, что ДД = 0, устройство вывода, в свою очередь, устанавливает в ну­левое состояние сигнал ДП, после чего оно готово для обработки принятых дан­ных все время до получения очередного сигнала ДД = 1.

Описанную процедуру иллюстрирует рис. 8.4 (в скобках указаны номера ша­гов).

 

Рис. 8.4. Временная диаграмма процедуры «рукопожатия»

 

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

Обмен информацией

Основной функцией МВВ является обеспечение обмена информацией. Со сторо­ны «большого» интерфейса — это обмен с ЦП, а со стороны «малого» интерфей­са — обмен с ВУ. В таком плане требования к МВВ непосредственно проистекают из типовой последовательности операций, выполняемых процессором при вводе/выводе.

1.       Выбор требуемого внешнего устройства.

2.       Определение состояния МВБ и ВУ.

3.       Выдача указания модулю ввода/вывода на подключение нужного ВУ к про­цессору.

4.       Получение от МВБ подтверждения о подключении затребованного ВУ к про­цессору.

5.       Распознавание сигнала готовности устройства к передаче очередной порции информации.

6.       Прием (передача) порции информации.

7.       Циклическое повторение двух предшествующих пунктов до завершения пере­дачи информации в полном объеме.

8.       Логическое отсоединение ВУ от процессора.

С учетом описанной процедуры функция обмена информацией с ЦП включает в себя:

         дешифровку команды: МВБ получает команды из ЦП в виде сигналов на шине управления;

         пересылку данных между МВБ и ЦП по шине данных;

         извещение о состоянии: из-за того, что БУ — медленные устройства, важно знать состояние модуля ввода/вывода. Так, в момент получения запроса на пересыл­ку данных в центральный процессор МВВ может быть не готов выполнить эту пересылку, поскольку еще не завершил предыдущую команду. Этот факт дол­жен быть сообщен процессору с помощью соответствующего сигнала. Возмож­ны также сигналы, уведомляющие о возникших ошибках;

         распознавание адреса; МВВ обязан распознавать адрес каждого ВУ, которым он управляет.

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

Буферизация

Важной задачей модуля ввода/вывода является буферизация данных, необходи­мость которой иллюстрирует табл. 8.1.

Таблица 8.1. Примеры устройств ввода/вывода, упорядоченные по режиму работы, субъекту и скорости передачи данных

Устройство

Режим работы

Партнер

Скорость передачи данных, Кбайт/с

Клавиатура

Ввод

Человек

0,01

Мышь

Ввод

Человек

0,02

Сканер

Ввод

Человек

200

Строчный принтер

Вывод

Человек

1

Лазерный принтер

Вывод

Человек

100

Графический дисплей

Вывод

Человек

30000

Локальная сеть

Ввод/вывод

ВМ

200

Гибкий диск

Память

ВМ

50

Оптический диск

Память

ВМ

500

Магнитный диск

Память

ВМ

2000

 

Несмотря на различия в скорости обмена информацией для разных ВУ, все они в этом плане значительно отстают от ЦП и памяти. Такое различие компенсирует­ся за счет буферизации. При выводе информации на ВУ данные пересылаются из основной памяти в МВБ с большой скоростью. В модуле эти данные буферизируются и затем направляются в ВУ со скоростью, свойственной последнему. При вводе из ВУ данные буферизируются так, чтобы не заставлять память работать в режиме медленной передачи. Таким образом, МВБ должен обладать способнос­тью работать как со скоростью памяти, так и со скоростью ПУ.

 Обнаружение ошибок

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

  • воздействие внешней среды;

  • старение элементной базы;

  • системное программное обеспечение;

  • пользовательское программное обеспечение.

Из наиболее «активных» факторов окружения ВМ следует выделить:

  • загрязнение и влагу;

  • повышенную или пониженную температуру окружающей среды;

  • электромагнитное облучение;

  • скачки напряжения питания.

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

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

Источником ошибок может стать и несовершенство системного программного обеспечения (ПО):

  • непредвиденные последовательности команд или кодовые комбинации;

  • некорректное распределение памяти;

  • недостаточный размер буфера ввода/вывода;

  • недостаточно продуманные и оттестированные комбинации системных модулей.

Среди ошибок, порождаемых пользовательским ПО, наиболее частыми явля­ются:

  • нарушение последовательности выполнения программы;

  • некорректные процедуры.

Вероятность возникновения ошибки внутри процессора для современных ЦП оценивается величиной порядка 10-18, в то время как для остальных составляющих ВМ она лежит в диапазоне 10-8 – 10-12.

Методы управления вводом/выводом

В ВМ находят применение три способа организации ввода/вывода (В/ВЫВ):

  • программно управляемый ввод/вывод;

  •  ввод/вывод по прерываниям;

  • прямой доступ к памяти.

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

Ввод/вывод по прерываниям во многом совпадает с программно управляемым методом. Отличие состоит в том, что после выдачи команды ввода/вывода ЦП не должен циклически опрашивать МВВ для выяснения состояния устройства. Вме­сто этого процессор может продолжать выполнение других команд до тех пор, пока не получит запрос прерывания от МВВ, извещающий о завершении выполнения ранее выданной команды В/ВЫВ. Как и при программно управляемом В/ВЫВ, ЦП отвечает за извлечения данных из памяти (при выводе) и записи данных в память (при вводе).

Повышение как скорости В/ВЫВ, так и эффективности использования ЦП обеспечивает третий способ В/ВЫВ — прямой 'доступ к памяти (ПДП). В этом режиме основная память и модуль ввода/вывода обмениваются информацией на­прямую, минуя процессор.

Программно управляемый ввод/вывод

Наиболее простым методом управления вводом/выводом является программно управляемый ввод/вывод, часто называемый также вводом /выводом с опросом. Здесь ввод/вывод происходит под полным контролем центрального процессора и реа­лизуется специальной процедурой ввода/вывода. В этой процедуре ЦП с помощью команды ввода/вывода сообщает модулю ввода/вывода, а через него и внешнему устройству о предстоящей операции. Адрес модуля и ВУ, к которому производит­ся обращение, указывается в адресной части команды ввода или вывода. Модуль исполняет затребованное действие, после чего устанавливает в единицу соответ­ствующий бит в своем регистре состояния. Ничего другого, чтобы уведомить ЦП, модуль не предпринимает. Следовательно, для определения момента за­вершения операции или пересылки очередного элемента блока данных про­цессор должен периодически опрашивать и анализировать содержимое регис­тра состояния МВБ.

Иллюстрация процедуры программно управляемого ввода блока данных с уст­ройства ввода приведена на рис. 8.6. Данные читаются пословно. Для каждого читаемого слова ЦП должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных МВБ, то есть доступно для считывания.

Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного МВБ и конкретного ВУ. Существуют четыре типа команд В/ВЫВ, которые может получить МВБ: управление, проверка, чтение и за­пись.

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

Команда проверки применяется для проверки различных ситуаций, возникаю­щих в МВБ и ВУ в процессе ввода/вывода. С помощью таких команд ЦП спосо­бен выяснить, включено ли ВУ, готово ли оно к работе, завершена ли последняя операция ввода/вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния МВБ.

Команда чтения побуждает модуль получить элемент данных из ВУ и занести его в регистр данных (РД). ЦП может получить этот элемент данных, запросив МВБ поместить его на шину данных.

Команда записи заставляет модуль принять элемент данных (байт или слово) с шины данных и переслать его в РД с последующей передачей в ВУ.

 

Рис. 8.6. Программно управляемый ввод данных

 

Если к МВБ подключено несколько ВУ, то в процедуре ввода/вывода нужно производить циклический опрос всех устройств, с которыми в данный момент up-. -изводятся операции В/ВЫВ.

Из блок-схемы (см. рис. 8.6) явно виден основной недостаток программно управляемого В/ВЫВ — неэффективное использование процессора из-за ожидания готовности очередной порции информации, в течение которого никаких иных по­лезных действий ЦП не выполняет. Кроме того, пересылка даже одного слова тре­бует выполнения нескольких команд. ЦП должен тратить время на анализ битов состояния МВБ, запись в МВБ битов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно ска­зывается на эффективности ввода/вывода.

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

Ввод/вывод по прерываниям

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

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

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

 

Рис. 8.7. Ввод данных по прерыванию

 

Этот метод эффективнее программно управляемого В/ВЫВ, поскольку устра­няет ненужные ожидания, однако обработка прерывания занимает достаточно много времени ЦП. Кроме того, каждое слово, пересылаемое из памяти в модуль В/ВЫВ или в противоположном направлении, как и при программно управляе­мом В/ВЫВ, проходит через ЦП.

Реализация ввода/вывода по прерываниям

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

Сначала рассмотрим вопрос идентификации устройства. Здесь возможны три основных метода:

  • множественные линии прерывания;

  • программная идентификация;

  • векторное прерывание.

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

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

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

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

 

Рис. 8.8. Идентификация запроса с помощью вектора прерывания

 

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

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

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

Прямой доступ к памяти

Хотя ввод/вывод по прерываниям эффективнее программно управляемого, оба этих метода страдают двумя недостатками:

  • темп передачи при вводе/выводе ограничен скоростью, с которой ЦП в состоя­нии опросить и обслужить устройство;

  • ЦП вовлечен в управление передачей, для каждой пересылки он должен вы­полнить определенное количество команд.

Когда пересылаются большие объемы данных, требуется более эффективны;: способ ввода/вывода— прямой доступ к памяти (ПДП). ПДП предполагает на­личие на системной шине дополнительного модуля — контроллера прямого дос­тупа к памяти (КПДП), способного брать на себя функции ЦП по управлению системной шиной и обеспечивать прямую пересылку информации между ОП и ВУ. без участия центрального процессора. В сущности, КПДП — это и есть модуль ввода/вывода, реализующий режим прямого доступа к памяти.

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

         вида запроса (чтение или запись);

         адреса устройства в в од а/вы во да;

         адреса начальной ячейки блока памяти, откуда будет извлекаться или куда бу­дет вводиться информация;

          количества слов, подлежащих чтению или записи.

 

Рис. 8.9. Организация прямого доступа к памяти

 

Первый параметр определяет направление пересылки данных: из ОП в ВУ или наоборот. За исходную точку обычно принимается память, поэтому под чтением понимают считывание данных из ОП и выдачу их на устройство вывода, а под записью — прием данных из устройства ввода и запись в ОП. Вид запроса запоми­нается в схеме логики управления контроллера.

К КПДП обычно могут быть подключены несколько ВУ, а адрес УВВ конкре­тизирует, какое из них должно участвовать в предстоящем обмене данными. Этот адрес запоминается в логике управления КПДП.

Третий параметр — адрес начальной ячейки — хранится в регистре адреса (РА) контроллера. После передачи каждого слова содержимое РА автоматически уве­личивается на единицу, то есть в нем формируется адрес следующей ячейки ОП.

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

После инициализации процесс пересылки информации может быть начат в лю­бой момент. Инициаторами обмена вправе выступать как ЦП, так и ВУ. Устрой­ство, желающее начать В/ВЫВ, извещает об этом контроллер подачей соответ­ствующего сигнала. Получив такой сигнал, КПДП выдает в ЦП сигнал «Запрос ПДП». В ответ ЦП освобождает шины адреса и данных, а также тс линии шины управления, по которым передаются сигналы, управляющие операциями на шине адреса (IIIА) и шине данных (ШД). К таким, прежде всего, относятся линии ЧтЗУ, ЗпЗУ, Выв, Вв и линия выдачи адреса на 111 А. Далее ЦП отвечает контроллеру сиг­налом «Подтверждение ПДП», который для последнего означает, что ему делеги­рованы права на управление системной шиной и можно приступать к пересылке данных.

Процесс пересылки каждого слова блока состоит из двух этапов.

При выполнении операции чтения (ОП → ВУ) на первом этапе КПДП выстав­ляет на шину адреса содержимое РА (адрес текущей ячейки ОП) и формирует сигнал ЧтЗУ. Считанное из ячейки ОП слово помещается на шину данных. На вто­ром этапе КПДП выставляет на ША адрес устройства вывода и формирует сигнал Выв, который обеспечивает передачу слова с шины данных в ВУ.

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

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

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

Когда пересылка завершена (при нулевом значении в СД), КПДП снимает сиг­нал «Запрос ПДП», в ответ на что ЦП снимает сигнал «Подтверждение ПДП» и вновь берет на себя управление системной шиной, то есть ЦП вовлечен в про­цесс ввода/вывода только в начале и конце передачи.

Эффективность ПДП зависит от того, каким образом реализовано распределе­ние системной шины между ЦП и КПДП в процессе пересылки блока. Здесь мо­жет применяться один из трех режимов:

  • блочная пересылка;

  • пропуск цикла;

  • прозрачный режим.

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

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

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

В отличие от обычного прерывания в пределах цикла команды имеется несколь­ко точек, где КПДП вправе захватить шину (рис 8.10). Отметим, что это не преры­вание: процессору не нужно запоминать контекст задачи.

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

 

Механизм ПДП может быть реализован различными путями. Некоторые воз­можности показаны на рис. 8.11.

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

 

Рис. 8.11. Возможные конфигурации систем прямого доступа к памяти

 

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

Каналы и процессоры ввода/вывода

По мере развития систем В/ВЫВ их функции усложняются. Главная цель такого усложнения — максимальное высвобождение ЦП от управления процессами вво­да/вывода. Некоторые пути решения этой задачи уже были рассмотрены. Следу­ющими шагами в преодолении проблемы могут быть:

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

2.           Рассмотренному в пункте 1 процессору ввода/вывода придается собственная локальная память, при этом возможно управление множеством устройств В/ ВЫВ с минимальным привлечением ЦП.

В первом случае МВБ называют каналом ввода/вывода (КВВ), а во втором — процессором ввода/вывода. В принципе различие между каналом и процессором ввода/вывода достаточно условно, поэтому в дальнейшем будем пользоваться тер­мином «канал».

Концепция системы ввода/вывода с КВВ характерна для больших универсаль­ных вычислительных машин (мэйнфреймов), где проблема эффективной организации В/ВЫВ и максимального высвобождения центрального процессора в пользу его основной функции стоит наиболее остро. СВВ с каналами ввода/вывода была предложена и реализована в ВМ семейства IBM 360 и получила дальнейшее раз­витие в семействах IBM 370 и IBM 390.

В ВМ с каналами ввода/вывода центральный процессор практически не уча­ствует в непосредственном управлении внешними устройствами, делегируя эту задачу специализированному процессору, входящему в состав КВВ. Все функции ЦП сводятся к запуску и остановке операций в КВВ, а также проверке состояния канала и подключенных к нему ВУ. Для этих целей ЦП использует лишь несколь­ко (от 4 до 7) команд ввода/вывода. Например, в IBM 360 таких команд четыре:

  • «Начать ввод/вывод»;

  • «Остановить ввод/вывод»;

  • «Проверить ввод/вывод»;

  • «Проверить канал».

КВВ реализует операции В/ВЫВ путем выполнения так называемой каналь­ной программы. Канальные программы для каждого ВУ, с которым предполагает­ся обмен информацией, описывают нужную последовательность операций ввода/ вывода и хранятся в основной памяти ВМ. Роль команд в канальных программах выполняют управляющие слова канала (УСК), структура которых отличается от структуры обычной машинной команды. Типовое УСК содержит:

  • код операции, определяющий для КВВ и ВУ тип операции: «Записать» (вывод информации из ОП в ВУ), «Прочитать» (ввод информации из ВУ в ОП), «Уп­равление» (перемещение головок НМД, магнитной ленты и т, п.);

  • указатели — дополнительные предписания, задающие более сложную после­довательность операций В/ВЫВ, например при вводе пропускать отдельные записи или наоборот — с помощью одной команды вводить «разбросанный» по ОП массив как единый;

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

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

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

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

  • процессор (первый уровень управления);

  • канал ввода/вывода (второй уровень);

  • внешнее устройство (третий уровень).

Каждому типу устройств соответствует свой вид управляющей информации:

  • процессору — команды ввода/вывода;

  • каналу — управляющие слова канала;

  • периферийному устройству — приказы.

Структура ВМ с канальной системой ввода/вывода показана на рис. 8.12.

 

Рис. 8.12. ВМ с канальной системой ввода/вывода

 

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

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

Обмен информацией между ВУ и ОП, как уже упоминалось, реализуется в ре­жиме прямого доступа к памяти, при этом для взаимодействия ЦП и канала задей­ствованы сигналы «Запрос ПДП» и «Подтверждение ПДП».

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

Способ организации взаимодействия ВУ с каналом определяется соотношени­ем быстродействия ОП и ВУ. По этому признаку ВУ образуют две группы: быст­родействующие (накопители па магнитных дисках (НМД), накопители на магнит­ных лентах (НМЛ)) со скоростью приема и выдачи информации около 1 Мбайт/с и медленнодействующие (дисплеи, печатающие устройства и др.) со скоростями порядка 1 Кбайт/с и менее. Быстродействие основной памяти обычно значитель­но выше. С учетом производительности ВУ в КВВ реализуются два режима рабо­ты: мультиплексный (режим разделения времени) и монопольный.

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

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

Повышение производительности дисковой подсистемы

Повышение производительности дисковой подсистемы в RAID достигается с по­мощью приема, называемого расслоением или расщеплением (striping). В его осно­ве лежит разбиение данных и дискового пространства на сегменты, так называе­мые полосы (strip — узкая полоса). Полосы распределяются по различным дискам массива, в соответствии с определенной системой. Это позволяет производить параллельное считывание или запись сразу нескольких полос, если они расположе­ны на разных дисках. В идеальном случае производительность дисковой подсис­темы может быть увеличена в число раз, равное количеству дисков в массиве. Размер (ширина) полосы выбирается исходя из особенностей каждого уровня RAID и может быть равен биту, байту, размеру физического сектора МД (обычно 512 байт) или размеру дорожки.

  Чаще всего логически последовательные полосы распределяются по последо­вательным дискам массива. Так, в и-дисковом массиве п первых логических полос физически расположены как первые полосы на каждом из п дисков, следующие п полос — как вторые полосы на каждом физическом диске и т. д. Набор логичес­ки последовательных полос, одинаково расположенных на каждом ЗУ массива, называют поясом (stripe — широкая полоса).

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

Повышение отказоустойчивости дисковой подсистемы

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

  • дублирование;

  • код Хэмминга;

  • биты паритета.

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

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

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

RAID уровня О

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

В основе RAID 0 лежит расслоение данных. Полосы распределены по всем дис­кам массива дисковых ЗУ по циклической схеме (рис. 5.39). Преимущество такого распределения в том, что если требуется записать или прочитать логически по­следовательные полосы, то несколько таких полос (вплоть до п) могут обрабаты­ваться параллельно, за счет чего существенно снижается общее время ввода/вы­вода. Ширина полос в RAID 0 варьируется в зависимости от применения, но в любом случае она не менее размера физического сектора МД.

Рис. 5.39. RAID уровня 0

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

RAID уровня 1

В RAID 1 избыточность достигается с помощью дублирования данных. В принци­пе исходные данные и их копии могут размещаться по дисковому массиву произ­вольно, главное чтобы они находились на разных дисках. В плане быстродействия и простоты реализации выгоднее, когда данные и копии располагаются идентично на одинаковых дисках. Рисунок 5.40 показывает, что, как и в RAID 0, здесь имеет место разбиение данных на полосы. Однако в этом случае каждая логическая по­лоса отображается на два отдельных физических диска, так что каждый диск в мас­сиве имеет так называемый «зеркальный» диск, содержащий идентичные данные: Для управления каждой парой дисков может быть использован общий контрол­лер, тогда данные сначала записываются на основной диск, а затем — на «зеркаль­ный» («зеркалирование»). Более эффективно применение самостоятельных кон­троллеров для каждого диска, что позволяет производить одновременную запись на оба диска.

Рис. 5.40. RAID уровня 1

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

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

RAID уровня 2

В системах RAID 2 используется техника параллельного доступа, где в выполне­нии каждого запроса на В/ВЫВ одновременно участвуют все диски. Обычно шпин­дели всех дисков синхронизированы так, что головки каждого ЗУ в каждый мо­мент времени находятся в одинаковых позициях. Данные разбиваются на полосы длиной в 1 бит и распределены по дискам массива таким образом, что полное ма­шинное слово представляется поясом, то есть число дисков равно длине машинного слова в битах. Для каждого слова вычисляется корректирующий код (обычно это код Хэмминга, способный корректировать одиночные и обнаруживать двойные ошиб­ки), который, также побитово, хранится на дополнительных дисках (рис. 5.41). На­пример, для массива, ориентированного на 32-разрядные слова (32 основных диска) требуется семь дополнительных дисковых ЗУ (корректирующий код состоит из 7 разрядов).

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

  RAID 2 позволяет достичь высокой скорости В/ВЫВ при работе с большими последовательными записями, но становится неэффективным при обслуживании записей небольшой длины. Основное преимущество RAID 2 состоит в высокой степени защиты информации, однако предлагаемый в этой схеме метод коррекции уже встроен в каждое из современных дисковых ЗУ.

Рис. 5.41. RAID уровня 2

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

RAID уровня 3

RAID 3 организован сходно с RAID2. Отличие в том, что RAID 3 требует только одного дополнительного диска — диска паритета, вне зависимости от того, на­сколько велик массив дисков (рис. 5.42). В RAID 3 используется параллель­ный доступ к данным, разбитым на полосы длиной в бит или байт. Все диски массива синхронизированы. Вместо кода Хэмминга для набора полос идентич­ной позиции на всех дисках массива (пояса) вычисляется полоса, состоящая из битов паритета. В случае отказа дискового ЗУ производится обращение к диску паритета, и данные восстанавливаются по битам паритета и данным от остальных дисков

массива.

Рис. 5.42. RAID уровня 3

Так как данные разбиты на очень маленькие полосы, RAID 3 позволяет дости­гать очень высоких скоростей передачи данных. Каждый запрос на ввод/вывод приводит к параллельной передаче данных со всех дисков. Для приложений, свя­занных с большими пересылками данных, это обстоятельство очень существенно. С другой стороны, параллельное обслуживание одиночных запросов невозможно, и производительность дисковой подсистемы в этом случае падает.

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

RAID уровня 4

По своей идее и технике формирования избыточной информации RAID 4 иденти­чен RAID 3, только размер полос в RAID 4 значительно больше (обычно один-два физических блока на диске). Главное отличие состоит в том, что в RAID 4 исполь­зуется техника независимого доступа, когда каждое ЗУ массива в состоянии функ­ционировать независимо, так, что отдельные запросы на ввод/вывод могут удов­летворяться параллельно (рис. 5.43).

Для RAID 4 характерны издержки, обусловленные независимостью дисков. Если в RAID 3 запись производилась одновременно для всех полос одного пояса, в RAID 4 осуществляется запись полос в разные пояса. Это различие ощущается особенно при записи данных малого размера.

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

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

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

Массивы RAID 4 наиболее подходят для приложений, требующих поддержки высокого темпа поступления запросов ввода/вывода, и уступает RAID 3 там, где приоритетен большой объем пересылок данных.

RAID уровня 5

RAID 5 имеет структуру, напоминающую RAID 4. Различие заключается в том, что RAID 5 не содержит отдельного диска для хранения полос паритета, а разно­сит их по всем дискам. Типичное распределение осуществляется по циклической схеме, как это показано на рис. 5.44. В я-дисковом массиве полоса паритета вычис­ляется для полос п— 1 дисков, расположенных в одном поясе, и хранится в том же поясе, но на диске, который не учитывался при вычислении паритета. При перехо­де от одного пояса к другому эта схема циклически повторяется. 

Рис. 5.44. RAID уровня 5

Распределение полос паритета по всем дискам предотвращает возникновение проблемы, упоминавшейся для RAID 4.

RAID уровня 6

RAID 6 очень похож на RAID 5. Данные также разбиваются на полосы размером в блок и распределяются по всем дискам массива. Аналогично, полосы паритета распределены по разным дискам. Доступ к полосам независимый и асинхронный. Различие состоит в том, что на каждом диске хранится не одна, а две полосы пари­тета. Первая из них, как и в RAID 5, содержит контрольную информацию для по­лос, расположенных на горизонтальном срезе массива (за исключением диска, где эта полоса паритета хранится). В дополнение формируется и записывается вторая полоса паритета, контролирующая все полосы какого-то одного диска массива (вер­тикальный срез массива), но только не того, где хранится полоса паритета. Ска­занное иллюстрируется рис. 5.45.


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

Рис. 5.46. RAID уровня 7

1

Смотреть полностью


Похожие документы:

  1. Организация однопроцессорных ЭВМ 2 > общие вопросы истории развития и построения ЭВМ 2

    Документ
    ... с машиной, вопросы логической организации представления, хранения и преобразования ... И. Информатика: Системы счисления и компьютерная арифметика. – М.: Лаборатория Базовых Знаний ... цифровой информации имеют многоуровневую структуру, т.е. построены ...
  2. #организация производства и управление предприятием учебник

    Учебник
    ... предприятия. Структура КС УКП предусматривает многоуровневую организацию управления: на уровне объединения (предприятия ... регулирование технологических процессов, статистический анализ, компьютерная технология и др. Отраслевая наука практически ...
  3. «Компьютерная лингвистика и интеллектуальные технологии» (1)

    Документ
    ... работы в компьютерной лексикографии Сфера компьютерной лексикографии довольно широка ... лексическими элементами; многоуровневые лексико-синтаксические конструкции ... интеграционный organization <интеграционная> организация 0 integration интеграция economic ...
  4. Организация образовательного процесса на основе требований СанПиН. Директор Халимова Г. К. зам директора по икт халиуллина Г. С. зам директора по увр бадретдинова А. М

    Документ
    ... десятилетия. Это сложный многоуровневый процесс, который нельзя ... информационной базы данных, использование компьютерных технологий, хранение и обработки ... технологий в преподавании и организации жизнедеятельности школьников. Информатизация образования ...
  5. «Компьютерная лингвистика и интеллектуальные технологии» (3)

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

Другие похожие документы..