ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет радиофизики и компьютерных технологий Кафедра интеллектуальных систем КУРС ЛЕКЦИЙ по специальному курсу «Компьютерные системы» Учебное пособие для студентов факультета радиофизики и компьютерных технологий Электронная версия для специальности: 1-34 04 02 1-31 04 03 Физическая электроника Специализация 1-31 04 03 14 «Интеллектуальные системы» Минск 2011 1 УДК 681.31:621.38 ББК 32.841я43+32.85я43 ISBN 5-06-0004597 Шестаков К. М. Р15 Курс лекций по специальному курсу «Компьютерные системы»: Электронная версия. Учебное пособие для студентов факультета радиофизики и компьютерных технологий. – Мн.: БГУ, – 162 c. ISBN 985-445-093 Предназначен для студентов факультета радиофизики и компьютерных технологий. В курсе несколько шире, чем на лекциях, показаны сложные структуры компьютерных систем и их компонентов. Архитектура компьютерных систем, магистральные структуры, центральные процессоры, цифровые процессоры сигналов, микроконтроллеры и т. п. отражены в курсе. УДК 681.31:621.38 ББК 32.841я43+32.85я43 ISBN 5-06-0004597 © БГУ, 2011 2 Введение Современные компьютерные системы (КС) характеризуются большим разнообразием компонентов. Варьируется состав, связи и типы компонентов. Это определяется спецификой решаемых задач, состоянием предложений на рынке СБИС и периферийных устройств. Динамика развития компонентов в последние годы начинает обгонять прогнозы, в том числе и базирующиеся на расчетах по закономерностям Мура. Примером может служить практически ежеквартальные изменения лидирующих архитектур видеоадаптеров. Парадоксально, но рынок центральных процессоров сегодня наиболее стабилен, годовой цикл обновления, характерный для него, можно назвать самым длительным. Возможности новых систем неуклонно растут. Однако и ранее выпущенные КС должна сохранять приспосабливаемость к решению новых, в том числе и более сложных, задач (назовем это гибкостью КС). В ряде случаев необходимо поддерживать в определенной степени и конкурентоспособность снятых с производства КС. Если учесть то, что жизненный цикл компьютерной системы превышает пять лет, то оптимальное решение такой задачи весьма не просто. Гибкость архитектуры сегодня обеспечивается на уровне унификации интерфейса микроконтроллеров, СБИС специализации, системных интерфейсов, стандартизации электрической части спецификации интерфейса, резервирования адресных областей в протоколах обмена, кодов режимов и т. п. Гибкость программной среды, включающей в себя рабочие программы, языки программирования КС и ее компонентов, библиотеки модулей, сохраняется, во- первых, удалением точек приложения разработчиков программ пользователей от специфики аппаратной реализации функций путем введения специализированного под функцию набора команд высокого уровня, которые выполняются через услуги операционной системы и поддерживаются аппаратными акселераторами, а при отсутствии последних, программными конструкциями (практически макросами). Во вторых снижение затрат разработки прикладных программ благодаря использованию библиотек программных модулей, широко представленных на рынке и имеющих определенную специализацию (работа в реальном времени, секретность и т. п.). Специализируясь в подотраслях КС необходимо быть готовым к существенному, довольно частому пополнению теоретических знаний, надо уметь хорошо анализировать новые решения, абстрагируясь от рекламной составляющей. 3 1. История развития, классификация КС История развития компьютера начинается, вероятно, с 1836 года. Тогда Ч. Беббидж предложил структуру, по сути последовательной, машины для расчета астрономических и морских таблиц. Он видел ее как совокупность: склад (50 40-ка значных десятичных чисел) (прообраз запоминающего устройства ЗУ); мельница (сложение, вычитание, умножение, деление) два аккумулятора для промежуточных результатов (прообраз арифметико-логического устройства АЛУ); перфокарта для переноса со склада к мельнице и обратно чисел (прообраз устройства управления УУ). Рис. 1.1. Укрупненная схема структуры последовательной машины На рис.1.1. приведена укрупненная схема предложенного решения. Задача решалась последовательностью действий через одно АЛУ. В дальнейшем ход последовательности стал определять счетчик команд (указатель команд, в развитии адресный процессор). Внешние устройства в реальных системах - клавиатура, мышь, дисплеи, сложные технические устройства и т. п. реализуют, при необходимости, связь оператором и т. д. Запоминающее устройство - сегодня иерархическая память различного быстродействия, дисководы и т. п. поставляют числа и получают результат. Цифра стала основой функционирования системы, это и операнд, это и команда. В 1918 М.А. Бонч-Бруевич создает на двух электронных лампах триггер. Ставший, в своей схеме, основой запоминающих быстродействующих устройств – регистров и т.п. В 1931 Винн-Вильямс создает счетчик на электронных лампах. Начавшееся десятилетие практически стало стартом теории компьютеров. Наряду с аппаратной частью поднимаются на первую ступень и 4 теория построения КС. Не зависимо друг от друга Э.Х. Пост (США) и А.М. Тьюринг (Великобритания) дали уточненное понятие «алгоритм» и доказали универсальность не которого, весьма небольшого набора команд. Рис. 1.2. Классический цикл управления Они предложили довольно простую архитектуру, перекликающуюся с архитектурой Ч. Беббиджа. Пусть, это бесконечная лента, ячейки которой имеют координаты, в каждой ячейке записана метка или отсутствует запись (True или False), эта метка считывается. Каретка движется вдоль ленты. Команды (6 команд): 1. Движение влево; 5 Движение вправо; Запись метки; Стирание метки; Передача управления по состоянию ячейки (сдвиг на метку с номером n1 или n2); 6. Остановка. Номер команды i (ni) изменяется последовательно, нарастая или убывая. По пятой команде номер может изменяется скачком. Оба автора доказали то что любая алгоритмизируемая задача решается на приведенной машине. Это сняло вопросы о полноте набора команд и длине операнда. В 1940 г. Ноберт Винер предложил за базу функционирования компьютера принять двоичную систему исчисления. В 1946 г. Джон фон Нейман прорабатывает архитектуру компьютера, в которой данные и команды размещаются в запоминающем устройстве. Их различие определяется только адресом. По сути именно здесь появляется четко счетчик команд. Остановимся еще на классическом цикле управления фон Неймана установившемся в начальные годы развития компьютеров рис.1.2. Основа этого цикла содержимое указателя команд. По нему извлекается команда, дешифрируется, выполняется. Для целей управления и для соблюдения универсальности проверяется наличие сигналов внешних прерываний, если имело место, текущее значение указателя команд переносится в стек. Новое значение адреса первой команды программы обработки прерывания передается в указатель команд. При отсутствии прерывания указатель команд наращивается на размерность команды в байтах и цикл повторяется. Как видим, цикл бесконечен. Он требует только начального адреса при старте. Такие архитектуры называют еще системами управляемыми указателем команд. В 1944 году появляется первая релейная машина Марк 1, и в 1947 вторая Марк 2 (руководитель работы – американский физик Г. Айкен). С 50-х годов началась последовательность успешных машин. Это и ЭДСАК 1949 г. (Кембридж руководитель М. Уилкс), МЭСМ (малая счетная машина) -1951г., БЭСМ – 1952 г. (СССР руководитель С.А. Лебедев). Мировой парк машин в 1965 г. превысил 50 тысяч шт., а в 1975 г. – 200 тысяч шт. В 50-е годы сформировалось понятие классической архитектуры последовательной машины. Оно базируется на предложениях фон Неймана: 1. Единственная последовательно адресуемая память; 2. Память линейна (одномерна); 2. 3. 4. 5. 6 3. Отсутствует физическое различие между командой и данными кроме их расположения в памяти; 4. Отсутствуют какие либо признаки идентификации типа данных. Новые положения, которые принесли первые десятилетия создания компьютеров, дополнили архитектуру: 1. Введение регистров общего назначения (РОН). По-видимому, это 1956 год фирма Feranti машина Pegasus; 2. Косвенная адресация, т.е. команда, указывает адрес, по которому находится информация о месте положения операнда. Вероятно это 1958 год, фирма IBM машина 709; 3. Индексные регистры, адрес операнда формируется добавлением содержимого регистра умноженного на размер операнда к базовому адресу. Манчестерский университет, 1949 год; 4. Виртуальная память. Память на страницы. Адрес страниц памяти расположения программы становится виртуальным. Буфер трансляции адреса проецирует ее на свободную область физических адресов. Система Atlas Манчестерский университет 1959 г. 5. Программные прерывания. Univac 1103, 1954 г. 6. Данные в форме плавающей точки. Компьютеры NORC и 704 IBM 1954 г. 7. Мультипроцессорная обработка потоки из общей памяти. Конец 50-х начало 60-х годов. В ряде машин слабо связано между собой. Приведенная хронология не претендует на строгость и полноту. Важно понять то, что тот образ, который имеют современные компьютеры, сформировался на простых положениях в прошлом столетии. Одновременно начаты попытки описать возникающие структуры. Классификация вычислительных систем. Рассмотрим «академические» варианты предложенных классификаций. Майкл Флинн предложил в 1966 году следующую классификацию вычислительных систем, первый слой которой основан на количестве потоков входных данных и количестве потоков команд, которые эти данные обрабатывают: Один поток ин- Несколько потоков струкций инструкций Один поток данных SISD MISD Несколько потоков данных SIMD MIMD 7 SISD (Single Instruction Single Data): это обычные последовательные компьютеры. Программа принимает один поток данных и выполняет один поток инструкций по обработке этих данных. MISD (Multiple Instruction Single Data): разные потоки инструкций выполняются с одними и теми же данными. Обычно такие системы не приводят к ускорению вычислений, так как разные инструкции оперируют одними и теми же данными, в результате на выходе системы получается один поток данных. К таким системам относят различные системы дублирования и защиты от сбоев, когда, например, несколько процессоров дублируют вычисления друг друга для надёжности. Иногда к этой категории относят конвейерные архитектуры. Среди процессоров производства Intel, конвейер присутствует, начиная с процессора Pentium. SIMD (Single Instruction Multiple Data): один поток инструкций выполняет вычисления одновременно с разными данными. Например, выполняется сложение одновременно восьми пар чисел. Такие компьютеры называются векторными, так как подобные операции выполняются аналогично операциям с векторами (когда, например, сложение двух векторов означает одновременное сложение всех их компонентов). Зачастую векторные инструкции присутствуют в дополнение к обычным «скалярным» инструкциям, и называются SIMD-расширением (или векторным расширением). Примеры популярных SIMD-расширений: MMX, 3DNow!, SSE и др. MIMD (Multiple Instruction Multiple Data): разные потоки инструкций оперируют различными данными. Это системы наиболее общего вида, поэтому их проще всего использовать для решения различных параллельных задач. Основное внимание разработчиков процессоров сегодня направлено именно на данный сектор архитектурных решений. Классификация Джонсона: MIMD-системы, в свою очередь, принято разделять на системы с общей памятью (несколько вычислителей имеют общую память) и системы с распределенной памятью (каждый вычислитель имеет свою память; вычислители могут обмениваться данными). Кроме того, существуют системы с неоднородным доступом к памяти (NUMA) — в которых доступ к памяти других вычислителей существует, но он значительно медленнее, чем доступ к «своей» памяти. Системами с общей памятью называют системы, в которых несколько процессоров имеют общую оперативную память. К системам этого типа относят и компьютеры с многоядерными процессорами (multi-core). Данное решение очень характерно для графических процессоров (GPU). Преимущества: Не требуется обмен данными: данные, помещённые в память одним процессором, автоматически становятся доступными другим 8 процессорам. Соответственно, система не должна тратить время на пересылку данных. Для таких систем в программах обычно создают несколько вычислительных потоков, или же снабдить программу специальными директивами (например, технология OpenMP), которые подскажут компилятору, как распараллеливать программу. Кроме того, возможно полностью автоматическое распараллеливание программы компилятором. Компактность систем: может быть реализована в виде нескольких процессоров на одной материнской плате, и/или в виде нескольких ядер внутри процессора. Недостатки: Зависимости между данными и влияние на ветвление циклов управления результатов операций. Для решения подобных проблем используют критические секции. Если поток инструкций первого процесса входит в критическую секцию с идентификатором N, то поток инструкций другого процесса не сможет войти в критическую секцию с тем же идентификатором, и будет ждать, пока первый процесс не выйдет из этой секции. Проблема совместного доступа к памяти: нужно осторожно работать с теми участками памяти, для которых возможно одновременное выполнение записи одним процессором и другой операции (записи или чтения) другим процессором. Проблема синхронности КЭШей (промежуточная скоростная память подкачки данных) автономно от процесса расчетов. Если один процессор изменил данные в оперативной памяти, и эти данные прокэшированы другими процессорами, то их КЭШи должны автоматически обновиться. Проблема медленного обращения к оперативной памяти и её ограниченного объёма: процессор работает быстро, а память — медленно, поэтому даже одному процессору приходится ждать загрузки данных из оперативной памяти. Если же процессоров несколько, то им приходится ждать ещё дольше. Скорость работы каждого процессора с памятью становится тем меньше, чем большее число процессоров имеется в системе. Кроме того, объём памяти не может быть сделан сколь угодно большим, так как для этого придётся увеличивать разрядность шины памяти. Проблема масштабируемости: очень сложно сделать подобную систему с больши́м числом процессоров, так как очень сильно возрастает стоимость и падает эффективность работы из-за описанных выше проблем. Практически все подобные системы имеют ≤ 8 процессоров. Системы с распределённой памятью содержит несколько процессоров, каждый имеет свою оперативную память. Для обеспечения обмена информацией процессоры соединены каналами связи. По характеру связей такие системы делятся на системы с универсальной коммутацией (каж9 дый процессор может передать информацию любому другому процессору) и системы с жёсткой (фиксированной) коммутацией (каждый процессор может передать информацию только ограниченному числу других процессоров). Системы с распределённой памятью, в которых каждый вычислительный узел представляет собой полноценный компьютер со своей копией операционной системы, называют кластерными (или «кластерами»). Кластеры обычно представляют собой шкафы с компактными системными блоками, которые соединены друг с другом каналами связи (посредством специальных коммутаторов). Преимущества: Простота и дешевизна построения: можно взять большое количество обычных компьютеров, соединить их каналами связи (например, Ethernet), и получить кластер. Эффективное решение задач, требующих малого обмена данными: каждый компьютер будет работать в полную мощность, не ожидая, пока освободится доступ к оперативной памяти. Возможность решать задачи, требующие очень больших объёмов оперативной памяти: суммарный объём памяти системы можно сделать сколь угодно большим. Требуется лишь, чтобы задача разбивалась на относительно независимые подзадачи. Возможность масштабирования: можно соединить сколько угодно вычислительных узлов вместе, при этом стоимость системы будет пропорциональна числу узлов. В связи с этим большинство самых мощных вычислительных систем в мире являются кластерными. Недостатки: Проблема обмена данными: обмен данными в таких системах обычно идёт очень медленно по сравнению со скоростью вычислений (и с большими задержками). Поэтому задачи, требующие интенсивного обмена, невозможно решить на таких системах эффективно. Сложное программирование: программист должен продумать обмен данными, который будет присутствовать в системе, должен сам запрограммировать этот обмен (например, с помощью MPI). При неправильном программировании велика вероятность взаимных блокировок: когда, например, два процессора ждут данных друг от друга. Проблема блокировок есть и в системах с общей памятью, но здесь она проявляет себя гораздо чаще. Автоматическая организация обмена данными возможна лишь для некоторых частных случаев. Гибридные системы: Многие современные системы представляют собой иерархию описанных выше систем. Например, современные процессоры являются конвейерными процессорами, и имеют набор векторных инструкций (MMX, SSE и т.п.), позволяющих выполнять одновременные вы10 числения с разными данными. Кроме того, процессор может иметь два ядра, или может быть несколько процессоров в компьютере. Таким образом, на этом уровне система представляет собой систему с общей памятью. Затем можно соединить несколько таких компьютеров в кластер, образовав новый уровень иерархии: систему с распределённой памятью. Классификация Хокни (R. Hockney) Классификация машин MIMD-архитектуры: - Переключаемые — с общей памятью и с распределённой памятью. - Конвейерные. - Сети — регулярные решётки, гиперкубы, иерархические структуры, изменяющие конфигурацию. В класс конвейерных архитектур (по Хокни) попадают машины с одним конвейерным устройством обработки, работающим в режиме разделения времени для отдельных потоков. Машины, в которых каждый поток обрабатывается своим собственным устройством, Хокни назвал переключаемыми. В класс переключаемых машин попадают машины, в которых возможна связь каждого процессора с каждым, реализуемая с помощью переключателей — машины с распределённой памятью. Если же память есть разделяемый ресурс, машина называется с общей памятью. При рассмотрении машин с сетевой структурой Хокни считал, что все они имеют распределённую память. Дальнейшую классификацию он проводил в соответствии с топологией сети. Классификация Фенга (T. Feng) В 1972 году Фенг предложил классифицировать вычислительные системы на основе двух простых характеристик. Первая — число n бит в машинном слове, обрабатываемых параллельно при выполнении машинных инструкций. Практически во всех современных компьютерах это число совпадает с длиной машинного слова. Вторая характеристика равна числу слов m, обрабатываемых одновременно данной ВС. Немного изменив терминологию, функционирование ВС можно представить как параллельную обработку n битовых слоёв, на каждом из которых независимо преобразуются m бит. Каждую вычислительную систему можно описать парой чисел (n, m). Произведение P = n x m определяет интегральную характеристику потенциала параллельности архитектуры, которую Фенг назвал максимальной степенью параллелизма ВС. Параллельные системы также классифицируют по Хэндлеру (W. Handler), Шнайдеру (L.Snyder), Скилликорну (D. Skillicorn). Классификация Скилликорна Классификация Скилликорна (1989) была очередным расширением классификации Флинна. Архитектура любого компьютера в классификации 11 Скилликорна рассматривается в виде комбинации четырёх абстрактных компонентов: процессоров команд (Instruction Processor — интерпретатор команд, может отсутствовать в системе), процессоров данных (Data Processor — преобразователь данных), иерархии памяти (Instruction Memory, Data Memory — память программ и данных), переключателей (связывающих процессоры и память). Переключатели бывают четырёх типов — «1-1» (связывают пару устройств), «n-n» (связывает каждое устройство из одного множества устройств с соответствующим ему устройством из другого множества, то есть фиксирует попарную связь), «n x n» (связь любого устройства одного множества с любым устройством другого множества). Классификация Скилликорна основывается на следующих восьми характеристиках: 1. Количество процессоров команд IP 2. Число ЗУ команд IM 3. Тип переключателя между IP и IM 4. Количество процессоров данных DP 5. Число ЗУ данных DM 6. Тип переключателя между DP и DM 7. Тип переключателя между IP и DP 8. Тип переключателя между DP и DP Перечислено лишь ряд попыток обобщить и структурировать знания по архитектуре в области КС. Сложность решения этой задачи, скорее всего, в стремительных усовершенствованиях архитектуры самих систем и всех компонентов. Классификации не корректно описывают существующие решения уже через пару лет после своего создания. 2. Типы данных поддерживаемые КС Правильно спроектировать КС можно только хорошо проанализировав потоки данных в них и основные операции с данными. Совокупность оцифрованных сигналов, поступающих в вычислительную среду в виде временных последовательностей, характеризующих процессы, поля, многомерные образования, параметры которых подлежат исследованию и данных хранящихся в файлах представляют собой рабочие массивы КС. В вычислительной среде данные потоки преобразуются в кластерные структуры достаточные для проведения цикла измерений. Примером таких образований может быть “окно” размером n m, включающее 12 объект и сформированный из временной последовательности вектор отсчетов xi ( i - порядковый номер), как кластер xa ... xam1; xat ... xat m1 ; . . .; xa jt ... xa jt m1;...; xa ( n1) t ... xa ( n1) t m1. Формирование окна характерно для операции идентификации параметров двухмерных и трехмерных изображений в системах с линейной разверткой. При этом t - длина строки, j - номер строки внутри кластера, a - номер первой точки кластера. Для таких типов данных характерны особые ограничения (для указанного случая - условия слитности окна), критерии допустимости и качества проводимых операций. 2.1. Классические типы данных К классическим форматам данных, которые должна поддерживать относятся: - беззнаковое размером байт, - беззнаковое размером слово, - беззнаковое размером двойное слово, - беззнаковое размером с четверное слово, - знаковое размером байт, - знаковое размером слово, - знаковое размером двойное слово, - знаковое размером четверное слово, - плавающее F-формата, - плавающее D-формата, - поле битов переменной длины, - строки символов, - строки цифр в зонном формате, - строки цифр в специальном формате, - строки цифр без знака, - строки цифр с ведущим отдельным знаком, - упакованные десятичные строки. Данные типы и классические операции над ними описаны в широко известных монографиях, справочниках и учебных пособиях, но более четко и строго они представлены в технических руководствах к ЭВМ. В этих описаниях (DtaSheet) идентифицированы действия по нарушению значимости, правила округления и т.п., которые также берутся за основу. Тип данных определяет и архитектуру АЛУ. 2.2. Форматы представления графических и специальных типов данных 13 Быстрые аппаратные средства широко используются сегодня и сохраняют свою актуальность, как перспективные решения, для обеспечения компьютерной графики. Поэтому разрабатываемые технологии должны включать поддержку графических форматов данных. Графические форматы практически включают в себя два подмножества - растровый и векторный. В перечне растровых выделяют JPEG, GIF, EPS, BMP, PICT, PCX, TARGA, TIFF и др. включающие описания объекта размером до 16 Мбайт. В перечне отличий форматов не последнее место занимают методы сжатия, использованные при формировании описаний объектов. Векторные форматы, как правило, содержат менее объемное описание объекта. Достигаемая степень сжатия в десятки и сотни раз больше по сравнению с растровыми. Вот отдельные из них: CGM, DXF, EPS, PICT, WMF и др. Преобразования выполняют программы-трансляторы. Их сложность при преобразовании растровый - векторный во много раз больше, чем при преобразовании векторный - растровый. КС обрабатывают и более сложные типы данных, например, модулярные. Форматы остатков эквивалентны форматам генетически связанных оснований, хотя в арифметике с переполнением могут превышать их. Измерительная информация сегодня по мере роста возможностей систем обработки данных и систем первичного преобразования физических сигналов различной природы представляется все новыми типами данных. Как показал проведенный анализ, значительное количество таких типов перекрывается понятием кластера коррелированных отсчетов. Часто встречаются беззнаковые, десяти-, двенадцати-, четырнадцатиразрядные отсчеты, в системах с высокими скоростями входных потоков шести- и четырехбитные отсчеты. При поступлении в систему они чаще всего характеризуются однородностью выборок т.е. постоянством скорости поступления. Одной из первых операций применяемой к входному потоку является формирование кластера коррелированных отсчетов как объекта. Например, простейший случай - выборка длительностью L LH LK , где - предыстория развития сигнала, в ходе которой формируется кольцо данных с контролем энергии в кольце (сторожевой режим), LK - выборка фиксированной длины достаточная для локализации информации об объекте. LH 14 Пример более сложного объекта - многоимпульсное отображение смещения негативного изображения границы объекта в плоскости анализа в когерентных фотоэлектрических микроскопах. В данном случае отсчеты слитны и формирование кластера коррелированных отсчетов не представляет труда и не требует больших ресурсов памяти. Сложнее это решить в случае адаптивно-перестраиваемого формирования зондирующего импульса с разрешением более высоким, чем позволяет полоса пропускания системы. В этом случае вводится расширение времени анализа с “впечатыванием” новых смещенных зондирующих импульсов через интервалы повторения. Объем файла удерживающего фрагменты может быть очень большим и превышать сотни мегабайт. 2.3. Команды и операции над данными Для классических типов данных поддерживаться все операции, которые широко используются на практике. Приводить их описание в данном случае нецелесообразно. Графические форматы представления данных позволяют проводить над файлами макрооперации, приобретающие значения международных стандартов. Это, прежде всего, операции по компрессии и декомпрессии данных, цветовые преобразования, преобразования форматов. Операции над данными представленными в модулярной системе счисления подробно изложены в литературе и дополнительно останавливаться на их описании также нецелесообразно. Рассмотрим только специфику преобразований над одним типом данных - кластером коррелированных отсчетов. Формирование кластера Операция заключается в преобразовании пространства входных сигналов с выделением подмножества отсчетов локально связанных между собой. Например, в двухкоординатных полях размерностью n строк, m столбцов входной массив в j поле представляется последовательностью mn X j C bk j 1... b0 j , 1 где C - символ упорядоченной последовательности с интервалом поступления данных , bi j - булева переменная в позиционной системе счисления с двоич- ным основанием, k - размерность представления входного отсчета. 15 Формирование кластера коррелированных отсчетов осуществляется через пересортировку входного массива, проводимую обычно регистровыми линиями задержки, как например, в цифровом процессоре сигналов IMSA110 фирмы Inmos и т.п. Часто наряду с информационными сигналами в общем потоке присутствуют служебные, синхронизирующие, дополнительные отсчеты. В объем кластера они не включаются. Операция формирования кластеров коррелированных отсчетов должна обеспечивать их выделение, сдвиг временных интервалов и т.п. Простейший случай - формирование сегмента в обработке двухмерных массивов. Входной поток Bik ( t ) Bik * [t t c i t1 E i i t 2 E ; n nm *( x ) 1 x 1 x , 1 x - единичная функция, Bik t - k - разрядный сигнал, поступающий на входной порт си- где стемы, - время старта, tc t1 t2 Ex - интервал времени между строками, - интервал времени между кадрами, - целая часть числа x. Формирование кластера для обработки на проходе требует создания кольцевой буферной памяти объемом Q 1n , где - размер сегмента по вертикали, - размер сегмента по горизонтали. Модификация В память кадра записывается модифицированный отсчет Dik1 F Bik R , где k1 - новая разрядность отсчета, как правило, число существенно меньшая, чем исходная, 16 R - область кластера, Bik R - отсчеты в области кластера окружающего точку i . Сжатие Процедура сохраняющая информационные признаки с заданной погрешностью, не препятствующей формированию ввода требуемой точности и достоверности, но понижающая объем описания объекта. Равномерное сжатие можно представить как замену кластера одиночным отсчетом размерностью k 2 (число двоичных разрядов). При этом шаг представления кластеров может быть равен - по го- ризонтали и - по вертикали. В этом случае мы имеем одномерное представление кластеров коррелированных отсчетов. Вероятность достоверности принятия решений снижается при движении центра информационного наполнения к границе кластера. Лучшие результаты получаются при смещении кластера на долю по горизонтали и долю зонтали t и вертикали - по вертикали. Вводя понятия шага по гори- t получаем многослойное равномерное сжа- тие. Коэффициент сжатия K k1 t t k2 . Адаптивное сжатие по информационному наполнению кластера коррелированных отсчетов (например: сумме энергии дифференциала в кластере) порождает неоднородность шага сжатия и может вызвать потерю координатной привязки фрагментов восстановленного сигнала. Один из путей сохранения координатной системы - введение массива шагов или их переключений. В простейшем случае - добавление информационных тегов к формату отсчета. Детальное рассмотрение указанной процедуры выходит за рамки данного раздела, укажем лишь то, что к переменным процедуры относятся: - размеры кластера , ; - шаг смещения кластера t , t ; - преобразующая таблица (либо ее адрес); - адрес старта кластера ; - число шагов по строке N ; - число шагов по столбцу N . 17 Интегрирование кластеров Операция эффективна при обработке полей откликов от многих зондирующих воздействий сгенерированных с известными координатными привязками и заключается в суммировании отсчетов кластеров с одинаковым смещением, центры же кластеров размещаются в адаптивно деформируемой сетке математических ожиданий координат откликов. В случае периодической структуры U B , ,..., B - вектор входных отсчетов размерно- j y1 j ,..., yi j ,..., yd j T j j T B j B1 j ,..., Bi j nj стью n , j 1,2,..., t - номер положения отклика на равномерной сетке, d n - размерность кластера после интегрирования (вектор B j где содержит несколько кластеров), U j - матрица преобразования входного вектора сигналов. Суммирование кластеров преобразует отклики в один кластер t Z Yj j 1 , имеющий смысл интегрального по полю анализа отклика системы, имеющего улучшенные характеристики по неоднородности. Энергия несущая информацию в интегральном кластере возрастает по t раз. крайней мере в Описанные операции работают над входными данными до момента снижения интенсивности преобразуемого потока достаточного для реализации дальнейших преобразований универсальными средствами, например, скалярными процессорами. Выполнение данных операций осуществляется быстродействующими входными структурами, имеющими специализированную архитектурную организацию. Введя аппарат управления данной архитектурой можно эффективно адаптировать вычислительную среду обработки измерительной информации под решаемые задачи. 3. Детерминированные и случайные потоки в КС 18 Внешние потоки часто слабо определены по интенсивности и объему, рассмотрим их подробнее. Поток вызовов (требований, заявок, событий) – есть последовательность вызовов, поступающих через какие-либо интервалы или в какиелибо моменты времени. Потоки вызовов бывают детерминированные и случайные. Случайный поток вызовов отличается от детерминированного тем, что моменты поступления вызовов и промежутки времени между вызовами являются не строго фиксированными (как это имеет место для детерминированного потока), а случайными величинами. Детерминированные потоки есть частный случай случайных потоков и встречаются на практике при обработке сигналов со стандартными параметрами, например, оцифрованные видеопотоки, частично они рассмотрены выше. Рассмотрим случайные потоков вызовов. Поток вызовов может быть определен тремя эквивалентными способами: 1.) Последовательностью вызывающих моментов t1 ,t2 ,…,tn; 2.) Последовательность промежутков времени между вызывающими моментами z1 ,z2 ,…,zn; 3.) Последовательностью чисел k1 ,k2 ,…,kn, определяющих количество вызовов, поступающих в течение заданного отрезка времени [t0 ,t1), [t0 ,t2),…, [t0 ,tn). Вызывающий момент - это момент одновременного поступления одного, двух и более вызовов. Случайные потоки вызовов задаются вероятностными характеристиками последовательности вызывающих моментов, либо последовательности промежутков между вызовами, либо последовательности числа вызовов, поступающих в течение отрезков времени [t0 ,t1), [t0 ,t2),…, [t0 ,tn). Потоки вызовов классифицируются по следующим свойствам: - стационарность – независимость вероятности характеристик от времени. Такая вероятность поступления определенного числа событий за промежуток времени длиной t для стационарного потока не зависит от выбора начала его измерения, а зависит только то длины этого промежутка; - последействие – вероятность поступления событий в интервале времени (t1 ,t2) зависит от событий, происшедших до момента t1; - ординарность – вероятность поступления двух и более событий за бесконечно малый интервал времени Δt, есть величина бесконечно малая, более высокого порядка малости, чем Δt. Важнейшими численными параметрами случайного потока являются интенсивность потока μ(t) и параметр потока λ(t). 19 Интенсивностью потока называют математическое ожидание числа событий в единицу времени в данный момент: , т.е., это предел отношения среднего числа событий ( ) на интервале (t,t+Δt) к длине этого интервала, стремящегося к нулю. Параметром потока называется предел отношения вероятности поступления хотя бы одного события на интервале (t,t+Δt) к длине этого интервала, стремящегося к нулю: , Для стационарного процесса интенсивность и параметр потока – величины постоянные не зависящие от времени, т.е. λ(t)=λ и μ(t)=μ. Для ординарных потоков величина параметра потока и интенсивнось потока совпадают, т.е. λ=μ. Классификацию потоков, представленную на рис.3.1, удобно осуществлять, принимая за основной признак последействия потока. Рис. 3.1. Классификация потоков вызовов. Простейший поток вызовов или поток Пуассона. Простейшим потоком вызовов называется стационарный ординарный поток без последействия. Основные характерные свойства простейшего потока выражают следующие определения этого потока: 1.) ординарный поток без последействия с постоянным параметром λ (0<λ<∞); 2.) интенсивность простейшего потока равна его параметру μ=λ; 3.) поток без последействия, для которого вероятность Pi(t) поступления i 20 вызовов на промежутке длиной t определяется формулой (распределением) Пуассона: , 4.) поток с независимыми промежутками zk (k=1,2,…) между вызовами, распределенными по одинаковому экспоненциальному закону: , 5а.) плотность распределения вероятностей промежутков времени между вызовами: , 5б.) распределения промежутка времени между вызовами подчинено показательному закону и является достаточным условием существования простейшего потока; 6.) если известно, что случайный промежуток времени z, распределенный по показательному закону длится уже некоторое время τ, то закон распределения оставшейся части промежутка будет также показательным и с тем же параметром μ не будет зависеть от τ; 7.) объединение независимых простейших потоков с параметрами λ1, λ2, λ3 очевидно, тоже будет простейшим потоком с параметром (λ1+ λ2+ λ3); Рис 3.4. Разъединение и объединение Пуассоновского потока. 8.) сумма большого числа малых станционных потоков близка к простейшему; 9.) математическое ожидание промежутка z между вызовами: , 10.) дисперсия промежутка z между вызовами: , 11.) среднеквадратическое отклонение промежутка t: , 12.) математическое ожидание числа вызовов за промежуток t: , 21 13.) дисперсия числа вызовов за промежуток t: , 14.) совпадение за промежуток для простейшего потока на практике удобно использовать при проверке соответствия реального потока модели простейшего потока времени между вызовами подчинено показательному закону и является достаточным условием существования простейшего потока. Показательно распределения широко применяется в теории телетраффика, теории массового обслуживания благодаря свойству: если известно, что случайный промежуток распределенный по показательному закону длился уже некоторое время , то закон распределения оставшейся части промежутка также будет показательным и с тем же параметром и не будет зависеть от . Потоки с ограниченным последействием Под потоком с ограниченным последействием понимается поток вызовов, у которого последовательность промежутков времени между вызовами представляют последовательность взаимно независимых случайных величин, имеющих любые функции распределения. У потока с ограниченным последействием вероятность поступления нового вызова в промежутке зависит только от расположения этого промежутка по отношению к моменту поступления последнего вызова и не зависит от времени поступления всех остальных. Рис 3.5. Поток с ограниченным последействием Для этих потоков в момент поступления вызова будущее не зависит от прошлого и все последствие ограничено величиной промежутка между вызовами. Особое место среди потоков с ограниченным последействием занимают рекуррентные потоки, у которых все промежутки между вызовами, включая первый имеют одинаковой распределение при и рекуррентные потоки с запаздыванием, у которых только первый промежуток имеет распределение, отличное от других и они задаются двумя функциями распределения и при . Функция характеризует распределение промежутка времени от прозвольно выбран22 ного начала отсчета до момента поступления первого вызова. К потокам с ограниченным последействием относятся потоки Пальма, Эрланга, Бернулли. Поток Пальма Поток Пальма – это стационарный ординарный рекуррентный поток с запаздываниями или стационарный ординарный поток с ограниченным последействием. Задается поток Пальма условной вероятностью отсутствия вызовов в промежутке длительностью , если в начальный момент этого промежутка поступил вызов: , где - функция Пальма-Хинчина, определяющая вероятность отсутствия вызовов на интервале длинной при условии, что в начале интервала имелся вызов; - параметр потока Пальма или интенсивность потока и Модель потока Пальма – описываемый поток необслуженных коммутационной системой вызовов. Некоторые свойства потока Пальма: 1) объединение нескольких независимых потоков Пальма не дает вновь поток Пальма; 2) разделение одного потока Пальма на направлений с вероятностью поступления вызовов в -ом направлении дает поток Пальма в каждом их этих направлений. Поток Эрланга Поток Эрланга образуется в результате прореживания исходного простейшего потока вызовов. 23 Поток Эрланга -го порядка образуется путем отбрасывания -го вызова и сохранениея вызова. Основные характерные свойства потока Эрланга: 1) промежутки между вызовами независимы между собой и одинаково распределены, поскольку они получаются суммированием одинакового числа независимых промежутков исходного простейшего потока; 2) закон распределения с плотностью : - плотность распределения величины промежутка между вызовами . 3) параметр потока -го порядка: 4) математическое ожидание величины ми) (промежутка между вызова- 5) дисперсия Поток Бернулли Поток Бернулли – это ординарный поток с ограниченным последействием для которого на заданном конечном интервале [0,T) случайным образом поступает фиксированное (равное n) число вызовов. Моменты поступления вызовов независимы и равномерно распределены в интервале [0,T), т.е. для этих вызовов выполнено свойство случайности. 24 Основные характерные свойства потока Бернулли: 1) Вероятность поступления ровно k вызовов в любые промежутки [0,t), где t<T определяется: , где -число сочетаний из n по k: , n- количество вызовов на промежутке [0,T) 2) Параметр потока Бернулли 3) Распределение промежутков между вызовами потока Бернулли 4) Поток Бернулли используется для описания потоков освобождения Потоки с простым последействием Ординарный поток, параметр которого определяется состоянием S(t) обслуживающей системы в рассматриваемый момент t называется потоком с простым последействием или пуассоновским потоков с условным параметром. Под состоянием системны понимается информация о числе, о номерах занятых выходов, входом и соединительных путей между ними, о числе свободных обслуживаемых, ожидающих соединения или повторяющих 25 вызовы источников. Поскольку состояние обслуживающей системы S(t) в момент t зависит от процесса поступления обслуживания вызовов до момента t , то рассматриваемый поток называется потоком с простым последействием, т.к для определения параметра потока в момент t достаточно информации о состоянии системы только в данный момент времени t. Потоки с простым последействием нестационарны, т.к. параметр зависит от t через состояние системы. Большинство потоков в сетях связи – это потоки с простым последействием. Типы потоков с простым последействием: примитивный; сглаженный; с повторными вызовами. Примитивный поток (поток Эгсета) Ординарный поток, параметры которого пропорционален числу свободных источников в состоянии обслуживающей системы i, называется примитивным: , где - параметр (интенсивность) источника в свободном состоянии; N - общее число источников; i - число занятых источников; (N-i) - число свободных источников; Примитивный поток – это пуассоновский поток второго рода, а также энгсетовский поток. Основные характерный свойства потока Энгсета: 1) средняя величина параметра потока : , где - вероятность того, что занято i источников в системе 2) средняя интенсивность одного источника : 3) распределение промежутка свободности (промежутка времени между моментом окончания одного занятия и моментом поступления от источника нового вызова) подчинена показательному закону с параметром . 4) При N = 100 и менее целесообразно использовать для исследования 26 систем примитивный поток. 5) Модель примитивного потока удобна для представления абонентской нагрузки на коммутатор. Каждый абонент является источников независимого пуассоновского потока заявок звонков. Совокупная нагрузка на коммутатор определяется суммой таких потоков. Когда абонент получает обслуживание своего звонка, его поток исчезает из совокупного входящего потока, и интенсивность входного потока уменьшается скачком. Сглаженный поток Поток, пропущенный через j (j=1,2,3…) ступеней искажения и поступающий на (j+1) ступень коммутационной системы называется сглаженным и сглаженным пуассоновским, если на первую ступень поступает простейший поток. Поток с повторными вызовами Наиболее реальный поток к системам связи. Этот поток состоит из потока первичных вызовов и потока повторных попыток установления соединения. Параметр потока равен суме параметров потоков первичных и повторных вызовов: , где - число источников, занятых обслуживанием; - число источников, повторяющих вызовов; - интенсивность источника повторяющего вызовы; N- общее число источников. 4. Магистрально-модульный принцип построения вычислительных систем Прохожнение потоков информации внутри КС и ее компонентов происходит по шинам (магистралям) обмена данными. Этот принцип установился с первыми вычислительными машинами и предполагает разбиение аппаратуры (внутри кристальных элементов) на локализованные группы (модули) имеющие свое имя (адрес) и общающиеся друг с другом по общим шинам с передачей адреса. 4.1. Параллельные магистрали Параллельные магистрали стали основой построения отдельных, локально изолированных компьютеров и компонентов внутри кристалла. Развитие параллельных шинных архитектур шло достаточно интенсивно. Соотношение производительности модулей, подключаемых к шине, создавало и иерархическую конфигурацию структур. На сегодня в 27 архитектуре персональных компьютеров, рабочих станций доминирует построение обмена на базе двух шин; – параллельной, как правило, 64-х либо 128 разрядной шины обмена данными процессор – контроллер ОЗУ, быстрых интерфейсов (северная магистраль); - 32-х либо 64-х разрядная (южная магистраль)- PCI, PCIe с поддержкой более медленных интерфейсов. На материнских платах обмен между магистралями поддерживают специализированные микросхемы – чипсеты. Заслуживает внимания и магистраль видеокарты GPU – ОЗУ. Это наиболее быстродействующая параллельная магистраль компьютера. Примером параллельной магистрали может служить шина PCI - это высокопроизводительная 32-битная или 64-битная шина с мультиплексированными линиями адреса и данных. Она предназначена для использования в качестве связующего механизма между периферийными контроллерами ввода-вывода, периферийными встраиваемыми платами и системами процессор/память. Данная шина широко распространена в персональных компьютерах, имеет свою нишу и в промышленных компьютерных системах (PXI). Спецификация локальной шины PCI, реализация 2.0, включает протокол, электрическую, механическую и конфигурационную спецификации. Напряжения питания - 3.3В и 5.0В. Основные внешние характеристики. Прозрачный» переход от 32-разрядных данных (132 Мб/сек) к 64-разрядным (264 Мб/сек). Переменная длина и переключаемый режим, как для чтения, так и для записи, повышающие производительность при работе с графикой. Произвольный доступ с малым временем задержки (задержка 64нс при записи во «вспомогательные» регистры из «управителя» шины). Возможность полного параллелизма подсистемы процессор/память. Синхронизация шины частотой до 33 Мгц. Скрытый (перекрываемый) центральный арбитраж. Оптимизация для прямых «межкремниевых» соединений компонент, т. е. отсутствие «склеивающей логики». Электрические, частотные спецификации и спецификации драйверов (например, полная загрузка) реализованы в соответствии 28 со стандартными ASIC -технологиями и другими типовыми процессами. Мультиплексированная архитектура снижает количество выводов (47 - для сигналов подчиненного устройства, 49- для управителя) и уменьшает размеры корпуса PCI-компонент или обеспечивает дополнительные функции в корпусе заданного размера. Возможна поддержка полной автоконфигурации плат расширения и компонент локальной шины PCI. PCI - устройства имеют регистры, в которых хранится информация об устройстве, требуемая для конфигурирования. Поддержка 64-разрядной адресации. PCI обеспечивает контроль по четности как для данных, так и для адреса, позволяя создавать устойчивые пользовательские платформы. Рис. 4.1. Линии PCI шины Описание типов сигналов (только для основного режима) Input - стандартный входной сигнал . Totem Pole Output - стандартный активный драйвер. 29 Tri-State - это двунаправленный, с тремя состояниями, входной/выходной вывод. Sustained Tri-State s/t/s- подчиненный активный низкий сигнал с тремя состояниями, управляемый одним и только одним агентом в одно и то же времени. Агент, который управляет низким уровнем выводов s/t/s, должен сделать его «высоким» хотя бы один раз перед тем, как оставить в свободном состоянии. Новый агент не может начать управлять сигналом s/t/s, пока не пройдет один такт после того, как предыдущий «владелец» сигнала переведет его в свободное состояние. Повышение уровня требуется для поддержания неактивного состояния, пока другой агент не начнет управлять сигналом, что обеспечивается центральным ресурсом. Open Drain - открытый коллектор - позволяет использовать количество устройств путем объединения их по «ИЛИ». Символ # в конце наименования сигнала показывает, что активное состояние сигнал имеет при низком уровне напряжения. CLK входной Clock обеспечивает синхронизацию всех транзакций на PCI, а также является входным для каждого PCI - устройства. Все другие сигналы PCI, за исключением RST#, IRQ#, IRQB#, IRQC# и IRQD#, являются дискретными по фронту CLK, а другие временные параметры определяются относительно этой границы. PCI функционирует при частоте до 33 MHz, а в общем случае минимальная частота составляет 0 Гц. RST# входной Reset используется для приведения специфичных для PCI регистров, секвенсоров и сигналов к начальное состояние. Адресные выводы и выводы данных AD[31::00] t/s Адрес и данные мультиплексированы на одних и тех же выводах PCI. Транзакция шины состоит из фазы адреса3 , сопровождаемой одним или большим количеством фаз данных. PCI поддерживает как чтение блоками, так и запись. Фаза адреса - это временной цикл, в котором активен FRAME#. В течение фазы адреса в AD[31::00] содержится физический адрес (32 бита). При вводе-выводе это - адрес байта, для конфигурации и памяти это - адрес двойного слова (DWORD). Когда идут фазы данных, AD[07::00] содержит младший значащий байт (lsb), а в AD[31::24] содержится старший значащий байт(msb). Записываемые данные «устойчивы» и правильны, когда активен сигнал IRDY#, а читаемые данные «устойчивы» и правильны, когда активен TRDY#. Данные передаются во время активности сигналов IRDY# и TRDY#. 30 C/BE[3::0] t/s Выводы Bus Command и Byte Enables («команды шины и разрешение байта») мультиплексированы на одних и тех же выводах PCI. Во время фазы адреса транзакции, C/BE[3::0]# определяет команду шины (смотрите раздел 3.1 для уточнения). В течение фазы данных C/BE[3::0]# используется в качестве Byte Enable. Byte Enable допустим для всей фазы данных и определяет, какие части байта несут значимые данные. C/BE[0]# применяется к байту 0 (lsb), а C/BE [3]# применяется к байту 3 (msb). PAR t/s Parity - это контроль по четности4 по линиям AD[31::00] и C/BE[3::0]#. Генерирование контрольного кода по четности требуется для всех агентов PCI. Интерфейсные управляющие выводы FRAME# s/t/s Cycle Frame (циклический временной интервал) управляется текущим «управителем» для указания начала и продолжительности доступа. Пока FRAME# активен, идет передача данных IRDY# s/t/s Initiator Ready (готовность инициализации) Во время записи, IRDY# показывает, что на линиях присутствуют достоверные данные. При чтении это показывает, что мастер готов к приему данных. Циклы ожидания вставляются до тех пор, пока активны IRDY# и TRDY#. TRDY# s/t/s Target Ready (целевое устройство готово) показывает способность целевого агента (выбранного устройства) завершить текущую фазу данных транзакции. При чтении указывает, что на линиях AD присутствуют достоверные данные. Во время записи это означает готовность целевого устройства к принятию данных STOP# s/t/s Stop показывает, что текущее подчиненное устройство посылает «управителю» запрос на останов текущей транзакции. LOCK# s/t/s Lock показывает операцию, которой для завершения требуется множество транзакций. Целевое устройство, поддерживающее LOCK#, должно обеспечить исключение минимум 16 байтов (с учетом выравнивания). Для главных интерфейсов, находящихся после системной памяти, также необходимо выполнить LOCK#. IDSEL входной Initialization Device Select (выбор устройства инициализации) используется для выбора кристалла при транзакциях чтения конфигурации и записи. DEVSEL# s/t/s Когда активным выводом Device Select (выбор устройства) управляют, он показывает, что управляющее устройство дешифрировало данный адрес как цель текущего доступа. DEVSEL# в качестве входа показывает, было ли выбрано на шине какое-то устройство. 31 Арбитражные выводы (только для мастеров шины) REQ# t/s Request (запрос) показывает арбитру, что данному агенту требуется поработать с шиной. Этот сигнал - типа «от одного пункта к другому». Каждый мастер имеет свой собственный вывод REQ#. GNT# t/s Grant (разрешение) показывает агенту, что разрешен доступ к шине. Этот сигнал типа «от одного пункта к другому». Каждый мастер имеет свой собственный вывод GNT#. Выводы для сообщения об ошибках требуются всем устройствам: PERR# s/t/s Parity Error (ошибка контроля по четности) предназначен только для сообщения об ошибках контроля по четности во время всех транзакций PCI, SERR# o/d System Error предназначен для выдачи сообщений об ошибках контроля по четности для адреса/. Выводы прерывания (необязательно) используется выход с открытым коллектором PCI предусматривает одну линию прерываний для устройства с одной функцией INTA#,, и до четырех линий прерывания - для многофункциональных устройств или соединителя. INTA# o/d Interrupt A - для запроса прерывания. INTB# INTC# INTD# o/d Interrupt B, C, D - для запроса прерывания для многофункциональных устройств. Любая функция на многофункциональном устройстве может быть соединена с любой линией INTx#. Регистр вывода прерывания определяет, какая из линий INTx# используется для запроса прерывания. Поставщик системы свободен в выборе способа объединения различных сигналов INTx# из разъема PCI, для их соединения с контроллером прерываний. Они могут быть объединены по «ИЛИ», либо переключаться электроникой под управлением программы, либо как-то иначе, путем комбинации выше перечисленных способов. Выводы поддержкиКЭШа (необязательно) Кэшируемая память PCI должна реализовывать оба вывода поддержки кэширования в качестве входных, чтобы разрешить работу как с КЭШем сквозной записи, так и с КЭШем обратной записи. Если кэшируемая память размещена на PCI, то интерфейс, соединяющий кэш обратной записи и PCI, должен реализовывать оба вывода в качестве выходных; а интерфейс, соединяющий PCI и кэш сквозной записи, может реализовывать только один вывод. SBO# вх/вых Snoop Backoff указывает удачную попытку для изменения состояния линии. Когда сигнал SBO# неактивный, и активен SDONE, то это означает успешный результат «вмешательства». 32 SDONE вх/вых Snoop Done указывает состояние «вмешательства» для текущего доступа. Когда сигнал неактивен, то это показывает, что результат «вмешательства» все еще ожидается. Когда сигнал активен, то это показывает, что «вмешательство» завершено. Выводы расширения шины до 64-бит (необязательно) AD[63::32] t/s Address и Data (адрес и данные) мультиплексированы. В течение фазы данных, когда активны REQ64# и ACK64#, передаются дополнительные 32 бита данных. C/BE [7::4]# t/s Bus Command и Byte Enables (команды шины и разрешение байта) мультиплексированы на одних и тех же выводах. В течение фазы адреса (когда используются команды ЦАП и когда активен REQ64#) передается фактическая команда шины по линиям C/BE[7::4 В течение фазы данных показывают, какой байт содержит значимые данные, при условии, что активны оба сигнала REQ64# и ACK64#. REQ64# s/t/s Когда Request 64-bit Transfer управляется текущим «управителем» шины, то он показывает, что тот желает передать данные, использую для пересылки 64 бита. ACK64# s/t/s Когда Acknowledge 64-bit Transfer управляется устройством, которое успешно дешифрировало данный адрес в качестве агента текущего доступа, то он показывает, что агент желает передать данные, используя при этом 64 бита. PAR64 t/s Parity Upper DWORD - это бит контроля по четности, который защищает линии AD[63::32] и C/BE[7::4]. PAR64 идет в течение одного такта после фазы начального адреса, когда активен REQ64, и по линии C/BE[3::0] поступает команда ЦАП. Также PAR64 идет в течение такта после второй фазы адреса команды ЦАП. Выводы JTAG / периферийного сканирования (необязательно) Стандарт IEEE 1149.1, Порт для тестирования и архитектура периферийного сканирования («Test Access Port and Boundary Scan Architecture»), включен в качестве необязательного интерфейса для PCI устройств. Стандарт IEEE 1149.1 определяет правила и ограничения для проектирования ИС (интегральных схем) в соответствии с 1149.1. Включение в состав устройства порта для тестирования (TAP - Test Access Port) позволяет использовать периферийное сканирование для проверки устройства и платы, на которой данное устройство установлено. TAP состоит из четырех выводов (в общем случае - из пяти), которые используются для организации последовательного интерфейса с контроллером TAP внутри PCIустройства. Поставщик системы ответственен за проектирование и функционирование в системе последовательных цепочек стандарта 33 1149.1 («кольца»). Обычно «кольцо» по стандарту 1149.1 создается путем соединения вывода TDO одного устройства с выводом TDO другого, чтобы получить последовательную цепочку устройств. В этом случае микросхемы получают одни и те же сигналы TCK, TMS и необязательные сигналы TMS#. Все кольца по стандарту 1149.1 соединены либо с тестирующим разъемом материнской платы для целей тестирования, либо к ИС резидентного контроллера по стандарту 1149.1. Спецификация PCI поддерживает платы расширения с разъемом, который предусматривает сигналы периферийного сканирования. Устройства на плате расширения можно соединять в цепочку на материнской плате. TCK in Test Clock используется для синхронизации ввода собранной информации и данных в устройство и их вывода во время работы с TAP. TDI in Test Data Input используется для последовательного ввода в устройство тестирующих данных и команд при работе с TAP. TDO out Test Output используется для последовательного вывода тестирующих данных и команд из устройства при работе с TAP. TMS out Test Mode Select используется для управления в устройстве состоянием контроллера TAP. TRST# in Test Reset обеспечивает асинхронную инициализацию контроллера TAP. Этот сигнал по стандарту IEEE 1149.1 необязателен. Методы соединения и использования системы колец по стандарту 1149.1 с платами расширения включают: Использование кольца по стандарту 1149.1 на плате расширения только во время тестирования этой платы расширения на производстве. В этом случае, кольцо по стандарту 1149.1 на материнской плате не должно контактировать с сигналами по стандарту 1149.1 для плат расширения. Материнская плата должна самотестироваться непосредственно в ходе производства. Создание для каждой платы расширения в системе независимых колец, по стандарту 1149.1, на материнской плате. Например, если на плате есть два разъема расширения, то на материнской плате должны оставаться свободные кольца по стандарту 1149.1. Инициализацию ИС, которая допускает иерархичную многоточечную адресацию по стандарту 1149.1. Это позволит обрабатывать множество колец по стандарту 1149.1 и разрешит многоточечную адресацию и операции. Платы расширения, не поддерживающие стандарт интерфейса IEEE 1149.1, должны осуществлять переход от вывода TDI платы к выводу TDO. Операции на шине Операции на шине показывают агенту тип транзакции, которая требуется мастеру. Эти операции кодируются в течение фазы адреса на линиях C/BE[3::0]#. 0000 Interrupt Acknowledge (подтверждение прерывания) 34 0001 Special Cycle (специальный цикл) 0010 I/O Read (чтение при вводе - выводе) 0011 I/O Write (запись при вводе - выводе) 0100 Зарезервировано 0101 Зарезервировано 0110 Memory Read (чтение памяти) 0111 Memory Write (запись в память) 1000 Зарезервировано 1001 Зарезервировано 1010 Configuration Read (чтение конфигурации) 1011 Configuration Write (запись конфигурации) 1100 Memory Read Multiple (множественное чтение памяти) 1101 Dual Address Cycle (двойной цикл адреса) 1110 Memory read Line (линия чтения памяти) 1111 Memory Write and Invalidate (запись в память и недействительные данные) Команда Interrupt Acknowledge представляет собой неявное обращение к системному контроллеру прерываний. Биты адреса в течение фазы адреса не имеют логического значения и показывают длину возвращаемого вектора. Команда Special Cycle обеспечивает механизм передачи сообщений по шине PCI. Он используется для физических сигналов, когда необходимо организовать связь по sideband -сигналам. Команда I/O Read I/O Write используется для чтения / передаче данных, агента, отображенного в адресном пространстве ввода - вывода. По линиям AD[31::00] поступает адрес байта. Должны дешифрироваться все 32 бита. Byte Enables указывает размер передачи, при этом он должен соответствовать адресу байта. Команда Memory Read Memory Write используется для чтения передаче данных агента, отображенного в пространстве адресов памяти. Когда целевое устройство возвращает признак готовности, это подразумевает готовность данных. Команда Configuration Read Configuration Write используется для чтения пространства конфигурации каждого агента передачи. Агент выбран, когда активен его сигнал IDSEL, и на линии AD[1::0] присутствует 00. Во время фазы адреса цикла или цикла конфигурации, AD[7::2] адресует одно из 64 двойных слов DWORD (и внутри каждого DWORD допускается адрес байта или байтов); конфигурации с информацией о каждом устройстве, а AD[31::11] - логически это не 35 предусматривает. AD[10::08] показывает, что каждый элемент многофункционального агента адресован. Команда Memory Read Multiple является семантически идентичной команде Memory Read, за исключением того, что в ней дополнительно указывается возможность выбора мастером более чем одной строки кэширования, перед отсоединением. Контроллер памяти должен продолжать конвейерную обработку памяти, пока активен сигнал FRAME#. Эта команда предназначена для работы по передаче больших последовательностей данных, когда можно повысить эффективность системы памяти (и запрашивающего мастера), при последовательном чтении дополнительной строкиКЭШа, когда программной установленный буфер доступен для временного хранения. Команда Dual Address Cycle (DAC) используется для передачи 64разрядного адреса в устройства, поддерживающие 64-битную адресацию. Те же устройства, которые поддерживают только 32-битную адресацию, должны обработать эту команду, как зарезервированную, и никогда не отвечать на текущую транзакцию. Команда Memory read Line является семантически идентичной команде Memory Read, за исключением того, что в ней дополнительно указывается возможность завершения мастером более чем двух 32-битных фаз данных PCI. Эта команда предназначена для работы с большими последовательностями передаваемых данных, когда можно повысить производительность системы памяти (и запрашивающего мастера), при чтении строкиКЭШа до конца в случае, если время реакции на запрос менее одного цикла памяти. Как и в случае с командой Memory Read, буферы выборки должна быть отменены прежде, через данный путь доступа будут инициированы события синхронизации. Команда Memory Write and Validate семантически идентична команде Memory Write, за исключением того, что она дополнительно гарантирует передачу как минимум одной полной строкиКЭШа; например, это требуется, когда мастеру необходимо записать все байты внутри адресованной строкиКЭШа за одну транзакцию PCI. Мастер может позволить транзакции «перейти» границу строкиКЭШа только в случае, если это предполагает передачу и всей последующей строки. Для выполнения этой команды требуется наличие у мастера регистра конфигурации, в котором был бы указан размер строкиКЭШа (за более подробной информацией обращайтесь к разделу 6.2.4). Это позволит повысить производительность памяти, путем отмены строки в КЭШе обратной записи, без осуществления фактического цикла обратной записи, и, таким образом, сокращая время доступа. Обращайтесь к 36 разделу 3.3.3.1. за информацией относительно блокировок по времени обработки. Команды с применением регистра длины строкиКЭШа: Команда Memory Read - блочной передачи половины строкиКЭШа или менее. Команда Memory Read Line блочной передачи от половины строкиКЭШа до трех строкКЭШа. Команда Memory Read Multiple Используется при блочной передаче более трех строкКЭШа. Основное использование команд без применения регистра длины строкиКЭШа: Команда Memory Read Используется при блочной передаче, если имеется две и менее пересылок данных. Команда Memory Read Line блочной передачи, если количество пересылок данных составляет от 3 до 12. Команда Memory Multiple Read больших блоков данных (до 13 и более пересылок). Блок состоит из фазы адреса и одной или более фаз данных. PCI поддерживает передачу блоками как для адресного пространства памяти, так и для адресного пространства ввода - вывода. Значение всех сигналов проверяется по фронту синхроимпульса FRAME# Управляется мастером для того, чтобы он мог указать начало и конец транзакции. IRDY# Управляется мастером, чтобы он мог инициировать циклы ожидания. TRDY# Управляется целевым устройством, чтобы оно могло инициировать циклы ожидания. Линии AD[1::0] используются и для генерирования сигнала DEVSEL#, указывающего при передаче последний допустимый байт При использовании команд для работы с памятью, AD[1::0] принимает следующие значения: AD1 AD0 Режим в блоке: 0 - Линейное приращение; 1 Режим переключения строкиКЭШа (порядок заполненияКЭШа - как у Intel486 /Pentium./и т.д.) X - Зарезервировано (разрыв связи после первой фазы данных). Транзакция чтения начинается фазой адреса, которая происходит во 2-ом такте, когда устанавливается сигнал FRAME#. В течение фазы адреса AD[31::00] содержит адрес, а C/BE[3::0]# - команду шины. Такт 3 является первым тактом для первой фазы данных. В течение фазы данных C/BE# показывает, какие линии передачи байта участвуют в текущей фазе данных. Фаза может состоять из циклов передачи и ожидания. При транзакции чтения первой фазе данных требу37 ется оборотный цикл (инициированный целевым устройством через сигнал TRDY#). В этом случае адрес будет достоверен во 2-ом такте, а затем мастер завершит управление адресными линиями. Самый ранний такт, в котором целевое устройство может гарантировать достоверные данные - это такт 4. Целевое устройство должно управлять адресными линиями после оборотного цикла, когда установлен сигнал DEVSEL#. Рис. 4.2. Базовая операция чтения Фаза данных завершается, когда данные перемещены, при этом сигналы IRDY# и TRDY# установлены на фронте синхроимпульса Временные задержки на PCI Рис. 4.3. Составляющие задержки 38 Для быстрых устройств передача транзакции составит T+8 тактов. (T число в пакете) Шина PCI работает на частоте 33 МГц. Время задержки при ожидании первых данных составляет 16 тактов (0.5 мкс) для всех устройств, которые не являются шинами расширения. Время между последовательностями фаз данных при блочной передаче восемь тактов. Побайтовый доступ на шине расширения занимает 1.5 мкс, причем время задержки первых данных равно 6 мкс при 32-битном доступе через интерфейс шины расширения. Рис.4.4. ВАХ для 3.3-вольтовой среды передачи сигналов Электрическая спецификация – уровни, времена, последовательности нагрузка: Максимальный допустимый перекос синхронизации - 2ns. Все PCI-разъёмы имеют четыре шины питания: +5V,+ 3.3V, + 12V, и -12V. Дорожки сигнала должны также оставаться полностью над плоскостью 3.3В или полностью над 5-вольтовой плоскостью. Сигналы, которые должны переходить из одной области в другую должны быть разведены на противоположных сторонах платы так, чтобы они находились в плоскости, которая не расчленяется. Если это не возможно и сигналы должны быть направлены над зазором, два слоя должны быть связаны вместе ёмкостью 0.01microF (5-вольтовая плоскость с 3.3-вольтовой) быстродействующими конденсаторами для каждых четырех сигналов, пересекающих зазор, и конденсатор располагается не далее 0.25 дюйма от точки пересечения сигналов с зазором. 39 1. Максимальные длины дорожек для всех сигналов 32-разрядного интерфейса ограничены 1.5 дюймами для 64-битовых плат и 32-разрядных плат. 2. Длины дорожек дополнительных сигналов, используемых для 64 разрядного расширения ограничены до 2-х дюймов на всех 64 разрядных платах. 3. Длина дорожки для CLK сигнала равна 2.5 дюйма плюс/минус 0.1 дюйма для 64- разрядных плат и 32-разрядных плат и они должны быть направлены только к одной нагрузке. Конечные автоматы используют три типа переменных; состояния, PCI сигналы и внутренние сигналы. State in a state machine = STATE PCI signal = SIGNAL Internal signal = Signal Уравнения конечного автомата принимают логическую операцию, где "*" является функцией AND и имеет старшинство над "+", который является функцией OR. Круглые скобки имеют старшинство над обоими. Символ "!" используется для отрицания (NOT) переменных. В уравнениях конечного автомата, PCI SIGNAL's представляют фактическое состояние сигнала на PCI шине. Истинные сигналы низкого уровня будут истинны или установлены, когда они появляются как !SIGNAL# и ложны или сняты, когда они появляются как SIGNAL#. Истинные сигналы высокого уровня будут истинны или установлены, когда они появляются как SIGNAL и ложны или сняты, когда они появляются как !SIGNAL. Внутренние сигналы будут истинны, Рис.4.5. Граф конечного автомата шины 40 IDLE или TURN_AR условие неактивности или завершенная транзакция на шине goto IDLE if FRAME# goto B_BUSY if !FRAME# * !Hit goto S_DATA if !FRAME# * Hit * (!Term + Term * Ready) * (FREE + LOCKED * LOCK#) goto BACKOFF if !FRAME# * Hit * (Term * !Ready + LOCKED * !LOCK#) B_BUSY - Не включается в текущую транзакцию. goto B_BUSY if (!FRAME# + !IRDY#) * !Hit goto IDLE if FRAME# goto S_DATA if (!FRAME# + !IRDY#) * Hit* (!Term + Term * Ready) * (FREE + LOCKED * L_lock#) goto BACKOFF if (!FRAME# + !IRDY#) * Hit *(Term * !Ready + LOCKED * L_lock#) S_DATA - Агент принял запрос и ответит. goto S_DATA if !FRAME# * !STOP# * !TRDY# * IRDY#+ !FRAME# * STOP# + FRAME# * TRDY# * STOP# goto BACKOFF if !FRAME# * !STOP# * (TRDY# +!IRDY#) goto TURN_AR if FRAME# * (!TRDY# + !STOP#) BACKOFF - Агент занят и неспособен ответить в это время. goto BACKOFF if !FRAME# goto TURN_AR if FRAME# agent объект, который функционирует на шине компьютера. master агент, который инициализирует транзакцию шины. NMI немаскируемое прерывание. phase один или больше временных периодов, в которых передается один блок информации, состоящий из: адреса и данных. 4.2. Последовательные линии В 16-ти разрядных архитектурах компьютеров существовала шина внешних устройств EISA, которая перешла и архитектуру компьютеров на базе процессоров Pentium. Параллельные магистрали обладают высоким быстродействием, но они дороги и требуют большого объема аппаратных затрат. В последовательных шинах данные передаются по одной или двум линиям (+ синхросигнал). Последовательные шины по своей тактовой частоте превосходят параллельные, тем более, что сигналы в них все более аналоговые, двуполярные. Однако необходимость передачи служебной «шапки» (это может быть и сотня бит) не дает выигрыша 41 по быстродействию. Для снижения влияния служебной информации на скорость обмена стремятся к пакетной передачи данных. На замену шин EISA и в некотором роде PCI пришли шины USB 1.0 и Fire Wire (стандарт IEEE 1394). Ориентация 1394 - первоначально жесткий диск и видео периферийные устройства, которые могут потребовать ширину полосы частот шины сверх 100 Mbs (резерв спецификации до 800 Mbs.). Протокол поддерживает как синхронный, так и асинхронные передачи тем же комплектом четырех сигнальных проводов (две дифференциальных пары сигналов - синхронизации и данных). По своей структуре они схожи. Обе передают питание, частоты разнятся на несколько десятков. У последней, как указано, два сигнала, синхросигнал переключается лишь тогда, когда передаваемый бит данных не меняются. Но во многом они схожи. Шина USB (USB1.1., USB2.0.., USB3.0.) является примером «короткой» линии и пришла, в определенной степени, на смену шине EISA. Универсальная последовательная шина USB - внешний интерфейс ввода/вывода - это несомненное достижение в архитектуре ПК. Последовательные порты типа RS-232 обеспечивают скорость от 9.6Kbps до 115.2Kbps в зависимости от микросхемой логики асинхронного приемопередатчика UART (Universal Asynchronous Recive/Transmitter). Максимальная пропускная способность USB 1.1. составляет 12Mbps, хотя фактически скорость передачи данных ближе к 8Mbps, включая 1Mbpsподканал для медленных устройств типа мышь и клавиатура. Этого вполне достаточно, чтобы обслужить потребности всех устройств от мыши до видеомагнитофонов, ISDN-адаптеров и сжатого видео MPEG. Использование низкоскоростных устройств позволяет перераспределить полосы частот и выделить больше пропускной способности тем устройствам, которые в этом нуждаются. Достоинством USB являются как асинхронные, так и изосинхронные порты. Изосинхронные передачи видео и аудио данных имеют приоритет, гарантируя непрерывность потоков данных для приложений реального времени. USB позволяет включать до 127 устройств, связанных в звездообразную технологию: каждое устройство может содержать в себе USB-концентратор, к которому можно подсоединить дополнительные устройства. Индустриальным стандартом контроллеров USB считается комплект Intel One-Stop-Shopping серий i8X930Ax/i8Х930Hx/i8X931Ax/i8X931Hx монтажа 64pin PQFP (Plastic Quad Flat Package), предназначенные для построения USB-концентраторов, USB-оконечных устройств и для изготовления USB-контроллеров для монитора. 42 Хотя USB медленнее, имея пропускную способность 12Mbps (1.5MBps), чем SCSI (замена последней последовательная шина ATA 3 – 600 Мбайт/с), она предлагает высокоскоростные и Plug-and-Play возможности для такой периферии, в которой традиционно используются последовательный, параллельный или специальный порт, например, клавиатура, мышь или монитор. USB также подходит для небольших периферийных устройств типа сканеров, в которых ранее применялись специализированные адаптеры или SCSI-контроллеры. Для периферии, не использующей SCSI-контроллеры, USB предлагает оборудование примерно в сто раз более быстрое, чем, например, традиционные последовательные порты с максимальной скоростью передачи 115Kbps. Параллельные порты со скоростью обмена 2Mbps работают примерно в шесть раз медленнее, чем USB. Вдобавок, один USB-порт может обслуживать до 126 периферийных устройств без каких-либо дополнительных компьютерных ресурсов, таких как IRQ. Сегодняшние последовательные или параллельные, порты для клавиатуры или монитора обычно могут обслужить только одно устройство. Более того, мало потребляющий USB-контроллер обеспечивает электропитание всех устройств, подключенных к его шине, уменьшив тем самым количество розеток на стене либо распределительных щитков (однако устройства, потребляющие относительно много энергии, такие как сканеры, нуждаются в дополнительных розетках). USB также предоставляет так называемый режим hot swapping - возможность подсоединять и переключать внешние устройства без выключения компьютера. Такие устройства, как клавиатура или мышь с двухсторонним обменом, не могут сегодня переключаться в режиме hot swapping. USB-контроллер имеет один стандартный кабель для любых периферийных устройств, что обеспечивает легкость подключения и снижение стоимости систем. Если устройства поддерживают PnP, то необходимые драйверы устройств могут автоматически загружаться и выгружаться. Топология шины USB представляет собой управляющий блок USB, концентраторы, кабели и функциональные устройства. Существует только один управляющий блок в любой системе USB. Интерфейсом для связи с ПК является управляющий контроллер, который может быть реализован в комбинации с аппаратными или аппаратно-программными средствами. Встроенный в управляющий блок корневой концентратор обеспечивает одну или несколько точек подключения. Концентраторы - ключевой элемент в архитектуре PnP USB. Они представляют собой устройства, которые обеспечивают многочисленные подключения к USB. Точки подключения именуются портами. Каждый 43 концентратор превращает одну точку подключения в несколько. Данная архитектура поддерживает сочленение нескольких концентраторов. Рис.4.6. Пирамида концентраторов шины, вид 1 Рис.4.6. Пирамида концентраторов шины, вид 2 44 Входной порт концентратора подсоединяет его к управляющему блоку. Каждый из выходных портов концентратора позволяет подключение к другому концентратору или функциональному блоку. Концентраторы могут определять подсоединение или отключение на каждом выходном порте и позволяют распределить энергию по выходным устройствам, а так же устанавливать оптимальную скорость для устройства, подключенного к выходному порту. Здесь показано, как можно объединить функциональные устройства и повысить возможность системы. Устройство, содержащее концентратор и одно или несколько функциональных устройств, именуется комбинированным устройством. Рис.4.6. Пирамида концентраторов компьютера USB передает сигналы и электропитание по 4-х-жильному кабелю, который состоит из сегментов длиною не более 5 метров. Длина кабельного сегмента USB меняется в зависимости от сопротивления проводника, мощности устройства и гибкости кабеля. Сигналы передаются по двум проводам кабеля D+ и D- (DATA+ и DATA-), которые имеют волновое сопротивление Z=90. Провода Vbas (+5VDC) и GND предназначены для электропитания устройств (питание и земля соответственно). Номинальное напряжение для Vbas составляет +5V. Чтобы гарантировать оптимальную величину сигнала на входе и необходимое сопротивление, на каждом конце кабеля применяются оконечные устройства. Оконечные устройства также позволяют фиксировать подсоединение и отсоединение на каждом порту и различать высоко- и низкоскоростные устройства. Рис.4.6. Кабель USB В USB 1 существует 2 режима передачи сигнала. Высокоскоростная передача сигнала составляет 12Mbps. Низкоскоростной режим обеспечивает скорость 1.5Mbps и более сильную защиту от электромагнитных 45 помех. Оба режима могут поддерживаться одновременно, в одной и той же системе USB в режиме переключения между передачами данных. Высокоскоростной режим необходим для работы с быстрыми устройствами IHVs (Independent Hardware Vendors), DVPDs (Digital Video Peripheral Devices), VCRs (Video Cassette Recorders), ISDN-периферией, принтерами, сканерами и т.д. Режим низкой скорости необходим для поддержки ограниченного числа устройств с узкой полосой пропускания, такими, как joystick, mouse, keyboard. Все транзакции в шине могут включать в себя до 3 пакетов. Каждая транзакция начинается, когда управляющий контроллер посылает маркерный пакет (Token Packet) USB, описывающий тип и направление транзакции, адрес устройства и номер конечной точки. В данной транзакции данные передаются либо от управляющего блока к устройству, либо наоборот. Источник транзакции затем посылает пакет данных, или сигнализирует об отсутствии данных для передачи. Получатель, в общем случае, отвечает пакетом квитирования (HandShake Packet), который подтверждает передачу данных. Данные в USB передаются по каналам. Существует 2 типа каналов: поток и сообщение. Потоковые данные не имеют определенной USBструктуры, в то время как у сообщений она есть. Кроме того, каналы связаны с полосой пропускания данных, типом передачи данных и характеристиками конечной точки, такими, как направленность и размер буфера. Каналы начинают свое существование, когда конфигурируется USBструктура. Только канал управления 0 существует всегда, как только устройство включено, для того, чтобы установить доступ к конфигурации устройства, статусу и управляющей информации. Использование транзакций позволяет управлять потоками в каналах. На аппаратном уровне это предохраняет буферы от ситуации неполного завершения или перезагрузки с помощью NACK-квитирования, которое управляет скоростью данных. Механизм управления потоками позволяет создавать гибкие расписания, которые адаптируют параллельную обработку к смеси потоков данных разных типов. Так, многочисленные каналы с разнотипными данными обслуживаются за разные интервалы времени и с пакетами разных размеров. Сама же архитектура USB поддерживает 4 основные типа передачи данных: Передачи управления. Они используются программным обеспечением USB для конфигурирования устройств, когда они впервые подсоединены. Отдельный драйвер может выбрать специфическое управление для обеспечения передачи данных без потерь. Групповая пересылка. Обычно состоит из больших объемов данных, ко46 торые используются принтерами, сканерами или цифровыми камерами. Групповые данные - это последовательные данные, надежный обмен которых обеспечивается на уровне аппаратуры путем обнаружения ошибок в технических средствах и дополнительно активизирует перезагрузку ПК. Полоса пропускания, которую занимают групповые данные, должна быть доступна в любой момент времени и не занимается другими типами данных. Передача прерываний. Небольшая порция данных, переданных в произвольный момент времени от периферийного устройства, называется прерыванием. Такие данные могут быть посланы устройством в любое время и передаются USB со скоростью, не меньшей, чем определено устройством. Прерывания обычно состоят из уведомления о событии, символов и адреса, которые организованы как 1 байт или более. Прерывания используются для поддержки низкоскоростных устройств протокола USB 1.5Mbps. Изохронные передачи. Изохронные данные (непрерывные данные) создаются, передаются и используются в реальном времени. Согласованная по времени информация подразумевает устойчивую скорость, при которой изохронные данные принимаются и передаются. Изохронные данные должны доставляться с необходимой скоростью, чтобы сохранить согласование по времени, так как изохронные данные могут быть чувствительны к задержкам доставки. Изосинхронная порция представляет собой непрерывный поток и используется для передачи звука или видео. К передаче изосинхронных данных предъявляются очень высокие требования. Типичный пример изохронных данных - аудио- или видеосигналы. Если скорость передачи этих потоков данных не сохраняется, то происходит нарушение синхронизации и получается искаженное восприятие. Даже если данные переданы с соответствующей скоростью, задержки в работе буферов могут вызвать искажения в протоколах типа Т.120 (аудиоконференции). Потоки изохронных данных USB сосредоточены в определенной части полосы пропускания, чтобы обеспечить доставку данных с необходимой скоростью. USB сконструирована таким образом, чтобы максимально уменьшить задержку передачи изохронных данных. USB выделяет полосу пропускания каналам в том случае, когда соединение произошло. Полоса пропускания распределяется среди каналов в соответствии со спецификой работы. Устройствам USB требуется буфер, и предполагается, что чем большую полосу пропускания занимает устройство, тем большего размера ему требуется буфер. Целью архитектуры 47 USB является обеспечение времени обращения к буферу в пределах нескольких миллисекунд. Полоса пропускания может распределяться по потокам данных, в результате чего достаточно широкий диапазон устройств может подключиться к шине USB. Распределение полосы пропускания в USB - блокирующее, то есть если размещение дополнительного канала ограничивает работу уже существующей полосы пропускания, дальнейшее назначение каналов будет отменено или блокировано. Когда канал закрыт, выделенная для него полоса пропускания освобождается и может быть переназначена на другой канал. Процесс USB превращает физическую топологию в индивидуальные отношения между ПО клиента (находящимся в функциональном блоке) и функциональными устройствами. Этот процесс включает в себя операции согласования и конфигурации, и находится под контролем ПО управляющего блока USB, спрятанного в верхнем слое (ПО клиента). ПО клиента запрашивает службы USB о передаче данных в систему программного обеспечения (ПО USB). Настройка вновь подсоединенных устройств не требует участия пользователя. В тоже время, поддержка USB изохронных передач превращает ПК в мощное средство коммуникации. Для периферийных устройств серийно выпускается USB-контроллер 82930A, выполненный на базе микроконтроллера архитектуры MCS-251, который поддерживает как скоростные каналы со скоростью передачи 12Mbps, так и каналы со скоростью 1.5Mbps, синхронную, изосинхронную передачу данных и режимы управления мощностью, необходимые для устройств USB. Эти контроллеры разработаны для периферийных устройств, подключаемых к компьютеру. Рис.4.7. Соединение модулей с I2C Последовательные шины передачи данных присутствуют и в микроконтроллерных структурах. Их число составляет несколько десятков. От48 дельные из них получили боьшое распространение и стали стандартом, поддерживаемым многими производителями микросхем. Одина из них - промышленная шина I2C. Длина ее может быть близка к километру. Частота могут достигать 5 МГц.Подключение модулей без учета обязательных резисторов подброса показана на рис. 4.7. 5. Архитектура потоков команд Архитектура последовательной машины базируется на выборке команд по указателю команд. Это определяет точку обработки в потоке команд. Однако присутствует несколько механизмов (подпрограмм, прерываний, переключения задач), поддерживаемых аппаратно процессорами, позволяющих запустить в обработку несколько потоков команд. Рассмотрим их на примере архитектуры микроконтроллера и одного из них механизма прерываний. Как правило, каждое устройство микроконтроллера представляет собой сложный блок. Однако оно отображается регистровой моделью. Через установку разрядов запускаются макросы внутренних микропрограммных автоматов. Примером может служить модель контроллера прерываний (Interrupt Controller). Рис. 5.1. Регистры контроллера прерываний Примечание: 1. Младшие 16 битов адреса. 2. Только очистка флагов. Разряды регистров обычно содержат указания на режимы работы, команды или данные, например, разряды системного управляющего регистра контроллера прерываний (SYSCR) задают режимы работы блока (рис. 5.3). 49 Рис. 5.2. Вектора системных прерываний Детальное рассмотрение процесса обработки прерываний, показывает ощутимую потерю производительности. Множество процессоров и не коррелированные потоки команд позволяют исполнять их на много процессорных архитектурах. 50 Рис. 5.3. Назначение разрядов регистра SYSCR контроллера прерываний 6. Сетевые конфигурации вычислительных сред. Поскольку пропускная способность указанных шин все же крайне мала для применения в высокоскоростных устройствах, то индустрия нуждалась в новых решениях, которые бы обеспечивали большую пропускную способность и позволили передавать данные на большие расстояния. Такие решения предоставляют компьютерные сети, образуя новые архитектуры КС. Компьютерная сеть – это совокупность компьютеров и различных устройств, обеспечивающих информационный обмен между компьютерами в сети без использования каких-либо промежуточных носителей информации. Оптические технологии доминируют в «длинных» последовательных линиях передачи данных и их верхний потолок стремится к пропускной способности 40 Гбит/с, 40-гигабитные системы занимают на 50% меньше пространства, чем эквивалентные 10-гигабитные системы, требуют на 20% – 40% меньшие энергии. Эти преимущества должны привести к меньшей стоимости систем. Имеются и несколько не явные преимущества. Например, IP-маршрутизаторы работают гораздо эффективнее при прохождении через них высокоскоростных суммарных информационных потоков, чем нескольких демультиплекисированных сигналов с меньшими скоростями передачи. Все многообразие компьютерных сетей можно классифицировать по группе признаков: 51 1) Территориальная распространенность; 2) Ведомственная принадлежность; 3) Скорость передачи информации; 4) Тип среды передачи; По территориальной распространенности сети могут быть локальными, глобальными, и региональными. Локальные – это сети, перекрывающие территорию не более 10 м2, региональные – расположенные на территории города или области, глобальные на территории государства или группы государств, например, всемирная сеть Internet. По принадлежности различают ведомственные и государственные сети. Ведомственные принадлежат одной организации и располагаются на ее территории. Государственные сети – сети, используемые в государственных структурах. По скорости передачи информации компьютерные сети делятся на низко-, средне- и высокоскоростные. По типу среды передачи разделяются на сети коаксиальные, на витой паре, оптоволоконные, с передачей информации по радиоканалам, в инфракрасном диапазоне. Компьютеры могут соединяться кабелями, образуя различную топологию сети (звездная, шинная, кольцевая и др.). Следует различать компьютерные сети и сети терминалов (терминальные сети). Компьютерные сети связывают компьютеры, каждый из которых может работать и автономно. Терминальные сети обычно связывают мощные компьютеры (майнфреймы), а в отдельных случаях и ПК с устройствами (терминалами), которые могут быть достаточно сложны, но вне сети их работа или невозможна, или вообще теряет смысл. Например, сеть банкоматов или касс по продажи авиабилетов. Строятся они на совершенно иных, чем компьютерные сети, принципах и даже на другой вычислительной технике. В классификации сетей существует два основных термина: LAN и WAN.LAN (Local Area Network) – локальные сети, имеющие замкнутую инфраструктуру до выхода на поставщиков услуг. Термин «LAN» может описывать и маленькую офисную сеть, и сеть уровня большого завода, занимающего несколько сотен гектаров. Зарубежные источники дают даже близкую оценку – около шести миль (10 км) в радиусе; использование высокоскоростных каналов.WAN (Wide Area Network) – глобальная сеть, покрывающая большие географические регионы, включающие в себя как локальные сети, так и прочие телекоммуникационные сети и устройства. Пример WAN – сети с коммутацией пакетов (Frame Relay), через которую могут «разговаривать» между собой различные компьютерные сети. 52 Термин «корпоративная сеть» также используется в литературе для обозначения объединения нескольких сетей, каждая из которых может быть построена на различных технических, программных и информационных принципах. Рассмотренные выше виды сетей являются сетями закрытого типа, доступ к ним разрешен только ограниченному кругу пользователей, для которых работа в такой сети непосредственно связана с их профессиональной деятельностью. Глобальные сети ориентированы на обслуживание любых пользователей. Рис. 6.1. Способы коммутации компьютеров и виды сетей 53 На рис. 6.1, представлены способы коммутации компьютеров и виды сетей. Локальные вычислительные сети подразделяются на два кардинально различающихся класса: одноранговые (одноуровневые или Peer to Peer) сети и иерархические (многоуровневые). Одноранговая сеть представляет собой сеть равноправных компьютеров, каждый из которых имеет уникальное имя (имя компьютера) и обычно пароль для входа в него во время загрузки ОС. Имя и пароль входа назначаются владельцем ПК средствами ОС. Одноранговые сети могут быть организованы с помощью таких операционных систем, как LANtastic, Windows’3.11, Novell NetWare Lite. Указанные программы работают как с DOS, так и с Windows. Одноранговые сети могут быть организованы также на базе всех современных 32-разрядных операционных систем – Windows’95 OSR2, Windows NT Workstation версии, OS/2) и некоторых других. В иерархических локальных сетях имеется один или несколько специальных компьютеров – серверов, на которых хранится информация, совместно используемая различными пользователями. Сервер в иерархических сетях – это постоянное хранилище разделяемых ресурсов. Сам сервер может быть клиентом только сервера более высокого уровня иерархии. Поэтому иерархические сети иногда называются сетями с выделенным сервером. Серверы обычно представляют собой высокопроизводительные компьютеры, возможно, с несколькими параллельно работающими процессорами, с винчестерами большой емкости, с высокоскоростной сетевой картой (100 Мбит/с и более). Компьютеры, с которых осуществляется доступ к информации на сервере, называются станциями или клиентами. Локальные компьютерные сети делятся на кольцевые, шинные, звездообразные, древовидные. Способ соединения компьютеров называется структурой или топологией сети. Сети Ethernet могут иметь топологию «шина» и «звезда». В первом случае все компьютеры подключены к одному общему кабелю (шине), во втором - имеется специальное центральное устройство (хаб), от которого идут «лучи» к каждому компьютеру, т.е. каждый компьютер подключен к своему кабелю. Структура типа «шина», рис. 6.2.(а), проще и экономичнее, так как для нее не требуется дополнительное устройство и расходуется меньше кабеля. Но она очень чувствительна к неисправностям кабельной системы. Если кабель поврежден хотя бы в одном месте, то возникают проблемы для всей сети. Место неисправности трудно обнаружить. 54 В этом смысле «звезда», рис. 6.2. (б), более устойчива. Поврежденный кабель – проблема для одного конкретного компьютера, на работе сети в целом это не сказывается. Не требуется усилий по локализации неисправности. Рис. 6.2. Структура построения (а) шина, (б) кольцо, (в) звезда В сети, имеющей структуру типа «кольцо», рис. 6.2. (в), информация передается между станциями по кольцу с переприемом в каждом сетевом контроллере. Переприем производится через буферные накопители, выполненные на базе оперативных запоминающих устройств, поэтому при выходе их строя одного сетевого контроллера может нарушиться работа всего кольца. Достоинство кольцевой структуры – простота реализации устройств, а недостаток – низкая надежность. 55 Все рассмотренные структуры – иерархические. Однако, благодаря использованию мостов, специальных устройств, объединяющих локальные сети с разной структурой, из вышеперечисленных типов структур могут быть построены сети со сложной иерархической структурой. Среди факторов, влияющих на выбор физической среды передачи можно выделить следующие: 1) Требуемая пропускная способность, скорость передачи в сети; 2) Размер сети; 3) Требуемый набор служб (передача данных, речи, мультимедиа и т.д.), который необходимо организовать. 4) Требования к уровню шумов и помехозащищенности; 5) Общая стоимость проекта, включающая покупку оборудования, монтаж и последующую эксплуатацию. Основная среда передачи данных ЛКС – неэкранированная витая пара, коаксиальный кабель, многомодовое оптоволокно. При примерно одинаковой стоимости одномодового и многомодового оптоволокна, оконечное оборудование для одномодового значительно дороже, хотя и обеспечивает большие расстояния. Поэтому в ЛКС используют, в основном, многомодовую оптику. Основные технологии ЛКС: Ethernet, ATM. Технологии FDDI (2 кольца), применявшаяся ранее для опорных сетей и имеющая хорошие характеристики по расстоянию, скорости и отказоустойчивости, сейчас мало используется, в основном, из-за высокой стоимости, как, впрочем, и кольцевая технология Token Ring, хотя обе они до сих пор поддерживаются на высоком уровне всеми ведущими вендорами, а в отдельных случаях (например, применение FDDI для опорной сети масштаба города, где необходима высокая отказоустойчивость и гарантированная доставка пакетов) использование этих технологий все еще может быть оправданным. Типы ЛКС: Ethernet – изначально коллизионная технология, основанная на общей шине, к которой компьютеры подключаются и «борются» между собой за право передачи пакета. Основной протокол – CSMA/CD (множественный доступ с чувствительностью несущей и обнаружению коллизий). Дело в том, что если две станции одновременно начнут передачу, то возникает ситуация коллизии, и сеть некоторое время «ждет», пока «улягутся» переходные процессы и опять наступит «тишина». Существует еще один метод доступа – CSMA/CA (Collision Avoidance) – то же, но с исключением коллизий. Этот метод применяется в беспроводной технологии Radio Ethernet или Apple Local Talk – перед отправкой любого пакета в сети пробегает анонс о том, что сейчас будет происходить передача, и станции уже не пытаются ее 56 инициировать. Ethernet бывает полудуплексный (Half Duplex), по всем средам передачи: источник и приемник «говорит по очереди» (классическая коллизионная технология) и полнодуплексный (Full Duplex), когда две пары приемника и передатчика на устройствах говорят одновременно. Этот механизм работает только на витой паре (одна пара на передачу, одна пара на прием) и на оптоволокне (одна пара на передачу, одна пара на прием). Ethernet различается по скоростям и методам кодирования для различной физической среды, а также по типу пакетов (Ethernet II, 802.3, RAW, 802.2 (LLC), SNAP). Ethernet различается по скоростям: 10 Мбит/с, 100 Мбит/с, 1000 Мбит/с (Гигабит). Поскольку ратифицирован стандарт Gigabit Ethernet для витой пары категории 5, можно сказать, что для любой сети Ethernet могут быть использованы витая пара, одномодовое (SMF) или многомодовое (MMF) оптоволокно. Существуют два варианта реализации Ethernet на коаксиальном кабеле, называемые «тонкий» и «толстый» Ethernet (Ethernet на тонком кабеле 0,2 дюйма и Ethernet на толстом кабеле 0,4 дюйма). Тонкий Ethernet использует кабель типа RG-58A/V (диаметром 0,2 дюйма). Для маленькой сети используется кабель с сопротивлением 50 Ом. Коаксиальный кабель прокладывается от компьютера к компьютеру. У каждого компьютера оставляют небольшой запас кабеля на случай возможности его перемещения. Длина сегмента 185 м, количество компьютеров, подключенных к шине – до 30. После присоединения всех отрезков кабеля с BNC-коннекторами (BayonelNeill-Concelnan) к Т-коннекторам (название обусловлено формой разъема, похожей на букву «Т») получится единый кабельный сегмент. На его обоих концах устанавливаются терминаторы («заглушки»). Терминатор конструктивно представляет собой BNC-коннектор (он также надевается на Тконнектор) с впаянным сопротивлением. Значение этого сопротивления должно соответствовать значению волнового сопротивления кабеля, т.е. для Ethernet нужны терминаторы с сопротивлением 50 Ом. Толстый Ethernet – сеть на толстом коаксиальном кабеле, имеющем диаметр 0,4 дюйма и волновое сопротивление 50 Ом. Максимальная длина кабельного сегмента – 500 м. Прокладка самого кабеля почти одинакова для всех типов коаксиального кабеля. Для подключения компьютера к толстому кабелю используется дополнительное устройство, называемое трансивером. Трансивер подсоединен непосредственно к сетевому кабелю. От него к компьютеру идет специальный трансиверный кабель, максимальная длина которого 50 м. На обоих его концах находятся 15-контактные DIX-разъемы (Digital, Intel и Xerox). С 57 помощью одного разъема осуществляется подключение к трансиверу, с помощью другого – к сетевой плате компьютера. Трансиверы освобождают от необходимости подводить кабель к каждому компьютеру. Расстояние от компьютера до сетевого кабеля определяется длиной трансиверного кабеля. Создание сети при помощи трансивера очень удобно. Он может в любом месте в буквальном смысле «пропускать» кабель. Эта простая процедура занимает мало времени, а получаемое соединение оказывается очень надежным. Кабель не режется на куски, его можно прокладывать, не заботясь о точном месторасположении компьютеров, а затем устанавливать трансиверы в нужных местах. Крепятся трансиверы, как правило, на стенах, что предусмотрено их конструкцией. При необходимости охватить локальной сетью площадь большую, чем это позволяют рассматриваемые кабельные системы, применяется дополнительные устройства – репитеры (повторители). Репитер имеет 2-портовое исполнение, т.е. он может объединить 2 сегмента по 185 м. Сегмент подключается к репитеру через Т-коннектор. К одному концу Т-коннектора подключается сегмент, а на другом ставится терминатор. В сети может быть не больше четырех репитеров. Это позволяет получить сеть максимальной протяженностью 925 м. Существуют 4-портовые репитеры. К одному такому репитеру можно подключить сразу 4 сегмента. Длина сегмента для Ethernet на толстом кабеле составляет 500 м, к одному сегменту можно подключить до 100 станций. При наличии трансиверных кабелей до 50 м длиной, толстый Ethernet может одним сегментом охватить значительно большую площадь, чем тонкий. Эти репитеры имеют DIXразъемы и могут подключаться трансиверами, как к концу сегмента, так и в любом другом месте. Очень удобны совмещенные репитеры, т.е. подходящие и для тонкого и для толстого кабеля. Каждый порт имеет пару разъемов: DIX и BNC, но он не могут быть задействованы одновременно. Если необходимо объединять сегменты на разном кабеле, то тонкий сегмент подключается к BNCразъему одного порта репитера, а толстый – к DIX-разъему другого порта. Репитеры очень полезны, но злоупотреблять ими не стоит, так как они приводят к замедлению работы в сети. Витая пара – это два изолированных провода, скрученных между собой. Для Ethernet используется 8-жильный кабель, состоящий из четырех витых пар. Для защиты от воздействия окружающей среды кабель имеет внешнее изолирующее покрытие. 58 Основной узел на витой паре – hub (в переводе называется накопителем, концентратором или просто хаб). Каждый компьютер должен быть подключен к нему с помощью своего сегмента кабеля. Длина каждого сегмента не должна превышать 100 м. На концах кабельных сегментов устанавливаются разъемы RJ-45. Одним разъемом кабель подключается к хабу, другим – к сетевой плате. Разъемы RJ-45 очень компактны, имеют пластмассовый корпус и восемь миниатюрных площадок. Хаб – центральное устройство в сети на витой паре, от него зависит ее работоспособность. Располагать его надо в легкодоступном месте, чтобы можно было легко подключать кабель и следить за индикацией портов. Хабы выпускаются на разное количество портов – 8, 12, 16 или 24. Соответственно к нему можно подключить такое же количество компьютеров. Технология Fast Ethernet IEEE 802.3U. Технология Fast Ethernet была стандартизирована комитетом IEEE 802.3. Новый стандарт получил название IEEE 802.3U. Скорость передачи информации 100 Мбит/с. Fast Ethernet организуется на витой паре или оптоволокне. В сети Fast Ethernet организуются несколько доменов конфликтов, но с обязательным учетом класса повторителя, используемого в доменах. Репитеры Fast Ethernet (IEEE 802.3U) бывают двух классов и различаются по задержке в мкс. Соответственно в сегменте (логическом) может быть до двух репитеров класса 2 и один репитер класса 1. Для Ethernet (IEEE 802.3) сеть подчиняется правилу 5-4-3-2-1. Правило 5-4-3-2-1 гласит: между любыми двумя рабочими станциями не должно быть более 5 физических сегментов, 4 репитеров (концентраторов), 3 «населенных» физических сегментов, 2 «населенных» межрепитерных связей (IRL), и все это должно представлять собой один коллизионный домен (25,6 мкс). Физически из концентратора «растет» много проводов, но логически это все один сегмент Ethernet и один коллизионный домен, в связи с ним любой сбой одной станции отражается на работе других. Поскольку все станции вынуждены «слушать» чужие пакеты, коллизия происходит в пределах всего концентратора (на самом деле на другие порты посылается сигнал Jam, но это не меняет сути дела). Поэтому, хотя концентратор – это самое дешевое устройство и, кажется, что оно решает все проблемы заказчика, советуем постепенно отказаться от этой методики, особенно в условиях постоянного роста требований к ресурсам сетей, и переходить на коммутируемые сети. Сеть их 20 компьютеров, собранная на репитерах 100 Мбит/с, может работать медленнее, чем сеть из 20 компьютеров, включенных в коммутатор 10 Мбит/с. Если раньше считалось «нормальным» присутствие 59 в сегменте до 30 компьютеров, то в нынешних сетях даже 3 рабочие станции могут загрузить весь сегмент. В Fast Ethernet внутри одного домена конфликтов могут находиться не более двух повторителей класса II или не более одного повторителя класса I (рис. 6.3, 6.4). Рис. 6.3. Структура сети на повторителях класса 2 с использованием витой пары. Рис.6.4. Структура сети на повторителях класса 1 с использованием витой пары Различные типы кабелей и устройств Fast Ethernet дают разную величину задержки RTD. Витая пара категории 5 – 1,11 бит-тайм на метр длины, оптоволоконный кабель 1 бит-тайм также на метр длины, сетевой адаптер – 50 бит-тайм, медиаконвертеры от 50 до 100, повторитель класса I –140, повторитель класса II – 92 бит-тайм. Задержку RTD между двумя сетевыми узлами рассчитать несложно, она равняется сумме соответствующих задержек их сетевых адаптеров и всех промежуточных сетевых компонентов (кабелей, повторителей).Максимальный размер сети на базе витой пары (спецификация 100Base-TX) с двумя повторителями класса II составляет 205 м, а два компьютера (устройства DTE) могут быть связаны между собой отрезком оптоволоконного кабеля длиной 412 м. 60 Следующий шаг в развитии технологии Ethernet – разработка проекта стандарта IEEE-802.32. Данный стандарт предусматривает скорость обмена информацией между станциями локальной сети 1 Гбит/с. Предполагая, что устройства Gigabit Ethernet будут объединять сегменты сетей с Fast Ethernet со скоростями 100 Мбит/с. Разрабатываются сетевые карты со скоростью 1 Гбит/с, а также серия сетевых устройств, таких как коммутаторы и маршрутизаторы. В сети с Gigabit Ethernet используют управление трафиком, контроль перегрузок и обеспечение качества обслуживания (Quality Of Service - QOS). Стандарт Gigabit Ethernet – один из серьезных соперников развивающейся сегодня технологии АТМ. Сеть АТМ имеет звездообразную топологию. Сеть АТМ строится на основе одного или нескольких коммутаторов, являющихся неотъемлемой частью данной коммуникационной структуры. Высокая скорость передачи и чрезвычайно низкая вероятность ошибок в волоконно-оптических системах выдвигают на первый план задачу создания высокопроизводительных систем коммутации на основе стандартов АТМ. Простейший пример такой сети – один коммутатор, обеспечивающий коммутацию пакетов, данных и несколько оконечных устройств. АТМ – это метод передачи информации между устройствами в сети маленькими пакетами фиксированной длины, названными ячейками (cells). Фиксация размеров ячейки имеет ряд существенных преимуществ по сравнению с пакетами переменной длины. Во-первых, ячейки фиксированной длины требуют минимальной обработки при операциях маршрутизации в коммутаторах. Это позволяет максимально упростить схемные решения коммутаторов при высоких скоростях коммутации. Во-вторых, все виды обработки ячеек по сравнению с обработкой пакетов переменной длины значительно проще, так как отпадает необходимость в вычислении длины ячейки. В-третьих, в случае применения пакетов переменной длины передача длинного пакета данных могла бы вызвать задержку выдачи в линию пакетов с речью или видео, что привело бы к их искажению. Модель АТМ имеет четырехуровневую структуру. Различают несколько уровней: пользовательский (User Layer) – включает уровни, начиная с сетевого и выше (IPX/SPX или TCP/IP); адаптации (АТМ Adaptation Layer - AAL); ATM (ATM Layer); физический (Physical Layer). 61 Пользовательский уровень обеспечивает создание сообщения, которое должно быть передано в сеть АТМ и соответствующим образом преобразовано. Уровень адаптации (AAL) обеспечивает доступ пользовательских приложений к коммутирующим устройствам АТМ. Данный уровень формирует стандартные АТМ-ячейки и передает их передает их на уровень АТМ для последующей обработки. Физический уровень обеспечивает передачу ячеек через разнообразные коммутационные среды. Данный уровень состоит из двух подуровней – подуровня преобразования передачи, реализующего различные протоколы передачи по физическим линиям, и подуровня адаптации к среде передачи. Оконечные устройства АТМ – сети, подключающиеся к коммутаторам через интерфейс, называемый UNI – интерфейс пользователя с сетью. UNI может быть интерфейсом между рабочей станцией, ПК, АТС, маршрутизатором, или каким угодно «черным ящиком» и АТМ-коммутатором. Первоначально глобальные сети решали задачу доступа удаленных ЭВМ и терминалов к мощным ЭВМ, которые назывались host-компьютер (часто используют термин сервер). Такие подключения осуществлялись через коммутируемые или некоммутируемые каналы сетей или через спутниковые выделенные сети передачи данных, например, сети, работающие по протоколу Х.25. Для подключения к таким сетям передачи данных использовались модемы, работающие под управлением специальных телекоммуникационных программ, таких как BITCOM, COMIT, PROCOM, MITEZ и т.д. Эти программы, работая под операционной системой MS-DOS, обеспечивали установление соединения с удаленным компьютером и обмен с ним информацией. С закатом эры MS-DOS их место занимает встроенное в операционные системы коммуникационное программное обеспечение. Примером могут служить средства Windows95 или удаленный доступ (RAS) в WindowsNT. В настоящее время все реже используются подключенные к глобальным сетям одиночные компьютеры. Это и домашние ПК. В основной массе абонентами компьютерных сетей являются компьютеры, включенные в локальные вычислительные сети (ЛВС), и поэтому часто решается задача организации взаимодействия нескольких удаленных локальных вычислительных сетей. При этом требуется обеспечить удаленному компьютеру связь с любым компьютером удаленной локальной сети, и, наоборот, любому компьютеру ЛВС с удаленным компьютером. Последнее становится весьма актуальным при расширении парка домашних и персональных компьютеров. 62 В качестве сетевого оборудования применяются центры коммутации, которые для сетей Х.25 часто исполняются как специализированные устройства фирм-производителей Siemens, Telenet, Alcatel, Ericsson и др., а для сети с TCP/IP используются маршрутизаторы фирм Cisco и Decnis. Структура сетей показана на рис. 6.5. Рис. 6.5. Объединения компьютеров в глобальных сетях. Internet является старейшей глобальной сетью. Internet предоставляет различные способы взаимодействия удаленных компьютеров и совместного использования распределенных услуг и информационных ресурсов. Internet работает по протоколу TCP/IP. Основным «продуктом», который вы можете найти в Internet, является информация. Эта информация собрана в файлы, которые хранятся на хост-компьютерах, и она может быть представлена в различных форматах. Формат данных зависит от того, каким сетевым сервисом вы воспользовались, и какие возможности по отображению информации есть на ПК. Любой компьютер, который поддерживает протоколы TCP/IP, может выступать в качестве хост-компьютера. Было бы не правильно не коснуться систем связи модулей (в основном микросхем, плат) между собой в основном в целях диагностики, выявления не исправных компонентов. Стандарта IEEE 1149.01 "BOUNDARY SCAN" на контролепригодное проектирование дискретных устройств на основе БИС, разработан объединенной группой по тестам - JTAG. Его сигналы достаточно для курса описаны выше, в пояснении функций шины PCI. 63 7. Параллелизм и конвейеризация в ступенях КС. Параллелизм и конвейеризация, основные направления повышения производительности КС при ограничении на возможности подъема тактовой частоты и практически касаются и операционных блоков и устройств управления. Параллелизм — это возможность одновременного выполнения более одной операции над данными или адресами. Возможность параллельного выполнения этих операций определяется правилом Рассела. Объекты A и B (команды, операторы, программы) являются независимыми и могут выполняться параллельно, если выполняется следующее условие: [(In(B) ^ Out(A)) ˇ (In(A) ^ Out(B)) ˇ (Out(A) ^ Out(B))] = Ø, (2.1) где In(A) — набор входных, а Out(A) — набор выходных переменных объекта A. Если условие не выполняется, то между A и B существует зависимость, и они не могут выполняться параллельно. Если условие нарушается в первом терме, то такая зависимость называется прямой. Если условие нарушено во втором терме, то такая зависимость называется обратной. Наконец, если условие не выполняется в третьем терме, то такая зависимость называется конкуренционной. К основным формам параллелизма относят: естественный или векторный параллелизм; параллелизм независимых ветвей; параллелизм смежных операций или скалярный параллелизм. Мелкозернистый (скалярный) параллелизм При исполнении программы регулярно встречаются ситуации, когда исходные данные для i-й операции существовали всегда или вырабатываются заранее, например, при выполнении (i - к)-й операции. Тогда при соответствующем построении вычислительной системы можно совместить во времени выполнение i-й операции с выполнением (i - 1)-й, (i 2)-й, ... операций (смещение менее к). В таком понимании скалярный параллелизм похож на параллелизм независимых ветвей, однако они отличаются длиной ветвей и требуют разных ядер процессора. Скалярный параллелизм обычно работает автоматически под управлениием диспетчера процессора. Как правило, поддерживается и параллельная проверка условия Рассела. При его нарушении отменяется выполнение не распараллеливаемой команды, для сохранения предыдущего результата вводят виртуальные регистры, отображающие основные и хранящие результаты выполнения программ. Крупнозернистый параллелизм. Векторный параллелизм (естественный параллелизм). Вектор — одномерный массив, который образуется из многомерного массива, если один 64 из индексов не фиксирован и пробегает все значения в диапазоне его изменения (координаты в фазовых пространствах и т.п.). Блок MMX и специализированные векторные процессоры примеры реализации векторных архитектур. Параллелизм независимых ветвей. Если в задаче выделены независимые участки программ — ветви, они могут выполняться на различных процессорах. Параллелизм вариантов. Это путь ускорения одной и той же модели при разных входных параметрах. Параллелизм вариантов отличается от идеологии крупнозернистого параллелизма. Отличие состоит в том, что в случае крупнозернистого параллелизма вычисления проводятся внутри одной задачи и требования к скорости обмена между частями задачи достаточно высокие. В параллелизме вариантов распараллеливаются целые задачи, обмен между которыми в принципе отсутствует. Закон Амдала. Одной из главных характеристик параллельных систем является ускорение R решения задач в параллельных системах. Оно определяется выражением: R = T1 /Tn , где T1 − время решения задачи на однопроцессорной системе, а Tn − время решения той же задачи на n − процессорной системе. Пусть W = Wск + Wпр, где W − общее число операций в задаче, Wпр − число операций, которые можно выполнять параллельно, а Wcк − число скалярных (нераспараллеливаемых) операций. Обозначим также через t время выполнения одной операции. Это довольно грубое ограничение. Тогда получаем известный закон Амдала Здесь a = Wск /W − удельный вес скалярных операций, n - число процессоров. Сетевой закон Амдала. Основной вариант закона Амдала не отражает потерь времени на межпроцессорный обмен сообщениями. Эти потери могут не только снизить ускорение вычислений, но и замедлить вычисления по сравнению с однопроцессорным вариантом. Поэтому необходима некоторая модернизация выражения. 65 Введем переменные - Wc − количество передач данных, tc − время одной передачи данных и получим сетевой закон Амдала: Конвейеризация Конвейеризация (или конвейерная обработка) в общем случае основана на разделении подлежащей исполнению функции на более мелкие части, называемые ступенями, и выделении для каждой из них отдельного блока аппаратуры. Так обработку любой машинной команды можно разделить на несколько этапов (несколько ступеней), организовав передачу данных от одного этапа к следующему. При этом конвейерную обработку можно использовать для совмещения этапов выполнения разных команд. Производительность при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются несколько команд. Конвейерная обработка такого рода широко применяется во всех современных быстродействующих процессорах. Конвейеризация увеличивает пропускную способность процессора (количество команд, завершающихся в единицу времени), но она не сокращает время выполнения отдельной команды. В действительности, она даже несколько увеличивает время выполнения каждой команды изза накладных расходов, связанных с добавлением конвейерных регистров. Однако общее увеличение пропускной способности означает, что программа будет выполняться быстрее по сравнению с простой неконвейерной схемой. Конвейерные регистры к длительности такта добавляют время установки и задержку распространения сигналов. Диаграмма работы простейшего конвейера при 8-ми элементном векторе данных. Номер такта/ данные Д( i) Д(i+1) Д(i+2) Д(i+3) Д(i+4) Д(i+5) Д(i+6) Д(i+7) 1 2 3 4 5 IF ID IF EX ID IF MEM EX ID IF WB MEM EX ID IF 6 7 WB MEM EX ID IF WB MEM EX ID IF 8 9 10 11 12 WB MEM EX ID IF WB MEM EX ID WB MEM EX WB MEM WB Конвейеризация эффективна только тогда, когда загрузка конвейера 66 близка к полной, а скорость подачи новых команд и операндов соответствует максимальной производительности конвейера. Если произойдет задержка, то параллельно будет выполняться меньше операций и суммарная производительность снизится. Такие задержки могут возникать в результате возникновения конфликтных ситуаций. В качестве примера рассмотрим неконвейерную машину с пятью этапами выполнения операций, которые имеют длительность 2 нс каждая. Пусть накладные расходы на организацию конвейерной обработки составляют 0,1 нс. Тогда среднее время выполнения команды в неконвейерной машине при 25 элементном входном векторе будет равно 2*5*25= 250 нс. Если же используется конвейерная организация, длительность такта будет равна длительности этапа обработки плюс накладные расходы, т.е. 2,1 нс. Это время соответствует среднему времени выхода глубоко конвейеризированных данных с конвейера. Таким образом, ускорение, полученное в результате конвейеризации, будет равно: Среднее время выполнения команды в конвейерном режиме 2,1*5+24*2.1=60,9 нс. Ускорение составило величину 4,1 раза. При глубоко конвейеризированных данных получим выигрыш в производительности 4,76 раза. В отличии от распаралеливания рост аппаратуры здесь существенно меньший, так как все ступени узко специализируются. Задержки в работе конвейера, его аннулирование могут возникать в результате возникновения конфликтных ситуаций. Конфликты снижают реальную производительность конвейера, которая могла бы быть достигнута в идеальном случае. Отметим три типа конфликтов: 1. Структурные конфликты, которые возникают из-за конфликтов по ресурсам, когда аппаратные средства не могут поддерживать все возможные комбинации команд в режиме одновременного выполнения с совмещением. 2. Конфликты по данным, возникающие в случае, когда выполнение одной команды зависит от результата выполнения предыдущей команды. 3. Конфликты по управлению, которые возникают при конвейеризации команд переходов и других команд, которые изменяют значение счетчика команд. Конфликты в конвейере приводят к необходимости приостановки выполнения команд (pipeline stall). Обычно в простейших конвейерах, если приостанавливается какая-либо команда, то все следующие за ней команды также приостанавливаются. Команды, предшествующие приостановленной, могут продолжать выполняться, но во время приостановки не выбирается ни одна новая команда. 67 Пусть конвейерное устройство состоит из l ступеней, срабатывающих за один такт. Тогда, например, для сложения двух векторов из n элементов потребуется ( + n) тактов. Если при этом используются также векторные команды, то потребуется (возможно, несколько) σ дополнительных тактов для их инициализации. Эта величина учитывает также возможные пропуски тактов выдачи результатов на выходе конвейера, вследствие необходимости выполнения вспомогательных операций, связанных с организацией конвейера. С использованием введенных обозначений запишем соотношение для оценки производительности конвейера: где τ – время такта работы компьютера. На рис. 7.1 приведен график зависимости производительности от n. Рис. 7.1. Зависимость производительности конвейерного устройства от длины входного набора данных Обычно КС строятся с использованием одновременно всех типов устройств: скалярных, векторных и конвейерных. В частности, первый векторно-конвейерный компьютер Cray-1 (пиковая производительность 160 Mflops) имел 12 конвейерных функциональных устройств, причем все функциональные устройства могли работать одновременно и независимо друг от друга. И любой современный компьютер сочетает конвейеризацию и параллелизм в своих основных блоках. 68 8. Виртуальные процессы, иерархия памяти КС Физическая адресация. В машинах с регистрами общего назначения метод адресации объектов, с которыми манипулирует команда, может задавать константу, регистр или ячейку памяти. Для обращения к ячейке памяти процессор, прежде всего, должен вычислить действительный или эффективный адрес памяти, который определяется заданным в команде методом адресации. Рис. 8.1.Основные методы адресации операндов На рис. 8.1 представлены практически все основные методы адресации операндов, которые реализованы в компьютерах. Адресация непосредственных данных и литеральных констант обычно рассматривается как один из методов адресации памяти (хотя значения данных, к которым в этом случае производятся обращения, являются частью самой команды и обрабатываются в общем потоке команд). Адресация регистров, как правило, рассматривается отдельно. В данном разделе методы адресации, связанные со счетчиком команд (адресация относительно счетчика команд) рассматриваются отдельно. Этот вид адресации используется главным образом для определения программных адресов в командах передачи управления. Жесткая привязка этих адресов к памяти в первые 69 годы развития компьютеров на определенном этапе развития вызвало отрицание, данной естественной структуры. Использование сложных методов адресации позволяет существенно сократить количество команд в программе, но при этом значительно увеличивается сложность аппаратуры. Исследование КС часто ведется в направлении выявления эффективности различных нововведений. Например, как часто методы адресации используются в реальных программах? На рис. 8.2 представлены результаты измерений частоты использования различных методов адресации на примере трех популярных программ (компилятора с языка Си GCC, текстового редактора TeX и САПР Spice), выполненных на компьютере VAX. Рис. 8.2. Частоты использования различных методов адресации Полученные результаты позволяют изменить архитектурные решения, например, отказатся от аппаратной поддержки методов косвенной адресации, подключив освободившуюся часть в поддержку более часто используемых методов. Хотя подобные исследования сильно коррелированны с принципами доминирующими в текущий момент в технологии программирования. Иерархия памяти. Иерархия памяти современных компьютеров строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Доля попаданий (hit rate) или коэффициент попаданий (hit 70 ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне. Время обращения при попадании (hit time) есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом. Потери на промах (miss penalty) есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор). Потери на промах далее включают в себя две компоненты: время доступа (access time) - время обращения к первому слову блока при промахе, и время пересылки (transfer time) - дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, время пересылки связано с полосой пропускания канала между устройствами памяти двух смежных уровней. Сегодня кэш-память имеется практически в любом классе компьютеров, и их компанентов (ОЗУ, контроллеров дисководов и т. п.), у Центрального процессора она дву- трех уровневая. Запись в кэш ведется с опережением, с предсказанием и выполняется построчно. Размер блока (строки) 4-128 байт Время попадания (hit time) 1-4 такта синхронизации (обычно 1 такт) Потери при промахе (miss penalty) 8-32 такта синхронизации (Время доступа - access time) (6-10 тактов синхронизации) (Время пересылки - transfer time) (2-22 такта синхронизации) Доля промахов (miss rate) 1%-20% Размер кэш-памяти 4 Кбайт - 16 Мбайт Принципы размещения блоков в кэш-памяти определяют три основных типа их организации: · Если каждый блок основной памяти имеет только одно фиксированное место, на котором он может появиться в кэш-памяти, то такая кэш-память называется КЭШем с прямым отображением (direct mapped). Это наиболее простая организация кэш-памяти, при которой для отображения адресов блоков основной памяти на адреса кэш-памяти просто используются младшие разряды адреса блока. Таким образом, все блоки основной памяти, имеющие одинаковые младшие разряды в своем адресе, попадают в один блок кэш-памяти, т.е. (адрес блока кэш-памяти) = (адрес блока основной памяти) mod (число блоков в кэш-памяти). 71 · Если некоторый блок основной памяти может располагаться на любом месте кэш-памяти, то кэш называется полностью ассоциативным (fully associative). · Если некоторый блок основной памяти может располагаться на ограниченном множестве мест в кэш-памяти, то кэш называется множественно-ассоциативным (set associative). Обычно множество представляет собой группу из двух или большего числа блоков в КЭШе. Если множество состоит из n блоков, то такое размещение называется множественно-ассоциативным с n каналами (n-way set associative). Для размещения блока, прежде всего, необходимо определить множество. Множество определяется младшими разрядами адреса блока памяти (индексом): (адрес множества кэш-памяти) = (адрес блока основной памяти) mod (число множеств в кэш-памяти) Далее, блок может размещаться на любом месте данного множества. Диапазон возможных организаций кэш-памяти очень широк: кэш-память с прямым отображением есть просто одноканальная множественноассоциативная кэш-память, а полностью ассоциативная кэш-память с m блоками может быть названа m-канальной множественно-ассоциативной. В современных процессорах, как правило, используется либо кэш-память с прямым отображением, либо двух- (четырех-) канальная множественно-ассоциативная кэш-память. 2. Как найти блок, находящийся в кэш-памяти? У каждого блока в кэш-памяти имеется адресный тег, указывающий, какой блок в основной памяти данный блок кэш-памяти представляет. Эти теги обычно одновременно сравниваются с выработанным процессором адресом блока памяти. Кроме того, необходим способ определения того, что блок кэш-памяти содержит достоверную или пригодную для использования информацию. Наиболее общим способом решения этой проблемы является добавление к тегу так называемого бита достоверности (valid bit). Адресация множественно-ассоциативной кэш-памяти осуществляется путем деления адреса, поступающего из процессора, на три части: поле смещения используется для выбора байта внутри блока кэш-памяти, поле индекса определяет номер множества, а поле тега используется для сравнения. Если общий размер кэш-памяти зафиксировать, то увеличение степени ассоциативности приводит к увеличению количества блоков во множестве, при этом уменьшается размер индекса и увеличивается размер тега. 3. Какой блок кэш-памяти должен быть замещен при промахе? 72 При возникновении промаха, контроллер кэш-памяти должен выбрать подлежащий замещению блок. Польза от использования организации с прямым отображением заключается в том, что аппаратные решения здесь наиболее простые. Выбирать просто нечего: на попадание проверяется только один блок и только этот блок может быть замещен. При полностью ассоциативной или множественно-ассоциативной организации кэшпамяти имеются несколько блоков, из которых надо выбрать кандидата в случае промаха. Как правило, для замещения блоков применяются две основных стратегии: случайная и LRU. В первом случае, чтобы иметь равномерное распределение, блокикандидаты выбираются случайно. В некоторых системах, чтобы получить воспроизводимое поведение, которое особенно полезно во время отладки аппаратуры, используют псевдослучайный алгоритм замещения. Во втором случае, чтобы уменьшить вероятность выбрасывания информации, которая скоро может потребоваться, все обращения к блокам фиксируются. Заменяется тот блок, который не использовался дольше всех (LRU - Least-Recently Used). Достоинство случайного способа заключается в том, что его проще реализовать в аппаратуре. Когда количество блоков для поддержания трассы увеличивается, алгоритм LRU становится все более дорогим и часто только приближенным. На рис. 7.2 показаны различия в долях промахов при использовании алгоритма замещения LRU и случайного алгоритма. Ассоциативность: 2-канальная 4-канальная 8-канальная Размер кэшLRU Random LRU Random LRU Random памяти 16 KB 5.18% 5.69% 4.67% 5.29% 4.39% 4.96% 64 KB 1.88% 2.01% 1.54% 1.66% 1.39% 1.53% 256 KB 1.15% 1.17% 1.13% 1.13% 1.12% 1.12% 4. Что происходит во время записи? При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению и большинство команд не пишут в память. Обычно операции записи составляют менее 10% общего трафика памяти. Желание сделать общий случай более быстрым означает оптимизацию кэшпамяти для выполнения операций чтения, однако при реализации высокопроизводительной обработки данных нельзя пренебрегать и скоростью операций записи. К счастью, общий случай является и более простым. Блок из кэш-памяти может быть прочитан в то же самое время, когда читается и сравнивается его тег. Таким образом, чтение блока начинается сразу, как только ста73 новится доступным адрес блока. Если чтение происходит с попаданием, то блок немедленно направляется в процессор. Если же происходит промах, то от заранее считанного блока нет никакой пользы, правда нет и никакого вреда. Однако при выполнении операции записи ситуация коренным образом меняется. Именно процессор определяет размер записи (обычно от 1 до 8 байтов) и только эта часть блока может быть изменена. В общем случае это подразумевает выполнение над блоком последовательности операций чтение-модификация-запись: чтение оригинала блока, модификацию его части и запись нового значения блока. Более того, модификация блока не может начинаться до тех пор, пока проверяется тег, чтобы убедиться в том, что обращение является попаданием. Поскольку проверка тегов не может выполняться параллельно с другой работой, то операции записи отнимают больше времени, чем операции чтения. Очень часто организация кэш-памяти в разных машинах отличается именно стратегией выполнения записи. Когда выполняется запись в кэшпамять, имеются две базовые возможности: · сквозная запись (write through, store through) - информация записывается в два места: в блок кэш-памяти и в блок более низкого уровня памяти. · запись с отложенным обратным копированием (write back, copy back, store in) - информация записывается только в блок кэш-памяти. Модифицированный блок кэш-памяти записывается в основную память только тогда, когда он замещается. Для сокращения частоты копирования блоков при замещении обычно с каждым блоком кэш-памяти связывается так называемый бит модификации (dirty bit). Этот бит состояния показывает, был ли модифицирован блок, находящийся в кэш-памяти. Если он не модифицировался, то обратное копирование отменяется, поскольку более низкий уровень содержит ту же самую информацию, что и кэш-память. Оба подхода к организации записи имеют свои преимущества и недостатки. При записи с обратным копированием операции записи выполняются со скоростью кэш-памяти, и несколько записей в один и тот же блок требуют только одной записи в память более низкого уровня. Поскольку в этом случае обращения к основной памяти происходят реже, вообще говоря, требуется меньшая полоса пропускания памяти, что очень привлекательно для мультипроцессорных систем. При сквозной записи промахи по чтению не влияют на записи в более высокий уровень, и, кроме того, сквозная запись проще для реализации, чем запись с обратным копированием. Сквозная запись имеет также преимущество в 74 том, что основная память имеет наиболее свежую копию данных. Это важно в мультипроцессорных системах, а также для организации ввода/вывода. Когда процессор ожидает завершения записи при выполнении сквозной записи, то говорят, что он приостанавливается для записи (write stall). Общий прием минимизации остановов по записи связан с использованием буфера записи (write buffer), который позволяет процессору продолжить выполнение команд во время обновления содержимого памяти. Следует отметить, что остановы по записи могут возникать и при наличии буфера записи. При промахе во время записи имеются две дополнительные возможности: 1. поместить запись в кэш-память (write allocate) (называется также выборкой при записи (fetch on write)). Блок загружается в кэш-память, после чего выполняются действия, аналогичные выполняющимся при выполнении записи с попаданием. Это похоже на промах при чтении. 2. не размещать запись в кэш-памяти (называется также записью в окружение (write around)). Блок модифицируется на более низком уровне и не загружается в кэш-память. Обычно в кэш-памяти, реализующей запись с обратным копированием, используется размещение записи в кэш-памяти (в надежде, что последующая запись в этот блок будет перехвачена), а в кэш-памяти со сквозной записью размещение записи в кэш-памяти часто не используется (поскольку последующая запись в этот блок все равно пойдет в память). Увеличение производительности кэш-памяти Метод Доля Потепро- ри мапри хов промахе Увеличение размера блока + Повышение степени ассоциа- + тивности Кэш-память с вспомогатель- + ным КЭШем Псевдоассоциативные КЭШи + Аппаратная предварительная + выборка команд и данных Предварительная выборка под управлением компилято- + обращения при попадании - Слож- Примечания ность аппаратуры 0 1 2 2 2 3 75 Предварительная выборка данных затруднена Требует также неблокируемой кэш- ра Специальные методы для уменьшения промахов Установка приоритетов промахов по чтению над записями Использование подблоков + Пересылка требуемого слова первым Неблокируемые кэши КЭШи второго уровня 0 + 1 + + 1 + 2 + + 3 2 Простые КЭШи малого размера Обход преобразования адресов во время индексации кэшпамяти Конвейеризация операций записи для быстрого попадания при записи + 0 + 2 + 1 памяти Вопрос ПО Просто для однопроцессорных систем Сквозная запись + подблок на 1 слово помогают записям Достаточно дорогое оборудование Формула для среднего времени доступа к памяти в системах с кэшпамятью выглядит следующим образом: Среднее время доступа = Время обращения при попадании + Доля промахов x - Потери при промахе Эта формула наглядно показывает пути оптимизации работы кэшпамяти: сокращение доли промахов, сокращение потерь при промахе, а также сокращение времени обращения к кэш-памяти при попадании. Выше кратко представлены различные методы, которые используются в настоящее время для увеличения производительности кэш-памяти. Использование тех или иных методов определяется, прежде всего, целью разработки, при этом конструкторы современных компьютеров заботятся о том, чтобы система оказалась сбалансированной по всем параметрам. Основная память представляет собой следующий уровень иерархии памяти. Основная память удовлетворяет запросы кэш-памяти и служит в качестве интерфейса ввода/вывода, поскольку является местом назначения для ввода и источником для вывода. Для оценки производительности основной памяти используются два основных параметра: задержка и полоса пропускания. Традиционно задержка основной памяти имеет отношение к кэш-памяти, а полоса пропускания или пропускная способность относится к вводу/выводу. В связи с ростом популярности кэш-памяти второго уровня и увеличением размеров блоков у такой кэш-памяти, по76 лоса пропускания основной памяти становится важной также и для кэшпамяти. Задержка памяти традиционно оценивается двумя параметрами: временем доступа (access time) и длительностью цикла памяти (cycle time). Время доступа представляет собой промежуток времени между выдачей запроса на чтение и моментом поступления запрошенного слова из памяти. Длительность цикла памяти определяется минимальным временем между двумя последовательными обращениями к памяти. Основная память современных компьютеров реализуется на микросхемах статических и динамических ЗУПВ (Запоминающее Устройство с Произвольной Выборкой). Микросхемы статических ЗУВП (СЗУПВ) имеют меньшее время доступа и не требуют циклов регенерации. Микросхемы динамических ЗУПВ (ДЗУПВ) характеризуются большей емкостью и меньшей стоимостью, но требуют схем регенерации и имеют значительно большее время доступа. В процессе развития ДЗУВП с ростом их емкости основным вопросом стоимости таких микросхем был вопрос о количестве адресных линий и стоимости соответствующего корпуса. В те годы было принято решение о необходимости мультиплексирования адресных линий, позволившее сократить наполовину количество контактов корпуса, необходимых для передачи адреса. Поэтому обращение к ДЗУВП обычно происходит в два этапа. Первый этап начинается с выдачи сигнала RAS - row-access strobe (строб адреса строки), который фиксирует в микросхеме поступивший адрес строки. Второй этап включает переключение адреса для указания адреса столбца и подачу сигнала CAS - column-access stobe (строб адреса столбца), который фиксирует этот адрес и разрешает работу выходных буферов микросхемы. Названия этих сигналов связаны с внутренней организацией микросхемы, которая, как правило, представляет собой прямоугольную матрицу, к элементам которой можно адресоваться с помощью указания адреса строки и адреса столбца. Дополнительным требованием организации ДЗУВП является необходимость периодической регенерации ее состояния. При этом все биты в строке могут регенерироваться одновременно, например, путем чтения этой строки. Поэтому ко всем строкам всех микросхем ДЗУПВ основной памяти компьютера должны производиться периодические обращения в пределах определенного временного интервала порядка 8 миллисекунд. Это требование кроме всего прочего означает, что система основной памяти компьютера оказывается иногда недоступной процессору, так как она вынуждена рассылать сигналы регенерации каждой микросхеме. Разработчики ДЗУПВ стараются поддерживать время, затрачиваемое на 77 регенерацию, на уровне менее 5% общего времени. Обычно контроллеры памяти включают в свой состав аппаратуру для периодической регенерации ДЗУПВ. В отличие от динамических, статические ЗУПВ не требуют регенерации и время доступа к ним совпадает с длительностью цикла. Для микросхем, использующих примерно одну и ту же технологию, емкость ДЗУВП по грубым оценкам в 4 - 8 раз превышает емкость СЗУПВ, но последние имеют в 8 - 16 раз меньшую длительность цикла и большую стоимость. По этим причинам в основной памяти практически любого компьютера, проданного после 1975 года, использовались полупроводниковые микросхемы ДЗУПВ (для построения кэш-памяти при этом применялись СЗУПВ). Естественно были и исключения, например, в оперативной памяти суперкомпьютеров компании Cray Research использовались микросхемы СЗУПВ. Для обеспечения сбалансированности системы с ростом скорости процессоров должна линейно расти и емкость основной памяти. В последние годы емкость микросхем динамической памяти учетверялась каждые три года, увеличиваясь примерно на 60% в год. К сожалению, скорость этих схем за этот же период росла гораздо меньшими темпами (примерно на 7% в год). В то же время производительность процессоров, начиная с 1987 года, практически увеличивалась на 50% в год. Очевидно, согласование производительности современных процессоров со скоростью основной памяти вычислительных систем остается на сегодняшний день одной из важнейших проблем. Приведенные в предыдущем разделе методы повышения производительности за счет увеличения размеров кэшпамяти и введения многоуровневой организации кэш-памяти могут оказаться не достаточно эффективными с точки зрения стоимости систем. Поэтому важным направлением современных разработок являются методы повышения полосы пропускания или пропускной способности памяти за счет ее организации, включая специальные методы организации ДЗУПВ. Хотя для организации кэш-памяти в большей степени важно уменьшение задержки памяти, чем увеличение полосы пропускания. Однако при увеличении полосы пропускания памяти возможно увеличение размера блоков кэш-памяти без заметного увеличения потерь при промахах. Основными методами увеличения полосы пропускания памяти являются: увеличение разрядности или "ширины" памяти, использование расслоения памяти, использование независимых банков памяти, обеспечение режима бесконфликтного обращения к банкам памяти, использование специальных режимов работы динамических микросхем памяти. Увели78 чение разрядности основной памяти. Кэш-память первого уровня во многих случаях имеет физическую ширину шин данных соответствующую количеству разрядов в слове, поскольку большинство компьютеров выполняют обращения именно к этой единице информации. В системах без кэш-памяти второго уровня ширина шин данных основной памяти часто соответствует ширине шин данных кэш-памяти. Удвоение или учетверение ширины шин кэш-памяти и основной памяти удваивает или учетверяет соответственно полосу пропускания системы памяти. Реализация более широких шин вызывает необходимость мультиплексирования данных между кэш-памятью и процессором, поскольку основной единицей обработки данных в процессоре все еще остается слово. Эти мультиплексоры оказываются на критическом пути поступления информации в процессор. Кэш-память второго уровня несколько смягчает эту проблему, т.к. в этом случае мультиплексоры могут располагаться между двумя уровнями кэш-памяти, т.е. вносимая ими задержка не столь критична. Другая проблема, связанная с увеличением разрядности памяти, определяется необходимостью определения минимального объема (инкремента) для поэтапного расширения памяти, которое часто выполняется самими пользователями на месте эксплуатации системы. Удвоение или учетверение ширины памяти приводит к удвоению или учетверению этого минимального инкремента. Наконец, имеются проблемы и с организацией коррекции ошибок в системах с широкой памятью. Примером организации широкой основной памяти является система Alpha AXP 21064, в которой кэш второго уровня, шина памяти и сама память имеют разрядность в 256 бит. Общепринятая в настоящее время концепция виртуальной памяти появилась достаточно давно. Она позволила решить целый ряд актуальных вопросов организации вычислений. Прежде всего к числу таких вопросов относится обеспечение надежного функционирования мультипрограммных систем. В любой момент времени компьютер выполняет множество процессов или задач, каждая из которых располагает своим адресным пространством. Было бы слишком накладно отдавать всю физическую память какой-то одной задаче, тем более что многие задачи реально используют только небольшую часть своего адресного пространства. Поэтому необходим механизм разделения небольшой физической памяти между различными задачами. Виртуальная память является одним из способов реализации такой возможности. Она делит физическую память на блоки и распределяет их между различными задачами. При этом она предусматривает также некоторую схему защиты, которая ограничивает задачу те79 ми блоками, которые ей принадлежат. Большинство типов виртуальной памяти сокращают также время начального запуска программы на процессоре, поскольку не весь программный код и данные требуются ей в физической памяти, чтобы начать выполнение. Другой вопрос, тесно связанный с реализацией концепции виртуальной памяти, касается организации вычислений на компьютере задач очень большого объема. Если программа становилась слишком большой для физической памяти, часть ее необходимо было хранить во внешней памяти (на диске) и задача приспособить ее для решения на компьютере ложилась на программиста. Программисты делили программы на части и затем определяли те из них, которые можно было бы выполнять независимо, организуя оверлейные структуры, которые загружались в основную память и выгружались из нее под управлением программы пользователя. Программист должен был следить за тем, чтобы программа не обращалась вне отведенного ей пространства физической памяти. Виртуальная память освободила программистов от этого бремени. Она автоматически управляет двумя уровнями иерархии памяти: основной памятью и внешней (дисковой) памятью. Кроме того, виртуальная память упрощает также загрузку программ, обеспечивая механизм автоматического перемещения программ, позволяющий выполнять одну и ту же программу в произвольном месте физической памяти. В системах со страничной организацией основная и внешняя память (главным образом дисковое пространство) делятся на блоки или страницы фиксированной длины. Каждому пользователю предоставляется некоторая часть адресного пространства, которая может превышать основную память компьютера, и ограничена только возможностями адресации, заложенными в системе команд. Эта часть адресного пространства называется виртуальной памятью пользователя. Каждое слово в виртуальной памяти пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер страницы, а младшие - как номер слова (или байта) внутри страницы. Управление различными уровнями памяти осуществляется программами ядра операционной системы, которые следят за распределением страниц и оптимизируют обмены между этими уровнями. При страничной организации памяти смежные виртуальные страницы не обязательно должны размещаться на смежных страницах основной физической памяти. Для указания соответствия между виртуальными страницами и страницами основной памяти операционная система должна сформировать таблицу страниц для каждой программы и разместить ее в основной памяти ма80 шины. При этом каждой странице программы, независимо от того находится ли она в основной памяти или нет, ставится в соответствие некоторый элемент таблицы страниц. Каждый элемент таблицы страниц содержит номер физической страницы основной памяти и специальный индикатор. Единичное состояние этого индикатора свидетельствует о наличии этой страницы в основной памяти. Нулевое состояние индикатора означает отсутствие страницы в оперативной памяти. Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов (TLB tranclation-lookaside buffer). Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной программы на другую. Поиск в таблицах страниц, расположенных в основной памяти, и загрузка TLB может осуществляться либо программным способом, либо специальными аппаратными средствами. В последнем случае для того, чтобы предотвратить возможность обращения пользовательской программы к таблицам страниц, с которыми она не связана, предусмотрены специальные меры. С этой целью в процессоре предусматривается дополнительный регистр защиты, содержащий описатель (дескриптор) таблицы страниц или базово-граничную пару. База определяет адрес начала таблицы страниц в основной памяти, а граница - длину таблицы страниц соответствующей программы. Загрузка этого регистра защиты разрешена только в привилегированном режиме. Для каждой программы операционная система хранит дескриптор таблицы страниц и устанавливает его в регистр защиты процессора перед запуском соответствующей программы. Отметим некоторые особенности, присущие простым схемам со страничной организацией памяти. Наиболее важной из них является то, что все программы, которые должны непосредственно связываться друг с другом без вмешательства операционной системы, должны использовать общее пространство виртуальных адресов. Это относится и к самой операционной системе, которая, вообще говоря, должна работать в режиме динамического распределения памяти. Поэтому в некоторых системах пространство виртуальных адресов пользователя укорачивается на размер общих процедур, к которым программы пользователей желают иметь доступ. Общим процедурам должен быть отведен определенный объем пространства виртуальных адресов всех пользователей, чтобы они имели постоянное место в таблицах страниц всех пользователей. В этом 81 случае для обеспечения целостности, секретности и взаимной изоляции выполняющихся программ должны быть предусмотрены различные режимы доступа к страницам, которые реализуются с помощью специальных индикаторов доступа в элементах таблиц страниц. Следствием такого использования является значительный рост таблиц страниц каждого пользователя. Одно из решений проблемы сокращения длины таблиц основано на введении многоуровневой организации таблиц. Частным случаем многоуровневой организации таблиц является сегментация при страничной организации памяти. Необходимость увеличения адресного пространства пользователя объясняется желанием избежать необходимости перемещения частей программ и данных в пределах адресного пространства, которые обычно приводят к проблемам переименования и серьезным затруднениям в разделении общей информации между многими задачами. 9. CISC и RISC архитектура процессоров. Двумя основными архитектурами набора команд, на современном этапе развития вычислительной техники являются архитектуры CISC и RISC. Основоположником CISC-архитектуры можно считать компанию IBM с ее базовой архитектурой /360, ядро которой используется с1964 года и дошло до наших дней, например, в таких современных мейнфреймах как IBM ES/9000. Лидером в разработке микропроцессоров c полным набором команд (CISC - Complete Instruction Set Computer) считается компания Intel со своей серией x86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокомпьютеров. Для CISC-процессоров характерно: сравнительно небольшое число регистров общего назначения; большое количество машинных команд, некоторые из которых нагружены семантически аналогично операторам высокоуровневых языков программирования и выполняются за много тактов; большое количество методов адресации; большое количество форматов команд различной разрядности; преобладание двухадресного формата команд; наличие команд обработки типа регистр-память. Основой архитектуры современных рабочих станций и серверов является архитектура компьютера с сокращенным набором команд (RISC Reduced Instruction Set Computer). Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитекту82 ры С. Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако окончательно понятие RISC в современном его понимании сформировалось на базе трех исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета. Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались, и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д.Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. В 1981году Дж.Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки. Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд использовались команды фиксированной длины и фиксированного формата. Среди других особенностей RISC-архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC-процессорах реализуются 32 или большее число регистров по сравнению с 8 - 16 регистрами в CISC-архитектурах), что позволяет большему объему данных храниться в регистрах на процессорном кристалле большее время и упрощает работу компилятора по распределению регистров под переменные. Для обработки, как правило, используются трехадресные команды, что помимо упрощения дешифрации дает возможность сохранять большее число переменных в регистрах без их последующей перезагрузки. Ко времени завершения университетских проектов (1983-1984 гг.) обозначился также прорыв в технологии изготовления сверхбольших интегральных схем. Простота архитектуры и ее эффективность, подтвер83 жденная этими проектами, вызвали большой интерес в компьютерной индустрии, и с 1986 года началась активная промышленная реализация архитектуры RISC. К настоящему времени эта архитектура прочно занимает лидирующие позиции на мировом компьютерном рынке рабочих станций и серверов. Развитие архитектуры RISC в значительной степени определялось прогрессом в области создания оптимизирующих компиляторов. Именно современная техника компиляции позволяет эффективно использовать преимущества большего регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности, обычно применяемой в процессорах RISC: реализацию задержанных переходов и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд. Следует отметить, что в разработках ЦП компании Intel (начиная с процессора 80486 и последующих), а также ее последователейконкурентов (AMD, Cyrix, NexGen и др.) широко используются идеи, реализованные в RISC-микропроцессорах, так что, по сути это комплексная архитектура - RISC по массовым командам пользователя и CISC в остальном. 10. 32-х разрядные процессоры фирмы Intel, DEC, Motorola. Персональные компьютеры начали с 8 – ми разрядных процессоров в среде мини-компьютеров и майнфреймов. Упрощенная система команд не вызывала интереса инженерных кругов. Выход на 16-ти разрядную архитектуру ведущие производители компьютеров начали с различных уровней DEC сверху от мини компьютера, Intel снизу от «калькулятора», Моторола вошла на рынок почти без предыстории, мало заботясь о совместимости со своими 8-ми разрядными процессорами. Началась упорная борьба. Тактовые частоты были близки, быстродействие компьютеров также почти не разнилась. Intel предоставила самые дешевые, самые ремонтопригодные компьютеры и победила. На 32-х разрядном рынке центральных процессоров она получила вначале ведущие и дальнейшем 84 лидирующие позиции. Соперники ушли к 64-х разрядным RISC процессорам рабочих станций. Поэтому основное внимание уделим именно процессорам Intel. x86 (англ. Intel 80x86) — архитектура процессора c одноименным набором команд, впервые реализованная в процессорах компании Intel. Название образованно от двух цифр, которыми заканчивались названия процессоров Intel ранних моделей — 8086, 80186, 80286 (i286), 80386 (i386), 80486 (i486). За время своего существования набор команд постоянно расширялся, сохраняя совместимость с предыдущими поколениями. Помимо Intel, архитектура также была реализована в процессорах других производителей: AMD, VIA, Transmeta, WinChip и др. В настоящее время для 32х разрядной версии архитектуры существует еще одно название — IA-32 (Intel Architecture — 32). x86 — это CISC-архитектура. Доступ к памяти происходит по «словам». «Слова» размещаются по принципу little-endian, известному также как Intel-формат. Современные процессоры включают в себя декодеры команд x86 для преобразования их в упрощённый внутренний формат с последующим их выполнением. Обращение к памяти. Реальный режим (real mode). Классический режим адресации, использованный в первых моделях семейства. Использует сегментированную модель памяти, организованную следующим образом: адресное пространство в 1MB разбивается на 16-байтовые блоки, называемые параграфами. Сегменты памяти имеют размер 65536 байт, и всегда начинаются на границе параграфа. Адрес ячейки памяти состоит из двух частей: номера параграфа, с которого начинается сегмент и смещения внутри сегмента. Адрес ячейки, выдаваемый на шину, представляет собой сегментную компоненту умноженную на 16 плюс смещение. Сегментная компонента помещается в специальный регистр, называемый сегментным, а смещение в регистр IP(регистр инструкций). Микропроцессоры 8086/8088, 80186/80188 и 80286 имели четыре сегментных регистра, т.е могли работать одновременно с четырьмя сегментами памяти, имеющими определенное назначение. В 80386 добавили еще два, не имеющих специального назначения. Сегментные регистры и их назначение: CS — Сегмент кода. Используется для выборки команд; DS — Сегмент данных. По умолчанию - для доступа к данным; ES — Дополнительный сегмент. Является получателем данных в командах обработки строк; SS — Сегмент стека. Используется для размещения стека; 85 FS — Дополнительный сегментный регистр. Специального назначения не имеет. Появился в процессоре 80386; GS — Аналогично предыдущему, но в новых процессорах с 64битной архитектурой имеет особый статус: может использоваться для быстрого переключения контекстов. Несмотря на то, что сегментные регистры имеют специальные назначения, архитектура допускает при обращении к данным заменить один сегмент на любой другой. Сегменты кода, стека и получателя строк всегда используют регистры CS, SS и ES и не могут быть изменены. Общий объем памяти, адресуемый в реальном режиме, составляет 1048576 байт (0000:0000-F000:FFFF (00000-FFFFF)-логический адрес (физический адрес) в шестнадцатеричной системе счисления). Сегментный подход позволяет разделить всю память на 16 сегментов, начинающихся с адресов, кратных 64 Кбайт. Эти 16 сегментов называют страницами памяти. Обычно деление на страницы используется для совместного функционирования устройств, интерфейсы которых отображены на адресное пространство памяти; тогда каждое такое устройство использует одну страницу памяти, и адрес ячейки в адресном пространстве устройства будет совпадать со смещением в сегменте памяти компьютера. Так в компьютерах IBM PC страницы 11…15 используются как «видеопамять»(адресное пространство видеоадаптера), а шестнадцатая страница (размещающаяся в адресах FFFF:0000 — FFFF:FFFF) получила название «области верхней памяти» (High Memory Area), которую впоследствии MS-DOS использовала для размещения своего ядра и буферов вводавывода, оставив больше «обычной» памяти прикладным программам. Таким образом, реально доступная пользователю память составляет 640 Кбайт (первые 10 страниц). Также в реальном режиме отсутствует защита памяти и разграничение прав доступа, поэтому он уже практически вышел из употребления. Защищённый режим (protected mode) Более совершенный режим, впервые появившийся в процессоре 80286 и в дальнейшем многократно улучшавшийся. Имеет большое количество режимов, по которым можно проследить эволюцию семейства ЦП. В этом режиме поддерживается защита памяти, контексты задач и средства для организации виртуальной памяти. Аналогично реальному режиму, тут также используется сегментированная модель памяти, однако уже организованная по другому принципу: деление на параграфы отсутствует, а расположение сегментов описывается специальными структурами (таблицами дескрипторов), расположенными в оперативной памяти. Помимо базового адреса сегмента дескрипторы содержат размер сегмента 86 (точнее, максимально доступное смещение) и различные атрибуты сегментов, использующиеся для защиты памяти и определения прав доступа к сегменту для различных программных модулей. Существует два типа дескрипторных таблиц: глобальная и локальная. Глобальная таблица описывает сегменты операционной системы и разделяемых структур данных. Локальная таблица может быть определена для каждой конкретной задачи (процесса). Сегменты памяти также выбираются все теми же сегментными регистрами; однако вместо номера параграфа сегментный регистр содержит специальную структуру (селектор), содержащую индекс дескриптора в таблице. Сам же дескриптор загружается из памяти во внутренний программно недоступный регистр (Кеш), привязанный к каждому сегментному регистру и автоматически загружаемый в момент его модификации. Каждый программный модуль, выполняемый в защищенном режиме определяется его сегментом кода, описываемым регистром CS, который и определяет его привилегии по доступу к данным и другим модулям. Существует 4 уровня привилегий 0,1,2 и 3, называемых кольцами защиты. Кольцо 0 наиболее привилегированное. Оно предназначено для модулей ядра операционной системы. Кольцо 3 — наименее привилегированное, и предназначено для пользовательских программ. Кольца 1 и 2 используются лишь некоторыми операционными системами. Сегменты данных также имеют атрибуты прав доступа, дающие доступ только коду, имеющему такие же или более высокие привилегии. Система колец позволяет гибко распределять доступ к коду и данным. Процессор 80386, появившийся в 1985 году, в отличие от своих предшественников стал 32-битным. В нем появилась возможность адресовать до 4GB памяти, что позволило создавать сегменты памяти размером во все адресное пространство. Поэтому новые операционные системы использовали вырожденную модель организации памяти, когда все сегменты начинаются с нулевого адреса. Такая модель получила название плоской (flat memory model), и адрес задается одним целым 32-разрядным числом (хотя, по сути, он является смещением внутри вырожденного сегмента), а сами сегменты используются исключительно для организации защиты по кольцам привилегий. Режим виртуального 8086 (virtual 8086 mode, V86) Является подрежимом защищенного, но использует адресную модель, аналогичную реальному режиму. Применяется для запуска старых программ 8086 в среде современных операционных систем. В отличие от реального режима, где все программы имеют доступ ко всей памяти (кольцо 0), в режиме V86 программа выполняется в кольце 3 (наименее при87 вилегированном), а особые ситуации и прерывания обрабатываются обычными процедурами защищенного режима. Смешанные режимы Сегментное MMU (система управления памятью) современных процессоров, несмотря на кардинальные различия двух его основных режимов, в обоих работает схожим образом. Это позволяет организовывать нестандартные режимы, не описанные в официальной документации, но иногда очень полезные при написании программ. Поскольку известно, что внутренние КЭШи дескрипторов используются во всех режимах, и именно они используются для адресации памяти, при понимании логики их работы возможна загрузка в них нестандартных значений для текущего режима. В частности, можно создать дескрипторную таблицу в реальном режиме, установить флаг PE, загрузить сегментные регистры уже в защищенном режиме, а потом тут же сбросить флаг PE. До следующей перезагрузки сегментного регистра его КЭШ дескриптора будет содержать значение, соответствующее защищенному режиму, и если он был загружен должным образом, появится возможность адресации до 4GiB памяти. Подобные нестандартные режимы получили общее название Unreal mode и активно используются BIOS'ами персональных компьютеров. Следует отметить, что в процессоре 80286 также была возможность загрузки нестандартных значений дескрипторногоКЭШа при помощи недокументированной команды LOADALL; что было особенно актуально, поскольку процессор 80286 не позволял сбрасывать флаг PE (из защищенного режима выходили с помощью сброса процессора, что сказывалось на производительности). Страничная организация памяти В процессорах, начиная с 80386, появилось мощное MMU, позволяющее организовать отображение страниц памяти, что было еще одним поводом перехода на плоскую модель с приходом 32-разрядных вычислений. Используя трансляцию страниц, операционная система может создать собственное линейное адресное пространство для каждого процесса; также каждая страница имеет атрибуты прав доступа. Только в отличие от сегментов, таких уровней существует только 2: пользователь и супервизор. Но для большинства современных операционных систем этого вполне достаточно. Следует отметить, что страничное MMU доступно только в защищенном режиме. Расширения базовой архитектуры, введение новых инструкций. В более поздних 32-разрядных процессорах (начиная с Pentium Pro) появилось PAE (Physical Address Extension) — расширение адресов фи- 88 зической памяти до 36 бит (возможность адресации 64 Гбайт ОЗУ). Это изменение не затронуло разрядности задач — они остались 32-битными. Дополнительный «мультимедийный» (англ. Multi-Media eXtensions) набор инструкций, выполняющих по несколько характерных для процессов кодирования/декодирования потоковых аудио/видеоданных действий за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Обеспечивает только целочисленные вычисления. SSE (англ. Streaming SIMD Extensions — потоковое SIMDрасширение) — это SIMD (англ. Single Instruction, Multiple Data — «одна инструкция — множество данных») набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III. Поддерживает вычисления с плавающей точкой. SSE состоит из восьми 128битных регистров (с xmm0 до xmm7). Каждый регистр определяет 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя инструкции, которые производят операции со скалярными и упакованными типами данных. SSE2 Улучшенное расширение SSE. Появилось в процессорах Pentium 4. Производит потоковые вычисления с вещественными числами двойной точности (2 числа по 64 бита в одном регистре SSE). Кроме того, добавлены инструкции, аналогичные расширению MMX, работающие с регистрами SSE (16 байт, 8 слов, 4 двойных слова или 2 учетверённых слова в одном регистре). SSE2 включает в себя ряд команд управления КЭШем, предназначенных для минимизации загрязненияКЭШа при обработке неопределенных потоков информации. Продолжение SSE и SSE2, появилось в процессорах Prescott. Набор SSE3 содержит 13 инструкций: FISTTP (x87), MOVSLDUP (SSE), MOVSHDUP (SSE), MOVDDUP (SSE2), LDDQU (SSE/SSE2), ADDSUBPD (SSE), ADDSUBPD (SSE2), HADDPS (SSE), HSUBPS (SSE), HADDPD (SSE2), HSUBPD (SSE2), MONITOR (нет аналога в SSE3 для AMD), MWAIT (нет аналога в SSE3 для AMD). Наиболее заметное изменение — возможность горизонтальной работы с регистрами. Если говорить более конкретно, добавлены команды сложения и вычитания нескольких значений, хранящихся в одном регистре. Эти команды упростили ряд DSP и 3D-операций. Существует также новая команда для преобразования значений с плавающей точкой в целые без необходимости вносить изменения в глобальном режиме округления. SSSE3 Дополнение к SSE3 для работы с упакованными целыми. Новыми в SSSE3, по сравнению с SSE3, являются 16 уникальных команд, работающих с упакованными целыми. Каждая из них может работать как с 64-х битными (MMX), так и с 128-ми битными (XMM) регистрами, по89 этому Intel в своих материалах ссылается на 32 новые команды. Категории новых инструкций: работа со знаком, сдвиги, перемешивание байт, умножения, горизонтальные сложения и вычитания целых. SSE4 Новый набор команд Intel, впервые реализованный в процессорах серии Penryn. SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (они есть только в процессорах Penryn). Ожидается, что полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) будет доступен в процессорах Nehalem. Ни одна из SSE4 инструкций не работает с 64-битными mmx регистрами, только со 128-битными xmm0-15. Может оказаться, что не будет выпущено 32-битных процессоров с SSE4, только 64-битные — с EM64T. Добавлены инструкции, ускоряющие компенсацию движения в видеокодеках, быстрое чтение из USWC памяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32, popcnt. Впервые в SSE4 регистр xmm0 стал использоваться как неявный аргумент для некоторых инструкций. Новые инструкции SSE4.1 включают ускорение видео, работу с векторными примитивами, вставки/извлечения, скалярное умножение векторов, смешивания, проверки бит, округления, чтение WC-памяти. Новые инструкции SSE4.2 включают обработку строк, подсчёт CRC32, подсчет популяции единичных бит, работу с векторными примитивами. SSE5 Новое расширение x86 инструкций от AMD, названное SSE5. Этот абсолютно новый набор SSE инструкций, созданный специалистами AMD, станет поддерживаться перспективными CPU компании, начиная с 2009 года. SSE5 привносят в классическую x86 архитектуру некоторые возможности, доступные ранее исключительно в RISC процессорах. Набор инструкций SSE5 определяет 47 новых базисных команд, призванных ускорить однопоточные вычисления благодаря увеличению «плотности» обрабатываемых данных. Среди новых инструкций выделяется две основные группы. В первую входят инструкции, аккумулирующие результаты умножения. Инструкции такого типа могут быть полезны для организации итерационных вычислительных процессов при рендеринге изображений или при создании трёхмерных аудио эффектов. Вторая группа новых команд включает инструкции, оперирующие с двумя регистрами и сохраняющие результат в третьем. Это нововведение может позволить разработчикам обойтись без лишних пересылок данных между регистрами в вычислительных алгоритмах. Также, SSE5 содержит и несколько новых инструкций для сравнения векторов, для перестановки и перемещения данных, а также для изменения точности и округления. Основными применениями для SSE5 AMD видит расчётные задачи, 90 обработку мультимедиа контента и средства шифрования. Ожидается, что в счётных приложениях, использующих матричные операции, использование SSE5 может дать 30-процентный прирост производительности. Мультимедийные задачи, требующие выполнения дискретного косинусного преобразования, могут получить 20-процентное ускорение. А алгоритмы шифрования благодаря SSE5 способны получить пятикратный выигрыш в скорости обработки данных. Следующий набор расширений от Intel. AVX Расширение системы команд AES — реализация в микропроцессоре шифрования AES. 3DNow! Набор инструкций для потоковой обработки вещественных чисел одинарной точности. Поддерживается процессорами AMD начиная с K6-2. Процессорами Intel не поддерживается. Инструкции 3DNow! используют регистры MMX в качестве источников операндов (в один регистр помещается два числа одинарной точности), поэтому, в отличие от SSE, при переключении задач не требуется отдельно сохранять контекст 3DNow!. Немного истории. 16-разрядный процессор i8086, был создан в июне 1978 года. Сначала работал на частотах 4,77 МГц, затем на 8 и 10 МГц. Изготавливался по технологии 3 мкм и имел 29 000 транзисторов. Чуть позже, в 1979 году, был разработан i8088, который работал на тех же частотах, что и i8086, но использовал 8-разрядную шину данных (внутренняя шина процессора осталась 16-разрядной) для обеспечения большей совместимости с имевшейся в то время в ходу периферией. Благодаря более низкой цене, широко использовался в ранних системах IBM PC вместо 8086. В 1982 году были выпущены 80186 и 80188, которые первоначально не получили широкого распространения из-за того, что IBM не стала использовать их в своих персональных компьютерах. Впрочем, некоторые производители «клонов» сделали это, выпустив ускоренные варианты IBM PC/XT. В то же время, эти процессоры оказались чрезвычайно удачными для использования во встроенных системах и в различных модификациях выпускаются до настоящего времени[1]. В эти процессоры были первоначально добавлено несколько новых команд, повышена тактовая частота. Впоследствии появились модификации, содержащие дополнительные аппаратные средства, такие, как интегрированные контроллеры последовательного порта. 80286 объявлен в 1982 году. Работал на частотах 6, а затем 8, 10, 12, 16, 20 МГц. Производился по техпроцессу 1,5 мкм и содержал около 134 ты91 сяч транзисторов. С его появлением появилось такое понятие, как защищённый режим (protected mode) и виртуальная память. Производительность процессора по сравнению с 8086 увеличилась в несколько раз (0,99-2,6 млн. операций в секунду). 80386 (i386). Первый 32-разрядный процессор, работал на частотах 16-40 МГц. Появился в 1985 году. Знаменовал собой начало революции в мире процессоров x86. Основные принципы, заложенные в этом чипе, без кардинальных изменений дожили и до наших дней (за всё это время изменения касались, в основном, повышения производительности, расширения набора команд, увеличения разрядности). Первые 386 процессоры содержали серьезную ошибку, приводящую к невозможности функционирования в защищенном режиме. Исправленная версия называлась 386DX. Так же выпускались более дешевые процессоры i386SX с урезанной до 16 бит внешней шиной данных и 24 бит шиной адреса. Процессор i486 (1989 год) является усовершенствованным, доработанным 32-х разрядным процессором и первым центральным процессором Intel с RISC добавкой (ряд операций выполнялись за один такт). Имел встроенный FPU (Floating Point Unit — блок вычислений с плавающей запятой) и впервые — встроенную кэш-память (8 Кбайт). 80486 — первый процессор Intel, для которого была применена технология умножения частоты шины FSB (в моделях DX2-50, DX2-66, DX4-75 и DX4-100). Для ноутбуков и встраиваемых систем в начале 1990-х была выпущена «облегченная» модификация i486SX без встроенного блока FPU. Процессоры 486, 8086 составили легенду Intel по массовости и устойчивости на рынке. Pentium (1993 год. Intel отказалась от ix586 названия, потому что не могла запатентовать числа.) — первый суперскалярный и суперконвейерный процессор Intel. Суперскалярность — термин, означающий, что процессор позволяет выполнять более одной операции за один такт. Суперконвейерность означает, что процессор имеет несколько вычислительных конвейеров. У Pentium их два, что позволяет ему при одинаковых частотах в идеале быть вдвое производительней 486, выполняя сразу 2 инструкции за такт. Вышел на рынок чуть позже процессора фирмы Motorola с аналогичными параметрами, но имел внешнюю 64-х разрядную шину данных. Кроме того, особенностью процессора Pentium являлся полностью переработанный и очень мощный на то время блок FPU, производительность которого оставалась недостижимой для конкурентов вплоть до конца 1990-х годов. Pentium Pro (1995 год) — первый процессор шестого поколения в основном, как 386 заявочный, без удачи на рынке. Идеи и технологии, за92 ложенные в данный чип, определили архитектуры всех современных x86-процессоров: блоки предсказания ветвлений, переименование регистров, RISC-ядро, интегрированная в один корпус с ядром кэш-память второго уровня. Однако технологическая сложность ядра данного процессора привела к сравнительно невысокому выходу годных чипов при технологиях того времени, что сказалось на высокой цене Pentium Pro. При этом процессор обладал достаточно низкой производительностью при исполнении 16-разрядного кода. Поэтому данный процессор применялся только в High-End системах и серверах. Pentium MMX (январь 1997 года) — процессор пятого поколения, и, по сути, просто модификация ядра Pentium. Был добавлен новый блок целочисленных матричных вычислений MMX и увеличен до 32 Кбайт объём кэш-памяти первого уровня. Pentium II (май 1997 года) — модификация ядра Pentium Pro с целью сделать его более доступным. Интегрированный кэш и тегКЭШа были вынесены на отдельные микросхемы с пониженной в два раза частотой. Это упростило и удешевило процессор, хотя и сделало его более медленным, чем Pentium Pro. Первые процессоры Pentium II выпускались с кэшпамятью второго уровня емкостью 256 Кбайт, затем её объём был увеличен до 512 Кбайт. Новая конструкция процессора потребовала размещения элементов на печатной плате, что, в свою очередь, привело к изменению конструктива процессора. Данные ЦПУ выпускались в виде картриджей SECC, устанавливающихся в специальный разъём на плате (Slot 1). Кроме того, в ядро Pentium II был добавлен блок MMX. Celeron — упрощённая модификация процессоров Pentium II / III / IV / Core / Core 2 для построения недорогих компьютеров. Первый Celeron (ядро Covington, частоты 266/300 МГц) представлял собой Pentium II, лишенныйКЭШа второго уровня и пластикового картриджа. Печатная плата также была упрощена. Такая упаковка получила название SEPP (Sinlge Edge Processor Package). В результате эти процессоры демонстрировали более низкую производительность, стоили очень недорого и легко прибавляли до 50 % частоты при разгоне. Все последующие варианты этого процессора имели интегрированный полночастотный КЭШ второго уровня. Основные отличия процессоров Celeron в объёме этогоКЭШа и частоте шины, а также часто в увеличенной латентности доступа к кэш-памяти по отношению к оригинальному процессору. Любопытный факт: вторая модификация Celeron (ядро Mendochino, частоты 300..533 МГц) на многих задачах демонстрировала более высокую производительность, чем равный по частоте Pentium II. Это объяснялось тем, что маленький (128 Кбайт) КЭШ Mendochino располагался на од93 ном кристалле с ядром и работал на частоте ядра, в то время как большой (512 Кбайт) КЭШ Pentium II находился достаточно далеко от ядра и работал на половинной частоте. Больше таких промашек фирма Intel не допускала, и все последующие Celeron гарантированно медленнее полноценных процессоров того же поколения. Pentium III, изготовленный изначально по технологическому процессу 0,18 мкм, отличается от P2 главным образом добавлением инструкций SSE. Поздние процессоры этой серии изготавливались по технологическому процессу 0,13 мкм, получили интегрированную в кристалл ядра полночастотную кэш-память (сначала 256 Кбайт, затем — 512 Кбайт) и послужили прообразом процессоров архитектуры Pentium M. Выпускались в конструктивах как SECC/SECC2 (Slot 1), так и FCPGA-370 (PGA370). Pentium 4 Принципиально новый процессор с гиперконвейеризацией (hyperpipelining) — с конвейером, состоящим из 20 ступеней. Согласно заявлениям Intel, процессоры, основанные на данной технологии, позволяют добиться увеличения частоты примерно на 40 процентов относительно семейства P6 при одинаковом технологическом процессе (при «правильной» загрузке процессора). На практике же, первые модели работали даже медленнее, чем Pentium III. Позже они были дополнены поддержкой 64-битного кода. Core / Core 2 После провала последнего поколения процессоров Pentium 4 на ядре Tejas, было решено обратиться к другой ветви продукции. В основе новых процессоров лежит переработанное ядро Pentium M. Таким образом, ядро P6, использованное ещё в процессорах Pentium Pro, продолжило свою эволюцию, нарастив частоту со 150 МГц до 3,2 ГГц и обзаведясь новой системной шиной, поддержкой многоядерности, мультимедийных инструкций. Процессоры Core — это решение для ноутбуков, одно- и двуядерное, исполняющее 32-битный код. Процессоры Core 2 выпускаются как в настольном, так и мобильном исполнении, включают ряд микроархитектурных улучшений и способны исполнять 64-битный код. Количество ядер варьируется от одного до четырёх. Core i3/Core i5/Core i7 Дальнейшее развитие идей, заложенных в процессорах Core 2. Сохранив основную конструкцию процессорных ядер, появившийся первым Core i7 получил модульную структуру, позволяющую легко варьировать их количеством. Встроенный контроллер памяти (трёхканальной DDR3 в высшем сегменте и двухканальной DDR3) и новая шина, соединяющую 94 процессор с чипсетом, дополнили архитектуру. Микроархитектурные улучшения позволяют Core i7 показывать повышенную производительность в сравнении с Core 2 на равных частотах. Большое внимание было уделено вопросу энергоэффективности нового процессора. Позже появились более дешевые Core i5/i7 с двухканальным контроллером памяти и четырьмя ядрами, затем — Core i3/i5 с двумя ядрами и встроенным видеоядром. В секторе наиболее производительных решений выпускаются также процессоры Core i7 с трехканальным контроллером памяти и шестью ядрами. Благодаря использованию технологии Hyper Threading эти процессоры способны одновременно исполнять до 12 потоков команд. Atom Недорогие сверхэкономичные одно- и двуядерные процессоры, предназначенные для использования в так называемых сетевых компьютерах — нетбуках и неттопах (компьютерах, в которых вычислительная мощность пожертвована в пользу экономичности, бесшумности и малогабаритности). В основе — модифицированное ядро от первых Pentium, которое адаптировали под новый техпроцесс, добавили возможность исполнения 64-битного кода и мультимедийных инструкций, а также кэш-память второго уровня и поддержку многопоточного исполнения (SMT, аналог Hyper Threading). Для упрощения конструкции было решено отказаться от внеочередного исполнения команд, что не лучшим образом сказалось на производительности. Xeon. Модификации процессоров, ориентированных на серверы и многопоточные вычисления. Первый представитель этого семейства базировался на архитектуре Pentium II, представлял собой картридж с печатной платой, на которой монтировались ядро, кэш-память второго уровня и тегКЭШа. Монтировался в гнездо Slot 2. Добавим процессоры от фирмы AMD/ Athlon. Очень успешный процессор, благодаря которому фирма AMD сумела восстановить почти утраченные позиции на рынке микропроцессоров. Кэш первого уровня — 128 Кбайт. Первоначально процессор выпускался в картридже с размещением КЭШа второго уровня (512 Кбайт) на плате и устанавливался в разъём Slot A, который механически, но не электрически совместим с интеловским Slot 1. Затем устанавливался в разъём Socket A и имел 256 Кбайт КЭШа второго уровня в ядре. По быстродействию — примерный аналог Pentium III. Duron Конкурент Celeron поколений Pentium III / Pentium 4. Отличается от Athlon объёмом КЭШа второго уровня (всего 64 Кбайт), зато интегрированным в кристалл и работавшем на частоте ядра. Производительность 95 заметно выше, чем у аналогичных Celeron, и при выполнении многих задач соответствует Pentium III. Athlon XP Продолжение развития архитектуры Athlon. По быстродействию — аналог Pentium 4. По сравнению с обычным Athlon, добавлена поддержка инструкций SSE. Sempron. Более дешёвый (за счёт уменьшенного КЭШа второго уровня) вариант процессоров Athlon XP и Athlon 64. Первые модели Sempron являлись перемаркированными чипами Athlon XP на ядре Thoroughbred и Thorton, имевшими 256 Кбайт КЭШа второго уровня, и работавшими на 166 (333 DDR) шине. Позднее под маркой Sempron выпускались (и выпускаются) урезанные версии Athlon 64/Athlon II, позиционируемые как конкуренты Intel Celeron. Все Sempron имеют урезанный КЭШ 2-го уровня; младшие модели Socket 754 имели заблокированные Cool&quiet и x86-64; Socket 939 модели имели заблокированный двухканальный режим работы памяти. Opteron. Первый процессор, поддерживающий архитектуру x86-64. Athlon 64. Первый несерверный процессор, поддерживающий архитектуру x86-64. Athlon 64 X2. Продолжение архитектуры Athlon 64, имеет 2 вычислительных ядра. Athlon FX. Имел репутацию «самого быстрого процессора для игрушек». Является, по сути, серверным процессором Opteron 1xx на десктопных сокетах без поддержки registered-memory. Выпускается малыми партиями. Стоит значительно дороже своих «массовых» собратьев. Phenom. Дальнейшее развитие архитектуры Athlon 64, выпускается в вариантах с двумя (Athlon 64 X2 Kuma), тремя (Phenom X3 Toliman) и четырьмя (Phenom X4 Agena) ядрами. Phenom II. Модификация Phenom. Небольшие архитектурные изменения, переход на более тонкий технологический процесс и добавление КЭШа L3 объёмом от 4 до 6 Мбайт позволили нарастить производительность этих процессоров на 10-20 % по сравнению с предшественниками. Выпускаются в конструктивах Socket AM2+ и Socket AM3. При этом первые могут работать только с памятью DDR2, а вторые — как с DDR2, так и с DDR3. Максимальное число ядер выросло до шести. Athlon II Phenom II без КЭШа L3 и количеством ядер не более четырех. Turion Мобильная версия Athlon 64 с пониженным энергопотреблением и расширенными средствами управления питанием. Выпускается в вариантах с одним и двумя ядрами. Athlon Neo Максимально оптимизированные по энергопотреблению одно- и двуядерные процессоры, близкие родственники мобильных 96 Sempron и Turion 64 X2. Выпускаются в исполнении BGA, предназначены для использования в легких и тонких ноутбуках. Позиционируются, как конкуренты Intel Atom. 11. 64-х разрядные процессоры Как показано выше, на определенном этапе компании DEC, Motorola, Sun и др. ушли с рынка 32-х разрядных процессоров. Это обусловлено несколькими факторами: разрядность физического адреса 4 Гигабайта для рабочих станций не достаточна. Точность цельночисленных операций в 32-х разрядном формате, также не привлекательна для финансовых приложений. За несколько десятков лет наработано множество архитектур, остановимся на отдельных. Рис. 11.1. Процессор R 12000 архитектура 97 Фирма MIPS вошедшая в состав Silicon Graphics после кратковременного решения прекратить развитие архитектуры 64-х разрядных центральных процессоров выпустила ряд новых решений, в том числе и R12000. Архитектура микропроцессоров компании MIPS Technology была одной из первых RISC-архитектур, получившей признание со стороны промышленности, Анонсированный еще в 1986 году и имеющий первоначально 32-разрядную архитектуру, первый чип имел 32 регистра общего назначения, 16 регистров плавающей точки и специальную пару регистров для хранения результатов выполнения операций целочисленного умножения и деления. Размер команд составлял 32 бит, поддерживался всего один метод адресации, а пользовательское адресное пространство определялось 32 битами. Благодаря высоким, по тем временам, параметрам быстродействия, относительной простоте и неприхотливости первые микропроцессоры MIPS сразу завоевали широкую популярность. Чипы серии R2000, R3000, R4000 и их последующие модификации стали основой для построения рабочих станций и серверов компаний Silicon Graphics, Digifal, Siemens Nixdorf и др. MIPS Technology была первой компанией, выпустившей процессоры с 64-разрядной архитектурой R4000 и R4400. Набор команд этих процессоров - спецификация MIPS II - был расширен командами загрузки и записи 64-разрядных вещественных чисел, командами вычисления квадратного корня с одинарной и двойной точностью, командами условных прерываний, а также атомарными операциями, необходимыми для поддержки мультипроцессорных конфигураций. В процессорах R4000 и R4400 были реализованы 64разрядные шины данных и 64-разрядные регистры. В этих процессорах применяется метод удвоения внутренней частоты. В R4000 и R4400 применяются длинные конвейеры, иногда их называют суперконвейерами. Число ступеней в R4000 и R4400 увеличилось до восьми, что объясняется, прежде всего, увеличением тактовой частоты и необходимостью распределения логики для обеспечения заданной пропускной способности конвейера. В середине 1994 года MIPS анонсировала процессор R8000, который был ориентирован на научные прикладные задачи с интенсивным использованием операций с плавающей точкой. Этот процессор построен на двух кристаллах (выпускается в виде многокристальной сборки) и представляет собой первую суперскалярную реализацию архитектуры MIPS и способна выполнять до четырех команд и шести операций с плавающей точкой в каждом такте. Аппаратные средства поддержки когерентного состояния кэш-памяти вместе со средствами распараллеливания компиляторов обеспечивают возмож98 ность построения высокопроизводительных симметричных многопроцессорных систем. В 1997 году компания выпускает еще один микропроцессор- R 12000. MIPS R12000 использует два уровня кэш-памяти. Первый уровень ассоциативная кэш-память, расположенная на кристалле и имеет 32КБ для данных и 32КБ для команд. Второй уровень - внешняя кэш-память объединена для данных и для команд и может иметь размер от 512КБ до 16МБ. При разработке процессора R12000 большое внимание было уделено эффективной реализации иерархии памяти. В данном чипе обеспечиваются раннее обнаружение промахов кэш-памяти и параллельная перезагрузка строк с выполнением другой полезной работой. Реализованные на кристалле КЭШи поддерживают одновременную выборку команд, выполнение команд загрузки и записи данных в память, а также операций перезагрузки строк кэш-памяти. Заполнение строк кэш-памяти выполняется по принципу "запрошенное слово первым", что позволяет существенно сократить простои процессора из-за ожидания требуемой информации. Все КЭШи имеют двухканальную множественно ассоциативную организацию с алгоритмом замещения LRU. Кэш-память данных первого уровня процессора R12000 имеет емкость 32 Кбайт и организована в виде двух одинаковых банков емкостью по 16 Кбайт, что обеспечивает двукратное расслоение при выполнении обращений к этой кэш-памяти. Каждый банк представляет собой двухканальную множественно-ассоциативную кэш-память с размером строки (блока) в 32 байта. Кэш данных индексируется с помощью виртуального адреса и хранит теги физических адресов памяти. Такой метод индексации позволяет выбрать подмножество кэш-памяти в том же такте, в котором формируется виртуальный адрес. Однако для того, чтобы поддерживать когерентность с кэш-памятью второго уровня, в КЭШе первого уровня хранятся теги физических адресов памяти. Массивы данных и тегов в каждом банке являются независимыми. Эти четыре массива работают под общим управлением очереди формирования адресов памяти и схем внешнего интерфейса кристалла. В очереди адресов могут одновременно находиться до 16 команд загрузки и записи, которые обрабатываются в четырех отдельных конвейерах. Команды из этой очереди динамически подаются для выполнения в специальный конвейер, который обеспечивает вычисление исполнительного виртуального адреса и преобразование этого адреса в физический. Три других параллельно работающих конвейера могут одновременно выполнять проверку тегов, осуществлять пересылку данных для команд загрузки и завершать выполнение команд записи в память. Хотя команды выполняют99 ся в строгом порядке их расположения в памяти, вычисление адресов и пересылка данных для команд загрузки могут происходить неупорядоченно. Схемы внешнего интерфейса кристалла могут производить заполнение или обратное копирование строк кэш-памяти, либо операции просмотра тегов. Такая параллельная работа большинства устройств процессора позволяет процессору R12000 эффективно выполнять реальные многопроцессорные приложения. Работа конвейеров кэш-памяти данных тесно координирована. Например, команды загрузки могут выполнять проверку тегов и чтение данных в том же такте, что и преобразование адреса. Команды записи сразу же начинают проверку тегов, чтобы в случае необходимости как можно раньше инициировать заполнение требуемой строки из кэш-памяти второго уровня, но непосредственная запись данных в кэш задерживается до тех пор, пока сама команда записи не станет самой старой командой в общей очереди выполняемых команд и ей не будет позволено зафиксировать свой результат. Промах при обращении к кэш-памяти данных первого уровня инициирует процесс заполнения строки из кэш-памяти второго уровня. При выполнении команд загрузки одновременно с заполнением строки кэш-памяти данные могут поступать по цепям обхода в регистровый файл. При обнаружении промаха при обращении к кэш-памяти данных ее работа не блокируется, т.е. она может продолжать обслуживание следующих запросов. Это особенно полезно для уменьшения такого важного показателя качества реализованной архитектуры как среднее число тактов на команду. Интерфейс кэш-памяти второго уровня процессора R12000 поддерживает 128-разрядную магистраль данных. Все стандартные синхронные сигналы управления статической памятью вырабатываются внутри процессора. Не требуется никаких внешних интерфейсных схем. Минимальный объем кэш-памяти второго уровня составляет 512 Кбайт, максимальный размер - 16 Мбайт. Размер строки этой кэш-памяти программируется и может составлять 128 или 1024 байт. Одним из методов улучшения временных показателей работы кэшпамяти является построение псевдо-множественно-ассоциативной кэшпамяти. В такой кэш-памяти частота промахов находится на уровне частоты промахов множественно-ассоциативной памяти, а время выборки при попадании соответствует кэш-памяти с прямым отображением. В одном наборе микросхем памяти находятся оба канала КЭШа. Информация о частоте использования этих каналов хранится в схемах управления КЭШем на процессорном кристалле. Поэтому после обнаружения про100 маха в первичном КЭШе, из наиболее часто используемого канала вторичного КЭШа считываются две четырехсловные строки. Их теги считываются вместе с первой четырехсловной строкой, а теги альтернативного канала читаются одновременно со второй четырехсловной строкой это осуществляется простым инвертированием старшего разряда адреса. При этом возможны три случая. Если происходит попадание по первому каналу, то данные доступны немедленно. Если попадание происходит по альтернативному каналу, выполняется повторное чтение вторичного КЭШа. Если отсутствует попадание по обоим каналам, вторичный кэш должен перезаполняться из основной памяти. Для обеспечения целостности данных в кэш-памяти большой емкости обычной практикой является использование кодов, исправляющих одиночные ошибки (ЕСС-кодов). В R12000 с каждой четырехсловной строкой хранится 9-разрядный ЕСС-код и бит четности. Дополнительный бит четности позволяет сократить задержку (поскольку проверка на четность может быть выполнена очень быстро), чтобы предотвратить использование некорректных данных. При этом если обнаруживается корректируемая ошибка, то чтение повторяется через специальный двухтактный конвейер коррекции ошибок. Объем внутренней двухканальной множественно-ассоциативной кэшпамяти команд составляет 32 Кбайт. В процессе ее загрузки команды частично декодируются. При этом к каждой команде добавляются 4 дополнительных бита, указывающих на исполнительное устройство, в котором будет выполняться команда. Таким образом, в кэш-памяти команды хранятся в 36-разрядном формате. Размер строки кэш-памяти команд составляет 64 байта. Обработка команд перехода Конвейерная обработка часто применяется, чтобы ускорить выполнение процесса. В самом простом случае, вся задача разделена на ряд операций, или стадий, и выполняется последовательно, однако, каждая операция может выполняться параллельно с остальными. Выполнение целочисленных команд, например, является независимым от выполнения команды с плавающей точкой. Микропроцессор, который может выполнять несколько операций одновременно за цикл конвейера, называется суперскалярным. MIPS R12000 суперскалярный микропроцессор. Микропроцессоры, использующие конвейерную обработку, также выполняют синхронизацию полной задачи и ее отдельных стадий. Работа конвейера наиболее эффективна, когда идет непрерывный поток команд через него. При реализации конвейерной обработки возникают ситуации, которые препятствуют выполнению очередной команды из по101 тока команд в предназначенном для нее такте. Конфликты по управлению могут вызывать даже большие потери производительности суперскалярного процессора, чем конфликты по данным. По статистике среди команд управления, меняющих значение счетчика команд, преобладают команды условного перехода. Таким образом, снижение потерь от условных переходов становится критически важным вопросом. Имеется несколько методов сокращения приостановок конвейера, возникающих из-за задержек выполнения условных переходов. В процессоре R12000 используются два наиболее мощных на сегодняшний день метода динамической оптимизации выполнения условных переходов: аппаратное прогнозирование направления условных переходов и "выполнение по предположению" или "спекулятивное выполнение". Предсказатель переходов (ветвлений) (Branch predict) процессора R12000 может декодировать и выполнять только по одной команде перехода в каждом такте. Поскольку за каждой командой перехода следует слот задержки, то максимально могут быть одновременно выбраны две команды перехода, но только одна более ранняя команда перехода может декодироваться в данный момент времени. Во время декодирования команд к каждой команде добавляется бит признака перехода. Эти биты используются для пометки команд перехода в конвейере выборки команд. Направление условного перехода прогнозируется с помощью специальной памяти (branch history table) емкостью 2048 строк, которая хранит историю выполнения переходов в прошлом. Обращение к этой таблице осуществляется с помощью адреса команды во время ее выборки. Двухбитовый код прогноза в этой памяти обновляется каждый раз, когда принято окончательное решение о направлении перехода. Все команды, выбранные вслед за командой условного перехода, считаются выполняемыми по предположению (условно). Это означает, что в момент их выборки заранее неизвестно, будет ли завершено их выполнение. Процессор допускает предварительную обработку и прогнозирование направления четырех команд условного перехода, которые могут разрешаться в произвольном порядке. При этом для каждой выполняемой по предположению команды условного перехода в специальный стек переходов записывается информация, необходимая для восстановления состояния процессора в случае, если направление перехода было предсказано неверно. Стек переходов имеет глубину в 4 элемента и позволяет в случае необходимости быстро и эффективно (за один такт) восстановить конвейер. Структура очередей команд 102 Процессор R12000 содержит три очереди буфера команд: целочисленных команд(integer queue), команд плавающей точки(FP queue) и адресов(address queue). Все три очереди осуществляют динамическую выдачу команд в соответствующие исполнительные устройства. С каждой командой в очереди хранится тег команды, который перемещается вместе с командой по ступеням конвейера. Каждая очередь осуществляет динамическое планирование потока команд и может определить моменты времени, когда становятся доступными операнды, необходимые для выполнения каждой команды. Кроме того, очередь определяет порядок выполнения команд на основе анализа состояния соответствующих исполнительных устройств. Как только ресурс оказывается свободным, очередь выдает команду в соответствующее исполнительное устройство. Очередь целочисленных команд содержит 16 строк и выдает команды в два арифметико-логических устройства. Целочисленные команды поступают в свободные строки этой очереди, причем в каждом такте в нее могут записываться до 4 команд. Целочисленные команды остаются в очереди до тех пор, пока они не будут выданы в одно из АЛУ. Очередь команд плавающей точки также содержит 16 строк и выдает команды в исполнительные устройства сложения и умножения с плавающей точкой. Команды вещественной арифметики поступают в свободные строки очереди, причем в каждом такте в нее могут записываться до 4 команд. Команды остаются в очереди до тех пор, пока они не будут выданы в одно из исполнительных устройств. Очередь команд плавающей точки содержит также логику управления команд типа "умножитьсложить". Эта команда сначала направляется в устройство умножения, а затем прямо в устройство сложения. Очередь адресных команд выдает команды в устройство загрузки/записи и содержит 16 строк. Очередь организована в виде циклического буфера FIFO. Команды могут выдаваться в произвольном порядке, но должны записываться в очередь и изыматься из нее строго последовательно. За каждый такт в очередь могут поступать до 4 команд. Буфер FIFO поддерживает первоначальную последовательность команд, что упрощает обнаружение зависимостей по адресам. Выполнение выданной команды может не закончиться при обнаружении зависимости по адресам, кэшпромаха или конфликта по ресурсам. В этих случаях адресная очередь должна заново повторять выдачу команды до тех пор, пока ее выполнение не завершится. Переименование регистров Одним из аппаратных методов минимизации конфликтов по данным является метод переименования регистров (register renaming). Он получил 103 свое название от широко применяющегося в компиляторах метода переименования - метода размещения данных, способствующего сокращению числа зависимостей и тем самым увеличению производительности при отображении объектов (например, переменных), необходимых исходной программе для работы с аппаратными ресурсами (например, ячейками памяти и регистрами). При аппаратной реализации метода переименования регистров выделяются логические регистры, обращение к которым выполняется с помощью соответствующих полей команды, и физические регистры, размещаемые в аппаратном регистровом файле процессора. Номера логических регистров динамически отображаются на номера физических регистров посредством таблиц отображения, которые обновляются после декодирования каждой команды. Каждый новый результат записывается в новый физический регистр. Однако предыдущее значение каждого логического регистра сохраняется и может быть восстановлено в случае, если выполнение команды должно быть прервано из-за возникновения исключительной ситуации или неправильного предсказания направления условного перехода. В процессе выполнения программы генерируется множество временных регистровых результатов. Эти временные значения записываются в регистровые файлы вместе с постоянными значениями. Временное значение становится новым постоянным значением, когда завершается выполнение команды - фиксируется ее результат. В свою очередь, завершение выполнения команды происходит, когда все предыдущие команды успешно завершились в заданном программой порядке. Программист или компилятор имеет дело только с логическими регистрами. Реализация физических регистров от него скрыта. Таким образом, аппаратный метод переименования регистров, используемый в процессоре R12000, имеет три основных достоинства. Во-первых, результаты "выполняемых по предположению" команд могут прямо записываться в регистровый файл. Во-вторых, этот метод устраняет все конфликты типа "запись после чтения" и "запись после записи", которые часто возникают при неупорядоченном выполнении команд. И, наконец, метод переименования регистров упрощает контроль зависимостей по данным. Поскольку процессор обеспечивает выдачу на выполнение до четырех команд за каждый такт, в процессе переименования регистров их логические номера сравниваются для определения зависимостей между четырьмя командами, декодированными в одном и том же такте. Реализованная в микропроцессоре R12000 схема отображения команд состоит из двух таблиц отображения, списка активных команд и двух 104 списков свободных регистров: для целочисленных команд и команд плавающей точки имеются отдельные таблицы отображения и списки свободных регистров. Чтобы поддерживать последовательный порядок завершения выполнения команд, существует только один список активных команд, который содержит как целочисленные команды, так и команды вещественной арифметики. R12000 содержит по 64 физических регистра для целочисленной и вещественной арифметики. В любой момент времени значение физического регистра содержится в одном из указанных выше списков. Команды выбираются из КЭШа команд и помещаются в таблицу отображения. В любой момент времени каждый из 64 номеров физических регистров находится в одном из трех указанных на рисунке блоков. Список активных команд (Positive List) длиной 48 элемента может хранить последовательность команд, упорядоченную в соответствии с программой и находящуюся в обработке в любой данный момент времени. Команды из очереди целочисленных команд могут выполняться неупорядоченно и записывать результаты в физические регистры, а порядок их окончательного завершения определяется списком активных команд. Каждая команда может уникально идентифицироваться своим положением в списке активных команд. Поэтому каждую команду в очереди и в соответствующем исполнительном устройстве сопровождает 5-разрядная метка, называемая тегом команды. Этот тег и определяет положение команды в списке активных команд. Когда в исполнительном устройстве заканчивается выполнение команды, тег позволяет очень просто отыскать ее в списке активных команд и пометить как выполненную. Когда результат операции из исполнительного устройства записывается в физический регистр, номер этого физического регистра становится больше не нужен и может быть возвращен затем в список свободных регистров, а соответствующая команда перестает быть активной. Когда в процессе переименования из списка свободных регистров выбирается очередной номер физического регистра, он передается в таблицу отображения, а таблица обновляется. При этом старый номер регистра, соответствующий определенному в команде логическому регистру результата, перемещается из таблицы отображения в список активных команд. Этот номер остается в списке активных команд до тех пор, пока не завершится выполнение соответствующей команды в заданном программой порядке. Это может произойти только после того как успешно завершится выполнение всех предыдущих команд. 105 Исполнительные устройства В процессоре R12000 имеются пять полностью независимых исполнительных устройств: два целочисленных АЛУ, два основных устройства плавающей точки с двумя вторичными устройствами плавающей точки, которые работают с длинными операциями деления и вычисления квадратного корня, а также устройство загрузки/записи. Целочисленные АЛУ Оба АЛУ выполняют стандартные операции сложения, вычитания и логические операции. АЛУ1 обрабатывает все команды перехода, а также операции сдвига, а АЛУ2 - все операции умножения и деления с использованием итерационных алгоритмов. Целочисленные операции умножения и деления помещают свои результаты в регистры EntryHi и EntryLo. Во время выполнения операций умножения в АЛУ2 могут выполняться другие однотактные команды, но сам умножитель оказывается занятым. Однако когда умножитель заканчивает свою работу, АЛУ2 оказывается занятым на два такта, чтобы обеспечить запись результата в два регистра. Во время выполнения операций деления, которые имеют очень большую задержку, АЛУ2 занято на все время выполнения операции. Целочисленные операции умножения вырабатывают произведение с двойной точностью. Для операций с одинарной точностью происходит распространение знака результата до 64 разрядов прежде, чем он будет помещен в регистры EntryHi и EntryLo. Время выполнения операций с двойной точностью примерно в два раза превосходит время выполнения операций с одинарной точностью. В микропроцессоре R12000 реализованы два основных устройства вещественной арифметики: устройство сложения(FP adder) и умножения(FP multiplier). Кроме того, существуют два вторичных устройства, которые обрабатывают длинные операции деления(Div) и вычисления квадратного корня(Sqrt). Время выполнения команд сложения, вычитания и преобразования типов равно двум тактам, а скорость их поступления в устройство равна одной команде за такт. Эти команды обрабатываются в устройстве сложения. Команды преобразования целочисленных значений в вещественные с однократной точностью имеют задержку в 4 такта, поскольку они дважды должны пройти через устройство сложения. В устройстве умножения обрабатываются все операции умножения с плавающей точкой. Время их выполнения равняется двум тактам, а скорость поступления - 1 команда за такт. Устройства деления и вычисления квадратного корня выполняют операции с использованием итерационных алгоритмов. Эти устройства не конвейеризованы и не могут начать 106 выполнение следующей операции до тех пор, пока не завершилась текущая команда. Таким образом, скорость повторения этих операций примерно равна задержке их выполнения. Порты умножителя являются общими для устройств деления и вычисления квадратного корня. В начале и в конце операции по одному такту расходуется для выборки операндов и для записи результата. Операция с плавающей точкой "умножить-сложить", которая в вычислительных программах возникает достаточно часто, выполняется с использованием двух отдельных операций: операции умножения и операции сложения. Команда умножить-сложить" (MADD) имеет задержку в 4 такта и скорость повторения равную 1 команде за такт. Эта составная команда увеличивает производительность за счет устранения выборки и декодирования дополнительной команды. Устройства деления и вычисления квадратного корня используют раздельные цепи и могут работать одновременно. Однако очередь команд плавающей точки не может выдать для выполнения обе команды в одном и том же такте. В таблице 1 показаны задержки и скорости повторения команд для целочисленных устройств и устройств плавающей точки. Устройство загрузки/записи и TLB Устройство загрузки/записи содержит очередь адресов, модули вычисления адреса и преобразования виртуальных адресов в физические (TLB), стек адресов, буфер записи и кэш-память данных первого уровня. Устройство загрузки/записи выполняет команды загрузки, записи, предварительной выборки, а также команды работы с кэш-памятью. Выполнение всех команд загрузки и записи начинается с трехтактной последовательности, во время которой осуществляется выдача команды, вычисление виртуального адреса и его преобразование в физический. Преобразование адреса осуществляется во время выполнения команды только однажды. Производится обращение к кэш-памяти, а пересылка требуемых данных завершается при наличии данных в кэш-памяти первого уровня. В случае промаха или занятости разделяемого порта регистрового файла, обращение к КЭШу данных и к тегу должно быть повторено после поступления данных либо из кэш-памяти второго уровня, либо из основной памяти. TLB содержит 64 строки и выполняет преобразование виртуального адреса в физический. Виртуальный адрес для преобразования поступает либо из устройства вычисления адреса, либо из счетчика команд. C фирменной линейкой 64- х разрядных ЦП Intel все немного сложнее: 107 Процессор I 86486 начал выполнять основные команды пользователя за такт. Он в определенном смысле является RISC процессорами. 64 –х разрядная архитектура цельночисленного АЛУ для массовых применений была слабо востребована. Поэтому фирма свое разработки RISC процессоров проводила, скорее как ЦПС (9900, IA Skale). 64 –х разрядный процессор заложила как серверный, почти игнорируя 32-х разрядные приложения (архитектура IA-64). После успеха 64-х разрядной архитектуры фирмы AMD, развивающей IA 32, очередную версию Pentium 4 довела до 64-х разрядной архитектуры. К началу 2000-х годов стало очевидно, что 32-битное адресное пространство архитектуры x86 ограничивает производительность приложений, работающих с большими объёмами данных. 32-разрядное адресное пространство позволяет процессору осуществлять непосредственную адресацию лишь 4 Гб данных, этого может оказаться недостаточным для некоторых приложений, связанных, например, с обработкой видео или обслуживанием баз данных. На рынке 64-х разрядные процессоры DEC, IBM, Sun явно лидировали по быстродействию. Intel предложила архитектуру, которая по направлениям RISC архитектуры были очень обнадеживающими, добавив еще и новшества VLIW архитектуры. Intel разработала новую архитектуру IA-64 — основу семейства процессоров Itanium. Рынок начал перестраиваться. Лидеры разработки 64-х разрядных процессоров, наученные опытом динамики 32-х разрядных, заявили о прекращении развития своих архитектур. DEC продала ведущую полупроводниковую фабрику корпорации Intel. Но в IA-64 для обеспечения обратной совместимости со старыми приложениями, использующими 32-разрядный код, был предусмотрен режим эмуляции и довольно слабый. На практике данный режим работы оказался чрезвычайно медленным. И конкуренция на рынке 64-х разрядных архитектур возросла вновь. Компания AMD предложила альтернативное решение проблемы увеличения разрядности процессора. Вместо того чтобы изобретать совершенно новую систему команд, было предложено ввести 64-разрядное расширение к уже существующей 32-разрядной архитектуре x86. Первоначально новая архитектура называлась x86-64, позже она была переименована в AMD64. Первоначально новый набор инструкций поддерживался процессорами семейств Opteron, Athlon 64 и Turion 64 компании AMD. Успех процессоров, использующих технологию AMD64, наряду с 108 вялым интересом к архитектуре IA-64, побудили Intel лицензировать набор инструкций AMD64. При этом был добавлен ряд специфических инструкций, не присутствовавших в изначальном наборе AMD64. Новая версия архитектуры получила название EM64T. В литературе и названиях версий своих продуктов компании Microsoft и Sun используют объединённое именование AMD64/EM64T, когда речь заходит о 64-разрядных версиях их операционных систем Windows и Solaris соответственно. В то же время, поставщики программ для операционных систем GNU/Linux, BSD используют метки «x86-64» или «amd64», Mac OS X использует метку «x86_64», если необходимо подчеркнуть, что данное ПО использует 64-разрядные инструкции. Краткий обзор архитектуры IA-64 Системы команд многих RISC-процессоров во многом похожи друг на друга. Например, говорят, что в этом смысле MIPS и Alpha близки друг к другу. Однако появление архитектуры IA-64, которая претендует на монополию на рынке микропроцессоров, разработчики из HP и Intel характеризуют как наступление эры "пост-RISC". Доступная информация свидетельствует, что IA-64 революционным образом отличается от предшественников, даже от своих прямых предков таких, как HP PA-RISC. Процессоры с архитектурой IA-64 (Merced, McKinley и т.д.) могут обойти RISC-процессоры по производительности. Микроархитектура E2K (разработка СССР), имела близкие к IA-64 архитектурные особенности. Традиционные части системы команд IA-64 напоминают обычный набор команд RISC, в первую очередь архитектуры PA-RISC. Совместимость с PA-RISC в IA-64 обеспечивается за счет динамической трансляции команд (т.е. подобно Compaq/DEC FX!32). Применительно к прикладным программам такой подход оказывается вполне эффективным благодаря близости части команд PA-RISC к соответствующим командам IA-64. Наиболее кардинальным нововведением IA-64 по сравнению с RISC является "явный параллелизм команд (EPIC - Explicitly Parallel Instruction Computing), привносящий в IA-64 некоторые элементы, напоминающие архитектуру "сверхбольшого командного слова" (VLIW - Very Large Instruction Word). В обеих архитектурах явный параллелизм представлен уже на уровне команд, управляющих одновременной работой функциональных исполнительных устройств (ФИУ). Соответствующие "широкие команды" HP/Intel назвали связками (bundle). 109 Рис. 11.1. Формат связки команд IA-64 Связка имеет длину 128 разрядов (рис. 11.1.). Она включает 3 поля "слота" для команд длиной 41 разрядов каждая, и 5-разрядное поле шаблона. Предполагается, что команды связки могут выполняться параллельно разными ФИУ. Возможные взаимозависимости, препятствующие параллельному выполнению команд связки, отражаются в поле шаблона. Не утверждается, впрочем, что параллельно не могут выполняться и команды разных связок. Шаблон указывает, какого типа команды находятся в слотах связки. В общем случае команды одного типа могут выполняться в более чем одном типе ФИУ. Шаблоном задаются так называемые остановки, определяющие слот, после начала выполнения команд которого команды последующих слотов должны ждать завершения. Порядок слотов в связке (возрастание справа налево) отвечает и порядку байт - little endian. Однако данные в памяти могут располагаться и в режиме big endian. Режим устанавливается специальным разрядом в регистре маски пользователя. Последовательность команд от остановки до остановки (или выполняемого перехода) называется группой команд. Она начинается с заданного адреса команды (адрес связки плюс номер слота) и включает все последующие команды - с увеличением номера слота в связке, а затем и адресов связок, пока не встретится остановка. РЕГИСТРЫ В их число входят: 128 регистров общего назначения GR; 128 регистров с плавающей запятой FR; 64 регистра предикатов PR; 8 регистров перехода BR; 128 прикладных регистра AR; не менее 4 регистров идентификатора процессора CPUID; счетчик команд IP, указывающий на адрес связки, содержащей исполняемую команду; регистр маркера текущего окна CFM, описывающий окно стека регистров и др. Регистры CPUID являются 64-разрядными. В CPUID-регистрах 0 и 1 лежит информация о производителе, в регистре 2 находится серийный номер процессора, а в регистре 3 задается тип процессора (семейство, модель, версия архитектуры и т.п.) и число CPUID-регистров. Разряды регистра 4 указывают на поддержку конкретных особенностей IA-64, т.е. тех, которые реализованы в данном процессоре. Прикладные регистры AR0-AR127 - специализированные (в основном 64-разрядные) регистры, применяемые в IA-64 и IA-32. AR0-7 называются регистрами ядра; запись в них привилегированна, но они доступны на чтение в любом приложении и используются для передачи приложению сообщений от операционной системы. 110 Среди других прикладных регистров укажем на AR16 (RSC) - регистр конфигурации стека регистров, используемый для управления работой "машиной" стека регистров IA-64 (RSE); AR17 (BSP), в котором находится адрес в памяти, где сохраняется положение GR32 в текущем окне стека; AR40 (FPSR) - регистр состояния для команд с плавающей запятой IA-64; AR44 (ITC) - интервальный таймер; AR64 (PFS) - регистр предыдущего состояния функции, куда автоматически копируются некоторые другие регистры при вызове подпрограмм; AR65 (LC), используемый для организации циклов со счетчиком, и, наконец, 6-разрядный регистр эпилога AR66 (EC). Ряд AR-регистров является фактически регистрами IA32 (дескриптор сегмента кодов, дескриптор сегмента стека и др.). 64-разрядные регистры GR0-127 применяются не только для целочисленных операций IA-64; GR8-31 в режиме IA-32 используются также под целочисленные регистры и регистры селекторов и дескрипторов сегментов IA-32. GR0-31 называются статическими регистрами, а GR32-127 – регистрами стека. Статические регистры "видны" всем программам. Стекируемые регистры становятся доступными в программной единице через окно стека регистров, включающее локальные и выходные регистры, число которых задается командой alloc. 82-разрядные регистры с плавающей запятой FR0-127 также подразделяются на статические (FR0-31, причем всегда FR0=0.0, FR1=1.0) и вращаемые (FR32-127). FR8-31 в режиме IA-32 содержат числа с плавающей запятой и мультимедийный регистры. Вращение регистров является в некотором роде частным случаем переименования регистров, применяемого во многих современных суперскалярных процессоров с внеочередным спекулятивным выполнением команд. В отличие от них, вращение регистров в IA-64 управляется программно. К обсуждению вращения регистров мы вернемся ниже, а содержимое FR будет рассмотрено в разделе, посвященном операциям с плавающей запятой. 64-разрядные регистры переходов BR0-7 применяются для указания адреса перехода в соответствующих командах перехода (если адрес перехода не кодируется в команде явно). Регистры предикатов PR0-63 являются одноразрядными; в них помещаются результаты команд сравнения. Обычно эти команды устанавливают сразу два регистра PR в зависимости от условия - соответственно истинность условия и его отрицания. Такая избыточность обеспечивает дополнительную гибкость. В отечественном микропроцессоре E2K [3] предикатных регистров в два раза меньше. Хотя это позволяет хранить столько же условий, сколько в IA-64, в последней предикатные регистры применяются еще и для орга111 низации программно конвейеризованных циклов (Software Pipelining SWP). Использование предикатных регистров - важнейшая особенность, кардинально отличающая IA-64 от всех других микропроцессоров, кроме E2K. PR0-15 являются статическими (PR0 всегда равен 1), а PR16-63 - вращаемыми. Статические предикатные регистры используются в командах условного перехода. Кроме того, почти все команды IA-64 могут быть выполнены "под предикатом". Работа стека регистров Файл регистров GR отличается от FR и PR тем, что последние содержат фиксированные подмножества статических и вращаемых регистров, в то время как в файле GR вне подмножества статических регистров применяется стек регистров, и программной единице доступна лишь его часть окно стека регистров. В отличие от статических регистров, стекируемое подмножество локально для любой программной единицы и может иметь размер от 0 до 96 регистров, начиная с GR32. Использование этого механизма в IA-64 позволяет, как мы увидим, избежать накладных расходов, связанных с сохранением/восстановлением большого числа регистров при вызовах подпрограмм и возвратах из них (однако статические регистры при необходимости все-таки приходится сохранять и восстанавливать, явно кодируя соответствующие команды). Автоматическое сохранение/восстановление стекируемого подмножества регистров осуществляет RSE, и в программе об этом заботиться не надо. В режиме IA-32 работа с этим стеком регистров, естественно, отключается. Один из регистров IA-64 - 38-разрядный регистр CFM сохраняет состояние "текущего" окна стека регистров. Как и другие маркеры окна, CFM содержит общий размер окна стека, число локальных регистров и (кратное 8) число вращаемых регистров в окне, а также 3 значения базы для переименования регистров - соответственно rrb.gr, rrb.fr и rrb.pr. Итак, окно стека имеет две области переменного размера - локальную и выходную. Рассмотрим вызов процедур подробнее. При переходе типа "вызов процедуры" CFM вызывающей подпрограммы сохраняется в поле PFM (Previous Frame Marker) регистра PFS, и создается CFM вызываемой подпрограммы. Сразу после вызова размер локальной области вызываемой подпрограммы равен размеру выходной области вызывающей и перекрывается с ней. При этом стекируемые регистры автоматически переименовываются таким образом, что первый регистр выходной области вызывающей подпрограммы становится регистром GR32 вызываемой (рис.2, где procA - это вызывающая, а procB - вызываемая подпрограм112 ма). Перекрытие их выходных областей позволяет эффективно передавать параметры через регистры. Рис. 11.2. Стек регистров при вызове procB из procA Как мы уже указывали, вызываемая подпрограмма может изменить размеры своих локальной и выходной областей командой alloc; соответствующим образом будут изменены и поля в CFM. Команда alloc обычно используется вызываемой подпрограммой для того, чтобы распределить себе определенное число локальных регистров и заиметь выходную область для передачи параметров уже собственному "потомку". Если запрошенное в команде alloc количество регистров оказывается недоступным (переполнение стека), alloc приостанавливает процессор и RSE будет сохранять регистры вызывающей подпрограммы, пока запрошенное alloc число регистров не будет доступным. При переходе типа "возврат из процедуры" CFM восстанавливается из PFM, а обратное переименование регистров восстанавливает состояние вызывающей подпрограммы. Если некоторые ее регистры были ранее "сброшены" RSE, то при возврате RSE приостановит процессор до тех пор, пока не будут восстановлены эти регистры. "Непривилегированная часть" системы команд IA-64 определяет наиболее принципиальные особенности IA-64. Среди этих принципиальных особенностей спекулятивное выполнение команд и применение предикатов. Все рассматриваемые команды можно подразделить на: команды работы со стеком регистров (например, alloc); целочисленные команды; команды 113 сравнения и работы с предикатами; команды доступа в память; команды перехода; мультимедийные команды; команды пересылок между регистрами; "разные" (операции над строками и подсчет числа единиц в слове); команды работы с плавающей запятой. Целочисленные команды IA-64 включают арифметические операции (add, sub и др.), логические операции (and, or, xor и др.), операции над битами и сдвиги, а также 32-разрядные операции. Большинство этих команд трехадресные, а их аргументы лежат в регистрах; однако встречается и литеральное представление аргументов. Имеются также модификации команд add и sub, которые являются четырехадресными: в них к сумме/разности регистров прибавляется/вычитается 1. Отметим, что команда умножения целых чисел в регистрах GR отсутствует; для перемножения необходима пересылка целых в регистры FR и применение операции умножения, выполняемой в ФИУ вещественного типа. Некоторые специалисты считают это "наименее удачной" чертой системы команд IA-64. Команды сравнения и работа с предикатами - это одна из принципиально новых особенностей IA-64 по сравнению с RISC-архитектурой. Приведем сначала несколько типичных примеров команд этой группы. Команда cmp сравнивает два регистра GR (или регистр GR и литерал) на одно из 10 возможных условий (больше, меньше или равно и т.п.). Команда tbit тестирует заданный бит GR. Команда fcmp сравнивает два числа с плавающей запятой. Однако результатом сравнения является не единственный код условия, что типично для обычных процессоров. Логический результат сравнения (1 - истина, 0 - ложь) записывается обычно в пару предикатных регистров (во второй пишется отрицание первого). Эти значения предикатных регистров используются затем не только в командах условного перехода, как в обычных микропроцессорах. Почти все команды IA-64 выполнимы "под предикатом", т.е. могут выполняться или нет в зависимости от значения указанного в команде PR-регистра. Это позволяет во многих случаях избежать применения условных переходов, которые, как известно, отрицательно сказываются на производительности микропроцессоров. Вместо этого процессор c архитектурой IA-64, имеющий большое число ресурсов (в частности, регистров и ФИУ), может исполнить обе ветви программы. Рассмотрим теперь команды доступа в память. Прежде всего, это команды загрузки регистров и записи из них в оперативную память. Команда ld загружает в GR 1-, 2-, 4- и 8-байтные целочисленные величины; аналогично ldf загружает в FR числа с плавающей запятой размером 4, 8, 10 байт, а также пары 4-байтных чисел. В этих командах можно указать 114 также на тонкие особенности работы с оперативной памятью и КЭШем. Имеются и специальные команды работы с КЭШем. Принципиальной является возможность кодирования указанных команд загрузки в специальных спекулятивных формах. Различают загрузку спекулятивную по управлению и спекулятивную по данным. Спекулятивное по управлению выполнение означает возможность заранее выполнить команды, расположенные за командой условного перехода, до того, как будет известно, будет ли осуществляться этот условный переход на соответствующую ветвь программы. При наличии большого числа ресурсов процессора это позволяет заранее запускать на выполнение команды, которые начнут выполняться одновременно с уже начавшими выполняться другими командами (в других ФИУ). Однако позднее может выясниться, что эти спекулятивно выполненные команды оказались выполненными напрасно, так как переход на эту ветвь не произошел, и нужно произвести "откат". Поскольку эти спекулятивно выполненные команды могут привести к прерыванию, в IA-64 предусмотрен механизм, позволяющий зафиксировать, что возникло прерывание, но само прерывание "отложить" до тех пор, пока не будет затребован опрос его наличия. Признак отложенного прерывания записывается в регистр результата (затем его можно опросить специальной командой chk.s). В дальнейшем признак отложенного прерывания последовательно "распространяется" на регистры результатов спекулятивных команд, в регистрах исходных данных которых взведен признак отложенного прерывания. Все команды можно разделить на спекулятивно выполнимые и спекулятивно невыполнимые. Последние могут вызывать прерывания, которые не могут быть отложены. Обычные вычислительные команды, имеющие GR или FR в качестве регистров результата, - спекулятивные. Если же команда изменяет другие типы регистров, она не спекулятивная. Кроме обычных не спекулятивных команд (ld, ldf...) в IA-64 имеются их спекулятивные модификации (ld.s, ldf.s...). Вычислительные команды в общем случае не вызывают прерываний (операции с плавающей запятой обрабатывают прерывания специальным образом), поэтому единственным способом сгенерировать признак отложенного прерывания являются команды спекулятивной загрузки. Другие команды его могут только "распространять". В точке программы, где надо использовать результат спекулятивного выполнения, следует применять спекулятивную команду chk.s, проверяющую признак отложенного прерывания. Если оно имелось, chk.s передаст управление по указанному в ней адресу, по которому программист 115 должен расположить коды обработки ситуации. Поскольку стало ясно, что спекулятивное выполнение команды действительно понадобилось, можно закодировать копию спекулятивно выполненного фрагмента программы, но уже с не спекулятивными командами загрузки. Другой тип спекулятивного выполнения может иметь место, когда вслед за записью в память идет команда загрузки регистра, и невозможно заранее определить, не будут ли перекрываться в памяти используемые этими командами данные. В IA-64 имеются спекулятивные команды загрузки (ld.a, ldf.a...), которые называются "усовершенствованными" (advanced) командами загрузки. Аналогично взаимозависимости между командами по управлению, "расшиваемой" применением спекулятивных команд с "постфиксом" .s, продвинутые команды загрузки вместе с соответствующей командой проверки chk.a (аналог chk.s) позволяют исключить задержки выполнения при наличии взаимозависимости по данным. Обратимся теперь к командам перехода. Адрес перехода выравнивается всегда на границу связки, т.е. управление передается на ее слот 0. Имеется команда перехода относительно счетчика команд, в которой явно кодируется 21-разрядное смещение. Эти переходы осуществимы в пределах +/-16 Мбайт относительно счетчика. В непрямых командах перехода адрес перехода задается в регистре BR. Обычный условный переход br.cond, или просто br, использует значение кодируемого в команде предикатного регистра PR для определения истинности условия. Указав в команде PR0, в котором всегда лежит 1, можно получить безусловный переход. PR0 кодируется также в командах вызова процедур/возврата (br.call/br.ret). Имеется 5 типов команд перехода, применяемых для организации циклов. Команда br.cloop используется для организации циклов со счетчиком, в которых адрес перехода кодируется относительно IP. В команде используется регистр LC: если он не равен 0, его содержимое уменьшается на 1, и выполняется переход; если LC = 0, перехода не будет. Применение команд работы с циклами мы рассмотрим позже при обсуждении программно конвейеризованных циклов. В 2003-2005 годах Itanium® 2 лучшей в отрасли ЦП по производительности, по затратами и с более широким выбором конфигураций, чем у закрытых RISC-технологий. Процессор Itanium® 2, созданный на основе открытых стандартов, является высокомасштабируемым, 64-разрядным решением и поддерживается 40 ведущими производителями аппаратных средств, более чем пятью операционными системами, включающими ОС Windows* Server 2003, HP-UX* и Linux*, и сотнями приложений и пакетов инструмен116 тальных средств. Кроме того, процессоры Itanium® 2 совместимы на уровне двоичного кода с существующим ПО для процессора Itanium, что обеспечивает защиту инвестиций. Приложения для 32-разрядной архитектуры Intel® поддерживаются семейством процессоров Itanium, и эта поддержка будет улучшена после реализации технологии Intel® Architecture-32 Execution Layer. Itanium® 2 совместимы на уровне двоичного кода с существующим ПО для процессора Itanium. Микроархитектура процессора Itanium® 2 обеспечивает быстрый доступ к интегрированной кэш-памяти, высокую пропускную способность при обмене информацией между центральным процессором и системной памятью и обладает значительными вычислительными ресурсами, ускоряющими выполнение команд и повышающими общую производительность системы. Intel 21 февраля 2004 года наконец-то официально сообщила о выпуске первых процессоров Pentium 4 для настольных систем с поддержкой 64разрядных расширений Extended Memory 64 Technology (EMT 64). Это решение лишь стало конкурентно способным по цене и «теплу» 64-х разрядным центральным процессорам AMD. 12. Особенности архитектуры цифровых процессоров сигналов, транспьютеров и интерфейсных СБИС. Центральные процессоры поддерживают многозадачность, широкую память и т.п. теряя на этом производительность и неся дополнительные аппаратные затраты. Поэтому параллельно с ЦП развивалась линия быстродействующих процессоров. Наиболее универсальные из них получили название цифровых процессоров сигналов. Специализированные ЦПС – графические процессоры (GPU), транспьютеры, отдельные интерфейсные СБИС отличаются спецификой архитектуры, микропрограммного обеспечения, ориентированы на решение конкретной задачи. ЦПС опережают ЦП по производительности на одинаковой тактовой частоте, но отстают из-за массовости в топологической норме, и как следствие, имеют более низкие тактовые частоты. Только GPU идут вровень с ЦП, опережая последние по быстродействию в десятки и сотни раз. 117 Рис. 12. 1. Ядро процессора включает 2 по четыре исполнительных устройства с VLIW командой Первые ЦПС I 2920 выпустила фирма Intel в 1978 году. Это 25-х битные процессоры, функционирующие в RISC цикле и не имеющие прерываний. Их микропрограммный автомат предельно упрощен. Появился специфичный набор команд – арифметика с насыщением, размерность АЛУ более чем вдвое превышает размерность операндов. Новая команда, 118 умножение с накоплением, поддерживает массовую обработку сигналов. Имеет встроенный ЦАП и АЦП. Рис. 12. 2. Структура связей исполнительных устройств Основную историю ЦСП принято отсчитывать от 1979—1980 годов, когда Bell Labs представила первый однокристальный ЦСП Mac 4, а также на «IEEE International Solid-State Circuits Conference '80» были показаны µMPD7720 компании NEC и DSP1 компании AT&T, которые, од119 нако, не получили широкого распространения. Далее на арену вступает компания Texas Instruments, признанный сегодня лидер в области цифровых процессоров сигналов. Стандартом де-факто стал выпущенный кристалл TMS32010 фирмы Texas Instruments, по многим параметрам и удачным техническим решениям превосходящий изделия конкурентов. Множество фирм выпускают ЦПС различной конфигурации. ЦПС входят в кристаллы развитых микроконтроллеров. Рассмотрим архитектуру DSP - TMS320C6411 (рис. 12.1, 12.2). Это процессор с VLIW командой, 8- исполнительных устройств. Имеет КЭШ данных и команд. Ниже показана специализация различных вариантов ЦПС. Это и ориентированный на построение фраймграберов процессор TMS320DM642 (рис. 12.3), процессор видеокамеры TMS320DM310 (рис. 12.4, 12.5.). Рис. 12.3. Подключение TMS320DM642 120 Рис. 12.4. Цифровая видеокамера с процессором TMS320DM310 Это, по сути, сборка на кристалле DSP+ несколько контроллеров • Real-time MPEG-1, -4 video encode кодируются at CIF resolution (352 x 288) • Real-time MPEG-4 video decode декодируется at VGA resolution (640 x 480) • One-second shot-to-shot delay for 6-megapixel CCD imagers Одна-секунда задержки для 6megapixel CCD формирования изображения приложений • Supports multiple applications and file formats including файловые форматы включая MPEG-4, MPEG-2, MPEG-1, JPEG, MJPEG, H.263, MP3, AAC and WM4 • Highly integrated system-on-achip (SoC) design reduces overall system cost Система на чипе (SoC) разработка уменьшает общую стоимость A/D, D/A Serial I/F for Audio (2) Рис. 12.5. Выходы TMS320DM310 121 – Correlated double sampling (CDS) Коррелированная двойная выборка (CDS) – Programmable black level clamping Программируемый уровень черного • Programmable gain amplifier (PGA): – 6-dB to +42-dB gain ranging Программируемый прирост усилители (PGA): 6-dB, чтобы +42-dB • 12-bit digital data output: – Up to 20-MHz conversion rate до 20MHz – No missing codes Никакая потеря не кодирует • 79-dB signal-to-noise ratio79-dB сигнал-помехи • Portable operation: – Low voltage: 2.7 V to 3.6 V – Low power: 83 mW (typ) at 3.0 V – Standby mode: 6 mW Рис. 12.6. Преобразования аналогового сигнала Рис. 12.7. Потоки в системе обработки сигналов с CCD построенной на базе DCS24 122 CCD источник может быть подключен через CCD signal processor VSP2262 (рис. 12.6). Потки данных в таких приборах существенно влияют на архитектуру (рис. 12.7). Становится все более распространенным комплексное объединение ЦПС и микроконтроллеров. Например, ЦПС TMS320DSC24 включает в себя ЦПС 5409 и контроллер ARM 7. Последний - 32-х разрядный и поддерживает работу серии стандартных интерфейсов. • Двойной процессор integrating a TMS320C54xTM DSP and an ARM7TDMI RISC MCU • 16-bit low-power DSP with 32K c 16-bit интегрированным DARAM и 32K x 16-bit SARAM производительностью operates at up to 94.5 MHz • Smart Интеллектуальный power management and low-power modes for DSP and MCU subsystems • SDRAM controller контроллер поддерживает 16and 32-bit SDRAM up to 75 MHz вплоть до 75 MHz • ARM7TDMI RISC microcontroller микроконтроллер работает с байтами 32K встроенного SRAM, вплоть до 37.5 MHz core with 32K bytes of integrated SRAM operating up to 37.5 MHz • Integrated DSP and MCU subsystem peripherals • Seamless interface to external CPU used as a host processor • Supports scan-based emulation эмуляция of DSP and MCU cores • Packaging: 257-ball MicroStar BGATM (GHK) Важна распайка Решает все по функциям цифрового фотоаппарата, требуемым для NV. Рис. 12.8. Объединение DSP и микроконтроллера Довольно интересна история развития специализированных процессоров транспорта данных, осуществляющих на проходе перекодировку потоков под различные стандарты. Транспьютер (англ. transputer) — элемент построения многопроцессорных систем, выполненный на одном кристалле большой интегральной схемы, продукт английской компании 123 INMOS Ltd. (ныне — подразделение STMicroelectronics). Термин транспьютер происходит от слов Transistor и Computer. Такой генезис должен, по мнению разработчиков, подчёркивать возможность построения сложных вычислительных комплексов на базе транспьютеров, где их роль уподоблялась бы роли транзисторов, выступающих основным элементом при проектировании электронных схем. Параллельная система может создаваться из набора транспьютеров, которые функционируют независимо и взаимодействуют через последовательные каналы связи. Транспьютеры успешны в различных областях. В настоящее время транспьютеры INMOS Ltd. (ныне — подразделение STMicroelectronics) не производятся, будучи вытесненными похожими разработками конкурентов, особенно Texas Instruments. Термин линк (link) —физический канал связи между параллельно работающими процессорами — пришёл из транспьютеров, а протокол транспьютерного линка стал стандартом IEEE. 13. VLIW архитектура, основные черты перспективных процессоров Каждые полгода приносят новшества в архитектуру КС. Остановимся на втором полугодии 2010 года. Практически без изменения ниже приведен результат исследования одного из аналитиков. Развитие бренда Pentium подошло к следующему поколению микроархитектуры Intel с рабочим названием Gesher ("мост" на иврите), что чуть позже трансформировалось в Sandy Bridge. Это новая процессорная микроархитектура. Именно так, сегодня можно представить таинственную микроархитектуру Haswell, которая появится после поколения Ivy Bridge, которое, в свою очередь, придёт на смену Sandy Bridge. что теперь окончательно можно говорить о конце 15-летней эпохи микроархитектуры P6 (Pentium Pro) и о появлении нового поколения микроархитектуры Intel. Микроархитектура Sandy Bridge: Чип Sandy Bridge – это четырёхъядерный 64-битный процессор с изменяемой (out-of-order) последовательностью исполнения команд, поддержкой двух потоков данных на ядро (HT), исполнением четырёх команд за такт; с интегрированным графическим ядром и интегрированным контроллером памяти DDR3; с новой кольцевой шиной, поддержкой 3- и 4-операндных (128/256-битных) векторных команд расширенного набора AVX (Advanced Vector Extensions); производство которого налажено на линиях с соблюдением норм современного 32-нм технологического процесса Intel. Процессоры Intel Core II на базе микроархитектуры Sandy Bridge 124 будут поставляться в новом 1155-контактном конструктиве LGA1155 под новые системные платы на чипсетах Intel 6 Series. Примерно такая же микроархитектура будет актуальна и для серверных решений Intel Sandy Bridge-EP, разве что с актуальными отличиями в виде большего количества процессорных ядер (до восьми), соответствующего процессорного разъёма LGA2011, большего объёма КЭШа L3, увеличенного количества контроллеров памяти DDR3 и поддержкой PCI-Express 3.0. Предыдущее поколение, микроархитектура Westmere в исполнении Arrandale и Clarkdale для мобильных и настольных систем, представляет собой конструкцию из двух кристаллов - 32-нм процессорного ядра и дополнительного 45-нм «сопроцессора» с графическим ядром и контроллером памяти на борту, размещённых на единой подложке и производящих обмен данными посредством шины QPI. По сути, на этом этапе инженеры Intel, используя преимущественно предыдущие наработки, создали этакую интегрированную гибридную микросхему. При создании архитектуры Sandy Bridge разработчики закончили начатый на этапе создания Arrandale/Clarkdale процесс интеграции и разместили все элементы на едином 32-нм кристалле, отказавшись при этом от классического вида шины QPI в пользу новой кольцевой шины. Суть микроархитектуры Sandy Bridge при этом осталась в рамках прежней идеологии Intel, которая делает ставку на увеличение суммарной производительности процессора за счёт улучшения «индивидуальной» эффективности каждого ядра. Структуру чипа Sandy Bridge можно условно разделить на следующие основные элементы: процессорные ядра, графическое ядро, КЭШ-память L3 и так называемый «Системный агент» (System Agent). Кольцевая шина (Ring Interconnect) Вся история модернизации процессорных микроархитектур Intel последних лет неразрывно связана с последовательной интеграцией в единый кристалл всё большего количества модулей и функций, ранее располагавшихся вне процессора: в чипсете, на материнской плате и т.д. Соответственно, по мере увеличения производительности процессора и степени интеграции чипа, требования к пропускной способности внутренних межкомпонентных шин росли опережающими темпами. Эффективность такой топологии высока лишь при небольшом количестве компонентов, принимающих участие в обмене данными. В микроархитектуре Sandy Bridge для повышения общей производительности системы разработчики решили обратиться к кольцевой топологии 256-битной межкомпонентной шины, выполненной на основе новой версии технологии QPI (QuickPath Interconnect), расширенной, доработанной и впервые реализо125 ванной в архитектуре серверного чипа Nehalem-EX (Xeon 7500), а также планировавшейся к применению совместно с архитектурой чипов Larrabee. Кольцевая шина в версии архитектуры Sandy Bridge для настольных и мобильных систем (Core II) служит для обмена данными между шестью ключевыми компонентами чипа: четырьмя процессорными ядрами x86, графическим ядром, КЭШем L3 и системным агентом. Шина состоит из четырёх 32-байтных колец: шины данных (Data Ring), шины запросов (Request Ring), шины мониторинга состояния (Snoop Ring) и шины подтверждения (Acknowledge Ring), на практике это фактически позволяет делить доступ к 64-байтному интерфейсу КЭШа последнего уровня на два различных пакета. Управление шинами осуществляется с помощью коммуникационного протокола распределённого арбитража, при этом конвейерная обработка запросов происходит на тактовой частоте процессорных ядер, что придаёт архитектуре дополнительную гибкость при разгоне. Производительность кольцевой шины оценивается на уровне 96 Гбайт в секунду на соединение при тактовой частоте 3 ГГц, что фактически в четыре раза превышает показатели процессоров Intel предыдущего поколения. Кольцевая топология и организация шин обеспечивает минимальную латентность при обработке запросов, максимальную производительность и отличную масштабируемость технологии для версий чипов с различным количеством ядер и других компонентов. По словам представителей компании, в перспективе к кольцевой шине может быть "подключено" до 20 процессорных ядер на кристалл, и подобный редизайн, как вы понимаете, может производиться очень быстро, в виде гибкой и оперативной реакции на текущие потребности рынка. Кроме того, физически кольцевая шина располагается непосредственно над блоками КЭШ-памяти L3 в верхнем уровне металлизации, что упрощает разводку дизайна и позволяет сделать чип более компактным. L3 -КЭШ-память последнего уровня, LLC Intel КЭШ-память L3 обозначает как «КЭШ последнего уровня», то есть, LLC - Last Level Cache. В микроархитектуре Sandy Bridge КЭШ L3 распределён не только между четырьмя процессорными ядрами, но, благодаря кольцевой шине, также между графическим ядром и системным агентом, в который, среди прочего, входит модуль аппаратного ускорения графики и блок видеовыхода. При этом специальный трассировочный механизм упреждает возникновение конфликтов доступа между процессорными ядрами и графикой. Каждое из четырёх процессорных ядер имеет прямой доступ к «своему» сегменту КЭШа L3, при этом каждый сегмент КЭШа L3 предоставляет 126 половину ширины своей шины для доступа кольцевой шины данных, при этом физическая адресация всех четырёх сегментов КЭШа обеспечивается единой хэш-функцией. Каждый сегмент КЭШа L3 обладает собственным независимым контроллером доступа к кольцевой шине, он отвечает за обработку запросов по размещению физических адресов. Кроме того, контроллер КЭШа постоянно взаимодействует с системным агентом на предмет неудачных обращений к L3, контроля межкомпонентного обмена данными и некешируемых обращений. Дополнительные подробности о строении и особенностях функционирования КЭШ-памяти L3 процессоров Sandy Bridge будут появляться далее по тексту, в процессе знакомства с микроархитектурой, по мере возникновения необходимости. Системный агент: контроллер памяти DDR3, PCU и другие Ранее вместо определения System Agent в терминологии Intel фигурировало так называемое «Неядро» - Uncore, то есть, «всё, что не входит в Core», а именно КЭШ L3, графика, контроллер памяти, другие контроллеры вроде PCI Express и т.д. Мы же по привычке частенько называли большую часть этого элементами северного моста, перенесённого из чипсета в процессор. Системный агент микроархитектуры Sandy Bridge включает в себя контроллер памяти DDR3, модуль управления питанием (Power Control Unit, PCU), контроллеры PCI-Express 2.0, DMI, блок видеовыхода и пр. Как и все остальные элементы архитектуры, системный агент подключен в общую систему посредством высокопроизводительной кольцевой шины. Архитектура стандартной версии системного агента Sandy Bridge подразумевает наличие 16 линий шины PCI-E 2.0, которые также могут быть распределены на две шины PCI-E 2.0 по 8 линий, или на одну шину PCIE 2.0 на 8 линий и две шины PCI-E 2.0 по четыре линии. Двухканальный контроллер памяти DDR3 отныне «вернулся» на кристалл (в чипах Clarkdale он располагался вне процессорного кристалла) и, скорее всего, теперь будет обеспечивать значительно меньшую латентность. Тот факт, что контроллер памяти в Sandy Bridge стал двухканальным, вряд ли обрадует тех, кто уже успел вывалить немалые суммы за оверклокерские комплекты трёхканальной памяти DDR3. Что ж, бывает, теперь будут актуальны наборы лишь из одного, двух или четырёх модулей. По поводу возвращения к двухканальной схеме контроллера памяти у нас имеются кое-какие соображения. Возможно, в Intel начали подготовку микроархитектур к работе с памятью DDR4? Которая, из-за ухода от топологии «звезды» на топологию «точка-точка» в версиях для настольных и мобильных систем будут по определению только двухка127 нальной (для серверов будут применяться специальные модулимультиплексоры). Впрочем, это всего лишь догадки, для уверенных предположений пока что недостаточно информации о самом стандарте DDR4. Расположенный в системном агенте контроллер управления питанием отвечает за своевременное динамичное масштабирование напряжений питания и тактовых частот процессорных ядер, графического ядра, КЭШей, контроллера памяти и интерфейсов. Что особенно важно подчеркнуть, управление питанием и тактовой частотой производится независимо для процессорных ядер и графического ядра. Совершенно новая версия технологии Turbo Boost реализована не в последнюю очередь благодаря этому контроллеру управления питанием. Дело в том, что, в зависимости от текущего состояния системы и сложности решаемой задачи, микроархитектура Sandy Bridge позволяет технологии Turbo Boost «разогнать» ядра процессора и встроенную графику до уровня, значительно превышающего TDP на достаточно долгое время. И действительно, почему бы не воспользоваться такой возможностью штатно, пока система охлаждения ещё холодная и может обеспечить больший теплоотвод, чем уже разогретая? Кроме того, что технология Turbo Boost позволяет теперь штатно «разгонять» все четыре ядра за пределы TDP, также стоит отметить, что управление производительностью и тепловым режимом графических ядер в чипах Arrandale/Clarkdale, по сути, только встроенных, но не до конца интегрированных в процессор, производилось с помощью драйвера. Теперь, в архитектуре Sandy Bridge, этот процесс также возложен на контроллер PCU. Такая плотная интеграция системы управления напряжением питания и частотами позволила реализовать на практике гораздо более агрессивные сценарии работы технологии Turbo Boost, когда и графика, и все четыре ядра процессора при необходимости и соблюдении определённых условий могут разом работать на повышенных тактовых частотах со значительным превышением TDP, но без каких-либо побочных последствий. Принцип работы новой версии технологии Turbo Boost, реализованной в процессорах Sandy Bridge, отлично описывается в мультимедийный презентации, показанной в сентябре на Форуме Intel для разработчиков в Сан-Франциско. Представленный ниже видеоролик с записью этого момента презентации расскажет вам о Turbo Boost быстрее и лучше, чем любой пересказ. Каждое из четырёх ядер Sandy Bridge может быть при необходимости независимо переведено в режим минимального энергопотребления, графическое ядро также можно перевести экономичный режим. Кольцевая 128 шина и КЭШ L3, в силу их распределения между другими ресурсами, не могут быть отключены, однако для кольцевой шины предусмотрен специальный экономичный ждущий режим, когда она не нагружена, а для КЭШ-памяти L3 применяется традиционная технология отключения неиспользуемых транзисторов, уже известная нам по предыдущим микроархитектурам. Таким образом, процессоры Sandy Bridge в составе мобильных ПК обеспечивают длительную автономную работу при питании от аккумулятора. Модули видеовыхода и мультимедийного аппаратного декодирования также входят в число элементов системного агента. В отличие от предшественников, где аппаратное декодирование было возложено на графическое ядро (о его возможностях мы поговорим в следующий раз), в новой архитектуре для декодирования мультимедийных потоков используется отдельный, гораздо более производительный и экономичный модуль, и лишь в процессе кодирования (сжатия) мультимедийных данных используются возможности шейдерных блоков графического ядра и КЭШ L3. Предусмотрены инструменты воспроизведения 3D-контента: аппаратный модуль декодирования Sandy Bridge способен без труда обрабатывать сразу два независимых потока MPEG2, VC1 или AVC в разрешении Full HD. Таким образом, развитие ставшей традиционной архитектуры показано выше. Однако, процессоры с одной инструкцией в команде имеют свой потолок быстродействия. Будущее многим аналитикам видится в архитектуре команд с множественным числом инструкций – VLIW архитектуре. Компиляторы и разработчики команд сами подготавливают параллельные процессы, снимая напряженный режим проверки условия Рассела-Нарьяни с исполнительных устройств. Выше преимущества этих архитектур рассмотрены для архитектуры IA-64 – три поля инструкций и ЦПС - TMS320C6411 – восемь полей инструкций. Большая перспектива и в распределенной обработке данных, решении фрагментов задач в сетевых средах майнфреймов и супер компьютеров. Кластер "СКИФ К-500", построенный в рамках совместной белорусскороссийской программы "СКИФ" по развитию вычислительной техники, стал первой системой, созданной отечественными специалистами на базе архитектуры Intel, вошедшей в престижный список TOP500 самых производительных компьютерных систем планеты. Основой кластера стали 128 процессоров Intel Xeon с тактовой частотой 2,8 ГГц, которые объединены в 64 двухпроцессорных вычислительных узла, обладающих емкостью дисковой подсистемы в размере 60 ГБ каждый (общая емкость дисковой системы, таким образом, составляет 3840 ГБ). Кластер располагает 128 ГБ оперативной памяти, а его пиковая производительность 129 составляет 716,8 гигафлопс (миллиардов операций с плавающей запятой). Кластер сдан в эксплуатацию в сентябре 2003 года. Предполагается, что кластер будет использоваться для высокопроизводительных вычислений в наукоемких отраслях промышленности, биологии, медицине, генетике, геологоразведке, для контроля за окружающей средой, прогнозирования погоды, решения транспортных и многих других задач. В ряде организаций и университетах Республики устанавливаются суперкомпьютеры. В БГУ суперкомпьютер "СКИФ К-1000-05" установлен в 2010 г. 14. Видеоадаптеры Вывод на экран монитора графической информации и 3D сцен, потоков видео, стереоизображений это далеко не полный перечень задач решаемых GPU современных видеоадаптеров. Это объемные сложные задачи сильно насыщенные математикой. Их решение всегда определяло уровень КС. Ниже на рис.14.1 и 14.2. показаны два важных расчета проводимых в графических конвейерах GPU - геометрии и растеризации. Рис. 14.1. Расчет геометрии 130 Рис. 14.2. Обработка фрагментов. Приступая к разработке нового поколения 3D архитектуры 2002 года, перед инженерами NVIDIA было решено поддержать аппаратно расчеты физических эффектов и интенсивных вычислений с плавающей запятой, улучшить конвейеры GPU при работе с потоками и геометрией, с учётом достижения максимальной производительности при работе с приложениями, использующими прежние OpenGL, DirectX 9 и ранние версии DirectX. Появилась новая архитектура с внушительной матрицей 32-х сдвоенных процессоров - GeForce 8800 на многие годы ставшая базой новых решений, поддерживающая и параллельные расчеты в физике. Новая архитектура поддержала унифицированные шейдеры и состояла из 128 обособленных, совершенно самостоятельных потоковых процессоров с тактовой частотой до 1,35 ГГц. Каждый конвейер-процессор, в свою очередь, способен динамически перестраиваться для обработки вершин, пикселей и выполнения геометрических или физических опера- 131 ций, обеспечивая таким образом пиковую загрузку ресурсов GPU и максимальную сбалансированную гибкость при обработке шейдерных задач. Рис. 14.3. Возможности процессоров Одноядерный дизайн GeForce 8800 позволяет значительно увеличить производительность при работе с современными приложениями и масштабировать некоторые Шейдерные операции. Классическая модель конвейера, задействованного на обработку потока данных с рядом атрибутов, индексов, команд и текстур, направляемых центральным процессором в графический чип включает в себя: расчеты вершинных и пиксельных шейдеров, растрирование и финальная запись пикселей во фреймовый буфер (рис. 14.4). В отличие от классического дискретного дизайна, в случае унифицированной архитектуры GeForce 8800, появляется возможность значительным образом снизить количество задействованных стадий конвейера и изменить линейную последовательность обработки потока данных, придав ей более цикличный характер. Таким образом, входящие данные поступают на вход унифицированного шейдерного модуля, по выходу записываются в регистры и затем вновь подаются на вход модуля для исполнения следующей операции обработки. На (рис. 14.5) показаны классические конвейеры, обрабатывающие дискретные шейдеры. 132 Рис. 14.4. Конвейеры, обрабатывающие дискретные шейдеры Заложенное в архитектуру GeForce 8800 количество аппаратных шейдерных модулей будет особенно востребовано при работе с 3D. Разработчики NVIDIA GeForce 8800 полагают, что такая архитектура окажется более удачной при сбалансированном распределении нагрузки, для эффективной загрузки чипа при работе под DirectX 10 и с любой моделью API. На пример, пусть идет интенсивная прорисовка геометрии – мощная обработка вертексных шейдеров. Производительность определится числом вертексных модулей. Пусть, более сложная обработка световых эффектов на воде потребует более интенсивной работы пиксельных шейдеров, и здесь максимальная производительность также определиться числом модулей обработки пиксельных шейдеров. В обоих случаях до полной загрузки чипа и рачительного расхода энергии далеко, поскольку часть чипа так или иначе простаивает. 133 В случае унифицированной шейдерной архитектуры возрастает не только загрузка чипа, но также и производительность – за счёт полного перераспределения ресурсов на требуемую в данный момент задачу - обработку пиксельных или вертексных шейдеров. Рис. 14.5. Конвейеры, обрабатывающие дискретные шейдеры Унифицированные потоковые процессоры (Unified Streaming Processors, SP) ядра чипа GeForce 8800, представляющие собой процессоры общего назначения для обработки данных с плавающей запятой. Они могут обрабатывать геометрические, вертексные, пиксельные шейдеры, рассчитывать физические модели объектов. Объединяясь в группы, такие процессоры способны обеспечить впечатляющую параллельную вычислительную мощь. Рис. 14.6. показывает сбалансированность архитектуры GeForce 8800, в которой блок потоковых процессоров SP объединён с блоками КЭШа, фильтрации текстур (Texture Filtering, TF) и адресации текстур (Texture Addressing, TA). 128 таких универсальных потоковых процессорных конвейера объединены в "подмножества". На ранних стадиях разработки архитектуры GeForce 8800 было оценено то, что традиционная векторная архитектура менее эффективно ис134 пользует вычислительные ресурсы, нежели скалярный дизайн процессорных модулей, особенно в случае обработки сложных смешанных шейдеров, сочетающих векторные и скалярные инструкции. Тем более что достаточно сложно добиться эффективной обработки и компиляции скалярных вычислений с помощью векторных конвейеров. Рис. 14.6. Объединение SP,КЭШ и текстурных фильтров и систем адресации Традиционные векторные графические чипы - как от NVIDIA, так и от ATI (основной конкурент Nvidea на рынке GPU, сейчас влита в AMD), обладают аппаратной реализацией шейдеров с поддержкой двойного исполнения инструкций. Так, чипы ATI с дизайном "3+1" допускают исполнение единой 4-элементной векторной инструкции или парной операции из трёхэлементной векторной инструкции и скалярной инструкции. Чипы серий NVIDIA GeForce 6x и GeForce 7x поддерживают парное исполнение инструкций вида 3+1 и 2+2. Архитектуры GeForce 8800 загружает скалярными инструкциями модули чипа со 100% эффективностью. Векторный шейдерный программный код преобразуется в скалярные операции непосредственно чипом GeForce 8800. Таким образом, с помощью скалярной архитектуры на базе 128 скалярных вычислительных мо135 дулей теоретически можно добиться 2-кратного увеличения производительности против системы из 32 4-компонентных векторных процессорных модулей. Чипы серии GeForce 8800 поддерживают процесс HDR (High Dynamic Range) рендеринга с 128-битной точностью, не только в режиме FP16 (64-битный цвет), но и FP32 (128-битный цвет), которые могут обрабатываться одновременно с процессом мультисэмплированного антиалиазинга). Это позволяет добиться реалистичных эффектов освещения и наложения теней, при этом обеспечивается высокая динамика и детализация самых затемнённых и самых светлых объектов. Рис. 14.7. На рисунке слева, результаты изотропного множественное трилинейного текстурирования (Isotropic Trilinear MipMapping), справа – анизотропного множественного трилинейного текстурирования (Anisotropic Trilinear MipMapping) На рис. 14.7 приведён пример работы анизотропной фильтрации (Anisotropic Filtering, AF), позволяющей добиться большей чёткости и резкости различных объектов, расположенных под острым углом и/или 136 уходящих в перспективу. В комбинации с технологией множественного трилинейного текстурирования (с изменяющимся по мере удаления разрешением, trilinear mipmapping), анизотропная фильтрация позволяет снизить масштаб искажений и сделать картинку значительно чётче. Анизотропная фильтрация чувствительна к пропускной способности шины памяти. К примеру, режим 16xAF означает 16 билинейных считываний на каждый из двух смежных уровней множественного текстурирования (в сумме 128 обращений к памяти), усложнённых получением финальной по пиксельной цветовой текстуры. Решения на базе чипов GeForce 8800 получили новую опцию в панели управления AF, названную Angular LOD Control и имеющую два режима - Quality и High Quality. На рис. 14.8 показаны изменения в анизотропной фильтрации для старой и новых архитектур. Рис. 14.8. AF у GeForce 7 (слева) против GeForce 8 с Angular LOD Texture Filtering в режиме High Quality (справа) Особенно важно получение на GPU нового качества - Quantum Effects – ускорение расчетов физических моделей объектов и процессов. Процессоры GeForce 8800 GTX в количестве 128 обеспечивают достаточный уровень мощности вычислений с плавающей запятой для достижения ряда новых реалистичных эффектов вроде дымки, огня, взрывов; реалистичной имитации движущихся волос, меха, воды. Такие возмож137 ности заинтересовали многих потребителей, в том числе, и разработчиков супер компьютеров. Технология NVIDIA PureVideo HD, позволяет обеспечить высокое качество и плавное воспроизведение HD Video контента с носителей HD DVD и Blu-ray, при минимальном использовании ресурсов центрального процессора. Все карты GeForce 8800 поддерживают игровые установки Extreme High Definition (XHD), при этом игры могут запускаться в широкоформатных режимах вплоть до 2560x1600 – это в семь раз превышает качество картинки HD телевизора 1080i и в два раза - HD формата 1080p. Несвязанный обсчёт шейдеров, ветвление и Early-Z. На адресацию текстур, выборку и фильтрацию уходит определённое количество тактов GPU, и в случае необходимости выборки и фильтрации текстуры до выполнения следующей операции обсчёта в определённом шейдере, латентность этого процесса (например, в случае 16x AF) могут значительно замедлить работу GPU. В архитектуре GeForce 8800 предусмотрен щадящий режим работы и механизм "скрытия" латентности текстурной выборки с помощью одновременного исполнения ряда независимых математических операций. Если в пиксельном конвейере GeForce 7 обсчёт адреса текстуры перемежается с математическими FP шейдерными операциями, в модуле Shader Unit 1, то несвязанная независимая работа в шейдерными и текстурными операциями в GeForce 8800 снимает проблему (рис. 14.9). Рис. 14.9. Улучшение конвейеров обработки шейдеров в новой архитектуре Архитектура GeForce 8800 аппаратно поддерживает процессы ветвления на 16 пикселей (тредов), в некоторых случаях – на 32 пикселя. 138 Рис. 14.10. Улучшение эффективности сортировки пикселей по Z (цвет) Рис. 14.11. Улучшение эффективности сортировки пикселей по Z (тень) 139 Z-буфера GeForce 8800 сортируют пикселя со скоростью, в четыре раза превосходящей этот процесс у GeForce 7900. GPU имеет возможность обрабатывать более сложные ситуации на уровне каждого пикселя. Z-сравнения данных о каждом пикселе производятся в модуле растеризатора - ROP (raster operations). Для увеличения производительности чипы GeForce 8800 поддерживают технологию Early-Z, позволяющую определить Z-значения пикселей до того как они поступают на конвейер пиксельного шейдера, благодаря этому увеличивается производительность и не производится ряд заведомо ненужных операций. Пример работы Early-Z показан на рис. 14.10 и 14.11. Ключевой момент – контроллер памяти. Чипы GeForce 8800 обладают шестью подразделами контроллера памяти, каждый из которых имеет 64битный интерфейс, что в сумме даёт 384-битную ширину комбинированной интерфейсной шины памяти. Таким образом, получается 768 Мб скоростной памяти, при этом поддерживается память стандартов до GDDR4. Видеокарты GeForce 8800 GTX оснащены памятью GDDR3 с тактовой частотой по умолчанию 900 МГц (1800 МГц DDR), что при 384-битной ширине интерфейса даёт пропускную способность до 86,4 Гб/с. Потоковый вывод данных позволяет отправлять данные, генерируемые геометрическими (или вертексными) шейдерами в буферы памяти и затем возвращать их и загружать в начало конвейера GPU для последующей обработки. Развитие архитектуры GPU продолжается. В 2010 году выпущен чип GF100 (GPU nVidia GeForce GTX 480). Он насчитывает 480 потоковых процессоров и на плате адресуется к 1 536 Мб памяти GDDR5 с 384битной шиной. Тактовые частоты ядра и памяти не уточняются (для базового варианта акселератора они составляют 700 и 1 848 МГц соответственно). MSI N480GTX обладает поддержкой программного интерфейса DirectX 11 и технологий PhysX, CUDA и 3D Vision Surround. Для подключения устройств отображения информации есть интерфейсы DualDVI и HDMI; возможна работа в режиме 3-way SLI (режим объединяющие видеадапторы в кластер с внутренней скоростной шиной). В GPU применены компоненты «военного класса» (Military Class), обеспечивающие высокую стабильность и надежность. 140 15. Микроконтроллеры Микроконтроллеры появились одновременно с процессорами Intel 8008. Их модификации, разновидности (рис. 15.2) насчитывают несколько десятков названий. Всех их выделяет развитая архитектура входных и выходных портов. По разрядности мы увидим 4-х, 8-ми,16-ти, 32-х, 64-х разрядные процессоры. Ряд из них поддерживает виртуальную память, имеет встроенные КЭШ данных команд. По производительности они перешли рубеж в 1 Гига операций в секунду. Однако они дешевы, не требуют специальных систем охлаждения и следовательно встраиваемы в «глаза» роботов, поздравительные открытки. Они неизбежный атрибут любой компьютерной системы и существуют в ней в количестве десятков, сотен экземпляров. Например, на рис. 15.1 показаны места установки микроконтроллеров в современном автомобиле. Рис. 15.3 показывает подключение различных устройств к 32-х разрядному контроллеру. Рис. 15.1. Место микроконтроллеров в изделиях современной техники на примере автомобиля. 141 Рис. 15.2. Гибкость микроконтроллеров на примере линейки М16_М32. Рис. 15.3. Комплексный охват возможных наборов внешних устройств на примере 32-х разрядного микропроцессора SH3-DSP SH7727. 142 В микроконтроллерах, как в миниатюрных зеркалах отражаются многие ключевые принципы формирования архитектуры компьютерных систем. Это же касается и методики программирования КС. Однако рабочие программы микроконтроллеров более стабильны и менее ориентированы на будущие изменения в окружении микроконтроллера, чем стандартные пакеты программ в КС на базе РС. Выбор типа микроконтроллера предполагает предварительный анализ параметров потоков данных и алгоритмов управления внешними устройствами. Современный рынок микроконтроллеров предлагает множество возможных решений. Остановимся на изучении специфики двух групп. Признанным лидером в мире микроконтроллеров 8-разрядной архитектуры является архитектура MCS-51/151/251 фирмы Intel. Число клонов этой модели исчисляется многими десятками типов БИС. Практически она встраивается и в состав различных СБИС, как, например, АЦП AduC812_0 фирмы Analog Devices. Документы AduC812_0.pdf, Assemble.pdf, Simulate.pdf позволяют подробно изучить данное семейство. Программы Wavrasm и Wavrsim помогут написать и отладить программы для устройств на базе данной архитектуры. Среди микроконтроллеров, претендующих на более высокие планки функциональных возможностей и быстродействия, выделяется серия SuperH фирмы Hitachi), тактовые частоты семейства достигли в 1999 г. отметки – 100 МГц). Младший представитель данного семейства рассматривается ниже. H8/3002 - микроконтроллер с ядром H8/300H базовой Hitachi архитектуры. H8/300H - центральный процессор имеет 32-битовую внутреннюю архитектуру с шестнадцатью 16-битовыми регистрами общего назначения (могут использоваться как шестнадцать 8-битовых регистров или восемь 32-битовых). Процессор квази RISC архитектуры (на 16 МГц - время выполнения команд Add/subtract: 125 ns, Multiply/divide: 875 ns). Может адресовать 16-Мбайт линейного пространства. Система команд совместимая снизу вверх в уровне объектного кода с H8/300, позволяя переносить ПО на чипы H8/300 серии. H8/3002 (рис. 15.4) включает RAM, 16-битовй таймер (ITU), программируемый контроллер синхронизации (TPC), таймер (WDT), последовательный интерфейс (SCI), A/D - АЦП, порты I/O, контроллер прямого доступа в память (DMAC), контроллер регенерации R… c… и другие средства. Четыре режима (MCU) назначают ширину шины данных и размер адресного пространства. 143 Рис 15.4. Структура микроконтроллера H8/3002 144 Поддерживает режимы: 1. нормальный режим (64-кбайт пространства адреса, доступного вне чипа H8/3002); 2. широкий режим (16-Мбайт пространства адреса) 3. Характерные инструкции: 4. 8/16/32-битовая пересылка данных, 5. практически полный набор 8/16/32-битовых арифметических и логических инструкций, 6. знаковое и без знаковое умножение (8 бит на 8 бит, 16 бит на 16 бит), 7. знаковое и без знаковое деление (16 бит на 8, 32 бита на 16), 8. побитовые инструкции аккумулятора, 9. поразрядные операции с регистрово-косвенным указанием позиций. RAM: 512 байта. Прерывание: Семь внешних контактов прерываний (IRQ 0…5), 30 внутренних прерываний, три уровня приоритета. Контроллер шины: пространство адреса может разделяться на восемь областей, с независимой спецификацией шины в каждой области; Chip select доступен для областей 0 – 3 DRAM; 8- или 16-битовое смещение для каждой области; двух- или трех - уровневый доступ для каждой области; выбор четырех способов ожидания; арбитраж шины. Регенерация DRAM: допускает непосредственное подключение 16-битового DRAM; CAS -перед- RAS; метод избирательной регенерации позволяет подключать псевдо-статическое RАМ; метод избирательной регенерации пригоден для повторного запуска таймера интервала. Контроллер прямого доступа в память (DMAC). Короткий режим адреса: доступно до четырех каналов, выбор режима I/O (холостой режим, или режим повторения), 145 может активизироваться сравнением match/input прерываний из ITU каналов 0 - 3, SCI прерывания - передатчик данных пуст и приемник данных заполнен. Режим полного адреса внешнего запроса: максимум два канала доступно, выбор нормального или блочного режима передачи. активизируется сравнением match/input прерываний из ITU каналов 0…3, внешними запросами, или автозапросом контроллера DMA (DMAC). 16-bit таймеры (ITU): пять 16-битовых канала, способные вырабатывать до 12 выходных импульсных последовательностей и принимать до 10 входных импульсных последовательностей; 16-битные счетчики (каналы 0 - 4); два мультиплексных выходных compare/input (каналы 0 - 4); функционирование может быть синхронизировано (каналы 0 4); режим широтно-импульсной модуляции PWM (каналы 0 - 4); фаза, режим счета доступен (канал 2); буферизация (каналы 3 и 4); синхронизованный по сбросу режим PWM (каналы 3 и 4); дополнительный режим PWM (каналы 3 и 4); DMAC может активизироваться сравнением match/input через прерывание А (каналы 0 - 3). Программируемый контроллер синхронизации (TPC): максимум 16-фазный выход, использует ITU как базу времени; четыре 4-фазных выхода (или одна 16 - фазная группа, или две 8-фазных); доступен режим Non-overlap; выходные данные могут передаваться DMAC. Таймер интервала (WDT): сигнал Reset может генерироваться данным таймером; сигнал Reset может поступить с внешнего входа (1 канал); пригоден и как таймер интервала. Последовательный интерфейс (SCI): асинхронной или синхронной способ связи; полный дуплекс; в чипе 2 канала. АЦП (А/D): разрешение - 10 бит; 146 восемь каналов, с выбором одного или нескольких (в режиме сканирования); конверсионное опорное напряжение; схема выборки / хранения; оцифровка за 8 мкс; возможность внешнего запуска. Порты ввода/вывода (I/O): 38 линий ввода вывода; 8 линий только ввод. Назначение выводов и конструктивные особенности микроконтроллера смотри в H8/3002 Hardware Manual (файл Akrobat Reader – H83_020h.pdf). Как видим только перечисление возможностей контроллера достаточно велико. Сведения об основных регистрах приведены ниже. Рис. 15.5. Основные регистры процессора Системные регистры ЦП не рассматриваются в данной работе. Восемь, ниже перечисленных, способов адресации поддерживаются процессором: — Register direct [Rn] — Register indirect [@ERn] — Register indirect with displacement [@(d:16, ERn) or @(d:24, ERn)] 147 — Register indirect with post-increment or pre-decrement [@ERn+ or @– ERn] — Absolute address [@aa:8, @aa:16, or @aa:24] — Immediate [#xx:8, #xx:16, or #xx:32] — Program-counter relative [@(d:8, PC) or @(d:16, PC)] — Memory indirect [@@aa:8]. Пространство адресов расписано ниже (рис. 3.4 и рис. 3.5) Рис. 15.6. Конфигурация регистров Рассмотрим отдельные регистры устройств: адреса и назначение. Модель блока таймеров (ITU) сложнее модели Interrupt Controller, портов – проще. Выбор микроконтроллера для конкретной разработки достаточно сложная задача. Стандартные вопросы: объем ОЗУ, ППЗУ, разрядность и быстродействие АЦП, ЦАП, количество портов ввода/вывода и т.п. требуют детального анализа эффективности принимаемых решений. H4sf5a95.pdf входящий в комплект документов, прилагаемых к лабораторной работе, позволит Вам разобраться в гибкости предложений по структуре на примере 4-битовых микроконтроллеров фирмы Hitachi. Первым шагом в применении микроконтроллеров обычно является создании небольших универсальных плат с окружением микроконтроллера аналоговыми, цифровыми, импульсными входами/выходами. Небольшой модуль на микропроцессоре H8 (рис. 15.8) обеспечивает доступ в Internet (рис. 15.9), снабжен последовательным интерфейсом (RS232) для связи с компьютером, допускает использование внешнего модема. Пользователи могут управлять дистанционными устройствами на веб страницах через JavaScript и Java приложения. Модуль обеспечивает обмен по сети I2C, оптимизирован для контрольно-измерительной аппаратуры, промышленной, и домашней автоматики, имеет возможность подключения линейного ССД фотоприемника и т. п. 148 Рис. 15.7. Адресное пространство процессора Связь по SLIP, ICPM, TCP/IP, http, речевая команда; 16K FLASH; программирование ESP, HTML with JavaScript, VBScript, Java; цифровых выходов – 8; цифровых входов – 6; аналоговых входов – 8; I2C - мастер;RS232 шина; 56 мм на 25 мм. Рис. 15.8. Печатная плата с микропроцессором 149 Рис. 15.9. Связи микропроцессора Рис.15.10. Структура развитой системы гибких модульных средств 150 Многофункциональные модульные средства с перестраиваемой архитектурой (МСПА) являются основным рабочим средством автоматизации производства и научных исследований. Разработчики и изготовители технологического оборудования при выборе цифровой среды контроля и управления отдают предпочтение открытым системам, в первую очередь МСПА. На рис.15.10 приведена структура развитой системы гибких модульных средств, построенная на основе линий передачи данных (верхний уровень иерархии – шина USB2), шин транспорта средней производительности (сеть средней производительности - USB1) и сети нижнего уровня. Производительность сети верхнего уровня (порядка 50 Мбайт в секунду) обеспечивает транспорт потоков данных как между модулями с высокой вычислительной загрузкой, так и высокоскоростными приборами, например, цифровыми телекамерами. Сегодня наметилась тенденция к реализации верхнего уровня иерархии системы на базе компьютеров общего применения как более дешевого варианта комплектации системы. Данный уровень иерархии, как правило, можно установить в отапливаемом помещении с нормальными климатическими условиями, в которых реально обеспечивается надежность работы PC. Средний уровень системы обладает достаточной вычислительной мощностью для решения задач управления и контроля в реальном времени, и на верхний уровень поступает информация, чаще всего, статистического характера. 16. Производительность КС Основу для сравнения различных типов компьютеров между собой дают стандартные методики измерения производительности. В процессе развития вычислительной техники появилось несколько таких стандартных методик. Они позволяют разработчикам и пользователям осуществлять выбор между альтернативами на основе количественных показателей, что дает возможность постоянного прогресса в данной области. Единицей измерения производительности компьютера является время: компьютер, выполняющий тот же объем работы за меньшее время является более быстрым. Время выполнения любой программы измеряется в секундах. Часто производительность измеряется как скорость появления некоторого числа событий в секунду, так что меньшее время подразумевает большую производительность. 151 Однако в зависимости от того, что мы считаем, время может быть определено различными способами. Наиболее простой способ определения времени называется астрономическим временем, временем ответа (response time), временем выполнения(execution time) или прошедшим временем (elapsed time). Это задержка выполнения задания, включающая буквально все: работу процессора, обращения к диску, обращения к памяти, ввод/вывод и накладные расходы операционной системы. Однако при работе в мультипрограммном режиме во время ожидания ввода/вывода для одной программы, процессор может выполнять другую программу, и система не обязательно будет минимизировать время выполнения данной конкретной программы. Для измерения времени работы процессора на данной программе используется специальный параметр - время ЦП (CPU time), которое не включает время ожидания ввода/вывода или время выполнения другой программы. Очевидно, что время ответа, видимое пользователем, является полным временем выполнения программы, а не временем ЦП. Время ЦП может далее делиться на время, потраченное ЦП непосредственно на выполнение программы пользователя и называемое пользовательским временем ЦП, и время ЦП, затраченное операционной системой на выполнение заданий, затребованных программой, и называемое системным временем ЦП. В ряде случаев системное время ЦП игнорируется из-за возможной неточности измерений, выполняемых самой операционной системой, а также из-за проблем, связанных со сравнением производительности машин с разными операционными системами. С другой стороны, системный код на некоторых машинах является пользовательским кодом на других и, кроме того, практически никакая программа не может работать без некоторой операционной системы. Поэтому при измерениях производительности процессора часто используется сумма пользовательского и системного времени ЦП. В большинстве современных процессоров скорость протекания процессов взаимодействия внутренних функциональных устройств определяется не естественными задержками в этих устройствах, а задается единой системой синхросигналов, вырабатываемых некоторым генератором тактовых импульсов, как правило, работающим с постоянной скоростью. Дискретные временные события называются тактами синхронизации (clock ticks), просто тактами (ticks), периодами синхронизации (clock periods), циклами (cycles) или циклами синхронизации (clock cycles).Разработчики компьютеров обычно говорят о периоде синхронизации, который определяется либо своей длительностью (например, 10 152 наносекунд), либо частотой (например, 100 МГц). Длительность периода синхронизации есть величина, обратная к частоте синхронизации. Таким образом, время ЦП для некоторой программы может быть выражено двумя способами: количеством тактов синхронизации для данной программы, умноженным на длительность такта синхронизации, либо количеством тактов синхронизации для данной программы, деленным на частоту синхронизации. Важной характеристикой, часто публикуемой в отчетах по процессорам, является среднее количество тактов синхронизации на одну команду - CPI (clock cycles per instruction). При известном количестве выполняемых команд в программе этот параметр позволяет быстро оценить время ЦП для данной программы. Таким образом, производительность ЦП зависит от трех параметров: такта (или частоты) синхронизации, среднего количества тактов на команду и количества выполняемых команд. Невозможно изменить ни один из указанных параметров изолированно от другого. Поскольку базовые технологии, используемые для изменения каждого из этих параметров, взаимосвязаны: частота синхронизации определяется технологией аппаратных средств и функциональной организацией процессора; среднее количество тактов на команду зависит от функциональной организации и архитектуры системы команд; а количество выполняемых в программе команд определяется архитектурой системы команд и технологией компиляторов. Когда сравниваются две машины, необходимо рассматривать все три компоненты, чтобы понять относительную производительность. В процессе поиска стандартной единицы измерения производительности компьютеров было принято несколько популярных единиц измерения, вследствие чего несколько безвредных терминов были искусственно вырваны из их хорошо определенного контекста и использованы там, для чего они никогда не предназначались. В действительности единственной подходящей и надежной единицей измерения производительности является время выполнения реальных программ, и все предлагаемые замены этого времени в качестве единицы измерения или замены реальных программ в качестве объектов измерения на синтетические программы только вводят в заблуждение. MIPS. Одной из альтернативных единиц измерения производительности процессора (по отношению к времени выполнения) является MIPS (миллион команд в секунду). Имеется несколько различных вариантов интерпретации определения MIPS. 153 В общем случае MIPS есть скорость операций в единицу времени, т.е. для любой данной программы MIPS есть просто отношение количества команд в программе к времени ее выполнения. Таким образом, производительность может быть определена как обратная к времени выполнения величина, причем более быстрые машины при этом будут иметь более высокий рейтинг MIPS. Положительными сторонами MIPS является то, что эту характеристику легко понять, особенно покупателю, и что более быстрая машина характеризуется большим числом MIPS, что соответствует нашим интуитивным представлениям. Однако использование MIPS в качестве метрики для сравнения наталкивается на три проблемы. Во-первых, MIPS зависит от набора команд процессора, что затрудняет сравнение по MIPS компьютеров, имеющих разные системы команд. Во-вторых, MIPS даже на одном и том же компьютере меняется от программы к программе. Втретьих, MIPS может меняться по отношению к производительности в противоположенную сторону. Классическим примером для последнего случая является рейтинг MIPS для машины, в состав которой входит сопроцессор плавающей точки. Поскольку в общем случае на каждую команду с плавающей точкой требуется большее количество тактов синхронизации, чем на целочисленную команду, то программы, используя сопроцессор плавающей точки вместо соответствующих подпрограмм из состава программного обеспечения, выполняются за меньшее время, но имеют меньший рейтинг MIPS. При отсутствии сопроцессора операции над числами с плавающей точкой реализуются с помощью подпрограмм, использующих более простые команды целочисленной арифметики и, как следствие, такие машины имеют более высокий рейтинг MIPS, но выполняют настолько большее количество команд, что общее время выполнения значительно увеличивается. Подобные аномалии наблюдаются и при использовании оптимизирующих компиляторов, когда в результате оптимизации сокращается количество выполняемых в программе команд, рейтинг MIPS уменьшается, а производительность увеличивается. Другое определение MIPS связано с очень популярным когда-то компьютером VAX 11/780 компании DEC. Именно этот компьютер был принят в качестве эталона для сравнения производительности различных машин. Считалось, что производительность VAX 11/780 равна 1MIPS (одному миллиону команд в секунду). В то время широкое распространение получил синтетический тест Dhrystone, который позволял оценивать эффективность процессоров и компиляторов с языка C для программ нечисловой обработки. Он пред154 ставлял собой тестовую смесь, 53% которой составляли операторы присваивания, 32% - операторы управления и 15% - вызовы функций. Это был очень короткий тест: общее число команд равнялось 100. Скорость выполнения программы из этих 100 команд измерялась в Dhrystone в секунду. Быстродействие VAX 11/780 на этом синтетическом тесте составляло 1757Dhrystone в секунду. Таким образом 1MIPS равен 1757 Dhrystone в секунду. Следует отметить, что в настоящее время тест Dhrystone практически не применяется. Малый объем позволяет разместить все команды теста в кэш-памяти первого уровня современного микропроцессора и он не позволяет даже оценить эффект наличия кэш-памяти второго уровня, хотя может хорошо отражать эффект увеличения тактовой частоты. Третье определение MIPS связано с IBM RS/6000 MIPS. Дело в том, что ряд производителей и пользователей (последователей фирмы IBM) предпочитают сравнивать производительность своих компьютеров с производительностью современных компьютеров IBM, а не со старой машиной компании DEC. Соотношение между VAX MIPS и RS/6000 MIPS никогда широко не публиковались, но 1 RS/6000 MIPS примерно равен 1.6 VAX 11/780 MIPS. MFLOPS Измерение производительности компьютеров при решении научно-технических задач, в которых существенно используется арифметика с плавающей точкой, всегда вызывало особый интерес. Именно для таких вычислений впервые встал вопрос об измерении производительности, а по достигнутым показателям часто делались выводы об общем уровне разработок компьютеров. Обычно для научно-технических задач производительность процессора оценивается в MFLOPS (миллионах чисел-результатов вычислений с плавающей точкой в секунду, или миллионах элементарных арифметических операций над числами с плавающей точкой, выполненных в секунду). Как единица измерения, MFLOPS, предназначена для оценки производительности только операций с плавающей точкой, и поэтому не применима вне этой ограниченной области. Например, программы компиляторов имеют рейтинг MFLOPS близкий к нулю вне зависимости от того, насколько быстра машина, поскольку компиляторы редко используют арифметику с плавающей точкой. Ясно, что рейтинг MFLOPS зависит от машины и от программы. Этот термин менее безобидный, чем MIPS. Он базируется на количестве выполняемых операций, а не на количестве выполняемых команд. По мнению многих программистов, одна и та же программа, работающая на различных компьютерах, будет выполнять различное количество команд, 155 но одно и то же количество операций с плавающей точкой. Именно поэтому рейтинг MFLOPS предназначался для справедливого сравнения различных машин между собой. Однако и с MFLOPS не все обстоит так безоблачно. Прежде всего, это связано с тем, что наборы операций с плавающей точкой не совместимы на различных компьютерах. Например, в суперкомпьютерах фирмы Cray Research отсутствует команда деления (имеется, правда, операция вычисления обратной величины числа с плавающей точкой, а операция деления может быть реализована с помощью умножения делимого на обратную величину делителя). В то же время многие современные микропроцессоры имеют команды деления, вычисления квадратного корня, синуса и косинуса. Другая, осознаваемая всеми, проблема заключается в том, что рейтинг MFLOPS меняется не только на смеси целочисленных операций и операций с плавающей точкой, но и на смеси быстрых и медленных операций с плавающей точкой. Например, программа со 100% операций сложения будет иметь более высокий рейтинг, чем программа со 100% операций деления. Решение обеих проблем заключается в том, чтобы взять "каноническое" или "нормализованное" число операций с плавающей точкой из исходного текста программы и затем поделить его на время выполнения. На рис. 3.1 показано, каким образом авторы тестового пакета "Ливерморские циклы", о котором речь пойдет ниже, вычисляют для программы количество нормализованных операций с плавающей точкой в соответствии с операциями, действительно находящимися в ее исходном тексте. Таким образом, рейтинг реальных MFLOPS отличается от рейтинга нормализованных MFLOPS, который часто приводится в литературе по суперкомпьютерам. Наиболее часто MFLOPS, как единица измерения производительности, используется при проведении контрольных испытаний на тестовых пакетах "Ливерморские циклы" и LINPACK. Ливерморские циклы - это набор фрагментов фортранпрограмм, каждый из которых взят из реальных программных систем, эксплуатируемых в Ливерморской национальной лаборатории им. Лоуренса (США). Обычно при проведении испытаний используется либо малый набор из 14 циклов, либо большой набор из 24 циклов. Пакет Ливерморских циклов используется для оценки производительности вычислительных машин с середины 60-х годов. Ливерморские циклы считаются типичными фрагментами программ численных задач. Появление новых типов машин, в том числе векторных и параллельных, 156 не уменьшило важности Ливерморских циклов, однако изменились значения производительности и величины разброса между разными циклами. На векторной машине производительность зависит не только от элементной базы, но и от характера самого алгоритма, т.е. коэффициента векторизуемости. Среди Ливерморских циклов коэффициент векторизуемости колеблется от 0 до 100%, что еще раз подтверждает их ценность для оценки производительности векторных архитектур. Кроме характера алгоритма, на коэффициент векторизуемости влияет и качество векторизатора, встроенного в компилятор. На параллельной машине производительность существенно зависит от соответствия между структурой аппаратных связей вычислительных элементов и структурой вычислений в алгоритме. Важно, чтобы тестовый пакет представлял алгоритмы различных структур. В Ливерморских циклах встречаются последовательные, сеточные, конвейерные, волновые вычислительные алгоритмы, что подтверждает их пригодность и для параллельных машин. Однако обобщение результатов измерения производительности, полученных для одной параллельной машины, на другие параллельные машины или хотя бы некоторый подкласс параллельных машин, может дать неверный результат, ибо структуры аппаратных связей в таких машинах гораздо более разнообразны, чем, скажем, в векторных машинах. LINPACK - это пакет фортран-программ для решения систем линейных алгебраических уравнений. Целью создания LINPACK отнюдь не было измерение производительности. Алгоритмы линейной алгебры весьма широко используются в самых разных задачах, и поэтому измерение производительности на LINPACK представляют интерес для многих пользователей. Сведения о производительности различных машин на пакете LINPACK публикуются сотрудником Аргоннской национальной лаборатории (США) Дж. Донгаррой и периодически обновляются. В основе алгоритмов действующего варианта LINPACK лежит метод декомпозиции. Исходная матрица размером 100х100 элементов (в последнем варианте размером 1000х1000) сначала представляется в виде произведения двух матриц стандартной структуры, над которыми затем выполняется собственно алгоритм нахождения решения. Подпрограммы, входящие в LINPACK, структурированы. В стандартном варианте LINPACK выделен внутренний уровень базовых подпрограмм, каждая из которых выполняет элементарную операцию над векторами. Набор базовых подпрограмм называется BLAS (Basic Linear Algebra Subprograms). Например, в BLAS входят две простые подпрограммы SAXPY (умноже157 ние вектора на скаляр и сложение векторов) и SDOT (скалярное произведение векторов). Все операции выполняются над числами с плавающей точкой, представленными с двойной точностью. Результат измеряется в MFLOPS. Использование результатов работы тестового пакета LINPACK с двойной точностью как основы для демонстрации рейтинга MFLOPS стало общепринятой практикой в компьютерной промышленности. При этом следует помнить, что при использовании исходной матрицы размером 100х100, она полностью может размещаться в кэш-памяти емкостью, например, 1 Мбайт. Если при проведении испытаний используется матрица размером 1000х1000, то емкости такого КЭШа уже недостаточно и некоторые обращения к памяти будут ускоряться благодаря наличию такого КЭШа, другие же будут приводить к промахам и потребуют большего времени на обработку обращений к памяти. Для многопроцессорных систем также имеются параллельные версии LINPACK и такие системы часто показывают линейное увеличение производительности с ростом числа процессоров. Однако, как и любая другая единица измерения, рейтинг MFLOPS для отдельной программы не может быть обобщен на все случаи жизни, чтобы представлять единственную единицу измерения производительности компьютера, хотя очень соблазнительно характеризовать машину единственным рейтингом MIPS или MFLOPS без указания программы. SPECint92, SPECfp92 и их развитие. Важность создания пакетов тестов, базирующихся на реальных прикладных программах широкого круга пользователей и обеспечивающих эффективную оценку производительности процессоров, была осознана большинством крупнейших производителей компьютерного оборудования, которые в 1988 году учредили бесприбыльную корпорацию SPEC (Standard Performance Evaluation Corporation). Основной целью этой организации является разработка и поддержка стандартизованного набора специально подобранных тестовых программ для оценки производительности новейших поколений высокопроизводительных компьютеров. Членом SPEC может стать любая организация, уплатившая вступительный взнос. Главными видами деятельности SPEC являются: Разработка и публикация наборов тестов, предназначенных для измерения производительности компьютеров. Перед публикацией объектные коды этих наборов вместе с исходными текстами и инструментальными средствами интенсивно проверяются на предмет возможности импортирования на разные платформы. Они доступны для широкого круга пользователей за плату, покрывающую расходы на разработку и администра158 тивные издержки. Специальное лицензионное соглашение регулирует вопросы выполнения тестирования и публикации результатов в соответствии с документацией на каждый тестовый набор. SPEC публикует ежеквартальный отчет о новостях SPEC и результатах тестирования: "The SPEC Newsletter", что обеспечивает централизованный источник информации для результатов тестирования на тестах SPEC. Основным результатом работы SPEC являются наборы тестов. Эти наборы разрабатываются SPEC с использованием кодов, поступающих из разных источников. SPEC работает над импортированием этих кодов на разные платформы, а также создает инструментальные средства для формирования из кодов, выбранных в качестве тестов, осмысленных рабочих нагрузок. Поэтому тесты SPEC отличаются от свободно распространяемых программ. Хотя они могут существовать под похожими или теми же самыми именами, время их выполнения в общем случае будет отличаться. В настоящее время имеется два базовых набора тестов SPEC, ориентированных на интенсивные расчеты и измеряющих производительность процессора, системы памяти, а также эффективность генерации кода компилятором. Как правило, эти тесты ориентированы на операционную систему UNIX, но они также импортированы и на другие платформы. Процент времени, расходуемого на работу операционной системы и функции ввода/вывода, в общем случае ничтожно мал. Набор тестов CINT92, измеряющий производительность процессора при обработке целых чисел, состоит из шести программ, написанных на языке Си и выбранных из различных прикладных областей: теория цепей, интерпретатор языка Лисп, разработка логических схем, упаковка текстовых файлов, электронные таблицы и компиляция программ. Набор тестов CFP92, измеряющий производительность процессора при обработке чисел с плавающей точкой, состоит из 14 программ, также выбранных из различных прикладных областей: разработка аналоговых схем, моделирование методом Монте-Карло, квантовая химия, оптика, робототехника, квантовая физика, астрофизика, прогноз погоды и другие научные и инженерные задачи. Две программы из этого набора написаны на языке Си, а остальные 12 - на Фортране. В пяти программах используется одинарная, а в остальных - двойная точность. Результаты прогона каждого индивидуального теста из этих двух наборов выражаются отношением времени выполнения одной копии теста на тестируемой машине к времени ее выполнения на эталонной машине. В качестве эталонной машины используется VAX 11/780. SPEC 159 публикует результаты прогона каждого отдельного теста, а также две составные оценки: SPECint92 - среднее геометрическое 6 результатов индивидуальных тестов из набора CINT92 и SPECfp92 - среднее геометрическое 14 результатов индивидуальных тестов из набора CFP92. Следует отметить, что результаты тестирования на наборах CINT92 и CFT92 сильно зависят от качества применяемых оптимизирующих компиляторов. Для более точного выяснения возможностей аппаратных средств с середины 1994 года SPEC ввел две дополнительные составные оценки: SPECbase_int92 и SPECbase_fp92, которые накладывает определенные ограничения на используемые компиляторы поставщиками компьютеров при проведении испытаний. SPECrate_int92, SPECrate_fp92 Составные оценки SPECint92 и SPECfp92 достаточно хорошо характеризуют производительность процессора и системы памяти при работе в однозадачном режиме, но они совершенно не подходят для оценки производительности многопроцессорных и однопроцессорных систем, работающих в многозадачном режиме. Для этого нужна оценка пропускной способности системы или ее емкости, показывающая количество заданий, которое система может выполнить в течение заданного интервала времени. Пропускная способность системы определяется прежде всего количеством ресурсов (числом процессоров, емкостью оперативной и кэш-памяти, пропускной способностью шины), которые система может предоставить в распоряжение пользователя в каждый момент времени. Именно такую оценку, названную SPECrate и заменившую ранее применявшуюся оценку SPECthruput89, SPEC предложила в качестве единицы измерения производительности многопроцессорных систем. При этом для измерения выбран метод "однородной нагрузки" (homogenous capacity metod), заключающийся в том, что одновременно выполняются несколько копий одной и той же тестовой программы. Результаты этих тестов показывают, как много задач конкретного типа могут быть выполнены в указанное время, а их средние геометрические значения (SPECrate_int92 - на наборе тестов, измеряющих производительность целочисленных операций и SPECrate_fp92 - на наборе тестов, измеряющих производительность на операциях с плавающей точкой) наглядно отражают пропускную способность однопроцессорных и многопроцессорных конфигураций при работе в многозадачном режиме в системах коллективного пользования. В качестве тестовых программ для проведения испытаний на пропускную способность выбраны те же наборы CINT92 и CFT92. 160 При прогоне тестового пакета делаются независимые измерения по каждому отдельному тесту. Обычно такой параметр, как количество запускаемых копий каждого отдельного теста, выбирается исходя из соображений оптимального использования ресурсов, что зависит от архитектурных особенностей конкретной системы. Одной из очевидных возможностей является установка этого параметра равным количеству процессоров в системе. При этом все копии отдельной тестовой программы запускаются одновременно, и фиксируется время завершения последней из всех запущенных программ. С середины 1994 года SPEC ввела две дополнительные составные оценки: SPECrate_base_int92 и SPECrate_base_fp92, которые накладывает ограничения на используемые компиляторы. TPC-A, TPC-B, TPC-C По мере расширения использования компьютеров при обработке транзакций в сфере бизнеса все более важной становится возможность справедливого сравнения систем между собой. С этой целью в 1988 году был создан Совет по оценке производительности обработки транзакций (TPC - Transaction Processing Performance Council), который представляет собой бесприбыльную организацию. Любая компания или организация может стать членом TPC после уплаты соответствующего взноса. На сегодня членами TPC являются практически все крупнейшие производители аппаратных платформ и программного обеспечения для автоматизации коммерческой деятельности. К настоящему времени TPC создал три тестовых пакета для обеспечения объективного сравнения различных систем обработки транзакций и планирует создать новые оценочные тесты. В компьютерной индустрии термин транзакция (transaction) может означать почти любой вид взаимодействия или обмена информацией. Однако в мире бизнеса "транзакция" имеет вполне определенный смысл: коммерческий обмен товарами, услугами или деньгами. В настоящее время практически все бизнес-транзакции выполняются с помощью компьютеров. Наиболее характерными примерами систем обработки транзакций являются системы управления учетом, системы резервирования авиабилетов и банковские системы. Таким образом, необходимость стандартов и тестовых пакетов для оценки таких систем все больше усиливается. До 1988 года отсутствовало общее согласие относительно методики оценки систем обработки транзакций. Широко использовались два тестовых пакета: Дебет/Кредит и TPI. Однако эти пакеты не позволяли осуществлять адекватную оценку систем: они не имели полных, основательных спецификаций; не давали объективных, проверяемых результа161 тов; не содержали полного описания конфигурации системы, ее стоимости и методологии тестирования; не обеспечивали объективного, беспристрастного сравнения одной системы с другой. Чтобы решить эти проблемы, и была создана организация TPC, основной задачей которой является точное определение тестовых пакетов для оценки систем обработки транзакций и баз данных, а также для распространения объективных, проверяемых данных в промышленности. TPC публикует спецификации тестовых пакетов, которые регулируют вопросы, связанные с работой тестов. Эти спецификации гарантируют, что покупатели имеют объективные значения данных для сравнения производительности различных вычислительных систем. Хотя реализация спецификаций оценочных тестов оставлена на усмотрение индивидуальных спонсоров тестов, сами спонсоры, объявляя результаты TPC, должны представить TPC детальные отчеты, документирующие соответствие всем спецификациям. Эти отчеты, в частности, включают конфигурацию системы, методику калькуляции цены, диаграммы значений производительности и документацию, показывающую, что тест соответствует требованиям атомарности, согласованности, изолированности и долговечности (ACID - atomicity, consistency, isolation, and durability), которые гарантируют, что все транзакции из оценочного теста обрабатываются должным образом. Работой TPC руководит Совет Полного Состава (Full Council), который принимает все решения; каждая компания-участник имеет один голос, а для того, чтобы провести какое-либо решение требуется две трети голосов. Управляющий Комитет (Steering Committee), состоящий из пяти представителей и избираемый ежегодно, надзирает за работой администрации TPC, поддерживает и обеспечивает все направления и рекомендации для членов Совета Полного Состава и Управляющего Комитета. В составе TPC имеются два типа подкомитетов: постоянные подкомитеты, которые управляют администрацией TPC, осуществляют связи с общественностью и обеспечивают выпуск документации; и технические подкомитеты, которые формируются для разработки предложений по оценочным тестам и распускаются после того, как их работа по разработке завершена. Тесты TPC. TPC определяет и управляет форматом нескольких тестов для оценки производительности OLTP (On-Line Transaction Processing), включая тесты TPC-A, TPC-B и TPC-C. Как уже отмечалось, создание оценочного теста является ответственностью организации, выполняющей этот тест. TPC требует только, чтобы при создании оценочного теста выполнялись определенные условия. Хотя упомянутые тесты 162 TPC не являются характерными тестами для оценки производительности баз данных, системы реляционных баз данных являются ключевыми компонентами любой системы обработки транзакций. Следует отметить, что, как и любой другой тест, ни один тест TPC не может измерить производительность системы, которая применима для всех возможных сред обработки транзакций, но эти тесты действительно могут помочь пользователю справедливо сравнивать похожие системы. Однако, когда пользователь делает покупку или планирует решение о покупке, он должен понимать, что никакой тест не может заменить его конкретную прикладную задачу. Тест TPC-A. Выпущенный в ноябре 1989 года, тест TCP-A предназначался для оценки производительности систем, работающих в среде интенсивно обновляемых баз данных, типичной для приложений интерактивной обработки данных (OLDP - on-line data processing). Такая среда характеризуется: − множеством терминальных сессий в режиме on-line − значительным объемом ввода/вывода при работе с дисками − умеренным временем работы системы и приложений − целостностью транзакций. Практически при выполнении теста эмулируется типичная вычислительная среда банка, включающая сервер базы данных, терминалы и линии связи (рис. 16.1). Этот тест использует одиночные, простые транзакции, интенсивно обновляющие базу данных. Одиночная транзакция (подобная обычной операции обновления счета клиента) обеспечивает простую, повторяемую единицу работы, которая проверяет ключевые компоненты системы OLTP. Тест TPC-A определяет пропускную способность системы, измеряемую количеством транзакций в секунду (tps A), которые система может выполнить при работе с множеством терминалов. Хотя спецификация TPC-A не определяет точное количество терминалов, компаниипоставщики систем должны увеличивать или уменьшать их количество в соответствии с нормой пропускной способности. Тест TPC-A может выполняться в локальных или региональных вычислительных сетях. В этом случае его результаты определяют либо "локальную" пропускную способность(TPC-A-local Throughput), либо "региональную" пропускную способность (TPC-A wide Throughput). Очевидно, эти два тестовых показателя нельзя непосредственно сравнивать. Спецификация теста TPC-A требует, чтобы все компании полностью раскрывали детали работы своего теста, свою конфигурацию системы и ее стоимость (с учетом пятилет- 163 него срока обслуживания). Это позволяет определить нормализованную стоимость системы ($/tpsA). Рис. 16.1. Типовая среда обработки транзакций Тест TPC-B. В августе 1990 года TPC одобрил TPC-B, интенсивный тест базы данных, характеризующийся следующими элементами: значительный объем дискового ввода/вывода умеренное время работы системы и приложений целостность транзакций. 164 TPC-B измеряет пропускную способность системы в транзакциях в секунду (tpsB). Поскольку имеются существенные различия между двумя тестами TPC-A и TPC-B (в частности, в TPC-B не выполняется эмуляция терминалов и линий связи), их нельзя прямо сравнивать. На рис. 3.2 показаны взаимоотношения между TPC-A и TPC-B. Тест TPC-C. Тестовый пакет TPC-C моделирует прикладную задачу обработки заказов. Он моделирует достаточно сложную систему OLTP, которая должна управлять приемом заказов, управлением учетом товаров и распространением товаров и услуг. Тест TPC-C осуществляет тестирование всех основных компонентов системы: терминалов, линий связи, ЦП, дискового в/в и базы данных. TPC-C требует, чтобы выполнялись пять типов транзакций: новый заказ, вводимый с помощью сложной экранной формы простое обновление базы данных, связанное с платежом простое обновление базы данных, связанное с поставкой справка о состоянии заказов справка по учету товаров Среди этих пяти типов транзакций по крайней мере 43%должны составлять платежи. Транзакции, связанные со справками о состоянии заказов, состоянии поставки и учета, должны составлять по 4%. Затем измеряется скорость транзакций по новым заказам, обрабатываемых совместно со смесью других транзакций, выполняющихся в фоновом режиме. База данных TPC-C основана на модели оптового поставщика с удаленными районами и товарными складами. База данных содержит девять таблиц: товарные склады, район, покупатель, заказ, порядок заказов, новый заказ, статья счета, складские запасы и история. Обычно публикуются два результата. Один из них, tpm-C, представляет пиковую скорость выполнения транзакций (выражается в количестве транзакций в минуту). Второй результат, $/tpm-C, представляет собой нормализованную стоимость системы. Стоимость системы включает все аппаратные средства и программное обеспечение, используемые в тесте, плюс стоимость обслуживания в течение пяти лет. TPC не прерывно обновляет тесты, вводит новые TPC-D и TPC-E и т.п. Представленный в первом квартале 1995 года тест TPC-D предназначен для оценки производительности систем принятия решений. Для оценки систем масштаба предприятия во втором квартале 1995 года TPC должен был представить тест TPC-E и его альтернативный вариант. Одной из независимых организаций, осуществляющей оценку производительности вычислительных систем, является частная компания AIM 165 Technology, которая была основана в 1981 году. Компания разрабатывает и поставляет программное обеспечение для измерения производительности систем, а также оказывает услуги по тестированию систем конечным пользователям и поставщикам вычислительных систем и сетей, которые используют промышленные стандартные операционные системы, такие как UNIX и OS/2. За время своего существования компания разработала специальное программное обеспечение, позволяющее легко создавать различные рабочие нагрузки, соответствующие уровню тестируемой системы и требованиям по ее использованию. Это программное обеспечение состоит из двух основных частей: генератора тестовых пакетов (Benchmark Generator) и нагрузочных смесей (Load Mixes) прикладных задач. Генератор тестовых пакетов представляет собой программную систему, которая обеспечивает одновременное выполнение множества программ. Он содержит большое число отдельных тестов, которые потребляют определенные ресурсы системы, и тем самым акцентируют внимание на определенных компонентах, из которых складывается ее общая производительность. При каждом запуске генератора могут выполняться любые отдельные или все доступные тесты в любом порядке и при любом количестве проходов, позволяя тем самым создавать для системы практически любую необходимую рабочую нагрузку. Все это дает возможность тестовому пакету моделировать любой тип смеси при постоянной смене акцентов (для лучшего представления реальной окружающей обстановки) и при обеспечении высокой степени конфигурирования. Каждая нагрузочная смесь представляют собой формулу, которая определяет компоненты требуемой нагрузки. Эта формула задается в терминах количества различных доступных тестов, которые должны выполняться одновременно для моделирования рабочей нагрузки. Используя эти две части программного обеспечения AIM, можно действительно создать для тестируемой системы любую рабочую нагрузку, определяя компоненты нагрузки в терминах тестов, которые должны выполняться генератором тестовых пакетов. Если некоторые требуемые тесты отсутствуют в составе генератора тестовых пакетов, то они могут быть легко туда добавлены. Генератор тестовых пакетов во время своей работы "масштабирует" или увеличивает нагрузку на систему. Первоначально он выполняет и хронометрирует одну копию нагрузочной смеси. Затем одновременно выполняет и хронометрирует три копии нагрузочной смеси и т.д. По мере увеличения нагрузки, на основе оценки производительности системы, выбираются различные уровни увеличения нагрузки. В конце концов, 166 может быть нарисована кривая пропускной способности, показывающая возможности системы по обработке нагрузочной смеси в зависимости от числа моделируемых нагрузок. Это позволяет с достаточной достоверностью дать заключение о возможностях работы системы при данной нагрузке или при изменении нагрузки. Очевидно, что сам по себе процесс моделирования рабочей нагрузки мало что дал бы для сравнения различных машин между собой при отсутствии у AIM набора хорошо подобранных смесей, которые представляют собой ряд важных для пользователя прикладных задач. Все смеси AIM могут быть разделены на две категории: стандартные и заказные. Заказные смеси создаются для точного моделирования особенностей среды конечного пользователя или поставщика оборудования. Заказная смесь может быть тесно связана с определенными тестами, добавляемыми к генератору тестовых пакетов. В качестве альтернативы заказная смесь может быть связана с очень специфическим приложением, которое создает для системы необычную нагрузку. В общем случае заказные смеси разрабатываются на основе одной из стандартных смесей AIM путем ее "подгонки" для более точного представления определенной ситуации. Обычно заказные смеси разрабатываются заказчиком совместно с AIM Technology, что позволяет использовать многолетний опыт AIM по созданию и моделированию нагрузочных смесей. AIM создала более восьми стандартных смесей, которые представляют собой обычную среду прикладных задач. В состав этих стандартных смесей входят: Универсальная смесь для рабочих станций (General Workstation Mix) - моделирует работу рабочей станции в среде разработки программного обеспечения. Смесь для механического САПР (Mechanical CAD Mix) моделирует рабочую станцию, используемую для трехмерного моделирования и среды системы автоматизации проектирования в механике. Смесь для геоинформационных систем (GIS Mix) - моделирует рабочую станцию, используемую для обработки изображений и в приложениях геоинформацинных систем. Смесь универсальных деловых приложений (General Business) моделирует рабочую станцию, используемую для выполнения таких стандартных инструментальных средств, как электронная почта, электронные таблицы, база данных, текстовый процессор и т.д. 167 Многопользовательская смесь (Shared/Multiuser Mix) моделирует многопользовательскую систему, обеспечивающую обслуживание приложений для множества работающих в ней пользователей. Смесь для вычислительного (счетного) сервера (ComputeServer Mix) - моделирует систему, используемую для выполнения заданий с большим объемом вычислений, таких как маршрутизация PCB, гидростатическое моделирование, вычислительная химия, взламывание кодов и т.д. Смесь для файл-сервера (File Server Mix) - моделирует запросы, поступающие в систему, используемую в качестве централизованного файлового сервера, включая ввод/вывод и вычислительные мощности для других услуг по запросу. Смесь СУБД (RBMS Mix) - моделирует систему, выполняющую ответственные приложения управления базой данных. Одним из видов деятельность AIM Technology является выпуск сертифицированных отчетов по результатам тестирования различных систем. В качестве примера рассмотрим форму отчета AIM Performance Report II - независимое сертифицированное заключение о производительности системы. Ключевыми частями этого отчета являются: − стоимость системы, − детали конфигурации системы, − результаты измерения производительности, показанные на трех тестовых пакетах AIM. − Используются следующие три тестовых пакета: − многопользовательский тестовый пакет AIM (набор III), − тестовый пакет утилит AIM (Milestone), − тестовый пакет для оценки различных подсистем (набор II). В частности, набор III, разработанный компанией AIM Technology, используется в различных формах уже более 10 лет. Он представляет собой пакет тестов для системы UNIX, который пытается оценить все аспекты производительности системы, включая все основные аппаратные средства, используемые в многопрограммной среде. Этот тестовый пакет моделирует многопользовательскую работу в среде разделения времени путем генерации возрастающих уровней нагрузки на ЦП, подсистему ввода/вывода, переключение контекста и измеряет производительность системы при работе с множеством процессов. Для оценки и сравнения систем в AIM Performance Report II используются следующие критерии: 168 Пиковая производительность (рейтинг производительности по AIM) Максимальная пользовательская нагрузка Индекс производительности утилит Пропускная способность системы Рейтинг производительности по AIM - стандартная единица измерения пиковой производительности, установленная AIM Technology. Этот рейтинг определяет наивысший уровень производительности системы, который достигается при оптимальном использовании ЦП, операций с плавающей точкой и кэширования диска. Рейтинг вездесущей машины VAX 11/780 обычно составляет 1 AIM. В отчетах AIM представлен широкий ряд UNIX-систем, которые можно сравнивать по этому параметру. Максимальная пользовательская нагрузка - определяет "емкость" (capacity) системы, т.е. такую точку, начиная с которой производительность системы падает ниже приемлемого уровня для N-го пользователя (меньше чем одно задание в минуту на одного пользователя). Индекс производительности утилит - определяет количество пользовательских нагрузок пакета Milestone, которые данная система выполняет в течение одного часа. Набор тестов Milestone многократно выполняет выбранные утилиты UNIX в качестве основных и фоновых заданий при умеренных пользовательских нагрузках. Этот параметр показывает возможности системы по выполнению универсальных утилит UNIX. Максимальная пропускная способность - определяет пиковую производительность мультипрограммной системы, измеряемую количеством выполненных заданий в минуту. Приводящийся в отчете график пропускной способности системы показывает, как она работает при различных нагрузках. Отчет по производительности разработан с использованием набора тестов AIM собственной разработки. В отличие от многих популярных тестовых пакетов, которые измеряют только производительность ЦП в однозадачном режиме и/или на операциях с плавающей точкой, тестовые пакеты AIM проверяют итоговую производительность системы и всех ее основных компонентов в многозадачной среде, включая ЦП, плавающую точку, память, диски, системные и библиотечные вызовы. Синтетические ядра и натуральные тесты не могут служить в качестве настоящих тестовых пакетов для оценки систем: они не могут моделировать точно среду конечного пользователя и оценивать производительность всех относящихся к делу компонентов системы. Без такой гарантии результаты измерения производительности остаются под вопросом. Надежность систем. 169 Ниже приведено соотношение описывающее связь объема нарабатываемого ассемблерного кода Q c временем жизни модульного средства принятой архитектуры T и объемом его выпуска W. Q W 0.5 W0 J 0 k m (W 100) 2 (T d W ) 2 0.5 T T0 0.5 Q 0 n W 0.5 , где W 0 - объем стартового выпуска модуля; T 0 - минимальное время жизни модуля; Q0 - стартовое ПО тестирования модуля; J 0 - функция Бесселя; k, m, n, d – нормирующие коэффициенты. На рис. 16.2. приведен вид функции прогнозирования объема работ по наработке ассемблерного кода для нашего случая. Рис. 16.2. Функция прогнозирования для программирования на ассемблере Волнообразный вид функции обусловлен: целесообразностью наработки ассемблерных наполнений операторов и функций языков высокого уровня; появлением новых нишь применения модулей. Языки программирования высокого уровня ориентированы на профессионально-подготовленных программистов, однако они не требуют детального знания всех тонкостей специфики регистровой архитектуры модулей. При приложении к задачам разработки ПО модульных 170 средств оригинальной архитектуры наиболее подходящим классом языков данного уровня является класс С, или точнее С++. Он сохраняет возможность гибкого управления размером операндов, поддержания близких к предельным параметров быстродействия и компактности программы, по крайней мере проигрыш не превышает 150 ... 300%. В тоже время объем пользователей, способных с минимальными потерями времени использовать предлагаемые модули возрастает на несколько порядков. При больших объемах выпуска модулей разработка отображения операторов, стиля языка С++ в среде программирования модульного средства неизбежна. 0.5 Q k W T dt m n W 2 (T T1 ) 2 , d . Выражение описывает вид функции прогнозирования объема разработки С++ подобной среды программирования Q. Где T1 - стартовое время жизни модуля; dt - функция Стъюдента; k, m, n, d – нормирующие коэффициенты. На рис. 16.3. приведен вид функции прогнозирования объема работ по разработке С – подобной языковой среды с учетом целесообразности начала и объема работ. Функция прогнозирования для разработки С – подобной среды программирования Рис. 16.3. Функция прогнозирования объема работ по разработке на С Целесообразность создания на базе С++ объектов высокоуровнего языка класса языков описания сценариев определяется временем жизни 171 модульного средства, объемом его распространения и, в первую очередь, стремлением потребителей к значительному по объему программированию силами технологов и других специалистов производств. Работы по созданию такой среды реально начинаются после наработки достаточно полного множества переносимых модулей на С++. Разработанный язык программирования модульных сред относится к языкам ассемблерной группы. При построении его создаваемые аппаратные средства рассматриваются, как комплексные образования включающие процессорные ядра, однородные вычислительные структуры и их обрамление. Среда программирования строится по принципу восходящего накопления компонентов с одновременным упрощением их внешнего описания и облегчением процедур встраивания в итоговые программы, стремясь к созданию интерфейса визуального программирования с минимальными профессиональными требованиями к разработчику, сохраняя возможность профессионального программирования компонентов с предельной эффективностью создаваемого кода. Тестирование в обеспечении надежности КС Надежность информационных систем как свойство системы сохранять показатели назначения во времени в заданных пределах существенно зависит от качества и периодичности контроля. Для многих случаев вероятность правильного функционирования технического средства: P(t , t t ) exp( t ) , где t - интервал времени после проведения (в момент времени t ) цикла идеального контроля; - интенсивность неисправностей системы. Под «идеальным» понимается контроль, при котором условная вероятность обнаружения дефекта равна единице. В связи с тем, что вероятность надежной работы для систем в данном случае не зависит от предыстории эксплуатации системы и ее клонов, особенно важен контроль перед включением аппаратуры в рабочий режим, а для модулей с перестраиваемой архитектурой – при смене конфигурации решающей среды. Так как обнаруженный дефектный узел может быть исключен из рабочей конфигурации МСПА с сохранением работоспособности последней, можно реально говорить о повышении, наряду с надежностью, и живучести системы. При современных требованиях к надежности работы МСПА P 0.95 выражение (1) может быть с погрешностью не более сотых долей процента аппроксимировано линейной зависимостью 172 Pl (t , t t ) 1 0.98 t . Достичь идеального качества контроля в реальных приборах практически не возможно. Поэтому, выделяя подмножества компонентов и M связей M i , i 1...n , i ной функции МСПА i M0 , получим вероятность выполнения задан- n Pl (t ) [1 0.98 (t t i ) mi ] i 1 , где M 0 - множество компонентов и связей, участвующих в выполнении задания, M i - подмножество компонентов и связей, проверенное в момент времени t i (в состав подмножества не включаются элементы, проt t шедшие проверку в момент времени j i или j i ), i, j 1...n - порядковые номера отсчетов времени, n - номер последней проверки, mi удельный вес элементов подмножества M i в оценке интенсивности неисправностей системы ( m0 1 ). Реально элементы и материалы стареют, т.е. (t ) - функция времени (от момента создания модуля). В этом случае P(t , t t ) exp (t ) t . Линейная аппроксимация P(t , t t ) и в данном случае дает достаточно хорошее приближение, например, для (t ) 0 k t (k – коэффициент пропорциональности) погрешность аппроксимации при P(t , t t ) 0.95 не превышает 1 %. При отсутствии периодического тестирования 2.5 Pl (t ) 1 0.79 [1 P(t q )] t q1 t . t P (t ) q где q - заданное время безотказной работы, - заданная вероятность безотказной работы, 0.79 – коэффициент масштабирования, подбирается исходя из минимума погрешности аппроксимации, зависит от величины P (t ) P (t q ) и критерия оценки потерь от погрешности определения . Введение тестирования позволяет повысить надежность работы системы, которая с учетом (3) и (5) может быть оценена по формуле n Pl (t ) [1 0.79 [1 - P(t qi )] t qi1 (t t i ) mi ] T i 1 . Сокращение временных интервалов на t i делает разницу Pl (t ) Pl (t ) положительной. В формуле 1.6 не учитывается полное старение элементов, T 173 что не совсем правильно. Полагая зависимость интенсивности неисправностей системы от времени степенной функцией, уточним выражение (6). m t (t ) 0 0 b , где b - время, за которое интенсивность неисправностей системы увеличится вдвое, m - показатель, характеризующий форму кривой зависимости интенсивности неисправностей системы от времени. Pl (t ) 1 0i 0,91 0i i 1 T n t bi mi (t t i ) . tq 0.7 P 0.95 Коэффициент 0.91 подобран для m = 2.5, соотношения b и q . Погрешность аппроксимации не превысила в таком случае сотых долей процента. Живучесть системы как возможность и реализуемость замены вышедших из строя узлов на не занятые в решении текущей задачи, может быть оценена через вероятность замены сомножителей в (8) с сохранением при этом работоспособности системы: Pl (t ) 1 0i 0,91 0i i 1 T где n t bi mi Ii 0 j 0,91 0 j j 1 t b j mj (t t i ) , j - номер набора (в дальнейшем играет роль ссылочного индекса), Ij - число наборов, заменяющих i компонент модульного средства. Верификация и диагностика архитектуры и схемных решений Верификация архитектуры модуля предполагает проверку соответствия результатов работы модульного средства с перестраиваемой архитектурой запланированным результатам, заданным как исходные к проектированию модуля. Верификация, как правило, затрагивает все ступени разработки, изготовления и испытания опытного образца. Технология верификации за прошедшие десятилетия прошла путь интенсивного развития и на современном этапе является необходимым элементом схемотехнических разработок. Начиная со схемы верификации по Роту (фирма IBM) включая в себя схемы Ивенгелисти (фирма IBM), Маруяма (фирма Фудзицу) (рис.16.4…16.6), она приобрела черты сложной многомерной логической задачи, решаемой с учетом ограничений во времени, допустимой вероят- 174 ности пропуска ошибки в решениях, используемых САПР в разработках схем и т. п. В полном объеме провести автоматизированную верификацию проекта, технологических изделий (фотошаблонов и т. п.) чрезвычайно затруднительно и реально осуществимо лишь при подготовке производства массового изделия. Мелкосерийное производство МСПА ведется с использованием прошедших верификацию СБИС, что существенно упрощает задачу создания работоспособного изделия. В этом случае верификации подлежат связи и рабочие конфигурации компонентов СБИС, достаточные для решения поставленной задачи, причем верификация конфигураций ведется до уровня - пригодна - да/нет. Сегодня профессия тестировщика стала массовой. Рис. 16.4. Укрупненная схема верификации по Роту Рис. 16.5. Укрупненная схема верификации по Ивенгелисти Рис. 16.6. Укрупненная схема верификации по Маруяма 175 Диагностика, эксплуатационное тестирование, технический контроль – термины, указывающие на операцию проверки работоспособности КС, которой предшествовали операции верификации. Диагностика обычно предполагает два уровня решения задачи: первый – обнаружение неисправности и второй – локализация неисправности до уровня СБИС, линии связи. Диагностика проводится как со специальными имитаторами так и без них. В обоих случаях генерируются тестовые последовательности. Выявляемые дефекты ранжируют. Ранги дефектов: не работоспособна, частичный разрыв линии, сложные, – выявляются в процессе эксплуатации. Причина дефектов – деградация элементов, связей и т. п. Сложные дефекты выявляются введением специальных тестовых схем, более критичных к влияющим факторам, чем рабочие. В тестах находит реальное воплощение оптимальность стратегии диагностики. Минимальный объем подготовки к тестированию комбинационных схем дает генерация по входным линиям тривиального последовательного двоичного кода или формирование сигнатур по реакции на псевдослучайные входные коды. Первый вариант требует максимального времени на прохождение теста, во втором случае возникает проблема частичного покрытия возможного множества неисправностей. Таким образом, оба варианта частично приемлемы и должны дополнятся ограничениями на диапазоны использования. Наиболее интересен для конкретной реализации в диагностике МСПА D-алгоритм и его развитие (алгоритмы PODEM, 10-ти значный и др.). Тесты в данном случае генерируются алгоритмически и основываются на понятиях активизации путей, т.е. нахождения комбинаций входных переменных и состояний, при которых различия в выходных сигналах идентифицируют наличие неисправности. Локализация неисправности ведется через анализ D-кубов неисправностей, строящихся последовательностью правил выбора. Разумны и рациональны рекомендации, в первую очередь, для идентификации выбирать линии и элементы ближайшие к входным и выходным контактам. Поддержка тестирования в программном обеспечении Перечислим проработанные и принятые за базу основные принципы построения программного обеспечения для тестирования и самодиагностики КС ПОТКС: o построение ПОТКС проводить, ориентируясь на удержание функциональных возможностей отладчиков профессиональных языков программирования высокого уровня; o сохранить компонентный подход к построению ПОТКС; 176 o при тестировании разрешать построение новой конфигурации модулей; o при тестировании проводить переключение связей между модулями, с максимальным заполнением путей возможной генерации входных сигналов через выходные порта; o при самодиагностике учитывать ограничения множества выходных сигналов, налагаемые спецификой подключенных к модулю устройств; o нарабатывать библиотеки имитации устройств подключаемых к КС, используя их как тестирующие вектора; o обеспечить поддержку специальных форматов данных, характерных для тестируемого типа КС. Рис. 16.7. Схема формирования файлов для комплексного тестирования рабочих программ и технических средств 177 Сравнение выходных файлов в полях допусков позволяет оценить качество программы и сделать вывод о ее пригодности к натурным испытаниям. В отдельных случаях пониманию разности процессов и способствуют изображения полей переменных. Анализ через визуализацию серии близких результатов, когда зависимости преобразуются в заданный набор рисунков, позволяет экономить время анализа. В неопределенной ситуации с источниками ошибок в программе корректируются алгоритмы проверки. В целом процесс итерационный и требует участия разработчика ПО. Формирование критериев правильности решений, оценка близости результатов проводится с участием оператора. Литература 1. Орлов С.А., Цилькер Б.Я. Организация ЭВМ и систем: Учебник для вузов 2-е изд. СПб.: Питер, 2011. 2. Бройдо В. Л. Ильина О. П. Вычислительные системы, сети и телекоммуникации. 3 изд. – СПб.: Питер. 2008. 3. Шпаковский Г.И. Организация параллельных компьютеров и суперскалярных процессоров. Уч. пособие БГУ. 1996. 1. Шпаковский Г.И., Стецюренко В.И., Верхотуров А.Е., Серикова Н.В. Применение технологии MPI в Грид. Курс лекций. Мн.: БГУ. 2008. 2. Чернявский А.Ф. и др. Высокоскоростные методы и системы цифровой обработки информации . Мн. БГУ. 1996. 3. Буза М.К. Архитектура компьютеров: Учеб. Минск, Новое знание. 2006. 4. Фролов В. В. Процессоры семейства Intel в защищенном режиме. М. Высш. школа. 1994. 5. Бородин В. Б. Микропроцессоры 486. Архитектура, программирование, интерфейс. М. Диалог МиФи. 1993. 6. Бродин В.Б., Шагурин И.И. Микроконтроллеры. Архитектура, программирование, интерфейс. М.: Изд. ЭКОМ. 1999. 7. Гук М. Процессоры Pentium II, Pentium Pro и просто PentiumСПб, Питер Ком. 1999. 8. Магда Ю.С. Аппаратное обеспечение и эффективное программирование. – СПб.: Питер 2007. 9. Цифровая обработка телевизионных и компьютерных изображений / Под ред. Ю.Б. Зубарева, В. П. Дворковича. – М.: 1997. 212 10. IA-64 Application Developer's Architecture Guide, Intel Corp., 1999. 178 11.IA-64 Application Instruction Set Architecture Guide, Rev.1.0, Intel Corp., HP, 1999. 12. Крук Б.И., Попантонопуло В.Н., Шувалов В.П. Телекоммуникационные системы и сети. Т1:учеб.пособие/изд.2-е, испр. и доп. -Новосибирск: Сиб. предприятие «Наука» РАН, 1998. 13. Компьютерные системы и сети: Учеб. пособие/ В.П.Косарев и др./ Под ред. В.П.Косарева и Л.В.Еремина -М.: Финансы и статистика, 1999. 14. Гергель В.П., Фурсов В.А Лекции по параллельным вычислениям: учеб. пособие / – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2009. 15.Витязев В.В., Витязев С.В.Цифровые процессоры обработки сигналов TMS320C67x компании Texas Instruments. Издательство: Рязан. гос. радиотехн. ун-т 2007 16. Шварц М.Сети связи: протоколы, моделирование и анализ: в 2х ч., ч.II: Пер. с англ. -М.: Наука-Гл. ред.физ.-мат.лит.,1992. 17.Белоус А.И., Ковалевский В.К. Однокристальные микро ЭВМ. Современное состояние и перспективы развития. Мн. 1991. БелНИИНТи. 18.Сверх БИС универсальных однокристальных микро ЭВМ. / А.В. Кобылинский и др. К. Технiка 1987. – 166 с. 19.H8/3002 Hardware Manual ( H83_020h.pdf). 20. М.В. Гаранин, В.И. Журавлев, С.В. Кунегин. Системы и сети передачи информации. - М.: Радио и связь, 2001. 21. Долгий В.В. Шалатонин И.А. Программирование микропроцессорных систем: Практикум. Мн.: БГУ, 2004. – 70 с. 22. Л.Н. Волков, М.С. Немировский, Ю.С. Шинаков. Системы цифровой радиосвязи: базовые методы и характеристики. Учебное пособие. -М.: Эко-трендз, 2005. 23. Передача дискретных сообщений./Под ред. В.П. Шувалова. – М.: Радио и связь, 1990. 24. Основы передачи дискретных сообщений./Под ред. В.М. Пушкина. – М.: Радио и связь, 1992. 25. Н.В. Захарченко, П.Я. Нудельман, В.Г. Кононович. Основы передачи дискретных сообщений. –М.: Радио и связь, 1990. 26. Дж. Прокис. Цифровая связь. - М.: Радио и связь, 2000. 27. Программируемые логические ИМС на К-МОП структурах и их применение /П.П. Мальцев, Н.И. Гарбузов, А.П. и др. - М.: Энергоатомиздат, 1998.-160 с. 179 1. 2. 2.1. 2.2. 2.3. 3. 4. 4.1. 4.2. 5. 6. 7. 8 9 10 11 12 13 14 15 16 28. Бибило П.Н. Основы языка VHDL. - Минск: Ин-т техн. кибернетики НАН Беларуси, 1999.- 202с. 29. VHDL - язык описания аппаратных средств: Учеб. пособие / А.С. Яицков; Под. ред. акад. B.C. Бурцева, акад. Б.С. Митина. М.: Изд-во МАТИ-РГТУ "ЛАТМЭС", 1998- 119с. 30. Уильямс Т.У., Паркер К.И. Проектирование контролепригодных устройств //ТИИЭР, 1983. - Т. 71. - № 1. - С. 122 - 139. 31. Ярмолик В.Н. Контроль и диагностика цифровых узлов ЭВМ. Мн.: Наука и техника. 1988, - 240 с. 32.Акудинов Г.И., Стриженко А.И. Сети ЭВМ и телекоммуникации. Архитектура и протоколы: Учеб. Пособие. – СПб.: СЗТУ, 2001. СОДЕРЖАНИЕ Введение 3 История развития, классификация КС 4 Типы данных поддерживаемые КС 12 Классические типы данных 13 Форматы представления графических и специальных типов данных 14 Команды и операции над данными 15 Детерминированные и случайные потоки в КС 19 Магистрально-модульный принцип построения вычислительных систем 27 Параллельные магистрали 27 Последовательные линии 42 Архитектура потоков команд 49 Сетевые конфигурации вычислительных сред 51 Конвейеризация и параллелизм в ступенях КС 64 Виртуальные процессы, иерархия памяти КС 69 CISC и RISC архитектура процессоров 81 32-х разрядные процессоры фирмы Intel, DEC, Motorola 84 64-х разрядные процессоры 96 Особенности архитектуры цифровых процессоров сигналов, транспьютеров и интерфейсных СБИС 117 VLIW архитектура, основные черты перспективных процессоров 124 Видеоадаптеры 130 Микроконтроллеры 141 Производительность КС 151 Литература 178 180 Учебное издание Шестаков Константин Михайлович КУРС ЛЕКЦИЙ по специальному курсу «Компьютерные системы» Электронная версия. Учебное пособие для студентов факультета радиофизики и компьютерных технологий Ответственный за выпуск К. М. Шестаков Редактор _________________ Корректор ___________________ Подписано в печать _______. Формат _60×84/16. Бумага офсетная. Печать офсетная. Усл. печ. л._____. Уч. – изд. л. ______. Тираж 100 экз. Зак. 486. Белорусский государственный университет. Лицензия ЛВ № 315 от 14.07.98. 220050, Минск, пр. Независимости, 4. Отпечатано в Издательском центре БГУ. 220030, Минск, ул. Красноармейская, 6. 181