Текст
                    КОМПЬЮТЕРОВ

М.К. Буза АРХИТЕКТУРА КОМПЬЮТЕРОВ Утверждено Министерством образования Республики Беларусь в качестве учебника для студентов специальностей «Информатика», «Прикладная математика», «Вычислительные машины, системы и сети» учреждений, обеспечивающих получение высшего образования МИНСК ООО «НОВОЕ ЗНАНИЕ» £00?
УДК 681.3(075.8) ББК 32.988я73 Б90 Рецензенты: кафедра численных методов и программирования Белорусского государственного университета информатики и радиоэлектроники; доктор технических наук, старший научный сотрудник Объединенного института проблем информатики С.Ф. Липницкий Буза, М.К. Б90 Архитектура компьютеров : учеб. / М.К. Буза. — Минск : Новое знание, 2006. — 559 с.: ил. ISBN 985-475-229-1. Изложены теоретические основы построения современных вычислительных систем. Приведены примеры существующих и перспективных архитектурных решений. Рассмотрены направления развития высокопроизводительной техни- ки. Материал подготовлен в полном соответствии с учебной программой дис- циплины «Архитектура'Вычислительных систем». Отдельные главы можно использовать при изучениизсМежныхкурсов «Операционные системы», «Систе- мы параллельного действия», «Проектирование процессорной обработки» и т.д. Для студентов вузов, обучаютцйхс^ по специальностям «Информатика», «Прикладная математика», «Вычислительные машины и сети». Будет полезен специалистам в области системного программирования, информатики и всем, кто заинтересован в разработке эффективных программных проектов. УДК 681.3(075.8) ББК 32.988я73 ISBN 985-475-229-1 © Буза М.К., 2006 © Оформление. ООО «Новое знание», 2006
Предисловие Современное состояние компьютерных наук характеризуется интен- сивным и многоплановым развитием, в связи с чем отсутствует строгое и обоснованное разделение на самостоятельные учебные дисциплины. Компьютерные науки прошли путь от создания языков програм- мирования до цельной системы знаний, в том числе воплощенных в серию учебных дисциплин, преподаваемых в университетах — про- ектирование и анализ алгоритмов, базы данных, архитектура компь- ютеров, операционные системы, компьютерные сети, компиляторы и т.д. Дисциплина «Архитектура компьютеров» изучает внутреннюю органи- зацию вычислительной системы, знание которой позволяет програм- мистам рационально использовать ресурсы системы и проектировать эффективные программы. Существенные успехи в развитии технологий проектирования средств вычислительной техники, программного обеспечения и его надежно- сти, инструментариев и методов инжиниринга, аттестации и верифи- кации программных проектов, а также постоянно расширяющийся спектр приложений вычислительной техники и программного обес- печения привели к пересмотру и развитию существующих и созданию новых архитектурных решений компьютеров. Вместо монопольной концепции последовательного исполнения операций появились и реа- лизованы идеи совместной, параллельной и распределенной обра- ботки данных. Одновременно с однопроцессорными компьютерами, базирующимися на принципах фон Неймана, используются много- процессорные, конвейерные и параллельные архитектуры. Концепции RISC (Reduced Instruction Set СотрШег)-процессоров, воплотивших сокращенный набор регистровых команд, реализованы в реальных компьютерах многочисленными фирмами наряду с тради- ционными компьютерами на CISC (Complete Instruction Set Com- puter) - процессорах. Большое развитие получили компьютеры с VLIW (Very Long Instruction Word)-apxHTeKiypofi, позволившей ускорить процесс обработки за счет упаковки в одну связку нескольких команд, масштабируемости, пре- дикации, загрузки по предположению, применения тегов и дескрип- торов. 3
Предисловие Широкое распространение получают векторно-конвейерные компью- теры, массово-параллельные компьютеры с распределенной памятью, компьютеры с кластерной архитектурой, позволяющей достигать прак- тически неограниченной производительности. Все эти решения тре- буют соответствующего осмысления и выбора, чему в немалой степени способствует предлагаемая книга. Одна из ее целей — проследить путь от компьютеров фон Неймана, их программного обеспечения и концептуальных идей через семантический разрыв между сущест- вующими архитектурными решениями, созданными и формирующи- мися идеями, реализованными в различном окружении пользователей компьютеров, до их совершенствования и создания новых архитек- турных ансамблей. Это издание о теоретических аспектах и реальных архитектурах, вопло- щенных в действующих вычислительных системах и способствую- щих развитию существующих архитектурных решений и генерации новых идей в этой области. Базируясь на понятии процесса, в книге рассмотрены ключевые тео- ретические решения, многие из которых присутствуют в большинст- ве современных вычислительных систем. Для изучения дисциплины необходимы знания в области структур компьютеров, в проектирова- нии программ и начальные сведения по операционным системам. Учебник содержит 12 глав, каждая из которых представляет отдельный интерес, что дает возможность включать некоторые главы в смежные курсы: «Операционные системы», «Компьютерные сети», «Системы параллельного действия», «Проектирование процессорной обработ- ки» и т.д. Это позволяет читать книгу, не придерживаясь порядка, предложенного автором. Материал подготовлен в полном соответствии с учебной программой дисциплины «Архитектура вычислительных систем» для высших учеб- ных заведений Республики Беларусь. Список литературы в основном содержит работы зарубежных авто- ров, что свидетельствует об отсутствии соответствующей отечествен- ной учебной литературы в данной предметной области. Учебник ориентирован на студентов вузов, специализирующихся в области системного программирования, разработки эффективных программных проектов, особенно операционных систем, а также на 4
Предисловие разработчиков новых архитектурных решений. Отдельные главы могут быть полезны специалистам смежных областей информатики и занимающихся проектированием эффективных приложений в со- ответствующей предметной области. Автор выражает глубокую благодарность рецензентам: доктору физи- ко-математических наук, профессору А. К. Синицыну (Белорусский государственный университет информатики и радиоэлектроники), доктору технических наук, профессору С.Ф. Липницкому (Объеди- ненный институт проблем информатики НАН Беларуси) за полезные замечания и рекомендации, способствующие улучшению содержа- ния книги. Автор с благодарностью примет пожелания и предложения читателей книги и просит направлять их по адресу: 220080, г. Минск, пр. Неза- висимости, 4, к. 243. 5
Введение В настоящее время развитие любой страны невозможно без компью- теризации всех сфер деятельности. От скорости и полноты обработки и передачи информации зависят успехи не только в научной, образо- вательной, экономической деятельности, но и в сфере политики и за- щиты государственных интересов, в совокупности способствующих устойчивому развитию страны. Важная роль в этом процессе принад- лежит суперкомпьютерам, производительность которых возрастала в последнее время на порядок за каждое пятилетие. К ним относят компьютеры (как правило, с параллельной архитектурой), суммар- ная производительность которых составляет от 10 до 1000 Гфлопс, с оперативной памятью в несколько десятков терабайт (Тбайт). Рассмотрим на примерах основные параметры машин этого класса. CRAY Т932, векторно-конвейерный компьютер фирмы CRAY Research Inc (в настоящее время это подразделение Silicon Graphics). Выпуска- ется с 1996 года. Максимальная производительность одного процес- сора — около 2 миллиардов операций в секунду, оперативная память наращивается до 8 Гбайт, дисковое пространство — до 256 000 Гбайт (то есть 256 Тбайт). Компьютер в максимальной конфигурации со- держит 32 идентичных процессора, работающих над общей памятью, поэтому максимальная производительность всей вычислительной си- стемы составляет более 60 миллиардов операций в секунду. IBM SP2, массово-параллельный компьютер фирмы IBM (иногда такие компьютеры называют компьютерами с массовым параллелизмом) строится на основе стандартных микропроцессоров POWERPC 604е или POWER2 SC, соединяемых высокоскоростным коммутатором, причем каждый из процессоров имеет свою локальную оперативную память и дисковую подсистему. В частности, максимальная система, установленная в Pacific Northwest National Laboratory (Richland, USA), содержит 512 процессоров. Исходя из числа процессоров можно пред- ставить суммарную мощность всей вычислительной системы. Среди суперкомпьютеров с массовым параллелизмом можно выделить Intel Red с пиковой производительностью 4 терафлопс и IBM White — 12 терафлопс. HP Exemplar, компьютер с кластерной архитектурой фирмы Hewlett- Packard. Например, модель V2250 (класс V) построена на основе мик- 6
Введение ропроцессора РА—8200, работающего с тактовой частотой 240 МГц. До 16 процессоров можно объединить в рамках одного узла с общей оперативной памятью до 16 Гбайт. В свою очередь узлы в рамках од- ной вычислительной системы соединяются между собой высокоско- ростными каналами передачи данных. ASCI RED — один из самых мощных компьютеров. Построенный по заказу Министерства энергетики США, он объединяет 9152 процес- сора Pentium Pro, имеет 600 Гбайт оперативной памяти и общую про- изводительность 1800 миллиардов операций в секунду. Компания Linux Networks создала высокопроизводительный кластер- ный Linux-суперкомпьютер с 1323 процессорами для Министерства обороны США. Кластер Evolocity II предназначен для центра U.S.Army Research Labo- ratory Major Shared Center и будет использоваться при проектирова- нии новых видов вооружений, расчета динамики движения снарядов в различных погодных условиях, оценки живучести техники в усло- виях ведения боевых действий. Данная система, работа над которой завершена в 2004 году, состоит из 1066 узлов, каждый из них оснащен двумя процессорами Intel Хеоп с тактовой частотой 3,6 ГГц и опера- тивной памятью в 2 Гбайт. Процессоры имеют 64-разрядные расши- рения. Возникает естественный вопрос: при решении каких задач требуется применение суперкомпьютеров? Чтобы оценить сложность решаемых на практике задач, возьмем конкретную предметную область, например оптимизацию процесса добычи нефти. Пусть имеется подземный нефтяной резервуар с не- которым числом пробуренных скважин. По одним скважинам на по- верхность откачивается нефть, по другим — в резервуар закачивается вода. Требуется смоделировать ситуацию в данном резервуаре, чтобы оценить запасы нефти, определить необходимость дополнительных скважин, объем закачиваемой воды и т.п. Примем упрощенную схему, при которой моделируемая область ото- бражается кубом, однако и такой схемы будет достаточно для оценки числа необходимых для моделирования арифметических операций. Разумные размеры куба, при которых можно получить правдоподоб- ные результаты, составляют 100 х 100 х 100 точек. В каждой точке куба 7
Введение требуется вычислить от 5 до 20 функций: три компоненты скорости, давление, температуру, концентрацию компонент (вода, газ и нефть — это минимальный набор компонент, в более реальных моделях рас- сматривают, например, различные фракции нефти). При этом значе- ния функций находятся как решение нелинейных уравнений, что требует от 200 до 1000 арифметических операций. И, наконец, если исследуется нестационарный процесс, то есть нужно определить по- ведение системы во времени, то расчеты осуществляются от 100 до 1000 шагов по времени. В результате имеем: 106 (точек сетки) • Ю(функций) • 500(операций) • 500(шагов по време- ни) = 2,5 • 1012, то есть 2500 миллиардов арифметических операций для выполнения одного лишь расчета!!! Если же учесть необходимость изменения па- раметров модели, отслеживания ситуации при изменении входных данных, многократности расчетов — все это накладывает очень жест- кие требования на производительность используемых вычислитель- ных систем. Примеры использования суперкомпьютеров можно найти в косми- ческих и геологических исследованиях, автомобилестроении, фар- макологии, прогнозе погоды и моделировании изменения климата, сейсморазведке и т.д. Первый компьютер EDSAC (1949 год) со временем такта 2 микросе- кунды (мкс) мог выполнить в среднем 100 арифметических операций в секунду, а суперкомпьютер CRAY С90 имеет время такта около 4 на- носекунд (нс), с пиковой производительностью около 1 миллиарда арифметических операций в секунду. Производительность компьютеров за этот период выросла приблизи- тельно в десять миллионов раз. Уменьшение времени такта является прямым способом'увеличения производительности, однако рост этой составляющей (с 2 мкс до 4 нс) в общем объеме обеспечивает рост про- изводительности лишь в 500 раз. Остальной рост производительности приходится на новые архитектурные решения, среди которых значи- тельное место занимает принцип параллельной обработки данных. Параллельная обработка данных определяется конвейерностью и соб- ственно параллельностью. 8
Введение Идея конвейерной обработки заключается в выделении отдельных эта- пов выполнения общей операции, причем результат работы каждого этапа передается следующему с одновременным приемом новой пор- ции входных данных. В результате увеличение скорости обработки данных происходит за счет совмещения операций, раньше разнесен- ных во времени. Проанализируем историю основных нововведений в архитектуре процессоров. ► IBM 701 (1953 год), IBM 704 (1955 год): разрядно-параллельная память, разрядно-параллельная арифметика. Первые компьютеры (EDSAC, EDVAC, UNIVAC) имели разрядно-последовательную па- мять, из которой слова считывались последовательно бит за битом. Первым компьютером, использующим разрядно-параллельную па- мять и разрядно-параллельную арифметику, стал IBM 701, а наиболь- шую популярность получила модель IBM 704, в которой впервые была применена память на ферритовых сердечниках и аппаратное арифметическое устройство (АУ) с плавающей точкой. ► IBM 709 (1958 год): независимые процессоры ввода/вывода. Про- цессоры первых компьютеров сами управляли вводом/выводом. Однако скорость работы самого быстрого внешнего устройства — магнитной ленты — была в 1000 раз меньше быстродействия процес- сора, поэтому во время операций ввода/вывода процессор фактиче- ски простаивал. В 1958 году к компьютеру IBM 704 присоединили шесть независимых процессоров ввода/вывода, которые могли рабо- тать параллельно с основным процессором, а сам компьютер пере- именовали в IBM 709. ► IBM STRETCH (1961 год): опережающий просмотр вперед, рас- слоение памяти. Компьютер STRETCH имеет две принципиально важные особенности: опережающий просмотр вперед для выборки команд и расслоение памяти на два банка для согласования низкой скорости выборки из памяти и скорости выполнения операций. ► ATLAS (1963 год): конвейер команд. Впервые конвейерный прин- цип выполнения команд был использован в машине ATLAS, разрабо- танной в Манчестерском университете. Выполнение команд разбито на четыре стадии: выборка команды, вычисление адреса операнда, выборка операнда и выполнение операции. Конвейеризация позво- лила уменьшить время выполнения команд с 6 мкс до 1,6 мкс. Этот 9
Введение компьютер оказал огромное влияние как на архитектуру ЭВМ, так и на программное обеспечение. В нем впервые применена мульти- программная операционная система (ОС), основанная на использо- вании виртуальной памяти и системы прерываний. ► CDC 6600 (1964 год): независимые функциональные устройства. Фирма Control Data Corporation (CDC) при непосредственном уча- стии одного из ее основателей, Сеймура Р. Крэя (Seymour R. Cray), выпустила компьютер CDC 6600 — первый компьютер, в котором использовалось несколько независимых функциональных устройств. Приведем некоторые параметры компьютера: • время такта 100 нс, • производительность 2—3 миллиона операций в секунду, • оперативная память разбита на 32 банка 60-разрядных слов по 4096 слов в каждом; • цикл памяти 1 мкс, • 10 независимых функциональных устройств. ► CDC 7600 (1969 год): конвейерные независимые функциональные устройства (ФУ). CDC выпускает компьютер CDC7600 с восемью независимыми конвейерными функциональными устройствами — сочетание параллельной и конвейерной обработки. Основные пара- метры: • время такта 27,5 нс, • производительность 10—15 миллионов операций в секунду, • восемь конвейерных функциональных устройств, • двухуровневая память. ► ILLIAC IV (1974 год): матричные процессоры. Проектировалось 256 процессорных элементов (ПЭ), включающих 4 квадранта по 64 ПЭ, возможность реконфигурации — 2 квадранта по 128 ПЭ или 1 квад- рант из 256 ПЭ, время такта — 40 нс, производительность — 1 Гфлопс. Реально реализована матрица из 64 ПЭ, все элементы которой рабо- тали в синхронном режиме, выполняя в каждый момент времени одну и ту же команду, поступившую от устройства управления (УУ),‘ но над своими данными; ПЭ имел собственное арифметико-логическое устройство (АЛУ) с полным набором команд. Оперативная память (ОП) 10
Введение содержала 2К слов по 64 разряда, цикл памяти 350 нс, каждый ПЭ имел непосредственный доступ только к своей ОП. Сеть пересылки данных — двумерный тор со сдвигом на единицу на границе по гори- зонтали. Стоимость проекта оказалась в четыре раза выше планируемой. Реа- лизован лишь 1 квадрант с тактом 80 нс, реальная производитель- ность составила до 50 Мфлопс. Проект оказал огромное влияние на архитектуру последующих машин, построенных по схожему принци- пу, в частности на PEPE, BSP, ICL, DAP. ► CRAY 1 (1976 год): векторно-конвейерные процессоры. Компания Cray Research в 1976 году выпускает первый векторно-конвейерный компьютер CRAY 1, имеющий время такта 12,5 нс, 12 конвейерных функциональных устройств, пиковая производительность составляет 160 миллионов операций в секунду, оперативная память — до 1 М слов (слово — 64 разряда), цикл памяти — 50 нс. Главным новшеством проекта является введение векторных команд, работающих с целыми массивами независимых данных и позволяю- щих эффективно использовать конвейерные функциональные уст- ройства. Иерархия памяти прямого отношения к параллелизму не имеет, однако, безусловно, относится к тем особенностям архитектуры ком- пьютеров, которые имеют важное значение для повышения их про- изводительности (сглаживание различий между скоростью работы процессора и временем выборки из памяти). Основные уровни: реги- стры, кэш-память, оперативная память, дисковая память. Время вы- борки по уровням (от дисковой памяти к регистрам) уменьшается, стоимость в пересчете на 1 слово (байт) растет. В настоящее время по- добная иерархия поддерживается даже на персональных компью- терах. Современная высокопроизводительная техника развивается по четы- рем основным направлениям. 1. Векторно-конвейерные компьютеры. Особенностью таких машин являются, во-первых, конвейерные функциональные устройства и, во-вторых, набор векторных инструкций в системе команд. В отличие от традиционного подхода векторные команды опери- руют целыми массивами независимых данных, что позволяет эф- фективно загружать доступные конвейеры. 11
Введение 2. Массово-параллельные компьютеры с распределенной памятью. Идея построения компьютеров этого класса проста — серийные микро- процессоры снабжаются локальной памятью и соединяются посред- ством некоторой коммуникационной среды. Они обладают свой- ством масштабируемости. Недостатком таких компьютеров является то, что межпроцессорное взаимодействие намного медленнее, чем локальная обработка данных самими процессорами. Сюда же можно отнести и сети компьютеров, которые все чаще рас- сматриваются как дешевая альтернатива очень дорогим суперкомпь- ютерам. 3. Параллельные компьютеры с общей памятью. Вся оперативная память таких компьютеров разделяется между несколькими одинаковыми процессорами. Это снимает проблемы предыдущего класса, но до- бавляет новые: число процессоров, имеющих доступ к общей па- мяти, по чисто техническим причинам нельзя сделать достаточно большим. 4. Компьютеры с кластерной архитектурой. Это направление, строго говоря, представляет собой комбинацию трех предыдущих. Из не- скольких процессоров (традиционных или векторно-конвейерных) и общей для них памяти формируется вычислительный узел. Если полученной вычислительной мощности недост точно, то несколь- ко узлов объединяются высокоскоростными каналами. Данное направление признано наиболее перспективным. В странах СНГ в этом направлении работают Объединенный институт проблем информатики (НАН Беларуси), Институт проблем информатики РАН, МГУ им. М.В. Ломоносова, Белорусский государственный универси- тет, НИИ многопроцессорных вычислительных систем (Таганрог), Сибирский государственный университет телекоммуникаций и ин- форматики (Новосибирск) и др. Влияние многопроцессорных компьютеров на скорость обработки данных может быть выражено законом Амдала. Предположим, что в программе доля операций, которые нужно вы- полнять последовательно, равна/, где 0 </ < 1 (при этом доля пони- мается по числу операций в процессе выполнения). Предельные случаи в значениях / соответствуют полностью парал- лельным (f= 0) и полностью последовательным (f= 1) программам. 12
Введение Для того чтобы оценить, какое ускорение 5 может быть получено на компьютере из р процессоров при данном значении f можно вос- пользоваться законом Амдала: 5<-----------. f + Q-DIP Если 9/10 программы исполняются параллельно, а 1/10 по-прежнему последовательно, то ускорения более чем в 10 раз получить в принци- пе невозможно вне зависимости от качества реализации параллель- ной части кода и числа используемых процессоров. Обратная задача: какую часть кода надо выполнить эффективно, что- бы получить заданное ускорение? Ответ можно найти в следствии из закона Амдала: чтобы уменьшить время выполнения программы в q раз, необходимо ускорить в q и более раз не менее чем (1 - 1/<?)-ю часть программы. Следовательно, чтобы ускорить программу в 100 раз по сравнению с ее последовательным вариантом, необходимо получить ускорение, большее или равное 100, не менее чем на 99,99 % про- граммного кода. Для того чтобы вычислительная система работала с максимальной эффективностью на конкретной программе, необходимо тщательное согласование структуры программы и ее алгоритма с особенностями архитектуры вычислительной системы. 13
Список основных сокращений ADSL — Asymmetric Digital Subscriber Line BIOS — Basic Input—Output System BREQ — Bus Request Signal CD — Compact Disk CF — Compact Flash CISC — Complete Instruction Set Computer COMA — Cache Only Memory Access CRC — Cyclic Redundancy Code (Check) DSM — Distributed Shared Memory EDO — Extended Date Output EMS — Extended Memory System FB — Feedback FIFO — First In, First Out FILO — First In, Last Out FSM — Finite State Machine HD — High Density HDLC — High Level Data Link Control HPF — Highest Priority First IP — Internet Protocol ISA — Industry Standard Architecture ISO — International Organization for Standardization LAN — Local Area Network LD — Low Density LLC — Logical Link Control LRU — Least—Recently Used MAC — Media Access Control MAP — Multi Associative Processor MIMD — Multiple Instruction stream / Multiple Data stream MIPS — Millions of Instructions Per Second MISD — Multiple Instruction stream / Single Data stream MPI — Message Passing Interface MPP — Massively Parallel Processing 14
Список основных сокращений NUMA OSI — Non Uniform Memory Access — Open System Interconnection PCI — Peripheral Compc nent Interconnect РМА — Physical Medium Attachment PS — Physical Signaling PVM — Parallel Virtual Machine RISC — Reduced Instruction Set Computer ROM — Read Only Memory RPC — Remote Procedure Call RR — Round Robin SCI — Scalable Coherent Interface SIMD — Single Instruction stream / Multiple Data stream SISD — Single Instruction stream / Single Data stream SJF — Shortest Job First SMP — Symmetrical Multi Processing SPARC — Scalable Processor Architecture SR — Second hand Resource TCP — Transmission Control Protocol UDP — User Datagram Protocol UMA — Uniform Memory Access USB — Universal Serial Bus VDSL — Very high data rate DSL VLIW — Very Long Instructions Word WAN — Wide Area Network АЛУ — арифметико-логическое устройство AO — арифметическая операция АПА — аппарат преобразования адресов ВнУ — внешнее устройство ВС — вычислительная система ЗУ MBC — запоминающее устройство — многопроцессорная вычислительная система МП — микропроцессор НМД — накопитель на магнитных дисках 15
Список основных сокращений ОЗУ — оперативное запоминающее устройство ОП — оперативная память ОС (OS) — операционная система ПВВ — процессор ввода-вывода ПК — персональный компьютер ПО — программное обеспечение ПУ — периферийное устройство ПЭ — процессорный элемент РОН — регистр общего назначения СК — система команд СКВ — система в коде вычетов СОЗУ — сверхоперативное запоминающее устройство ССП — слово состояния программы УВМ — управляющая вычислительная машина УУ — устройство управления ФУ — функциональное устройство ЦП — центральный процессор ЯВУ — язык высокого уровня ЯП — язык программирования ЯПП — язык параллельного программирования Я ПФ — ярусно-параллельные формы 16
Глава 1 Два подхода к понятию «архитектура» Информатика — развивающаяся наука. Что касается ее названия, то на немецком языке слово «informatik» в данном контексте было впер- вые употреблено в 1968 году федеральным министром Штольтенбер- гом по случаю открытия научной конференции в Западном Берлине, а незадолго до этого слово «informatique» возникло во французском языке. Со временем в голландском языке вошло в употребление слово «informatika», в итальянском — «informatica», в польском — «infor- matyka», в русском — «информатика», в испанском — «informatica». В английском языке, по-видимому, остается термин «computer science» (вычислительная наука), причем этот термин в большей степени от- ражает теоретические аспекты данного направления. Современная информатика является результатом бурного развития исследований в различных областях знаний за последние годы. Но многие ее корни уходят далеко в историю. Можно сказать, что ин- форматика началась с попыток механизировать умственную деятель- ность, что, конечно, не могло быть делом одного человека. Однако во многих отношениях основателем информатики может быть назван Готфрид Вильгельм Лейбниц. В 1678 году Лейбниц занимается символьным языком как средством построения универсальной науки, которая в рамках одного исчисле- ния позволила бы дать ответы на все вопросы простейшим образом и со свойственной математике достоверностью. Сюда же относятся его философские сочинения («Discours de m6taphysique», 1685—1686) и работа над рядом технических проектов. Построена и вычислитель- ная машина (1694), и все же это не было полным успехом, ибо меха- ника была в то время еще недостаточно развита. Лейбниц занимается также двоичной системой счисления. В рукописи на латинском языке, подписанной 15 марта 1679 года, Лейбниц описывает способы вычис- лений в двоичной системе, а позже разрабатывает в общих чертах про- ект вычислительной машины, работающей в этой системе. В много- численных письмах и в трактате «Explication de L’Arithm6tique Binaire» (1703) Лейбниц вновь возвращается к двоичной арифметике. Исторически автоматизация умственной деятельности началась с до- вольно специальных ее видов, таких как цифровые вычисления, про- 17 9 2792
Глава 1. Два подхода к понятию «архитектура» изводимые над арабскими десятичными цифрами, получившими широкое распространение в Европе с начала XVI века, и так называе- мые «вычисления алгоритмических процессов», объектами которых могут служить, например, понятия, формулируемые при помощи символов, или логические высказывания и связки. Набросок подоб- ной программы дал Лейбниц, а при ее полной разработке выяснились сущность и содержание информатики. Сюда же относятся вопросы кодирования, особенно двоичного кодирования, а также интересной смежной области — криптографии. Эта разработка включает в себя и полную автоматизацию процесс/вычислений (чего у Лейбница еще нет), находящую выражение в алгоритмическом мышлении и разви- тую в вопросах синтаксиса и семантики алгоритмических языков. Как всякая прикладная наука, информатика значительно зависит от инженерно-технических возможностей соответствующего времени, и ее развитие происходит параллельно с развитием техники связи, тех- ники автоматического регулирования и управления (механического, электрического или электронного), а также техники реализации за- поминающих устройств, включая устройства считывания и записи. Корень встречающегося во многих языках слова «калькуляция» (счет, вычисление, исчисление) происходит от «счетных камешков» римлян, по-латыни calculi. Римский абак, китайский суан-пан, русские счеты (последние два приспособления употребляются до сих пор) служили для вычислений перемещением счетных марок (камешков, косточек, монет) по направляющим проволочкам. Однако ни этот «счет по ли- ниям», ни вычисления при помощи счетных палочек, на которых на- резались насечки-числа (позднелатинское camputare), не знаменуют собой начала механизации умственной деятельности. Только возник- шие в Индии и пришедшие в Европу от арабов цифры, которые, бу- дучи дополнены нулем, позволили записывать числа в позиционной системе счисления, привели к техническому решению проблемы сче- та, где место счетных косточек заняли зубчики шестеренок. Речь идет об изобретенной Шиккардом в 1623 году суммирующей машине с пе- реносом цифр, причем для умножения можно было пользоваться непе- ровыми счетными палочками, считывая с их помощью кратные дан- ного числа. Проект суммирующей машины Паскаля был реализован к 1645 году. Наконец в 1671—1674 годах Лейбницу удается построить машину, 18
1.1. Вычисления в компьютерах выполняющую все четыре арифметических действия, введя пере- движной челнок-счетчик и применив фиксацию сомножителей при помощи уступчатого валика. Другое техническое решение, зубчатую шестерню, нашел в 1709 году Джованни Полени из Падуи. Около 1726 года Антони Браун в Вене, а затем в 1770-х годах, Филипп Матеус Хан в Эхтердингене создают машины со счетными шестеренками, концентрически расположенными вокруг уступчатого валика, — пер- вые устройства, которыми действительно можно было пользоваться. Эта конструкция возродилась в 1948 году в виде похожей на чётки машины «Curta» швейцарца Курта Хецштарка. В 1666 году англича- нин С. Морлэнд, в 1678 году Грийе во Франции, в 1722 году К. Герстен в Гессене изобретают сумматоры на зубчатых рейках (арифмометры), применяемые до наших дней. Начиная с 1818 года серийное производ- ство арифмометров наладил в Париже Шарль Ксавье Тома и к 1878 году их продано уже около 1500 единиц. Выполнение умножения автоматизируется в 1896 году Чебышевым в Париже, а деление автоматизируется в машине «Madas» по принци- пу, предложенному Александром Рехницером в 1902 году. Печатающее устройство впервые подключается к механической на- стольной счетной машине фирмой Burroughs в 1889 году. Однако ав- томатическое составление печатных матриц предусматривалось еще в машине «difference engine» Чарлза Бэббиджа, проектирование кото- рой начато в 1823 году. Она предназначалась для вычисления таблиц при помощи интерполяции, была доведена в Швеции Г. и Э. Шойца- ми до возможности практического применения и работала в обсерва- тории Дадли в Олбэни (США). 1.1. Вычисления в компьютерах Системы счисления, отличные от десятичной, были довольно при- вычны. Так, например, машина Паскаля в последних двух позициях имела шестеренки с 20 и 12 зубцами в соответствии с делением то- гдашнего ливра на 20 су по 12 денье. Лейбниц в 1679 году описывает в общих чертах машину, работающую с использованием двоичной системы счисления. В 1931 году цифровые шестеренки с восемью позициями патентует Р. Вальта во Франции. Конрад Цузе в 1933 году решил использовать 19
Глава 1. Два подхода к понятию «архитектура» двоичную систему счисления как естественное следствие примене- ния электромагнитных реле, которые могут находиться в двух состоя- ниях (якорь опущен или поднят). В 1936 году Л. Куффиньяль и Р. Вальта во Франции, Э. Филлипс в Англии указывают на преимущества двоичных вычислений для построения механических вычислительных устройств. Последний демонстрировал механическую модель для умножения в двоичной системе счисления и рекомендовал использовать для числовых таб- лиц восьмеричную систему. Электронные счетчики, работающие в двоичной системе, исполь- зовал К. Уинн-Уильямс в 1931 году. Джон фон Нейман вместе с X. Голдстайном применили двоичную систему в проекте «Прин- стонской машины», отчет о котором получил широкое распростра- нение в 1946—1948 годах. Разработка, начатая в 1945 году Вумерсли и Хартри в Англии, основана на применении «внутри» двоичной системы, а «снаружи» — восьмеричной. Другие английские разра- ботки (Уилкс, Бут, Уильямс и Килбэрн) ориентировались на двоич- ную систему счисления, а в США разработки, начатые X. Айкеном, Дж. Штибицом, Дж. Эккертом, Дж. Маучли, а также У. Эккертом, использовали десятичную систему. Конрад Цузе ввел «полулогарифмическую форму», называемую сего- дня представлением чисел с плавающей точкой, осознавая, что порядок числа удобнее представлять его логарифмом. В первом устройстве К. Цузе Z1 было семь двоичных разрядов для порядка и шестнадцать двоичных разрядов для мантиссы. Эта идея с запозданием проникла в США и Англию, если не считать модели Штибица (1947) на элек- тромагнитных реле. Аппаратная реализация операций над числами с плавающей точкой снова появляется в шведской разработке BARK, в советских разработках БЭСМ, «Стрела» и др., а также в мюнхен- ской PERM и цюрихской ERMETH. Введение букв для обозначения произвольных математических объ- ектов — это значительный вклад в развитие математики, который внесла индийская математика раннего средневековья. Лейбниц не- сколько десятилетий подряд развивал идею символьного представле- ния смысла понятий, которое позволило бы проводить вычисления над ними. В трактате «Об универсальном знании, или философском исчислении», написанном около 1680 года, он выражает надежду, что 20
1.1. Вычисления в компьютерах когда-нибудь научные споры можно будет разрешать посредством вычислений. Лейбниц пытался сопоставлять понятиям числа, При этом отношение подчинения понятий должно было выражаться от- ношением делимости чисел. В современной терминологии, Лейбниц ввел структуру понятий. Чарлз Бэббидж в проекте своей аналитической машины, содержащей арифметическое устройство, память, устройство ввода и устройство печати, предусмотрел управляющие устройства, реализующие управ- ление в зависимости от текущего результата вычислений. X. Бэббидж (сын Ч. Бэббиджа) усовершенствовал отдельные части машины так, что смог вычислить таблицу чисел, кратных л. Леди Лавлейс, ученица Бэббиджа, убедительно показала, что машину Бэббиджа нельзя ставить в один ряд с простыми «счетными машина- ми» — «... она занимает совершенно особое место... среди механиз- мов, предоставляющих возможность комбинировать произвольные символы». Перси Ладгейт (1909) понял значение условных переходов и ввел трехадресные команды. В табулирующих машинах (1936 год, тип гер- манского Холлерита) и фактурных машинах, а также в связанной со счетной машиной пишущей машинке Торреса-и-Квебедо (1910) мож- но найти первые попытки программирования. К. Цузе к 1941 году удалось построить первую действующую вычисли- тельную машину с программным управлением (модель Z3). В 1942 году в лаборатории Bell Telephon была сдана в эксплуатацию вычислитель- ная машина на электромагнитных реле, которую разработал Джордж Штибиц. В 1944 году правительство США приняло в эксплуатацию вычислительную машину Mark I, созданную X. Айкеном. Первая вы- числительная машина на электронных лампах ENIAC Дж. Эккерта и Дж. Маучли, проектирование которой велось с 1943 года, начала функционировать в 1946 году. Эти устройства не достигли той уни- версальности, которой обладал проект К. Цузе. Основополагающая идея вычислительной машины, управляемой раз- мещенной в ее памяти программой, впервые описана Джоном фон Нейманом и его сотрудниками Дж. Маучли и Дж. Эккертом 30 июня 1945 года. Она была развита Морисом Уилксом, который в мае 1949 года сдал в эксплуатацию первую вычислительную машину EDSAC. 21
Глава 1. Два подхода к понятию «архитектура» В 1944 году Маучли, Эккерт и Голдстайн ввели принцип последова- тельных вычислений, применив одноразрядный сумматор для после- довательного суммирования «-разрядных чисел. В 1948 году С.А. Лебедев (СССР) независимо от Дж. фон Неймана обосновал принцип построения ЭВМ с хранимой в памяти про- граммой. Первая в СССР цифровая вычислительная машина (ЦВМ) МЭСМ создана в 1951 году под руководством С.А. Лебедева. В 1952 году появилась ЭВМ М-1 (руководители И.С. Брук, Н.Я. Матюхин), а в 1953 году — ЭВМ «Стрела» (создатели Ю.Я. Базилевский, Б. И. Ра- меев). В 1955 году в СССР организован первый ВЦ АН СССР (ди- ректор А.А. Дородницин). В 1958 году в СССР создана первая и единственная в мире ЭВМ «Се- тунь» (Н.П. Брусенцов), работающая в троичной системе счисления с симметричным представлением цифр, а также первая ЭВМ, приме- няющая систему в коде вычетов (И.Я. Акушский, Д.И. Юдицкий). Чтобы понять принцип действия ЦВМ, рассмотрим процесс вычис- лений, пользуясь обычным арифмометром. Вначале на листе бумаги выпишем исходные данные, формулы рас- чета и приготовим таблицу для занесения промежуточных и конеч- ных результатов. В процессе вычислений с листа бумаги переносим на регистры арифмометра числа, участвующие в очередной опера- ции, выполняем на арифмометре нужную операцию в соответствии с расчетной формулой, и полученный результат переписываем с ре- гистра арифмометра в таблицу на листе бумаги. В этом процессе арифмометр выполняет арифметические операции над числами, которые человек в нее вводит. Лист бумаги служит за- поминающим устройством, хранящим программу вычислений (рас- четные формулы), исходные данные, промежуточные и конечные результаты. Человек осуществляет управление процессом вычисле- ний, переносом информации с листа бумаги в счетную машину и об- ратно, заставляет машину (арифмометр) выполнять необходимую операцию и выбирает нужный вариант продолжения процесса вы- числений в зависимости от результата, полученного на очередном этапе счета. Если эту механическую машину заменить электронным арифмети- ческим устройством, существенно ускорится процесс выполнения 22
1.1. Вычисления в компьютерах арифметических операций. Однако принципиальный эффект будет достигнут, если к электронному быстродействующему арифметиче- скому устройству добавить быстродействующую память, которая, как лист бумаги при расчете, хранит программу вычислений, исходные данные, промежуточные и конечные результаты, а также быстродей- ствующее управляющее устройство, производящее необходимый для реализации программы вычислений обмен числами между памятью и арифметическим устройством и инициирующее последнее на вы- полнение необходимой операции. Если комплекс такой аппаратуры дополнить средствами связи с внеш- ним миром, то есть устройствами ввода в память данных и программы вычислений, а также устройствами вывода результатов вычислений, то придем к классической блок-схеме ЦВМ, изображенной на рис. 1.1. Рис. 1.1. Блок-схема цифровой вычислительной машины ЦВМ содержит следующие основные устройства: арифметическое уст- ройство (АУ), память (запоминающее устройство — ЗУ), устройство управления (УУ), устройство ввода данных в машину (Вв) и вывода из нее результатов расчета (Выв) и пульт ручного управления (ПУ) (клавиатуру). Арифметическое устройство производит арифметические и логические операции над поступающими в него данными. 23
Глава 1. Два подхода к понятию «архитектура» Память (запоминающее устройство) хранит информацию, передавае- мую в него из других устройств, в том числе поступающую в машину извне через устройство ввода, и выдает во все другие устройства ин- формацию, необходимую для продолжения вычислительного процесса. Память машины, как правило, состоит из двух частей: быстродействую- щего оперативного запоминающего устройства (ОЗУ) и сравнительно медленнодействующего, но способного хранить значительный объем информации внешнего запоминающего устройства (ВЗУ). ОЗУ состоит из ячеек, каждая из которых служит для хранения ма- шинного слова, то есть кода определенной длины, представляющего число или другой тип информации. Номера ячеек называются их ад- ресами. Запоминающие устройства используются для считывания хранимой в них информации с целью передачи в другие устройства и записи ин- формации, поступающей из других устройств. При считывании слова из ячейки содержимое последней не меняется и при необходимости слово может быть снова выбрано из той же ячейки. При записи хра- нившееся в ячейке слово стирается и его место занимает новое слово. Объем запоминающего устройства определяется количеством храни- мых слов, а его быстродействие — временем обращения, то есть про- должительностью операции записи или считывания нужного слова. Для сокращения потерь времени при вычислениях быстродействие ОЗУ должно соответствовать скорости работы электронного АУ. Многие задачи требуют памяти большого объема для хранения необ- ходимой информации, однако технически трудно и дорого строить быстродействующее ЗУ большой емкости. В связи с этим ЦВМ, кроме ОЗУ, содержит внешнее запоминающее устройство, способное хра- нить большой объем информации. ЦВМ выполняет вычисления только надданными, хранящимися в опе- ративном запоминающем устройстве, и лишь после окончания от- дельных этапов вычислений из ВЗУ в ОЗУ передается информация, необходимая для последующих этапов решения задачи. Если быстродействие ОЗУ оказывается недостаточным для получе- ния нужной скорости работы машины, между АУ и ОЗУ размещают сверхоперативное запоминающее устройство (СОЗУ) на несколько де- сятков или сотен слов (рис. 1.1). Ячейки СОЗУ хранят главным обра- 24
1.2. Архитектура как набор взаимодействующих компонент зом промежуточные результаты и другую информацию, многократно используемую на текущем этапе вычислений. Устройство управления автоматически управляет вычислительным про- цессом, посылая всем другим устройствам сигналы, предписываю- щие им те или иные действия. В частности, оно указывает ОЗУ, какие слова должны быть переданы в АУ и в другие устройства, инициирует АУ на выполнение нужной операции и помещает полученный ре- зультат в ОЗУ, базируясь на принципе программного управления. Как уже отмечалось, идея программного управления ЦВМ была су- щественно развита американским математиком Джоном фон Нейма- ном, который в 1945 году сформулировал принцип хранимой в памяти программы. Правда, некоторые исследователи считают, что данный принцип принадлежит создателям компьютера ENIAC — инженерам Моучли и Эккерту. Согласно этому принципу, программа, закодированная в цифровом виде, хранится в памяти ЦВМ наравне с числами. В ко- мандах указываются не сами участвующие в операциях числа, а адреса ячеек ОЗУ, в которых они находятся, и адреса ячеек, куда помещают- ся результаты операции. Поскольку программа хранится в памяти, одни и те же команды могут нужное количество раз извлекаться из памяти и выполняться, а так как команды представляются в машине в форме чисел, то над командами, как над числами, машина может производить операции. При помощи пульта управления (клавиатуры) оператор запускает и ос- танавливает машину, а при необходимости может вмешиваться в про- цесс решения задачи. 1.2. Архитектура как набор взаимодействующих компонент Серийно выпускаемые, надежные и дешевые, сверхбольшие инте- гральные схемы (СБИС), массовое производство микропроцессоров, возобновившийся интерес к разработке языков программирования и программного обеспечения порождают возможность при проекти- ровании компьютеров качественно продвинуться вперед за счет улучшения программно-аппаратного интерфейса, то есть семантиче- ской связи между возможностями аппаратных средств современных 25
Глава 1. Два подхода к понятию «архитектура» компьютеров и их программного обеспечения. Организация вычис- лительной системы на этом уровне лежит в основе понятия «архитек- тура». Для неспециалистов в области программного обеспечения термин «архитектура» ассоциируется, как правило, со строительными объек- тами. И здесь, действительно, как увидим далее, есть много общего. В самом деле, архитектура компьютера, характеризующая его логи- ческую организацию, может быть представлена как множество взаи- мосвязанных компонент, включающих, на первый взгляд, элементы различной природы: программное обеспечение (software), аппаратное обеспечение (hardware), алгоритмическое обеспечение (brainware), спе- циальное фирменное обеспечение (firmware) — и поддерживающих его слаженное функционирование в форме единого архитектурного ансамб- ля, позволяющего вести эффективную обработку различных объектов и своих данных. С другой стороны, архитектура может быть определена как абстракт- ное многоуровневое представление физической системы с точки зрения программиста, с закреплением функций за каждым уровнем и установле- нием интерфейса между различными уровнями. В зависимости от типов данных и операций, поддерживаемых hardware, можно рассматривать архитектуру системы на различных уровнях. Первые компьютеры поддерживали только один тип данных — целые числа со знаком, что требовало от программиста колоссальных уси- лий по организации вычислений, например масштабирование чисел. С появлением языка FORTRAN, определившим два типа данных — real и integer, возникла необходимость аппаратной реализации этих типов данных. Сегодняшние компьютеры аппаратно поддерживают разно- образные типы данных — от битовых последовательностей до ато- марных объектов машинной графики (пикселов), контролируя при этом допустимость выполнения тех или иных операций над данными определенного типа. Знание особенностей разнообразных архитектурных решений дает пользователям компьютеров возможность эффективно распоряжать- ся всеми предоставляемыми ресурсами, осуществляя их направлен- ный выбор и тем самым повышая эффективность обработки данных. Ранее область применения вычислительных систем (ВС) определя- лась их быстродействием. Однако существует достаточно большое количество ВС, обладающих равным быстродействием, но имеющих 26
1.2. Архитектура как набор взаимодействующих компонент различные способы представления данных, методы организации па- мяти, режимы работы, системы команд, наборы внешних устройств и т.д. Таким образом, ВС имеет, кроме быстродействия, ряд других характеристик, существенно важных в той или иной области приме- нения. Это стало особенно заметно при переходе к ВС четвертого и пятого поколений. Совокупность таких характеристик и легла в ос- нову понятия архитектуры ВС. Архитектура ВС определяет основные функциональные возможности си- стемы, сферу применения (научно-техническая, экономическая, управ- ление и т.д.), режим работы (пакетный, мультипрограммный, разделения времени, диалоговый и т.д.), характеризует параметры ВС (быстродей- ствие, набор и объем памяти, набор периферийных устройств и т.д.), особенности структуры (одно-, многопроцессорная) и т.д. Понятие «архитектура» можно представить следующей схемой (рис. 1.2). Рис. 1.2. Архитектура ВС Вычислительные и логические возможности ВС. Они обусловливаются системой команд (СК), характеризующей гибкость программирования, форматами данных и скоростью выполнения операций определяющих класс задач, наиболее эффективно решаемых на ВС. Система команд 27
Глава 1. Два подхода к понятию «архитектура; ВС, базирующихся на архитектуре фон Неймана, сегодня мало чем отличается от СК ЭВМ 50-х годов прошлого века. Большинство дос- тижений в этой области остались незамеченными проектировщиками и, соответственно, не нашли адекватного воплощения в архитектуре современных компьютеров. Анализ показывает, что в различных программах чаще всего встреча- ются достаточно простые команды: команды пересылки и команды процессора с использованием регистров и простых режимов адреса- ции. Не нашли широкого применения и нетрадиционные способы кодирования данных, несмотря на их значительные возможности при разработке быстродействующих алгоритмов арифметических опера- ций и повышении надежности вычислений (например, знакоразрядные системы, системы в коде вычетов и др.). Рассмотрим структуру системы команд в зависимости от класса ре- шаемых задач (рис. 1.3). 1. Операции над числами с фиксированной точкой 2. Операции над числами с плавающей точкой Экономи- ческие Z задачи ' Задачи > управления' 3. Операции управления Научно- технические задачи Универсальный набор команд 4. Операции десятичной арифметики Рис. 1.3. Классификация СК по назначению К операциям управления отнесем команды ввода-вывода данных и команды управления состоянием процессора, памяти и каналов. Как видно из рис. 1.3, для решения задач любого класса необходимы команды типов 2 и 3. Следовательно, эти типы команд должны при- сутствовать в любом компьютере. Большое влияние на точность выполнения операций оказывают фор- маты данных. Современные компьютеры имеют развитую систему форматов. Например, компьютеры ЕС ЭВМ и IBM имеют форматы в 2, 4, 8 и 16 байт. 28
1.2. Архитектура как набор взаимодействующих компонент Алгоритмы выполнения операций достаточно полно отражают про- изводительность только однопроцессорных ВС. Аппаратные средства. Простейшая ВС включает модули пяти типов: центральный процессор, основная память, каналы, контроллеры и внешние устройства. Процессор (устройство управления (УУ) + арифметико-логическое устройство (АЛУ) + память) управляет работой системы и обеспечи- вает вычисления непосредственно по заданной программе. Инициа- лизация и выполнение машинных команд, команд ввода-вывода (I/O — Input/Output), обращение к памяти, управление состоянием устройств производятся с помощью процессора. Основная память предназначена для хранения команд и данных и обес- печивает адресный доступ к ним от процессора. Современная память работает со скоростью, близкой к скорости работы процессора. Каналы — специальные устройства, управляющие обменом данных с внешними устройствами. Каналы инициируют свою работу с помо- щью процессора и затем переходят в автономный режим работы. Это, по сути, специальный процессор (спецпроцессор) ввода-вывода, обес- печивающий работу внешних устройств, контроль информации и т.д. Контроллеры ввода-вывода служат для подсоединения внешних уст- ройств (ВнУ) к каналам и обеспечивают обмен управляющей информа- цией с внешними устройствами, присвоение приоритетов и выдачу информации о состоянии ВнУ для канала, то есть это устройства управления ВнУ. ВнУ предназначены для ввода-вывода инфор- мации с различных носителей. Память может быть организована как много- уровневая с различным объемом, стоимостью хранения данных в расчете на 1 бит и временем доступа к ней: внутренние регистры процессора (ВнР), сверхоперативная (СОЗУ), оперативная (ОП), внешняя (ВнП) (рис. 1.4), так и одно- уровневая, виртуальная. Почти всегда вирту- альная память есть переупорядоченное подмно- жество реальной памяти. 29
Глава 1. Два подхода к понятию «архитектура» Более высокий уровень памяти быстрее, меньше по объему в пере- счете на бит, чем более низкий ее уровень. Кэш-память является компромиссом между стоимостью памяти и ее объемом за счет дина- мического копирования в быстродействующее ЗУ наиболее часто используемой информации из медленного ЗУ. Уровни иерархии памяти взаимосвязаны между собой: все данные одного уровня могут быть найдены на более низком уровне. Найденные или ненайденные на соответствующем уровне данные, то есть успешное или неуспешное обращение к уровню памяти, называ- ют соответственно попаданием (hit) или промахом (miss), а соответст- вующее время — временем обращения (hit time или miss penalty). Существенное влияние на производительность ВС оказывают каналы ввода-вывода. Мультиплексный канал обеспечивает работу группы медленных устройств, блок-мультиплексный — группы быстрых уст- ройств, селекторный — занимает информационную магистраль толь- ко одним быстродействующим устройством. Для повышения пропускной способности каналов используют неко- торые дополнительные меры, например буферизацию ВнУ путем введения памяти в состав самого устройства или контроллера. Аппаратные средства защиты памяти служат для управления доступом к различным областям памяти, в соответствии с имеющимися у поль- зователя полномочиями. Программное обеспечение является составной частью архитектуры компьютера и существенно влияет на весь вычислительный процесс, в частности позволяет эффективно эксплуатировать аппаратные средства системы. Операционная система (ОС) управляет ресурсами, разрешает кон- фликтные ситуации, оптимизирует функционирование системы в це- лом, поддерживает дружественный интерфейс с пользователем. Широкий спектр языков программирования позволяет описывать прак- тически любые задачи, а разнообразие компиляторов — эффективно их реализовывать. Продуманный выбор языка программирования и ОС существенно влияет на время решения задачи. Так, например, программа на языке Pascal работает примерно в четыре раза медленнее, чем программа 30
1.3. Архитектура как интерфейс между уровнями физической системы для той же задачи на языке C++ под управлением Windows. В ОС Linux эта же программа на языке C++ будет выполняться еще быстрее, так как язык С является внутренним языком данной ОС и все ее функ- ции оптимизированы для данного языка. Кроме широко распространенной в Беларуси ОС Windows в последнее время начинают использовать различные разновидности ОС UNIX. Среди них: ► AIX — версия IBM, запускаемая на RISC-системах серии RS/6000 и на мэйнфреймах; ► HP — UNIX-версия Hewlett-Packard; ► Solaris — версия Sun Microsystems; ► SVR4 — хорошо распространяется на компьютерном рынке. Мно- гие разновидности ее происходят от System V Release 4; ► LINUX — бесплатная и хорошо функционирующая разновидность UNIX; ► Sun OS — хорошая версия, однако в значительной степени вытес- няется ОС Solaris. Роль программного обеспечения (ПО) особенно значительна при ре- шении прикладных задач. Важными являются методы и технологии проектирования программ, позволяющие сокращать время реализа- ции задачи от ее постановки до решения. 1.3. Архитектура как интерфейс между уровнями физической системы Применительно к ВС термин «архитектура» может быть определен как распределение по различным уровням функций, выполняемых сис- темой, и установление интерфейса между этими уровнями. На рис. 1.5 представлен набор уровней абстракции как специфического свойст- ва архитектуры ВС. Остановимся лишь на ключевых уровнях. Архитектура первого уровня определяет набор функций по обработке данных, решаемых системой, а также функций, выполняемых вовне системы — пользователем, оператором ЭВМ, администратором баз данных и т.д. Система взаимодействует с внешним миром через два 31
Глава 1. Два подхода к понятию «архитектура. Прикладные программы пользователей -(г)------------------- 5 «Языковые» процессоры ---------®— Управление ресурсами на логическом уровне ------©-------- -------------(£)— Управление ресурсами на физическом уровне и----@— Дч Выполнение программы -----®-------1-------1----- Процессоры (б) ввода-вывода -----------------а" Контроллеры (б) --------®---------L- Каналы связи и внешние устройства Контроллеры (б) ------(Й)-----L- Память х Я Аппаратные средства Рис. 1.5. Многоуровневая организация архитектуры ВС набора интерфейсов: языки (язык программирования, язык оператора терминала, язык управления заданиями, язык общения с базой данных, язык оператора ЭВМ) и системные программы (программы редактиро- вания, связи, оптимизации, восстановления и обновления информа- ции, интерпретации, управления и т.д., то есть программы, созданные разработчиком системы). Оба интерфейса создаются в процессе раз- работки архитектуры системы. Уровни, определяемые интерфейсами внутри программного обеспе- чения, могут быть представлены как архитектура программного обес- печения. К примеру, если прикладные задачи реализованы на языках программирования, отсутствующих в наборе языков, предоставляе- мых системой пользователю, то здесь речь может идти об архитектуре уровня, позволяющего определить указанные языки. Уровень 5 является одним из центральных уровней архитектуры и проводит разграничение между системным программным и аппа- ратным (то есть схемным и микропрограммным) обеспечением. Он позволяет представить физическую структуру системы независимо от способа реализации. 32
1.3. Архитектура как интерфейс между уровнями физической системы Остальные уровни отражают интерфейсы и распределяют функции между отдельными частями физической системы. Таким образом, можно сказать, что архитектура компьютера — это абстрактное представление физической системы с точки зрения про- граммиста. Процесс проектирования архитектуры ВС включает все этапы созда- ния типовых проектов: ► анализ требований, предъявляемых к системе; ► составление спецификаций; ► изучение известных решений; ► разработка функциональной схемы; ► разработка структурной схемы; ► отладка проекта; ► оценка проекта; ► апробация (опытная эксплуатация), включая и сопровождение; ► серийное производство на базе созданной архитектуры. При анализе требований, например, учитывается спектр необходимых языков программирования, способ взаимодействия с окружающей средой, требования к операционной системе, некоторые технико-эко- номические факторы — предполагаемое количество таких систем (ибо это существенно влияет на соотношение между аппаратным и про- граммным обеспечением), совместимость разрабатываемой системы (по языкам программирования, операционным системам, форматам данных, техническим устройствам) с существующими аналогичными вычислительными системами и т.д. При анализе требований и составлении перечня спецификаций пара- метров системы необходимо разработать критерии (с их весовыми коэффициентами), определяющие стоимость, надежность, защиту от несанкционированного доступа, совместимость и т.д., и описать функ- ции системы в соответствии с этими критериями. В спецификациях учитывается и существующий или достижимый технологический уровень для производства системы. Естественно, что возникающие противоречивые требования должны быть разрешены в соответствии с приоритетами или на другой основе. 33 О 2792
Глава 1. Два подхода к понятию «архитектура» На этапе разработки функциональной схемы в первую очередь решает- ся вопрос о разграничении функций между аппаратурой и программ- ным обеспечением, а также между другими уровнями архитектуры. Здесь же определяются необходимость работы с плавающей или фик- сированной точкой, приоритетные прерывания, стековая организа- ция памяти и т.д. При структурной организации все вопросы детализируются и углуб- ляются. В частности, здесь решаются проблемы типов и форматов команд, способов представления данных, способов адресации, се- мантики языка. По завершении проекта осуществляется его отладка, согласование взаимодействия отдельных уровней и оптимизация, например, по количеству бит, пересылаемых между процессором и памятью при выполнении данной программы, отыскание эффективного метода кодирования команд и числовой информации и т.д. При оценке проекта учет только быстродействия (которое иногда по- нимается как производительность) недостаточен. Здесь необходимо учитывать также время, требуемое на разработку программы. Исполь- зуя известные статистические сведения о том, что преобладающее количество разработанных программ выполняется только один раз, простота программирования при оценке архитектуры может оказать- ся важнее скорости выполнения команд. Однако скорость выполнения операций — достаточно важный пара- метр. Быстродействие, естественно, зависит как от технологической элементной базы, влияющей на скорость обработки данных, так и от архитектуры машины, которая определяет объем выполняемых ра- бот. Часто архитектуры сравниваются по критерию эффективности обработки информации. Для этого, как правило, анализируются сле- дующие параметры: S — размер программы, определяемый длиной команд, размером косвенных адресов, объемом рабочих областей для временного раз- мещения данных; JV? — количество бит, передаваемых между процессором и памятью машины (пересылка между регистрами) за время выполнения про- граммы, характеризующее интерфейс, то есть «полосу пропускания» 34
1.3. Архитектура как интерфейс между уровнями физической системы между процессором и памятью, что в значительной степени опреде- ляет предел эффективности выполнения программ. Ясно, что параметр должен учитывать и локальность ссылок, то есть близость располо- жения в памяти используемых данных; NR — количество бит, передаваемых между внутренними регистрами процессора за время выполнения программы. Здесь учитываются те пересылки, которые не охватывает параметр Np. Величина NR в зна- чительной степени определяется набором функций, воплощенных в АЛУ и в схемной реализации процессора. Иногда архитектуры сравнивают лишь по параметрам S и Np, исклю- чая параметр NR, тем самым игнорируя внутреннюю организацию процессора. Опытная эксплуатация позволяет сопровождать различные компо- ненты архитектуры, выявлять неточности, модифицировать, совер- шенствовать и уточнять отдельные аспекты. Серийное производство позволяет создавать стереотип мь шления определенной группы разработчиков и пользователей в области соз- дания архитектур компьютеров. Иногда в перечень последовательности проектирования включают и этап вывода проекта из эксплуатации, состоящий в полной его за- мене новой или модернизированной версией. Во многом качество реализации проекта зависит от подбора команды разработчиков. Например, кодекс разработчиков программных проек- тов был создан объединенной специальной комиссией IEEE Computer Society/ASM, входящей в организацию по обеспечению этики про- граммирования и профессиональной практики (Software Engineering Ethics and Professional Practices — SEEPP). Этот документ включает следующие принципы: ► общественные интересы — действия программистов должны соот- ветствовать общественным интересам; ► клиент — программисты должны максимально учитывать требова- ния работодателя, но при этом соблюдать общественные интересы; ► продукт — программисты должны быть уверены в том, что разра- батываемые ими проекты (и их модификации) соответствуют самым высоким профессиональным стандартам; 35
Глава 1. Два подхода к понятию «архитектура» ► критицизм — программисты должны придерживаться целостности и независимости своих суждений, формируя здоровый профессио- нальный критицизм мышления; ► менеджмент — менеджеры, управляющие группами разработчи- ков, обязаны придерживаться этических норм в процессе разработки и сопровождения продукта; ► профессионализм — программисты обязаны быть честными и под- держивать репутацию профессионалов, не забывая о соблюдении об- щественных интересов; ► коллегиальность — программисты должны поддерживать своих кол- лег, помогать им в их профессиональной деятельности, в частности в освоении современных методик работы; рассматривать работу дру- гих членов коллектива объективно, не препятствовать карьерному росту коллег; ► самосовершенствование — постоянно повышать свою квалифика- цию на всех этапах разработки, способствуя тем самым созданию на- дежного, безопасного и полезного ПО за разумное время, подготовке документации в хорошем стиле; изучать соответствующие стандарты и правовые нормы; помнить, что ошибки в программном коде несо- вместимы со званием программиста-профессионала. Перечисленные требования к разработчикам ПО можно перенести и на разработчиков других проектов, в частности на проектировщи- ков новых архитектур. 1.4. Семантический разрыв Все характерные особенности архитектуры большинства сегодняш- них компьютеров появились уже к 1960 году. Среди них — индекс- ные регистры, регистры общего назначения, данные в форме с пла- вающей точкой, косвенная адресация, программные прерывания, асинхронный ввод-вывод, виртуальная память, мультипроцессорная обработка. Сегодняшние компьютеры отличаются от прежних в основном лишь стоимостью, надежностью, быстродействием и элементной базой. Кон- цептуальные возможности не претерпели существенных изменений. 36
1.4. Семантический разрыв При анализе особенностей архитектурных решений возникают сле- дующие вопросы: ► оптимальны ли на все времена архитектурные решения, предло- женные в 50—60-х годах прошлого века? ► достаточные ли изменения претерпела технологическая база (ап- паратная и теоретико-концептуальная), чтобы считать оправданны- ми изменения архитектуры компьютеров? Рассмотрим архитектурные решения, базирующиеся на концепции фон Неймана, и в первую очередь различия принципов, положенных в основу современных языков программирования (ЯП) высокого уровня, и принципов, определяющих архитектуру ЭВМ. Различие этих принципов известно как семантический разрыв. Как правило, современные компьютеры имеют нежелательно большой семантический разрыв между объектами и операциями, описывае- мыми в ЯП, и объектами манипулирования и соответствующими опе- рациями, реализуемыми архитектурой ВС. Обобщая, можно говорить о семантическом разрыве между архитектурой машины и средой исполь- зования. Как следствие такого семантического разрыва возникает ряд других проблем: высокая стоимость разработки ПО, его ненадежность, боль- шой объем программ, сложность компиляторов и ОС, наличие отсту- плений от правил построения ЯП. Для уяснения семантического разрыва можно проанализировать взаи- мосвязи между ЯП (например, Pascal, C++, Java, PL/1) и архитекту- рой компьютера (например, архитектурными решениями наиболее распространенных в Беларуси компьютеров фирмы IBM) и оценить «расстояние» между принципами, положенными в основу ЯП, и со- ответствующими принципами, положенными в основу архитектуры компьютера. Попробуем в качестве примера сравнить несколько основополагаю- щих принципов языка PL/1, широко используемых в ВС, с идеологи- ей mainframe и определить их адекватность принципам, заложенным в IBM 370. Массивы. Это наиболее часто используемый тип организации дан- ных. PL/1 позволяет использовать многомерные массивы, обращение к отдельным элементам массива посредством индексов, операции 37
Глава 1. Два подхода к понятию «архитектура» над целыми массивами, обращение к отдельным подмассивам внутри массива, соединение массивов, защиту от выхода за пределы соответ- ствующего массива. Исследование архитектуры IBM 370 показывает, что в ней нет средств, адекватных описываемым принципам работы с массивами, за ис- ключением разве что примитивного подобия одного из принципов языка — использование индексных регистров. Следовательно, реали- зация принципа организации данных в виде массива возлагается на компилятор, в распоряжении которого имеется лишь набор команд IBM 370, весьма далекий по своим возможностям от задач, возни- кающих при работе с массивами. Структуры. Это второй из часто используемых типов организации данных в виде наборов разнородных элементов данных (в некоторых ЯП называемых записями). И здесь в системе IBM 370 отсутствуют средства, адекватные структурам и операциям над ними. Строки. В PL/1 используются строковые данные (или просто строка). Допустимые операции — слияние, выделение заданной части (под- строки), поиск строки по заданной подстроке, определение длины текущей строки, проверка присутствия одной строки в другой строке. Подобные возможности в системе команд IBM 370 не предусмотрены. Более того, задача манипулирования строками бит (возможность, пре- доставляемая PL/1) осложняется еще и тем, что в IBM 370 допускается адресация к группам из 8 бит, то есть к байтам. И опять-таки все это требуется реализовывать через компилятор, что существенно услож- няет его работу. Процедуры. При вызове процедуры требуется сохранить состояние теку- щей процедуры, динамически назначить память для локальных пере- менных вызванной процедуры, передать параметры и инициализи- ровать выполнение вызванной процедуры. Что же для реализации этого имеется в архитектуре IBM 370? Только команда BALR (переход с возвратом). Но вклад этой команды в реализацию операций вызова процедуры настолько мал, что ее отсутствие осталось бы незамечен- ным. Компилятор вполне мог бы заменить ее двумя командами: LA (загрузка адреса) и BR (переход безусловный). Ясно, что эти трудности по несоответствию принципов ЯП и архи- тектуры должны реализовываться за счет сложного компилятора. 38
1.4. Семантический разрыв Важно также сравнить имеющийся семантический разрыв с частотой использования соответствующих операций, предоставляемых ЯП. Из литературы известно, что 45 % всех арифметических операторов имеют дело с массивом или элементом массива, 16 % всех выпол- няемых операторов языка высокого уровня — это обращение к под- программам-процедурам, подпрограммам-функциям и операторы возврата. Компилятор с ЯП Fortran, например, тратит до 15 % време- ни своей работы на установление связей между подпрограммами. Другие исследования показывают, что 19 % всех операторов програм- мы составляют операторы CALL, RETURN, PROCEDURE. Подобным образом можно проанализировать семантический разрыв между архитектурой компьютера и операционной системой. В част- ности, понятие процесса как принципа обработки в системах парал- лельного действия никак не отражается в архитектуре компьютера, а все вопросы, связанные с синхронизацией процессов, решаемые через семафоры, критические секции, мониторы и передачи сообще- ний, не нашли своего воплощения в интерфейсе ЭВМ. Значительный разрыв существует между архитектурой ЭВМ и прин- ципами построения программного обеспечения. Известно, напри- мер, что около 50 % всех ресурсов тратится на тестирование и отладку программ, однако архитектура ЭВМ дает ничтожные средства для этого, хотя для обеспечения надежности аппаратных средств созда- ются весьма существенные разработки. Семантический разрыв между архитектурой и организацией памяти программисту заметить труднее. Однако такой вопрос, как разный тип адресации в зависимости от места хранения данных, проанали- зировать достаточно просто. Действительно, оперативная память адресуется линейным смещением, добавляемым к адресу, хранимому в специальном регистре, а для данных на магнитном диске использу- ются номер диска, цилиндра, дорожки и линейное смещение в преде- лах записи. То же имеем и при выполнении операции. Так, операция умножения может быть выполнена непосредственно, если оба опе- ранда находятся в ОП, если же они находятся на магнитном диске, то необходимо предварительно загрузить их в оперативную память. А по- скольку эти принципы не заложены в архитектуре, имеющийся разрыв программистам при создании ЯП приходится обходить за счет моде- лирования организации памяти. Виртуальная память создает лишь иллюзию решения проблемы. 39
Глава 1. Два подхода к понятию «архитектура» Изложенные и другие проблемы семантического разрыва, не раз- решенные в архитектуре компьютера, ухудшают надежность про- граммного обеспечения, увеличивают непроизводительные затраты и перекладывают их разрешение на компилятор, а последний, как правило, на плечи прикладного программиста из-за отсутствия удач- ных и оптимальных решений компиляции. Это, например, происхо- дит при обращении к переменной, значение которой не определено, или к элементу массива, один из индексов которого выходит за соот- ветствующие пределы. Семантический разрыв требует для своего разрешения через компи- лятор значительных затрат машинного времени и памяти. Так, компилятор языка PL/1 фирмы IBM генерирует 17 машинных команд для реализации оператора сложения двумерных массивов: C(I,J) = A(I,J)+B(I,J), где А, В и С — массивы двоичных элементов одинакового размера в форме с фиксированной точкой. Если подсоединяется средство контроля данной операции, то ком- пилятор генерирует уже 75 машинных команд, а время выполнения оператора вырастает в три раза. При реализации на более быстродей- ствующей машине соответствующего аппаратного контроля можно избежать затрат дополнительной памяти и времени. Здесь впору упомянуть об экономии памяти для хранения сгенериро- ванных компилятором команд (объектного кода), а также обсудить объем пересылок между памятью и процессором. И хотя бытует мне- ние, что проблема «памяти» скоро исчезнет, тем не менее проблема эта существует. Во-первых, из-за дороговизны памяти (стоимость ос- новной памяти микропроцессорной системы значительно превосхо- дит стоимость процессора), а во-вторых, потребность в памяти растет пропорционально снижению ее стоимости. Все изложенное с очевидностью показывает семантический разрыв между архитектурой компьютера и принципами, определяющими построение компиляторов. Таким образом, для уменьшения сущест- вующего семантического разрыва требуется разработка сложного компилятора. 40
1.4. Семантический разрыв Существующий разрыв, естественно, можно уменьшить или полно- стью устранить усложнением архитектуры компьютера. Ясно, что при наличии нескольких компиляторов, содержащих средства вызова процедур, описания массивов и т.д. (а это почти всегда так), выгоднее ликвидировать этот разрыв один раз за счет соответствующей моди- фикации архитектуры машины, даже если других преимуществ и не будет. Семантический разрыв порождает и некорректное использование языка программирования. Так, если в PL/1 описать переменную В как DCL В DECIMAL FIXED(2), то есть двухразрядной десятичной переменной с фиксированной точкой, а при использовании операто- ра присваивания указать В = 200, то естественно было бы появление сообщения об ошибке. Но такового не возникает. И при выводе на печать значения В также получим 200. Все дело в том, что система IBM 370 может представлять десятичные числа, имеющие только нечетное количество цифр. Чтобы при полном устранении семан- тического разрыва не прийти к генерированию неэффективных объ- ектных кодов, компилятор преобразует двухразрядные десятичные переменные в трехразрядные операнды машины. Если бы соответст- вующие правила языка PL/1 были изменены, то язык стал бы машин- но-зависимым, с ориентацией только на IBM 370. Тот же вариант некорректности может возникнуть при работе с деся- тичными и двоичными числами, использование которых допускает язык PL/1. Программисты иногда применяют двоичные числа вместо десятичных, ибо первые занимают меньше памяти, не требуют преоб- разования данных, а операции над ними выполняются быстрее, чем над десятичными. Следовательно, архитектура используемого ком- пьютера приводит к некорректному применению языка программи- рования. Подобные казусы можно найти и в других ЯП. Например, в языке Fortran условный оператор IF имеет три точки перехода: = 0, > 0, < 0. Но это не широкие возможности языка, а зависимость его от архи- тектуры IBM 704, где встроенная операция сравнения в зависимости от результата своего выполнения передает управление одной из трех последующих команд. В языке Ada для повышения надежности программирования тоже введен ряд компромиссов и ограничений при использовании совре- 41
Глава 1. Два подхода к понятию «архитектура» менных компьютеров, чтобы ошибки, появляющиеся, например, из-за применения в арифметических операциях несовместимых операндов или обращения за пределы допустимого адресного пространства, было возможно выявить на стадии компиляции. Как следствие семантического разрыва — низкая производительность при проектировании программ. Создатель прикладного ПО тратит больше времени на разработку управления памятью и пересылку дан- ных, чем на реализацию алгоритма обработки данных. Последние ис- следования показывают, что каждый 20-й оператор в PL/1-програм- мах — это ввод и вывод информации. Совершенствование архитектуры компьютера с целью устранения се- мантического разрыва также ограничено принципами построения, например, архитектуры процессора. Так, в случае реализации паралле- лизма при организации процессора используются только два варианта обработки: мультипроцессорный и поточный. Причем мультипро- цессорная обработка решает проблему лишь частично из-за сложно- сти выделения независимых фрагментов программы, которые можно выполнять параллельно (задача декомпозиции), трудностей синхрони- зации взаимодействующих процессов и перекрытия областей памяти. 1.5. Анализ архитектурных принципов фон Неймана Архитектурные принципы формулировались фон Нейманом приме- нительно к созданию автоматического устройства для решения диф- ференциальных уравнений. Основные характеристики архитектуры фон Неймановского типа сле- дующие: ► последовательно адресуемая единственная память линейного типа для хранения программ и данных; ► команды и данные различаются неявным способом лишь при вы- полнении операций. Принимаемые по умолчанию соглашения типа «операнды операции умножения — это данные, а объект, на который указывает команда перехода, — это команда» позволяют обращаться с командой как с данными, например, для ее модификации; 42
1.5. Анализ архитектурных принципов фон Неймана ► назначение данных определяется лишь логикой программы, так как в памяти машины набор бит может представлять собой как деся- тичное число с фиксированной точкой, так и строку символов. Указанные свойства были исключительно важными для своего време- ни. Однако появление языков высокого уровня (ЯВУ), новых методов решения, логических способов ускорения операций, более совершен- ной элементной базы требует наряду с имеющимися возможностями архитектуры и принципиально новых. При этом требования ЯВУ имеют следующие особенности: ► память состоит из набора дискретных именуемых переменных. Вовсе не требуется, например, чтобы память для значений переменных одной программы располагалась рядом с памятью для значений переменных другой программы. Таким образом, принцип единственной последо- вательной памяти имеет мало общего с организацией памяти в ЯВУ; ► ЯВУ наряду с линейными данными оперируют и с многомерны- ми — массивами, структурами, списками; ► в ЯВУ четко разграничены операции и данные; ► данные определяют и операции над ними. Например, смысл операции А+С определяется описанием Ап С. Се- мантика операции «+» совершенно различна, например, для целых чисел и символьных переменных. Архитектура фон Неймана плохо ориентирована на выполнение программ на ЯВУ. К сожалению, ЯВУ имитируют в своей структуре архитектуру фон Неймановского типа: переменные — пассивное ЗУ; оператор присваивания — арифметическое устройство (АУ); после- довательное выполнение операторов управления (IF, GOTO) — уст- ройство управления (УУ). Много сложностей возникает из-за работы компьютера в двоичной системе. Например, как отразится на экране дисплея вводимое деся- тичное вещественное число, не будет ли потерь в его младшем разряде? Это касается даже языка Ada, специально приспособленного для вы- сокой точности вычислений, который также аппроксимирует деся- тичные вещественные числа двоичными. Общая взаимосвязь между ЯВУ и компьютером в зависимости от уровня языка машины может быть представлена схемой на рис. 1.6. 43
Глава 1. Два подхода к понятию «архитектура’ Рис. 1.6. Соотношение программ на ЯВУ и машинном языке На рисунке представлены следующие возможности взаимодействия ЯВУ и компьютера: 1 — традиционный подход. После компилирования программа пере- водится на машинный язык, а затем интерпретируется машиной; 2 — компиляция осуществляется на промежуточный машинный язык более высокого уровня, чем машинный, сокращая тем самым семан- тический разрыв между ЯВУ и машиной; 3 — ЯВУ рассматривается как язык ассемблера, то есть имеется вза- имно однозначное соответствие между типами операторов и знаками операций ЯВУ с командами машинного языка. В данном случае про- изводится ассемблирование, а не компилирование, во время которого удаляются комментарии и пробелы в исходной программе, преобра- зуются в машинные коды разделители, ключевые слова и знаки опе- раций, а в адреса полей памяти — имена. Таким образом, многие привычные функции компилятора отсутствуют. Остальная привязка программы происходит непосредственно перед ее выполнением; 4 — машинный язык является ЯВУ и происходит процесс интерпре- тации программы на компьютере Введение программно-адресуемых регистров (так называемых ре- гистров общего назначения) существенно увеличивает количество используемых команд LOAD (загрузка в регистр) и STORE (запись 44
1.6. Способы совершенствования архитектуры в память), то есть команд перемещения данных из регистров в память и обратно. Исследования на компьютере PDP для различных ЯВУ показывают, что 42 % всех выполняемых команд затрачивается на перемещение данных между памятью и регистрами. Ряд результатов показывает что использование кэш-памяти позволяет достичь уве- личения быстродействия за счет применения регистров общего на- значения. В настоящее время имеются конкретные проекты архитектур машин, ориентированные на ЯВУ — Pascal, PL, Lisp, CoboL Однако больший интерес представляют архитектуры, ориентирующиеся не на конкрет- ный язык, а на общие семантические возможности некоторой группы языков. Так, архитектура машины SWARD ориентирована на языки PL/1, Ada, Fortran, Cobol и некоторые другие, создавая тем самым благоприятную среду программирования. Компьютеры фирмы Burroughs, начиная с модели В 1700, за счет вы- зова различных микропрограмм динамически настраиваются на язык написания выполняемой программы. Отметим, что разработчику архитектуры компьютера не следует стро- го ориентироваться на языки программирования, компиляторы, опе- рационные системы и другие программы, чтобы не потерять главное в архитектуре — учет современных требований задач и окружение пользователя. Необходимо искать разумный компромисс в распределении функ- ций системы между аппаратной и программной реализациями с уче- том стоимости, возможности модификации работы на микроуровне и т.д. Следует помнить, что компьютер предназначен для эффектив- ного выполнения программ с целью решения требуемых задач. 1.6. Способы совершенствования архитектуры Архитектура компьютеров чаще всего совершенствуется за счет вве- дения дополнительных средств. Рассмотрим некоторые из них. 1.6.1. Хранение информации в виде самоопределяемых данных Обычно информация о типе хранимых в памяти данных содержится в командах программы. Однако в ячейке памяти, где хранятся дан- 45
Глава 1. Два подхода к понятию «архитектура» ные, можно указать и тип данных (целое, десятичное, символьное и т.д.), дополнив их некоторым набором бит — тегом. Этот принцип организации памяти получил название теговой памяти. Наряду с ти- пом данных в теге можно хранить и другие характеристики, например длину операнда, информацию об определении текущего значения переменной, использующей данную ячейку памяти, и т.д. Какие преимущества дает тег? Известно, что в IBM 370 имеется 15 различных команд ADD, формат одной из них требует двух 4-бито- вых полей для указания длины обоих операндов. Использование те- гов позволило бы ограничиться одной командой, а тип подлежащих сложению операндов и их длину компьютер мог бы определить путем анализа содержимого тегов соответствующих операндов. Расширив тег еще одним битом, можно было бы использовать его в случае обращения к этой ячейке для незапрограммированного пре- рывания при возникновении определенной ситуации и перехода к процедуре ее обработки. Существует два типа тегов: статические, содержимое которых опре- деляется перед выполнением программы и по ходу вычислений не изменяется, и динамические — с наполнением его содержания во вре- мя вычислений и периодическим обновлением. Использование тегов позволяет выявить некоторые ошибки. Напри- мер, может обнаружиться, что одним из операндов команды сло- жения является строка символов, или число с плавающей точкой записывается в качестве адреса, или значение одного из операндов неизвестно и т.д., то есть производится защита типа данных. При сложении чисел с фиксированной точкой может возникнуть си- туация, когда позиции точки в числах разные, то есть необходимо предварительно выровнять эти позиции. Данные могут отличаться длиной или формой представления. Таким образом, возможно авто- матическое преобразование данных. Теги позволяют повысить скорость обработки команд. Это происхо- дит, во-первых, из-за того, что в этом случае не требуется генерация компилятором отдельных наборов команд для преобразования дан- ных, а во-вторых, отпадает необходимость в извлечении из памяти и декодировании команд преобразования данных. Теги позволяют упростить алгоритмы некоторых операций. Так, для сравнения двух величин необходимо произвести их выравнивание 46
1.6. Способы совершенствования архитектуры (усечение до меньшей или дополнение до большей длины), на что компилятор PL/1, например, генерирует код из 49 команд, а при те- говой архитектуре потребуется всего одна машинная команда. Структуры команд становятся более регулярными, за счет чего уменьшается разнообразие команд. Однако следует задаться вопро- сом: всегда ли уменьшение количества команд способно эквивалент- но отразить исходное разнообразие операций? Например, всегда ли эквивалентны операция арифметического сдвига и операция деле- ния на 2? При применении тегов компилятор становится более простым и бы- стрым, что следует из предыдущих рассуждений. Не требуется гене- рировать различный код в зависимости от типа данных, ибо набор команд инвариантен к типу обрабатываемых данных, то есть разраба- тываемые программные средства становятся независимыми от типов данных. Теги позволяют сделать отладку программ более совершенной. В ча- стности, дамп памяти становится более информативным. Что же в этом случае будет с объемом памяти для хранения программ и данных? Оказывается, хотя все данные требуют наличия допол- нительных полей, но за счет многократного и из многих команд об- ращения к данным, а также благодаря устранению избыточности информации в кодах операций команд в машинах с теговой органи- зацией памяти потребуется меньший объем для хранения программ и данных, чем в компьютерах с традиционной архитектурой. Прове- денные эксперименты с программами на языке Cobol показали, что при числе обращений к операнду больше 3,5 теговая организация уже выгодна и по объему памяти. Среднее же число обращений к одному операнду в некоторых наборах программ обработки экономической информации имеет коэффициент обращения > 10,4. Эти рассуждения еще раз подтверждают мысль, что оптимальное ре- шение при проектировании архитектуры машины можно принимать лишь при глубоком анализе ЯП и программ. Экономия памяти происходит из-за ненадобности повторного гене- рирования кодов для функций контроля и преобразования данных. Экономия достигается и за счет того, что один тег можно заводить для всего массива данных и для всех элементов строки символов, так как последние содержат, как правило, одинаковые атрибуты. 47
Глава 1. Два подхода к понятию «архитектура» Наряду с тегами во многих машинах используются и дескрипторы. Это дополнительная информация, играющая роль косвенного адреса ячейки памяти с данными. В таких компьютерах команды содержат ссылки на дескрипторы, которые, в свою очередь, ссылаются на об- ласти памяти, хранящие значения операндов команд. Основное отличие тегов и дескрипторов состоит в следующем: деск- рипторы создают дополнительный уровень адресации, что требует увеличения затрат на формирование адреса, то есть дескрипторы — это часть команды (программы), а теги — это часть данных. Приведем пример дескриптора (рис. 1.7). 101 р I R W Длина Адрес Рис. 7.7. Дескрипторы Здесь первые три бита содержат тег. Если значение тега равно 101, то данное слово — дескриптор. Бит Р указывает, находятся данные в ос новной памяти или во вспомогательной; /определяет, одиночный ли элемент описывает данный дескриптор или весь массив; R иденти- фицирует непрерывную или разрывную область памяти; W означает разрешение только чтения данных. 1.6.2. Области санкционированного доступа Средства обеспечения доступа используются для защиты данных, на- пример, области ОС от несанкционированной ревизии пользовате- лем. Как правило, имеющиеся средства защиты не охраняют процесс от самого себя, или одну программную секцию от другой, или секцию проблемной программы пользователя от системного программного обеспечения. Для защиты памяти выделяются домены — области санкционирован- ного доступа как локальное адресное пространство, определяющее адреса которые могут формироваться или использоваться некото- рым набором команд. Имеется в виду, что область памяти защищает- ся и от случайного обращения, и от несанкционированного доступа ввиду закрытости хранимой информации. 48
1.6. Способы совершенствования архитектуры Каждой программной секции (это обычно отдельно компилируемая программная единица) можно придать домен — некоторое адресное пространство, доступное только ее (секции) локальным переменным. Передачу фактических параметров подпрограмм (секции), занимаю- щих некоторый домен, можно рассматривать как временное его рас- ширение и решение проблемы передачи требуемых данных. Как только доступ к данным (обмен) закончился, расширение «домен-секция» исчезает. Для большей защиты домена данных программной секции может быть предоставлена только конкретная (или несколько) точка входа, а не доступ к любому слову домена (рис. 1.8). Домен-секция Домен-данные Рис. 1.8. Временное расширение домена Использование доменов имеет ряд достоинств: ► улучшается отладка программ. Сфера действия любой ошибки ог- раничивается размерами домена, в котором она произошла, что уве- личивает вероятность ее обнаружения; ► повышается надежность защиты программ. Информация, принад- лежащая одной секции, защищается от воздействия других секций. Например, если модуль А вызывает модуль В для выполнения неко- торых функций, то последний, будучи присоединенным к А, может анализировать все данные модуля А, хотя они должны быть защищены от подобных действий. Если же модуль Л разделен на домены, возмож- ности адресации модуля В ограничены только фактическими пара- метрами, которые передаются ему во время вызова. То же характерно и для вызываемого модуля В. Чтобы исключить доступ ко всем данным исходной программы, ее сегментируют. Для реализации аппарата доменов, естественно, необходимы изме- нения и в архитектуре компьютера, например включение механизма, не разрешающего при выборе одного значения из домена доступ к другим его данным. Необходим механизм защиты и от несанкцио- нированных точек входа в модуль. 49 4 ^2792
Глава 1. Два подхода к понятию «архитектура» 1.6.3. Одноуровневая память В зависимости от расположения данных в оперативной или внешней памяти программист по-разному адресует память. При этом требуется явное задание перемещения данных (операции ввода-вывода). В связи с ограниченным объемом оперативной памяти необходимо прибегать к другим принципам организации памяти, например к файловым структурам. Все это повышает стоимость программирования. Данные в программу обычно передаются через фактические парамет- ры или через ввод-вывод (имеющий, например, файловую структуру). Разная организация данных на различных носителях информации может быть неприемлемой для одного и того же модуля. Решение указанных проблем требует унификации ЗУ, чтобы програм- мист оперировал одинаковой адресацией вне зависимости от органи- зации ЗУ. В этом случае файлы станут элементами одноуровневой памяти, функции перемещения данных между различными уровня- ми ЗУ возлагаются на соответствующее программное обеспечение и аппаратуру, что несколько напоминает виртуальную память. Одна- ко одноуровневая память в отличие от виртуальной распространяется на все запоминающее пространство системы, а не только обеспечи- вает вопросы, связанные с недостатком оперативной памяти. Кроме того, обслуживающий набор виртуальной памяти — это модель, ис- чезающая при завершении работы. Достоинства одноуровневой памяти: ► сравнительно низкая стоимость программного обеспечения; ► независимость адресации от принципа организации памяти. Трудности, возникающие при этом: ► создание встроенного в архитектуру компьютера механизма иерар- хии ЗУ; ► восстановление памяти; ► переносимость объектов на другие системы с традиционной орга- низацией архитектуры. 50
1.7. RISC- и CISC-архитектура 1.7. RISC- и CISC-архитектура Развитие компьютеров с архитектурой mainframe (мэйнфрейм) спо- собствовало расширению спектра решаемых с их помощью задач. Проектировались сложные команды, поддерживаемые путем интер- претации (моделирования). Таким путем сокращался семантический разрыв между возможностями компьютеров и требованиями вновь возникающих языков программирования высокого уровня. Группа разработчиков IВМ под руководством Джона Кока в противо- вес большим компьютерам спроектировала несложный компьютер 801 с простыми командами. После публикации проекта многие фир- мы начали работать над компьютерами с простыми командами без интерпретации. Так, например, в 1980 году группой специалистов (США, Калифорнийский университет в Беркли) во главе с Д. Пат- терсоном и К. Секуином начата разработка процессора RISC без ин- терпретации. Почти одновременно в Стэнфорде под руководством Дж. Хеннеси была разработана микросхема MIPS. Оба процессора были доведены до коммерческой реализации и воплощены в кон- кретные компьютеры. RISC (Restricted (reduced) instruction set computer) — это регистро- ориентированная архитектура. Компьютеры с такой архитектурой ино- гда называют компьютерами с сокращенным набором команд. Суть ее состоит в выделении наиболее употребительных операций и создании средств их быстрой реализации. Это позволило в условиях ограничен- ных ресурсов разработать компьютеры с высоким быстродействием. MIPS (Millions of Instructions Per Second) — это миллионы операций в секунду. Такая архитектура предполагает параллельное выполнение большого количества команд за короткий промежуток времени. Без- условно, простые команды выполняются при этом быстро, но глав- ное в этих архитектурах — количество команд, которое может быть начато в единицу времени (чаще всего в секунду). Таким образом, па- раллелизм в выполнении команд становится главным показателем повышения производительности компьютера. 1.7.1. Основные принципы RISC-архитектуры В компьютерной индустрии наблюдается настоящий бум производ- ства систем с RISC-архитектурой. Рабочие станции и серверы, соз- 51
Глава 1. Два подхода к понятию «архитектура» данные на базе концепции RISC, завоевали лидирующие позиции благодаря своим исключительным характеристикам и уникальным свойствам операционных систем типа UNIX, используемых на этих платформах. В самом начале 80-х годов прошлого века почти одновременно завер- шились теоретические исследования в области RISC-архитектуры, проводившиеся в Калифорнийском и Стэнфордском университетах, а также в лабораториях фирмы IBM. Особую значимость приобрел проект RISC1, который возглавили профессора Давид Паттерсон и Карло Секуин. Именно они ввели в употребление термин RISC и сформулировали четыре основных принципа RISC-архитектуры: ► каждая команда независимо от ее типа выполняется за один ма- шинный цикл, длительность которого должна быть максимально ко- роткой; ► все команды должны иметь одинаковую длину и использовать ми- нимум адресных форматов, что резко упрощает логику управления процессором; ► обращение к памяти происходит только при выполнении опера- ций записи и чтения, вся обработка данных осуществляется исклю- чительно в регистровой структуре процессора; ► система команд должна обеспечивать поддержку языков высокого уровня. Имеется в виду подбор системы команд, наиболее эффектив- ной для различных языков программирования. Со временем трактовка некоторых из этих принципов претерпела изменения. В частности, возросшие возможности технологии позво- лили существенно смягчить ограничения на состав команд — вместо полусотни инструкций, использовавшихся в архитектурах первого поколения, современные RISC-процессоры реализуют около 150 ин- струкций. Однако основной принцип RISC был и остается незыбле- мым — обработка данных должна вестись только в рамках регистровой структуры и только в формате команд «регистр-регистр-регистр». В RISC-микропроцессорах значительную часть площади кристалла занимает тракт обработки данных, а секциям управления и дешифра- ции отводится очень небольшая его часть. Аппаратная поддержка выбранных операций, безусловно, сокращает время их выполнения, однако критерием такой реализации является 52
1.7. RISC- и CISC-архитектура повышение общей производительности компьютера в целом и его стоимость. Поэтому при разработке архитектуры необходимо анали- зировать результаты компромиссов между различными подходами, различными наборами операций и на основе такого анализа выбрать оптимальное решение. Развитие RISC-архитектуры в значительной степени определяется успехами в области проектирования оптимизирующих компиляторов. Только современная технология компиляции позволяет эффективно использовать преимущества большого регистрового файла, конвейер- ной организации и высокой скорости выполнения команд. Применя- ются и другие свойства процесса оптимизации в технологии компи- ляции, обычные для RISC-процессоров, — реализация задержанных переходов и суперскалярная обработка, позволяющие в один и тот же момент времени отсылать на выполнение несколько команд. 1.7.2. Отличительные черты RISC- и CISC-архитектур Двумя основными архитектурами набора команд, используемыми ком- пьютерной промышленностью на современном этапе развития вы- числительной техники, являются архитектуры CISC и RISC. Осново- положником CISC-архитектуры — архитектуры с полным набором команд (CISC — Complete Instruction Set Computer) можно считать фирму IBM с ее базовой архитектурой IBM/36O, ядро которой ис- пользуется с 1964 года и дошло до наших дней, например, в таких со- временных mainframe, как IBM ES/9000. Лидером в разработке микропроцессоров с полным набором команд считается компания Intel с микропроцессорами Х86 и Pentium, прак- тически ставшие стандартом для рынка микропроцессоров. Простота архитектуры RISC-процессора обеспечивает его компакт- ность, практическое отсутствие проблем с охлаждением кристалла, чего нет в процессорах фирмы Intel, упорно придерживающейся пути развития архитектуры CISC. Стратегия CISC-архитектуры состоялась в обеспечении технологической возможности перенесения «центра тяжести» обработки данных с программного уровня системы на аппа- ратный, в то время как основной путь повышения эффективности для RISC-компьютера в первую очередь виделся в упрощении компи- ляторов и минимизации исполняемого модуля. На сегодняшний день CISC-процессоры почти монопольно занимают на компьютерном 53
Глава 1. Два подхода к понятию «архитектура» рынке сектор персональных компьютеров, однако RISC-процессо- рам нет равных в секторе высокопроизводительных серверов и рабо- чих станций. Сравнение основных черт RISC-архитектуры с аналогичными по ха- рактеру чертами CISC-архитектуры можно отобразить следующим образом (табл. 1.1): Таблица 1.1 Основные черты архитектуры CISC-архитектура RISC-архитектура Многобайтовые команды Однобайтовые команды Малое количество регистров Большое количество регистров Сложные команды Простые команды Одна команда или менее за один цикл процессора Несколько комацд за один цикл процессора Традиционно одно исполнитель- ное устройство Несколько исполнительных устройств Одним из важных преимуществ RISC-архитектуры является высокая скорость арифметических вычислений. RISC-процессоры первыми достигли планки наиболее распространенного стандарта IEEE 754, устанавливающего 32-разрядный формат для представления чисел с фиксированной точкой и 64-разрядный формат «полной точности» для чисел с плавающей точкой. Высокая скорость выполнения ариф- метических операций в сочетании с высокой точностью вычислений обеспечивает RISC-процессорам безусловное лидерство в быстро- действии по сравнению с CISC-процессорами. Другой особенностью RISC-процессоров является комплекс средств, обеспечивающих безостановочную работу арифметических устройств: механизм динамического прогнозирования ветвлений, большое коли- чество операционных регистров, многоуровневая встроенная кэш- память. Организация регистровой структуры — основное достоинство и основ- ная проблема RISC. Практически любая реализация RISC-архитектуры использует трехместные операции обработки, в которых результат и два операнда имеют самостоятельную адресацию — Rl: = R2, R3. Это позволяет без существенных затрат времени выбрать операнды 54
1.7. RISC- и CISC-архитектура из адресуемых оперативных регистров и записать в регистр результат операции. Кроме того, трехместные операции дают компилятору боль- шую гибкость по сравнению с типовыми двухместными операциями формата «регистр-память» архитектуры CISC. В сочетании с быстро- действующей арифметикой RISC-операции типа «регистр-регистр» становятся очень мощным средством повышения производительно- сти процессора. Вместе с тем опора на регистры представляет собой и ахиллесову пяту RISC-архитектуры. Проблема в том, что в процессе выполнения задачи RISC-система неоднократно вынуждена обновлять содержимое реги- стров процессора, причем за минимальное время, чтобы не вызывать длительных простоев арифметического устройства. Для CISC-систем подобной проблемы не существует, поскольку модификация регистров может происходить на фоне обработки команд формата «память-па- мять». Существует два подхода к решению проблемы модификации регист- ров в RISC-архитектуре: аппаратный, предложенный в проектах RISC 1 и RISC 2, и программный, разработанный специалистами IBM и Стэн- фордского университета. Принципиальная разница между ними за- ключается в том, что аппаратное решение основано на стремлении уменьшить время вызова процедур за счет установки дополнительно- го оборудования процессора, тогда как программное решение бази- руется на возможностях компилятора и является более экономичным с точки зрения аппаратуры процессора. Очевидные преимущества RISC-архитектуры, прежде всего в плане производительности, могли бы полностью вытеснить с мирового рын- ка компьютеры с CISC-архитектурой (Pentium и т.д.). Но этого не случилось в силу следующих обстоятельств. Во-первых, компьютеры с RISC-архитекгурой (например, компьютеры Alpha фирмы DEC) несовместимы с другими моделями. Во-вторых, многие компании осуществили значительные капиталовложения в ПО для процессоров Intel. В-третьих, в процессоры Intel, начиная с модели 486, внедрены идеи RISC для реализации ядра, включающе- го самые простые и самые распространенные команды, а более слож- ные команды интерпретируются по технологии CISC, что повышает производительность Intel-процессоров, но в то же время позволяет использовать накопленное программное обеспечение без доработок. 55
Глава 1. Два подхода к понятию «архитектура» 1.7.3. Проблемы реализации RISC-процессоров Основные принципы, на которых базируется разработка современных процессоров, во многом пересекаются с основными принципами RI SC-архитектуры: ► все команды реализуются схемным путем без интерпретации в фор- ме микрокоманд (сложные команды могут разбиваться на части); ► компьютеры за фиксированное время должны начать выполнение значительного числа команд (безусловно, аксиома зависимости команд по данным и управлению должна соблюдаться неукоснительно); ► простым должен быть процесс декодирования команд (это сущест- венно влияет на количество одновременно вызываемых команд); ► к оперативной памяти должны обращаться лишь команды LOAD и STORE (загрузки и сохранения); ► достаточный объем регистровой памяти, обеспечивающий сокра- щение количества перемещений данных между процессором и ОП. Возникает необходимость выбора оптимального набора операций, по- зволяющего достичь желаемой производительности, реализуя прин- ципы RISC-архитектуры. Такой выбор осуществляется по некоторой репрезентативной смеси задач, для выполнения которых предназна- чен компьютер, путем подбора пакета контрольных программ и по- строения профиля их выполнения либо с помощью статических или динамических измерений параметров этих программ. При профилировании определяется доля общего времени центрального процессора, затрачиваемого на выполнение каждого оператора (опера- ции) программы. Анализ полученных результатов позволит выявить характерные особенности профилируемой программы. При статических или динамических измерениях подсчитывается, сколько раз в программе встречается тот или иной оператор (операция) или частота получения признаками положительных (отрицательных) зна- чений в тексте программы (статика) либо в результате выполнения (динамика). Сочетание результатов, полученных в ходе таких исследований, дает общую картину анализируемой программы. Приведем результаты одного из таких измерений в статике, осуществленные для программ- компиляторов: операторы присваивания — 48 %, условные операто- 56
1.7. RISC- и CISC-архитектура ры — 15, циклы — 16, операторы вызова-возврата — 18, прочие опе- раторы — 3 %. Измерение трехсот процедур, используемых в операционных систе- мах, в динамике показало следующую статистику по типам операндов: константы — 33 %, скаляры — 42, массивы (структуры) — 20 и про- чие — 5 %. При этом статистика среди команд управления потоком данных сле- дующая. В разных тестовых пакетах программ команды условного перехода занимают от 66 до 78 %, команды безусловного перехода — от 12 до 18 %, частота переходов на выполнение составляет от 10 до 16%. Отсюда можно сделать вывод, что операторы присваивания занима- ют основную часть в программах-компиляторах, а операнды типа константа и локальные скаляры составляют большую часть операн- дов в процедурах, к которым происходит обращение в процессе вы- полнения программы. Подобные количественные и качественные измерения образуют ос- нову для оптимизации процессорной архитектуры. Так, если операторы присваивания занимают 48 % всех операторов, то ясно, что операцию доступа к операндам следует реализовать аппаратно. Особенно это важно, если речь идет о нечисловых зада- чах, в которых вычислительные операции, как правило, просты. В условных операторах, операторах цикла и вызова-возврата произ- водятся манипуляции над множеством операндов, что также под- тверждает необходимость аппаратной реализации операции доступа к операндам. При анализе типов операндов учитывались три категории: ► константы — не меняются во время выполнения программы и име- ют, как правило, небольшие значения; ► скаляры — обращение к ним происходит, как правило, явно по их имени. Обычно скаляров немного и они описываются в процедурах как локальные; ► обращение к элементам массивов и структур происходит посредст- вом индексов и указателей, то есть через косвенную адресацию. Та- ких элементов, как правило, достаточно много. 57
Глава 1. Два подхода к понятию «архитектура» Для осуществления доступа к операнду необходимо вначале определить физический адрес ячейки, где хранится операнд, а затем осуществить доступ к операнду. Если операнд — константа, ее можно указать не- посредственно в команде. Доступ к константе может быть осуществ- лен немедленно после обращения. В других случаях все зависит от типа памяти, где хранится операнд. Регистровые блоки и кэш-память мало отличаются по емкости, скорости доступа и стоимости, однако существенно различаются по накладным расходам на адресацию. Об- ращение к кэш-памяти осуществляется при помощи адресов полной длины, которые требуют более широкой полосы пропускания кана- лов обмена. Как правило, этот адрес приходится формировать во время выполнения программы, что, как минимум, требует полноразрядно- го сложения и/или обращения к регистру. Регистровые блоки адресу- ются короткими номерами регистров, которые обычно указываются в команде, что упрощает декодирование команд. Однако регистровая память позволяет хранить только определенные типы данных, в то время как кэш-память может использоваться и как основная. В связи с этим распределение скалярных переменных по регистрам достаточ- но важно, ибо существенно влияет на скорость обработки. Необходимо определить размер регистровых окон, ибо в обычной ар- хитектуре окна однорегистровые, что требует операции запомина- ния-восстановления при каждом вызове-возврате. При вызовах процедур следует запоминать содержимое регистров, а при возвращении — восстанавливать их, на что тратится значитель- ное время. Вызовы процедур в современных структурированных про- граммах довольно часты, при этом суммарные накладные расходы на выполнение команд вызова и возврата из процедур на стандартных процессорах занимают до 50 % всех обращений к памяти в программе. Чтобы уменьшить время передачи данных между процедурами-роди- телями и процедурами-дочерьми (в случае, когда глубина их вложен- ности больше единицы), можно создать блок регистров, предоставив и родителям и дочерям доступ к некоторым из них. Другими словами, требуется создать перекрывающиеся блоки регистров. Такая возмож- ность реализуется через перекрывающиеся «окна», накладываемые на блок регистров. Этот механизм реализован в RISC-архитектуре. Многие измерения показывают, что около 97 % процедур имеют не более шести параметров, что требует перекрытия соседних окон, как пра- вило, на пять регистров. 58
1.7. RISC- и CISC-архитектура Процессор всегда содержит указатель текущего окна с возможностью его модификации в рамках реализованной глубины вложения проце- дур. Если таковой глубины не хватает, часть содержимого окон на- правляется в основную память, освобождая место для новых процедур. Для простоты реализации в ОП направляется содержимое целого окна. Это говорит о целесообразности введения многооконного механизма с заданным размером окна. Размер окна определяется количеством передаваемых параметров, а количество окон — допустимой вложен- ностью процедур. Среди достоинств применения больших регистровых блоков можно выделить высокую скорость доступа к блокам и увеличение частоты вызова процедур. Среди недостатков — высокая стоимость большого регистрового блока, организуемого в ущерб другим функциональным блокам на кристалле. Аппаратная реализация механизма перекрытия окон должна вводиться, если получаемый выигрыш перекрывает затраты. Так как значительная часть процедур требует от трех до шести пара- метров, то следует подумать об оптимизации использования окон. Во-первых, пересылать в ОП в случае переполнения регистрового блока можно не все окна, а только содержимое регистров, используе- мых для данной процедуры, и, во-вторых, применять механизм с ок- нами переменных размеров, определяемых во время выполнения. Перспективной разновидностью RISC-архитектуры явилась архитек- тура SPARC (Scalable Processor Architecture1). Новая серия SPARCSTATIONS фирмы Sun Microsystems базируется на SPARC-архитектуре. Первые модели этой серии были изготовле- ны уже в 1989 году. Операционной средой для всех станций фирмы Sun является SunOS — разновидность ОС Unix, снабженная много- оконным графическим интерфейсом Open Look. Для повышения скорости обработки данных используются компью- теры с VLIW (Very Long Instruction Шэгф-архитектурой. Структура команды таких компьютеров наряду с кодом операции и адресами операндов включает теги и дескрипторы. Такая архитектура, кроме 1 Scaling — масштабирование, то есть способность представлять данные таким обра- зом, чтобы данные и результат проводимых с ними вычислений находились в диапа- зоне чисел, которые могут обрабатываться в рамках данного процесса или на данном оборудовании. 59
Глава 1. Два подхода к понятию «архитектура» существенного ускорения обработки данных, позволяет экономить память при достаточном количестве обращений к командам, сокра- щать общее количество команд в системе команд и ускорять процесс выборки команд из памяти. 1.8. Функционирование управляющего компьютера Для автоматизации управления сложным производственным или тех- нологическим процессом в контур управления включают компьютер, представляющий собой управляющую вычислительную машину (УВМ). Наиболее часто в качестве управляющего компьютера используют цифровые ЭВМ благодаря следующим качествам: ► наличию больших и высоконадежных ЗУ различного типа; ► возможности решения на них сложных вычислительных и логиче- ских задач; ► гибкости (за счет программного обеспечения); ► надежности и быстродействию. В общем случае система автоматического управления с УВМ опреде- ляет собой замкнутый контур (рис. 1.9). Здесь ► X], X],..., хк — измеряемые параметры: • нерегулируемые (характеристики исходного продукта); • выходные параметры, характеристики качества продукции; • выходные параметры, по которым непосредственно или путем расчета определяется эффективность производственных про- цессов (производительность, экономичность) или ограничения, наложенные на условия его протекания; ► Уь Уг, —,УП — регулируемые параметры, которые мотуг изменяться исполнительными механизмами (ИМ) — регуляторами и оператором; ► /ъ/ъ —>fn ~ нерегулируемые и неизмеряемые параметры (напри- мер, химический состав сырья). На вход УВМ от датчика Д (термопар, расходомеров и т.п.) подается измерительная информация о текущем значении параметров хь х2,..., хк. Согласно алгоритму управления УВМ определяет величины 60
1.8. Функционирование управляющего компьютера Рис. 1.9. Принцип действия УВМ управляющих воздействий {7Ь U2, Un, которые необходимо прило- жить к исполнительным механизмам (ИМ) для изменения регули- руемых параметров уъ ..., уп с тем, чтобы управляющий процесс протекал оптимально. Измерительные датчики вырабатывают непре- рывный сигнал (напряжение, ток, угол поворота и т.п.), а поскольку ЦВМ работает в дискретной форме, то дважды происходит преобразо- вание из непрерывной формы в дискретную (Н/Д) и наоборот (Д/Н). Для уменьшения состава оборудования преобразователи Н/Д и Д/Н выполнены многоканальными. Посредством коммутатора преобра- зователь поочередно подключается к каждому датчику и осуществля- ется преобразование Н/Д. Поступившее управляющее воздействие Ut сохраняется в цепи до выработки следующего управляющего воздей- ствия в УВМ. В настоящее время наиболее распространен синхронный принцип связи УВМ с объектом, при котором процесс управления разбивается на циклы равной продолжительности с помощью тактирующих им- пульсов электронных часов. Цикл начинается с приходом тактирующего импульса на устройство прерывания. В начале каждого цикла проводятся последовательный опрос и преобразование в цифровую форму сигналов датчиков. 61
Глава 1. Два подхода к понятию «архитектура» После выработки управляющих воздействий Ц- и преобразования их в непрерывную форму УВМ приостанавливается до прихода нового тактирующего импульса (или выполняет некоторую вспомогатель- ную работу). Для установления более тесной связи объекта с УВМ используют асинхронный принцип связи с объектом. Вместо тактирующих им- пульсов в УВМ поступают импульсы от датчиков прерывания (ДП), непосредственно связанных с объектом (например, конечных вы- ключателей аварийного состояния). Каждый импульс прерывания эквивалентен требованию о прекращении производимых вычисле- ний и переходе к выполнению подпрограммы, соответствующей дан- ному каналу прерывания. УВМ реагирует на импульсы прерывания с учетом приоритета одних сигналов прерывания над другими. В некоторых системах применяют комбинированный способ — син- хронизация «плюс» датчики аварийного состояния, переводящие УВМ в режим аварийной рабо ы. В замкнутом контуре УВМ прямо воздействует на ИМ, непосредственно управляя производственным процессом. Это режим прямого цифрового управления. Однако для сложных систем, а также для комплексов агрегатов, свя- занных между собой технологическим процессом, система управле- ния строится таким образом, что отдельные параметры процесса регулируются соответствующими автоматическими регуляторами, а УВМ обрабатывает «мерительную информацию, рассчитывает и устанавливает оптимальные настройки регуляторов. Это повышает надежность системы, так как ее работоспособность сохраняется и при отказах УВМ. При такой схеме УВМ может быть более про- стой, так как снижается требование к ее быстродействию. УВМ в разомкнутой цепи используется: ► в системах автоматического программного управления; ► в сис емах, где УВМ выполняет функции советчика. В первом случае уменьшается объем первоначально вводимой в УВМ информации для расчета оптимальных настроек регуляторов. Деталь- ный расчет программы управления с заданной точностью произво- дится самим вычислительным устройством, которое в соответствии с этой программой вырабатывает необходимые управляющие воздей- ствия. 62
Упражнения В режиме советчика УВМ обрабатывает измерительную информацию и рассчитывает управляющие воздействия для оптимизации процесса. Эта информация служит рекомендацией оператору, управляющему технологическим процессом. Упражнения 1. Чем различаются понятия «архитектура» и «структура» компьютера? 2. На конкретном примере продемонстрируйте семантический разрыв ме- жду современными языками программирования и архитектурными ре- шениями компьютера. 3. Какие пути усовершенствования архитектуры фон Неймана известны? 4. Разработайте и реализуйте механизм преобразования виртуального адре- са в реальный. 5. Сформулируйте основные особенности суперкомпьютера. 6. Проанализируйте основные этапы разработки проекта архитектуры ВС и функции, реализуемые на каждом из них. 7. Разработайте и реализуйте алгоритм управления простейшим технологи- ческим процессом для компьютера, работающего в «замкнутом» цикле. 8. Проанализируйте особенности RISC- и CISC-архитектур компьютеров. 9. Приведите конкретные примеры воплощения RISC-архитектур в реаль- ных компьютерах. 10. Проанализируйте и сравните по различным параметрам (быстродейст- вию, объему памяти, сложности программирования) программы для од- но-, двух-, трех- и безадресных компьютеров. 11. Проведите оптимизацию универсальной системы команд, если задан конкретный набор решаемых задач. 12. Разработайте микропрограммы выполнения заданных операций для реального компьютера. Проанализируйте целесообразность микропро- граммной поддержки операций. 63
Глава 2 Конвейеризация В большинстве ранних компьютеров команды выполнялись последо- вательно, то есть сначала происходило чтение команды, затем де- шифрация, выбор операндов и собственно исполнение операции. Последовательный способ работы процессора определяет простоту его логической организации. При этом для всей памяти системы дос- таточно иметь один узел управления циклом памяти. Так как процес- сор во время поиска команды свободен, он может быть использован для индексных операций над адресами. Такое совмещение позволяет эффективнее использовать процессор. Стремление повысить быстродействие ВС привело к появлению про- цессоров с совмещением операций, то есть к распараллеливанию про- цессов, несмотря на удорожание оборудования Идея об использовании принципа совмещения операций в целях по- вышения скорости работы компьютеров была высказана академиком С.А. Лебедевым на сессии АН СССР в 1957 году. Хотя эти идеи были высказаны около 50 лет назад, они актуальны и сегодня. Одна из возможностей совмещения операций состоит в модульной организации памяти, при которой каждый модуль имеет собственный адресный и числовой регистры, то есть модули способны работать одновременно. Количество модулей обычно равно небольшой степени числа 2. В начальных моделях IBM 7030 имелись две группы модулей памяти с чередующимися в каждой группе адресами. Одна группа главным образом используется для хранения команд, а другая — для хранения операндов. Применяя указанные свойства в сочетании с со- ответствующим программированием задачи, можно достичь более высокой скорости поступления данных из памяти, чем скорость, ко- торая обеспечивается физическим циклом памяти. Более сложные способы реализации совмещения обращений к памяти состоят в по- строении многовходовой памяти, что допускает одновременное об- ращение к ней со стороны многих устройств, разрешая при этом конфликт одновременного обращения. Дальнейшим развитием идеи совмещения операций и совершенство- вания методов ускорения обработки данных в компьютерах стала идея 64
2.1. Конвейерная обработка конвейерной (pipeline) обработки, позволяющей совмещать во времени выполнение различных шагов операций для некоторого множества команд. Принцип конвейерной обработки основан на разбиении вы- числительного процесса на несколько подпроцессов, каждый из ко- торых выполняется в отдельном устройстве, как это имеет место при выполнении сложных операций последовательно по подоперациям на промышленном конвейере, в связи с чем этот метод и называют конвейерным. Проблемы и достоинства такой технологии обсужда- ются в данной главе. 2.1. Конвейерная обработка Конвейерная обработка в общем случае основана на разделении под- лежащей исполнению функции на более мелкие части, называемые ступенями, и выделении для каждой из них отдельного блока аппара- туры. Так, обработку любой машинной команды можно разделить на несколько этапов, организовав передачу данных от одного этапа к последующему. При этом конвейерную обработку можно использо- вать для совмещения этапов выполнения разных команд. Произво- дительность при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются различные этапы не- скольких команд. Такая обработка применяется во всех современных быстродействующих процессорах. Конвейерная обработка — это технология, при которой несколько ко- манд в процессе обработки выполняются одновременно, при этом каждая команда (или ее этап) выполняется на отдельном функциональном уст- ройстве с последующей передачей результатов обработки от i-й команды (или этапа) к i+ 1-й, то есть используется параллелизм инструкций в последовательном потоке команд. Предположим, что набор команд проектируемого процессора вклю- чает типичные арифметические и логические операции, операции с плавающей точкой, операции пересылки данных, операции управле- ния потоком команд и системные операции. В арифметических ко- мандах используется трехадресный формат, типичный для RISC-про- цессоров, адля обращения к памяти применяются операции загрузки и записи содержимого регистров в память. 65 ^2792
Глава 2. Конвейеризация Выполнение типичной команды в этом случае можно разделить на следующие этапы: ► выборка команды IF (Instruction Fetch): из памяти по адресу, задан- ному счетчиком команд, извлекается команда; ► декодирование команды ID (Instruction Decode); ► выполнение операции EX (Execute); ► обращение к памяти MEM (Memory); ► запоминание результата WB (Write Back). Для конвейеризации потока команд разобьем каждую из них на указанные этапы, отведя для выполнения каждого этапа один такт синхронизации, и в каждом такте начинаем выполнение очередной команды. Работа конвейера представляется в виде временных диаграмм (табл. 2.1), на которых обычно изображаются выполняемые коман- ды, номера тактов и этапы выполнения команд. Таблица 2. J Временная диаграмма конвейера Номер команды Номер такта 1 2 3 4 5 6 7 8 9 I IF ID EX MEM WB 1+1 IF ID EX MEM WB 1+2 IF ID EX MEM WB 1+3 IF ID EX MEM WB 1+4 IF ID EX MEM WB Такая организация функционирования направлена на максимизацию загрузки всех компонент системы. Однако, во-первых, не все этапы выполнения команды совпадают по времени, во-вторых, не все ко- манды выполняются до конца (ветвления, циклы и т.д.), а в-третьих, имеется информационная зависимость между операциями, в связи с чем не все устройства ВС работают на полную мощность. Конвейеризация увеличивает пропускную способность процессора (количество команд, завершающихся в единицу времени), но не со- кращает время выполнения отдельной команды. В действительности, 66
2.1. Конвейерная обработка конвейеризация даже несколько увеличивает время выполнения ка- ждой команды из-за накладных расходов, связанных с управлением конвейером. Однако увеличение пропускной способности означает, что в целом программа будет выполняться быстрее по сравнению с простой неконвейерной схемой. Тот факт, что время выполнения каждой команды в конвейере не уменьшается, накладывает некоторые ограничения на практическую длину конвейера. Кроме ограничений, связанных с задержкой кон- вейера, имеются также ограничения, возникающие в результате несба- лансированности задержки на каждой его ступени и из-за накладных расходов на конвейеризацию. Частота синхронизации не может быть выше, а, следовательно, такт синхронизации не может быть меньше времени, необходимого для работы наиболее медленной ступени конвейера. Накладные расходы на организацию конвейера возникают из-за задержки сигналов в конвейерных регистрах (защелках) и из-за необходимости синхронизации. Конвейерные регистры к длительно- сти такта обработки процесса добавляют время его установки и за- держку распространения сигналов. При реализации конвейерной обработки возникают ситуации, кото- рые препятствуют выполнению очередной команды из потока ко- манд в предназначенном для этой команды такте. Такие ситуации называются конфликтами. Конфликты снижают реальную произво- дительность конвейера, достижимую в идеальном случае. Существует три класса конфликтов: 1. Структурные конфликты, возникающие в случае, когда аппаратные средства не могут поддерживать все возможные комбинации ко- манд в режиме одновременного выполнения с совмещением (кон- фликты по ресурсам). 2. Конфликты по данным, возникающие в случае, когда выполнение одной команды зависит от результата выполнения предыдущей ко- манды. 3. Конфликты по управлению, которые возникают при конвейериза- ции команд переходов и других команд, изменяющих значение счетчика команд. Конфликты в конвейере приводят к необходимости приостановки выполнения команд (pipeline stall). В простейших конвейерах приоста- 67
Глава 2. Конвейеризация новление некоторой команды приводит к приостановке всех следую- щих за ней команд. Команды, предшествующие приостановленной, могут продолжать выполняться, но во время приостановки не выби- рается ни одна новая (очередная) команда. Структурные конфликты возникают, например, и в машинах, имею- щих единый конвейер памяти для команд и данных (табл. 2.2). В этом случае, если команда содержит обращение к памяти за данными, то данное действие будет конфликтовать с выборкой более поздней ко- манды из памяти. Чтобы разрешить эту ситуацию, можно просто приостановить конвейер на один такт (команда Stall) при обращении к памяти за данными. Подобная приостановка часто называется «конвейерным пузырем» (pipeline bubble) или просто пузырем, по- скольку пузырь проходит по конвейеру, занимая место, но не выпол- няя никакой полезной работы. Таблица 2.2 Пример структурного конфликта Номер команды Номер такта Команда загрузки 1 2 3 4 5 6 7 8 9 10 I IF ID. EX MEM WB 1 + 1 IF ID EX MEM WB 1 + 2 Stall IF ID EX MEM WB 1 + 3 IF ID EX MEM WB 1 + 4 IF ID EX MEM WB 1 + 5 IF ID EX MEM 2.2. Классификация конфликтов по данным Конфликт по данным возникает при наличии зависимости между ко- мандами, расположенными по отношению друг к другу настолько близко, что совмещение операций, происходящее при конвейериза- ции, может привести к изменению порядка обращения к операндам. В зависимости от порядка операций чтения и записи различают три возможных конфликта по данным. 68
2.2. Классификация конфликтов по данным Рассмотрим две команды / и j, при этом команда I предшествует ко- манде j. Возможны следующие конфликты: ► RAW (чтение после записи) — команда j пытается прочитать опе- ранд — источник данных прежде, чем команда /запишет туда данные. Таким образом, у может некорректно получить старое (предыдущее) значение. Эта ситуация представляет собой наиболее общий тип кон- фликтов, способ преодоления которых — механизм «обходов»; ► WAR (запись после чтения) — командаj пытается записать результат в приемник прежде, чем он считывается оттуда командой Z, так что I может некорректно получить новое значение. Этот тип конфликтов, как правило, не возникает в системах с централизованным управлением потоком команд, обеспечивающих выполнение команд в порядке их поступления, так как последующая запись всегда выполняется позд- нее, чем предшествующее считывание. Особенно часто конфликты такого рода могут возникать в системах, допускающих выполнение команд не в порядке их расположения в программном коде; ► WAW (запись после записи) — команда j пытается записать операнд прежде, чем будет записан результат команды Z, то есть записи закан- чиваются в неверном порядке, оставляя в приемнике значение, запи- санное командой Z, а не j. Этот тип конфликтов присутствует только в конвейерах, которые выполняют запись со многих ступеней (или по- зволяют команде выполняться даже в случае, когда предыдущая ко- манда приостановлена). Указанные конфликты могут быть разрешены с помощью достаточно простого аппаратного решения, называемого пересылкой или продви- жением данных (data forwarding), обходом (data bypassing), иногда — «закороткой» (short-circuiting). Эта аппаратура работает следующим образом. Результат операции АЛУ с его выходного регистра снова по- дается на входы АЛУ. Если обнаруживается, что предыдущая операция АЛУ записывает результат в регистр, соответствующий источнику операнда для следующей операции АЛУ, то логические схемы управ- ления выбирают в качестве входа для АЛУ результат, поступающий по цепи «обхода», а не значение, прочитанное из регистрового файла (рис. 2.1). Существуют аппаратные методы, позволяющие изменить порядок выполнения команд программы так, чтобы минимизировать приос- тановки конвейера. Эти методы получили общее название методов 69
Глава 2. Конвейеризация Рис. 2.1. АЛУ с цепями обхода и ускоренной пересылки динамической оптимизации (в англоязычной литературе в последнее время часто применяются также термины «out-of-order execution» — неупорядоченное выполнение и «out-of-order issue» — неупорядочен- ная выдача). Основными средствами динамической оптимизации являются: 1) размещение схемы обнаружения конфликтов в возможно более низкой точке конвейера команд так, чтобы позволить команде продви- гаться по конвейеру до тех пор, пока ей реально не потребуется опе- ранд, являющийся также результатом логически более ранней, но еще не завершившейся команды. Альтернативным подходом являет- ся централизованное обнаружение конфликтов на одной из ранних ступеней конвейера; 2) буферизация комацд, ожидающих разрешения конфликта, и выдача последующих, логически не связанных команд, в «обход» буфера. В этом случае команды могут выдаваться на выполнение не в том по- рядке, в котором они расположены в программе, однако аппаратура обнаружения и устранения конфликтов между логически связанными 70
2.2. Классификация конфликтов по данным командами обеспечивает получение результатов в соответствии с за- данной программой; 3) соответствующая организация коммутирующих магистралей, обес- печивающая засылку результата операции непосредственно в буфер, хранящий логически зависимую команду, задержанную из-за кон- фликта, или непосредственно на вход функционального устройства до того, как этот результат будет записан в регистровый файл или в память (short-circuiting, data forwarding, data bypassing). Еще одним аппаратным методом минимизации конфликтов по дан- ным является метод переименования регистров (register renaming). Он получил свое название от широко применяющегося в компиляторах метода переименования, представляющего собой метод размещения данных, способствующий сокращению числа зависимостей и тем са- мым увеличению производительности при отображении необходимых исходной программе объектов (например, переменных) на аппаратные ресурсы (например, ячейки памяти и регистры). При аппаратной реализации метода переименования регистров вы- деляются логические регистры, обращение к которым выполняется с помощью соответствующих полей команды, и физические регист- ры, которые размещаются в аппаратном регистровом файле процес- сора. Номера логических регистров динамически отображаются на номера физических регистров посредством таблиц отображения, ко- торые обновляются после декодирования каждой команды. Каждый новый результат записывается в новый физический регистр. Однако предыдущее значение каждого логического регистра сохраняется и мо- жет быть восстановлено в случае, если выполнение команды должно быть прервано из-за возникновения исключительной ситуации или неправильного предсказания направления условного перехода. В процессе выполнения программы генерируется множество времен- ных регистровых результатов. Эти временные значения записываются в регистровые файлы вместе с постоянными значениями. Временное значение становится новым постоянным значением, когда заверша- ется выполнение команды (фиксируется результат). В свою очередь, завершение выполнения команды происходит, когда все предыдущие команды успешно завершились в заданном программой порядке. Программист имеет дело только с логическими регистрами. Реализация физических регистров от него скрыта. Как уже отмечалось, номера 71
Глава 2. Конвейеризация логических регистров ставятся в соответствие номерам физических регистров. Отображение реализуется с помощью соответствующих таблиц, которые обновляются после декодирования каждой коман- ды. Каждый новый результат записывается в физический регистр. Однако до тех пор, пока не завершится выполнение соответствую- щей команды, значение в этом физическом регистре рассматривает- ся как временное. Метод переименования регистров упрощает контроль зависимостей поданным. В машине, выполняющей команды не в порядке их рас- положения в программе, содержимое логических регистров не всегда соответствует результату, поскольку один и тот же регистр может быть назначен последовательно для хранения различных значений. Но по- скольку номера физических регистров уникально идентифицируют каждый результат, все неоднозначности устраняются. 2.3. Предикация При использовании конвейера возникают трудности, связанные с за- висимостью потока команд от управления. Каждое изменение потока команд прерывает работу конвейера и может служить причиной появ- ления приостановки (bubbles) конвейера. Команды условного и безус- ловного перехода, команды перехода к подпрограмме и выхода из нее могут послужить причиной приостановки конвейера. Приостановки уменьшают преимущества использования конвейеризации и значи- тельно сокращают производительность процессора. Первой причиной приостановок может быть зависимость по данным непосредственно в конвейере, когда условие перехода вычисляется позже, чем нужно на этапе выборки команд, чтобы определить верное направление пе- рехода. Вторая причина — задержка выборки следующей инструкции в потоке команд. Использование конвейера выражается формулой п+т i + m’ п где п — число полезных инструкций; т — число приостановок (bubbles). 72
2.3. Предикация Число приостановок можно выразить следующим соотношением: m=b(]-p)Nb +bq-N0, где b — число переходов; р — вероятность успешного прогнозирова- ния направления перехода; Nb — штраф за неправильное предсказа- ние перехода; q — частота предсказаний; No — штраф за остальные предположения. В итоге получаем, что l + b(l-p)Nb+-qN0 п п Количество приостановок конвейера может быть уменьшено с помо- щью следующих методов: I. Уменьшение штрафа Nb: 1.1. продвижение кода условия; 1.2. быстрое сравнение; 1.3. использование слотов задержки; 1.4. отложенные переходы; 1.5. отложенные переходы со сжатием. 2. Увеличение р-. 2.1. статическое предсказание переходов; 2.2. динамическое предсказание переходов; 2.3. предсказание переходов после профилирования. 3. Уменьшение штрафа 7V0: 3.1. введение кэш-инструкций; 3.2. улучшение предвыборки инструкций; 3.3. использование буфера целевых адресов перехода; 3.4. исполнение альтернативных путей. Ниже приведены некоторые из указанных методов уменьшения ко- личества приостановок конвейера. 73
Глава 2. Конвейеризация Продвижение кода условия (рис. 2.2) Быстрое сравнение (рис. 2.3) Используется схема быстрых сравнений на равенство, неравенство или соотношение с нулем (< 0, < 0, > 0, > 0). Отложенны г переходы (рис. 2.4, с. 76) Идея данного метода — уменьшить штраф за переход, позволяя вы- полниться N полезным инструкциям перед передачей управления. Установлено, что 67 % всех переходов в программе выполняется ус- пешно (циклы в программе). Поэтому желательно использовать пред- сказание «переход будет осуществлен». forwarding ofcmpdata \stage tinted fetch cmp branch delay slot target target +1 correct next instructions decode read execute forwarding ofCC write / i-1 «Г -si * i-1 i+l i-1 / t i+l i-1 f / t+1 t i+l * ' ti ’ , E t+1 t i+l i A L t+1 t i+l t+1 t ' - ' ' t+1 1 ' ' ” Puc. 2.2. Схемы продвижения кода условия 74
2.3. Предикация Предсказание переходов (рис. 2.5, с. 76) Выделяются два различных подхода — статическое и динамическое предсказания. Статическое предсказание связывается с каждой командой перехода и не меняется в течение исполнения программы. Этот вид предсказа- ния использует информацию о поведении перехода во время компи- ляции. Задача компилятора — оптимизировать порядок инструкций для организации правильного перехода. Различаются четыре схемы предсказания — переход принят, не при- нят, обратный переход, статический бит направления перехода. Статическое предсказание переходов дает возможность продвижения для бита предсказания и организации логики для изменения стратегии выбора команд. Бит предсказания предоставляется этапом декодиро- вания инструкции и определяет путь выбора инструкции, следующей за инструкцией перехода, или целевой инструкции перехода. \stage time''- fetch cmp branch delay slot target correct next instructions fast compare logic forwarding of fast cmp data decode read write execute. i-l i V.... i-l i+l . . . < i-l t i+l f . / i-l t i+l i-l Йй .. . t i+l . . ’ i jgy:' WSv * t i+l •. . :•:+ • '.л' t M - :.:Л' 3 Рис. 2.3. Схемы быстрого сравнения 75
Глава 2. Конвейеризация (a) branch taken \ stage decode read execute • CC-false ready write branch instruction £ delay slot instr.___ target instruction target +1 instr, successor instr. i+l t t+1 i+2 i+l t i+l t+i 3333 i+2 i+l i /forwarding ofCC “В control transfer i+2 ^>^3 i+2 (b) b anch not taken bubbles in the pipeline Puc. 2.4. Схемы отложенных переходов Рис. 2.5. Схемы предсказания переходов 76
2.3. Предикация Предсказание переходов после профилирования Предсказание переходов после профилирования — частный случай статического предсказания. При тестовом прогоне программы изу- чается статистика переходов и на ее основе выставляются биты на- правления переходов, имеющие более высокую степень правильного предсказания. Динамическое предсказание переходов Динамическое предсказание переходов использует информацию о поведении команд перехода во время исполнения программы. Ни- какая статическая информация в этом случае не используется. Дина- мическое предсказание не зависит от поведения перехода в прошлом, и это поведение сохранено в таблице, индексами которой являются адреса переходов. Как правило, в этой же таблице хранится и инфор- мация о нескольких последних переходах для повышения точности предсказания. Использование предикатов ► «условные» инструкции — инструкция выполняется, если некото- рое условие истинно; ► условие встроено непосредственно в инструкцию — переход вооб- ще не используется; ► инструкции, использующие предикаты. Предикаты — предвы- численные значения, сохраненные в регистре. Инструкция содержит поле для выбора предиката из регистра. «Условные» инструкции (рис. 2.6) pl = true; р2 = not pl = false; pl и р2 — предикаты. < pl> а = а+1; <р2> b = Ь+1. Приведем схему работы с использованием предикатов (рис. 2.7): 1. Команда перехода имеет два возможных варианта. 2. Компилятор назначает каждому варианту предикат. 3. Инструкции по данному пути. 4. Аналогично п. 3. 5. Начинается исполнение инструкций из обоих путей. 77
Глава 2. Конвейеризация Рис. 2.6. Условные инструкции Рис. 2.7. Схема работы с использованием предикатов 6. Инструкции исполняются параллельно, так как не имеют взаим- ных зависимостей. 7. Когда становится известен результат предикатов, результаты вы- полнения неправильного пути отбрасываются. 78
2.4. Конвейерные системы 2.4. Конвейерные системы На сегодняшний день конвейерные (магистральные) системы полу- чили большое распространение. Так, уже системы STAR 100, CDC 6600, CDC 7600, IBM 60/91, IBM 60/195 имели отдельные блоки для магистральной обработки. К примеру, в случае пятиступенчатой арифметико-конвейерной обра- ботки каждая команда выполняется последовательно на пяти различ- ных устройствах, а последовательность пяти следующих друг за другом команд заполняет арифметическую магистраль так, что одновременно на последнем, пятом, устройстве выполняется завершающий пятый этап первой команды, а на первом — начальный, первый этап пятой команды. После завершения выполнения первая команда выводится из конвейера, вторая, третья, четвертая и пятая поступают на очеред- ное устройство, а шестая входит на первое устройство конвейера. В системе STAR 100, например, используется четырехступенчатая магистраль для сложения и шестиступенчатая — для умножения. Более высокий уровень конвейерной обработки — комавдно-конвей- ерная обработка. Здесь каждая команда из потока команд выполняется на соответствующих ей функциональных обрабатывающих устройст- вах, которые могут работать одновременно. Для эффективной работы подобных систем необходимо, чтобы команды были по возможности независимы друг от друга, а распределение команд в потоке совпада- ло с набором функциональных устройств. Типичный представитель такой системы — CDC 6600, которая содержит 10 специальных уст- ройств обработки (умножение с плавающей точкой, сложение целых чисел и др.). Суть макроконвейерной обработки состоит в следующем. Пусть мно- жество исходных данных может быть обработано последовательным решением двух и более задач. Обработка ведется двумя различными процессорами, каждый из которых специализируется на решении своей задачи. Данные из буфера поступают в первый процессор, обрабаты- ваются (решается первая задача), затем результаты поступают во вто- рой буфер, откуда передаются на второй процессор для дальнейшей обработки (решается вторая задача). В это время первый буфер за- полняется следующим набором данных и т.д. В результате оба про- цессора работают одновременно. 79
Глава 2. Конвейеризация Все три упомянутых типа конвейерных систем характеризуются наличием конвейера (магистрали) обработки с независимыми ком- понентами, которые при заполнении конвейера работают одновре- менно и, по возможности, без перерывов. Считается, что конвейерный принцип обработки повышает эффектив- ность операций сложения на 47 %, а операций умножения — на 230 %. Конвейерные структуры различаются и по типу команд: обычные и векторные. Функциональные возможности конвейерной обработки наиболее полно проявляются при векторной обработке данных, когда выполняются однотипные операции над упорядоченной группой данных. Первым шагом на пути создания конвейерных систем явилось пере- крытие операций. В большей мере это перекрытие операций I/O, обработки в процессоре и обращения к ОП (UNIVAC, IBM 7094). Из отечественных компьютеров следует отметить БЭСМ-6. В резуль- тате эволюции структур компьютеров проектировщики пришли от реализации отдельных блоков конвейерной обработки (IBM 360/91, IBM 360/195) до полной реализации принципа конвейеризации (STAR 100, CRAY 2, 3, 4 и т.д.). Первым конвейерным компьютером общего назначения считается Stretch. В настоящее время выработан стандарт конвейера, включающий пять ступеней: чтение команды, декодирование, чтение операндов, ис- полнение операции, запись результата. В компьютерах Pentium Pro каждая из указанных ступеней может до- полнительно разбиваться на подступени, так что общая «длина» кон- вейера включает 12 подступеней. Естественно, что в зависимости от типа выполняемой операции осуществляется настройка на конкрет- ную длину конвейера. Для обработки 12 подступеней конвейера в Pentium Pro включены три устройства. Устройство выборки и декодирования поддерживает шесть подступеней: выборку команд, распознавание команд в потоке байтов, декодирование, постановку микрокоманд в очередь, запись микрокоманд в таблицу регистров, формирование статуса микро- команд. Устройство диспетчеризации и выполнения реализует под- ступени: выбор готовых для исполнения микрокоманд, выполнение 80
2.4. Конвейерные системы микрокоманд, изменение статуса микрокоманд, сравнение реального и предсказанного результатов выполнения и осуществление соответ- ствующей реакции. Устройство удаления выполненных команд осу- ществляет удаление выполненных команд и микрокоманд из пула и внесение соответствующих изменений в ряд таблиц. Итак, конвейерная обработка позволяет существенно уменьшить время решения задачи в целом, не сокращая времени выполнения отдельной команды. Сложные и разнообразные команды в компьютерах с CISC-ар- хитектурой потребовали существенного усложнения аппаратуры при реализации конвейера. И только появление компьютеров с RISC-ар- хитектурой придало новый импульс развитию технологии конвейе- ризации. В частности, RISC-процессоры не требуют большого объема конвейеризации. Так, например, в компьютере Pentium II чтение и де- кодирование требуют семь циклов, в то время как в UltraSPARC лишь три цикла. Суперконвейеризация, то есть разбиение конвейера на большое ко- личество ступеней, позволяет сократить работу, выполняемую за один цикл, и увеличить частоту. Однако при реализации двух следующих друг за другом команд, связанных по данным, будут образовываться значительные приостановки конвейера. Поэтому наряду с суперкон- вейеризацией желательно как можно больше операций реализовы- вать параллельно. Эффективность работы конвейера, как правило, определяется средней латентностью, то есть средним количеством единиц времени между двумя инициациями. Ясно, что чем меньше латентность конвейера, тем выше его производительность. Вторым подходом к оценке производительности конвейера является загрузка его ступеней, то есть оценка частоты использования z-й сту- пени конвейера за время одного вычисления. Важную роль в повышении производительности конвейера имеет стратегия диспетчеризации, главной целью которой является фор- мирование последовательности моментов времени инициализации (с целью максимизации темпа инициализации) или последователь- ности латентностей между инициализациями для минимизации средней латентности. 81 62792
Глава 2. Конвейеризация Упражнения 1. Для 5-уровневого и 5-ступенчатого конвейера постройте временную диаграмму выполнения цепочки операций: сложения, умножения, сло- жения, умножения, сложения (при условии, что на каждую ступень име- ется только одно обрабатывающее устройство). Оцените эффективность использования конвейера. ’ читывайте приоритеты операций и следую- щие условия: • если четвертая операция использует результат выполнения второй в качестве входного аргумента; • если третья операция использует в качестве аргумента результат вы- полнения первой и второй операций; • если вторая операция использует в качестве аргумента результат вы- полнения первой операции; • если четвертая операция использует в качестве аргумента результат вы- полнения первой и третьей операций; • если пятая операция использует в качестве аргумента результат выпол- нения первой и третьей операций; • если третья операция использует в качестве аргумента результат выпол- нения второй операции; • если третья операция использует в качестве аргумента результат выпол- нения второй и пятой операций; • если четвертая операция использует в качестве аргумента результат вы- полнения первой и второй операций; • если пятая операция использует в качестве аргумента результат выпол- нения первой и второй операций; • если четвертая операция использует в качестве аргумента результат вы- полнения второй и третьей операций. 2. Построить временную диаграмму 5-уровневого и 5-ступенчатого кон- вейера для цепочки операций СЛ1, СЛ2, УМЗ, УМ4, СЛ5, при условии, что результат операции СЛ1 используется в качестве аргумента операции УМ4, а результат выполнения операции УМЗ в качестве аргумента в опе- рации СЛ5. При этом учитывать приоритет выполнения операций. 82
Глава 3 Организация памяти В состав базовых компонент архитектуры компьютеров входят орга- низация памяти и способы взаимодействия информации на ее различ- ных уровнях. 3.1. Иерархия памяти Память компьютера может быть органи- зована как многоуровневая с различным объемом и временем доступа к ней — сверхоперативная (СОЗУ), оперативная (ОП), внешняя (ВнП) (рис. 3.1), так и од- ноуровневая, виртуальная. Почти всегда виртуальная память есть переупорядочен- ное подмножество реальной памяти. Уровни иерархии памяти взаимосвяза- ны между собой — все данные одного уровня могут присутствовать на более низком уровне. Рис. 3.1. Типы памяти (К— объем, S — быстродействие) Основная память предназначена для хранения команд и данных и обеспечивает адресный доступ к ним от процессора. Современные устройства памяти работают со скоростью, близкой к скорости рабо- ты процессора. При обращении процессора к памяти сначала производится поиск необходимых данных в СОЗУ. Так как время доступа к этому типу па- мяти меньше, чем к ОП, и, как правило, большинство необходимых для работы данных уже содержится там, то среднее время доступа к памяти уменьшается. Постоянная память (ПЗУ, ROM — read only memory) предназначе- на только для чтения ее содержимого. В ней хранятся программы проверки оборудования компьютера, инициирования загрузки опе- рационной системы и выполнения базовых функций по обслужи- ванию устройств, а также настройки конфигурации компьютера (SETUP). Так как основное содержимое ПЗУ связано с обслужива- 83
Глава 3. Организация памяти нием ввода-вывода, часто программы ROM-памяти называют BIOS (Basic Input-Output System). Небольшая по объему полупостоянная память используется для хране- ния параметров конфигурации компьютера. По технологии изготовле- ния ее часто называют CMOS-памятью (complementary metal-oxide semiconductor), она имеет низкое энергопотребление. 3.2. Регистровая память Простейшая регистровая структура используется для организации стековой памяти. Стековая память представляет собой набор из п ре- гистров, каждый из которых способен хранить одно машинное слово (рис. 3.2). Одноименные разряды регистров Р2, ..., Р„ соединены между собой цепями сдвига. Поэтому весь набор регистров может рассматриваться как группа «-разрядных сдвигающих регистров, составленных из одноименных разрядов регистров Рь Р2, ..., Рп. Информация в стеке может продвигаться между регистрами вверх и вниз. Движение вниз: (/\) -> Р2, (Р2) —> Р3,..., а Р1 заполняется данными из основной памяти. Движение вверх: (Р„) —> P„_b (Pn_i) —> Рп-г, а Рп освобождается от ин- формации. Регистры Pi и Р2 связаны с АЛУ, образуя два операнда для выполне- ния операции. Результат операции записывается в Pt. Следовательно, АЛУ выполняет операцию (Р1)®(Р2) — Одновременно с выполнением арифметической операции (АО) осу- ществляется продвижение операндов вверх, не затрагивая содержи- мого Р1; то есть (Р3) —> Р2, (Р4) —> Р3 и т.д., а содержимое регистра Р[ остается без изменений. Таким образом, АО используют подразумеваемые адреса, что умень- шает длину команды. В принципе, в команде достаточно иметь только поле, определяющее код операции. Поэтому компьютеры со стековой памятью называют безадресными. В то же время команды, осуществ- ляющие вызов или запоминание информации из основной памяти, требуют указания адреса операнда. Поэтому в компьютерах со стековой 84
3.2. Регистровая память В память Из памяти Рис. 3.2. Стековая организация памяти памятью используются команды переменной длины. Например, в KDF 9 команды арифметических операций могут включать одно, два или три поля для определения кода операции и операндов, в зависимости от типа операции (арифметическая, обращение к памяти, передача управления). Команды располагаются в памяти в виде непрерывного массива сло- гов независимо от границ ячеек памяти. Это позволяет за один цикл обращения к памяти вызвать несколько команд. Для эффективного использования возможностей такой памяти в ком- пьютерах вводятся специальные команды: ► дублирование (PJ —> Р2, (^г) —> Рз, — и т.д., a (PJ остается при этом неизменным; ► реверсирование (Pl) —> Р2, а (Р2) —> Р1, что удобно для выполне- ния некоторых операций. 85
Глава 3. Организация памяти 3.3. Организация кэш-памяти Кэши — следующий уровень иерархии памяти. Кэши сравнительно небольшие по объему, но имеют высокую скорость доступа. Исполь- зование кэш-памяти основывается на двух принципах: локализация в пространстве и локализация во времени. В кэш-памяти хранятся команды и данные, которые часто используются и требуют малых временных затрат для доступа к ним. Кэши прозрачны к программному обеспечению. Обычно никакое явное управление входами кэша невозможно. Данные распределяют- ся и управляются кэшем автоматически. Однако некоторые процес- соры осуществляют явный контроль над кэшированием данных. Кэш-память позволяет организовать работу медленной оперативной памяти как быстродействующей, оптимизируя следующие аспекты: ► максимизация коэффициента попадания; ► уменьшение времени доступа; ► уменьшение штрафа промаха; ► уменьшение непроизводительных затрат времени, требуемых для поддержания консистентности1 кэша. Характеристики кэша могут быть описаны следующей формулой: Т 1 1 f ___________1 m______________________=______*_____ “* ~0-н)т.+н.т, (1_я)+я.2к\_яГ1_А]’ ?т I тт) где G — производительность кэша; Н— hit ratio [0,..., 1]; (1 — Н) — miss ratio-, Тт = tacc of main memory-, Tc =tacc of cash memory. 1 Консистентность — согласованность, консенсус между программой и памятью. (Примеч. авт.) 86
3.3. Организация кэш-памяти Коэффициент попадания в кэш (в %) определяется отношением ко- личества успешных входов к числу промахов. Время доступа к кэшу должно быть значительно меньше, чем к оперативной памяти. Кэши первого уровня (£1) обычно нуждаются в одном импульсе сиг- нала, чтобы выбрать запись. Доступ к внекристальным кэшам (£3) зависит от задержки протокола управления передачей сообщений (chip-to-chip). Два типа кэшей представлены на рис. 3.3 и рис. 3.4. Рис. 3.3. Кэш прямого отображения 0 | x Bits | z Bits | Word Byte select select m+n+x+z_________ m+rt Bits hit| Hardware Structure (Address Path Only) Address Чт+п Рис. 3.4. Полностью ассоциативный кэш Тад TagO 87
Глава 3. Организация памяти 3.3.1. Кэш-память: принципы создания Быстродействующие процессоры не должны тратить большое время на ожидание команд и данных из ОП. Одним из архитектурных реше- ний механизма сокращения времени доступа к информации из ОП является кэш-память. Эффективность кэширования базируется на свойстве локализации ссылок во времени (большую часть времени выполняются определен- ные группы команд) и локализации в пространстве (высокая веро- ятность выполнения в следующий момент времени команд, распо- ложенных вблизи к текущей). Размещение в быстрой кэш-памяти активных сегментов программ сокращает общее время их выполне- ния. Реализуя принцип локализации во времени, каждый элемент (команда, данные), к которому обращается процессор, копируется в кэш, где он хранится до очередного востребования. Реализуя прин- цип локализации в пространстве, наряду с текущим элементом в кэш копируется и несколько близлежащих элементов. Набор элементов с последовательными адресами определенного размера обычно на- зывают блоком или строкой кэша. Процессор Pentium 4 позволяет создавать кэш до трех уровней (£1, L2, 13). На первом уровне имеется отдельная кэш-память данных и кэш-память команд. Кэш данных объемом 8 Кбайт имеет четырех- канальную множественно-ассоциативную организацию. Размер бло- ка — 64 байта. Запись данных в кэш осуществляется по протоколу сквозной записи. Целочисленные данные читаются из кэша за два так- та. Доступ к данным требует менее 2 нс, так как микросхемы Pentium 4 могут работать на частоте более 1,3 ГГц. Кэш команд содержит деко- дированные версии команд. Второй уровень кэша (256 Кбайт) имеет восьмиканальную множест- венно-ассоциативную организацию. Размер блока— 128 байт. Запись данных идет по протоколу обратной записи. Время доступа составля- ет семь тактов. Кэши LI и L2 реализованы на микросхеме процессора. Архитектура Pentium 4 позволяет организовать в микросхеме и кэш 13. В настоя- щее время третий уровень используется лишь в процессорах для сер- верных систем. 88
3.3. Организация кэш-памяти 3.3.2. Простейшая кэш-память Память вычислительной машины представляет собой иерархию запо- минающих устройств (внутренние регистры процессора, различные типы сверхоперативной и оперативной памяти, диски, оптические дис- ки, флэш-память), отличающихся средним временем доступа и стои- мостью хранения данных в расчете на один бит (см. рис. 3.1). Причем более высокий уровень памяти меньше по объему, быстрее и имеет большую стоимость в пересчете на бит, чем более низкий уровень. Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, а все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока не будет достигнуто основание иерархии. Важный способ увеличения производительности памяти — расслое- ние памяти — состоит в одновременном доступе к Л' слоям памяти (модулям памяти), при котором N последовательных адресов i, /+1, /+2, ..., i+N— 1 приходится на N различных слоев. Последовательные адреса разносятся по разным слоям таким образом, чтобы в одном модуле были слова с адресами к N+i, 0<к< M—i, где М — число слов в модуле I. Скорость доступа увеличивается в N раз (количество сло- ев). Модуль памяти обычный (последовательный). Имеются различные способы реализации таких расслоенных структур. Большинство из них напоминают конвейеры, обеспечивающие рас- сылку адресов в различные модули. Таким образом, коэффициент расслоения определяет распределение адресов по модулям памяти. Например, в суперкомпьютере NEC SX/3 используется 128 модулей памяти. Решением, которое позволяет увеличить пространство памяти и соз- дать более быстрый доступ к ней, без роста стоимости компьютера, является иерархия памяти. Пользователи предпочитают иметь и недорогую и быструю память. Кэш-память представляет некоторое компромиссное решение этой проблемы. Кэш-память — это способ организации совместного функционирова- ния двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных, что позволяет уменьшить среднее время доступа к данным за счет динамического копирования 89
Глава 3. Организация памяти в «быстрое» ЗУ наиболее часто используемой информации из «мед- ленного» запоминающего устройства. Кэш-памятью часто называют не только способ организации работы двух типов запоминающих устройств, но и одйо из устройств — «быстрое» ЗУ. Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. Важно, что механизм кэш-памяти является про- зрачным для пользователя. Рассмотрим случай использования кэш-памяти для уменьшения среднего времени доступа к данным, хранящимся в оперативной па- мяти. Для этой цели между процессором и оперативной памятью по- мещается быстрое ЗУ, называемое просто кэш-памятью. В качестве его может быть использована, например, ассоциативная память. Со- держимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных. Каждая запись об элемен- те данных включает адрес, который этот элемент имеет в оператив- ной памяти, и управляющую информацию: признак модификации и признак обращения к данным за некоторый период времени. В системах, оснащенных кэш-памятью, каждый запрос к оператив- ной памяти выполняется в соответствии со следующим алгоритмом: 1) просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в кэш-памяти; 2) при возникновении промаха контроллер кэш-памяти выбирает под- лежащий замещению блок. Как правило, для замещения блоков при- меняются две основные стратегии: случайная и LRU (Least-Recently Used). В первом случае для обеспечения равномерного распределения бло- ки-кандидаты выбираются случайно. В некоторых системах, чтобы получить воспроизводимое поведение, которое особенно полезно во время отладки аппаратуры, используют псевдослучайный алгоритм замещения. Во втором случае, чтобы уменьшить вероятность удаления из кэша информации, которая в ближайшее время может потребоваться, все обращения к блокам фиксируются. Заменяется тот блок, который не использовался самое длительное время (дольше всех) (стратегия LRU). Достоинство случайного способа заключается в более простой ап- паратной реализации, поскольку для поддержания стратегии LRU 90
3.3. Организация кэш-памяти требуется увеличение количества блоков и данный алгоритм стано- вится более дорогим и часто только приближенным. При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обра- щениями по чтению и большинство команд также ничего не записы- вает в память — операции записи составляют менее 10 % общего трафика памяти. Желание сделать данный общий случай более быст- рым означает оптимизацию кэш-памяти для выполнения операций чтения, однако при реализации высокопроизводительной обработки нельзя пренебрегать и скоростью операций записи. Общий случай является и более простым. Блок из кэш-памяти может быть прочитан в то же самое время, когда читается и сравнивается его тег. Таким образом, чтение блока начинается сразу, как только стано- вится доступным адрес блока. И, если считанный тег и старшие 7 бит адреса совпадают, то данный блок имеется в кэше. Если некоторый блок основной памяти может располагаться в любом месте кэш-памяти, то кэш называется полностью ассоциативным (fully associative). Механизм преобразования адресов должен быстро решать задачу опре- деления наличия блока с произвольно указанным адресом в кэш-памя- ти и адреса его расположения в кэше. Для этого используют ассоциа- тивную память: ► входная информация — тег; ► выходная информация — адрес блока внутри кэш-памяти. Если некоторый блок основной памяти может располагаться на огра- ниченном множестве мест в кэш-памяти, то кэш называется множе- ственно-ассоциативным (set associative). Обычно множество представ- ляет собой группу из двух или большего числа блоков в кэше. Если множество состоит из п блоков, то такое размещение называется мно- жественно-ассоциативным с п каналами (n-way set associative). Для раз- мещения блока прежде всего необходимо определить л, что задается младшими разрядами адреса блока памяти (индексом). Диапазон возможных организаций кэш-памяти очень широк: кэш-па- мять с прямым отображением есть просто одноканальная множествен- но-ассоциативная кэш-память, а полностью ассоциативная кэш-память с т блоками может быть названа /и-канальной множественно-ассо- 91
Глава 3. Организация памяти циативной. В современных процессорах, как правило, используется либо кэш-память с прямым отображением, либо двух(четырех)-ка- нальная множественно-ассоциативная кэш-память. Покажем, как среднее время доступа к данным зависит от вероятно- сти попадания в кэш. Пусть имеется основное запоминающее уст- ройство со средним временем доступа к данным /1 и кэш-память, имеющая время доступа /2, очевидно по определению, что fl < /1. Обозначим через / среднее время доступа к данным в системе с кэш-па- мятью, а черезр — вероятность попадания в кэш. По формуле полной вероятности имеем: t = tl(l-p)+tlp. Из формулы следует, что среднее время доступа к данным в системе с кэш-памятью линейно зависит от вероятности попадания в кэш и изменяется от среднего времени доступа в основное ЗУ (при р = 0) до среднего времени доступа непосредственно в кэш-память (при Р = О- В реальных системах вероятность попадания в кэш составляет при- мерно 0,9. Высокое значение вероятности нахождения данных в кэш- памяти связано с наличием у данных объективных свойств — времен- ной и пространственной локальности. Принцип временной локальности. Поскольку обращения к памяти но- сят не случайный характер, а происходят в соответствии с выполняе- мой программой, то при считывании данных из памяти с высокой степенью вероятности можно предположить, что в ближайшем буду- щем опять произойдет обращение к этим же данным. Поэтому их це- лесообразно хранить в буфере в течение некоторого времени. Принцип пространственной локальности. Если произошло обращение по некоторому адресу, то с высокой степенью вероятности в ближай- шее время произойдет обращение к соседним адресам. Этот принцип предполагает считывание в кэш нескольких соседних ячеек памяти, то есть блока информации. При этом возникает про- блема определения требуемого размера блока, заключающаяся в сле- дующем: ► чем больше размер блока, тем выше коэффициент удачных обра- щений (количество обращений, которые пришлись на кэш, по отно- шению к общему количеству обращений к памяти); 92
3.3. Организация кэш-памяти ► чем больше размер блока, тем меньшее количество блоков поме- щается в кэш, то есть растет вероятность появления операции пере- сылки блоков из ОП. Д. Кнут установил, что линейные участки программ обычно не пре- вышают 3—5 команд. Поэтому обычно размер блока — это 2—4 слова. Все предыдущие рассуждения справедливы и для других запоминаю- щих устройств, например для оперативной памяти и внешней памяти. В этом случае уменьшается среднее время доступа к данным, распо- ложенным на диске, а роль кэш-памяти выполняет буфер в оператив- ной памяти. Сегодня кэш-память имеется практически в компьютерах любого класса, а в некоторых компьютерах — и в большом количестве. Принципы размещения блоков в кэш-памяти определяют основные типы их организации. Если каждый блок основной памяти имеет только одно фиксиро- ванное место, на котором он может появиться в кэш-памяти, то та- кая кэш-память называется кэшем с прямым отображением (direct mapped). Это наиболее простая организация кэш-памяти, при кото- рой для отображения адресов блоков основной памяти на адреса кэш-памяти просто используются младшие разряды адреса блока. Таким образом, все блоки основной памяти, имеющие одинаковые младшие разряды в своем адресе, попадают в один блок кэш-памяти, то есть адрес блока кэш-памяти = (адрес блока основной памяти) mod (число блоков в кэш-памяти). Если чтение происходит с попаданием, то блок немедленно направ- ляется в процессор. Если же происходит промах, то заранее считан- ный блок не используется. Другая ситуация возникает при выполнении операции записи. Обыч- но размер записываемой информации составляет от 1 до 8 байт и только эта часть блока должна быть изменена. В общем случае это подразумевает выполнение последовательности операций над бло- ком: чтение оригинала блока, модификацию его части и запись ново- го значения блока. Более того, при наличии тега модификация блока не может начаться до тех пор, пока проверяется содержимое тега, чтобы убедиться, что данное обращение является попаданием. По- скольку такая проверка не может выполняться параллельно с другой 93
Глава 3. Организация памяти работой, операции записи занимают больше времени, чем операции чтения. Для записи в кэш-память имеются два способа: ► сквозная запись (write through, store through) — информация запи- сывается сразу в две области: в блок кэш-памяти и в блок более низ- кого уровня; ► запись с обратным копированием (write back, copy back, store in) — информация записывается только в блок кэш-памяти. Модифициро- ванный блок кэш-памяти записывается в основную память только в случае его замещения. Для сокращения частоты копирования бло- ков при замещении обычно с каждым блоком кэш-памяти связыва- ется так называемый бит модификации (dirty bit), показывающий, был ли модифицирован данный блок. Если он не модифицировался, то обратное копирование отменяется, так как более низкий уровень памяти содержит ту же информацию, что и кэш-память. При записи с обратным копированием операции записи выполняют- ся со скоростью кэш-памяти, и несколько записей в один и тот же блок требуют только одной записи в память более низкого уровня. Так как обращения к основной памяти происходят реже, то требуется меньшая полоса пропускания памяти. При сквозной записи промахи по чтению не влияют на записи в более высокий уровень, и, кроме того, она проще для аппаратной реализации, чем запись с обратным копированием. Когда процессор ожидает завершения обращения к памяти при вы- полнении сквозной записи, то говорят, что он приостанавливается для записи (write stall). Общий прием минимизации приостановок по записи связан с использованием буфера записи (write buffer), кото- рый позволяет процессору продолжить выполнение других команд во время обновления содержимого памяти. Следует отметить, что при- остановки по записи могут возникать и при наличии буфера записи. При промахе во время записи имеются две возможности: ► разместить запись в кэш-памяти (write allocate) (называется также выборкой при записи — fetch on write). Блок загружается в кэш-па- мять, вслед за чем выполняются действия, аналогичные действиям при записи с попаданием. Это похоже на промах при чтении; 94
3.4. Концепция виртуальной памяти ► не размещать запись в кэш-памяти (называется также записью в окружение — write around). Блок модифицируется на более низком уровне и не загружается в кэш-память. Обычно в кэш-памяти, реализующей запись с обратным копирова- нием, используется размещение записи в кэш-памяти (в надежде, что последующая запись в этот блок будет перехвачена), а в кэш-памяти со сквозной записью размещение записи в кэш-памяти часто не про- исходит, так как последующая запись в любом случае будет осуществ- лена в основную память. 3.4. Концепция виртуальной памяти Каждая часть среды компьютера имеет собственное обозначение: ячейка — адрес, периферийное устройство — номер и т.д. В простей- ших компьютерах собственные обозначения указываются непосред- ственно в программе. В более сложных компьютерах программа отделе- на от среды «аппаратом преобразования собственных обозначений». Рассмотрим один элемент среды — память. Аппарат преобразования адреса (АПА) не находится под прямым управлением программы и связь с ним осуществляется только через процедуры, работающие в управляющем режиме. Если программист напрямую не использует АПА, то он работает с на- бором ячеек и периферийных устройств, образующих «виртуальную (математическую, мнимую) среду». Почти всегда виртуальная среда есть переупорядоченное подмножество реальной среды. Каждому виртуальному элементу соответствует реальный элемент, но обратное не всегда верно. Рассмотрим один из элементов виртуальной среды — виртуальную память (ВП). 3.4.1. Задачи, решаемые виртуальной памятью Виртуальный адрес — адрес, по которому ссылаются на ячейку вирту- альной памяти. Область виртуальных адресов — это множество всех виртуальных адресов. Использование виртуальной адресации обусловливается следующи- ми обстоятельствами. 95
Глава 3. Организация памяти Однородность области адресов. Представим себе реальный компьютер без виртуальной памяти. Пусть на нем выполняется параллельно не- сколько процессов. У каждого процесса будет отдельная локальная среда и каким-то образом распределяемые элементы общей среды. Программисту требуется заранее знать, к каким конкретно частям общей среды его процедура может обращаться. Это затруднительно для пользователей ЭВМ, составляющих свои собственные программы. Отвести наперед фиксированную область среды для каждого процесса невозможно, ибо положение каждой конкретной программы опреде- ляется положением всех других программ. И ситуация динамически изменяется. При виртуальной адресации каждый процесс в памяти может выпол- няться с фиксированной (обычно нулевой) ячейки и на имеющей не- обходимые размеры области ЗУ. Программисту безразлично, в каком участке памяти размещается его программа, так как во время выпол- нения программы каждое обращение к виртуальной памяти посред- ством АПА преобразуется в реальное обращение. Следует учитывать, что АПА работает не во время компиляции, а непосредственно во время выполнения обращения. Защита памяти. Общеизвестно, что основная цель защиты памяти со- стоит в том, чтобы не дать возможности процессу, содержащему не- корректные команды, испортить часть среды, относящуюся к другому процессу. Особенно это важно при защите сред управляющих проце- дур. Виртуальная адресация в данном случае используется следующим образом: при каждой ссылке на память проверяется, принадлежит ли данная ссылка к области виртуальных адресов, отведенных для ссы- лающегося процесса. Изменение структуры памяти. При проектировании больших программ структура памяти машины с малой ОП явно усложняет проектируе- мую программу. Применение виртуальной адресации позволяет пре- образовать память на разных ступенях иерархии в «одноуровневую память» с одинаковым доступом ко всем элементам и отобразить ее на реальную память. Для обеспечения однородности области адресов, защиты памяти и изменения структуры требуется аппарат «страничной» организации памяти. 96
3.4. Концепция виртуальной памяти 3.4.2. Страничная организация памяти Отображение виртуальной памяти (ВП) в реальную обычно осущест- вляется с помощью страничной организации памяти. Виртуальную память в системе со страничной организацией памяти делят на ряд «блоков» фиксированной длины, равной 2*, где к — це- лое натуральное число. Так как первая ячейка очередного блока при- мыкает к последней ячейке предыдущего блока, программисту факт разбиения ВП на блоки учитывать не требуется. Оперативная память компьютера при этом состоит из «страниц», а вспомогательная — из «сегментов» такого же размера. Виртуальную память пользователя можно разделить на три типа: ► «активные» блоки,.которые содержат программу и данные, исполь- зуемые в текущий момент; ► «пассивные» блоки, содержащие программу и данные, которые бу- дут использоваться при выполнении программы; ► «мнимые» блоки, к которым не обращаются на протяжении выпол- нения программы. Соотношения между первым и вторым типами блоков ВП в процессе выполнения программы изменяются. Третий тип блоков возможен лишь при наличии очень большой области ВП. Аппарат виртуальной адресации должен отображать виртуальную среду на реальную, причем так, чтобы «активные» блоки находились в оперативной памяти, «пассивные» — по возможности в оператив- ной или вспомогательной, а мнимые — нигде. Наиболее удачным из первых компьютеров со страничной организа- цией памяти (СОП) является ATLAS (Ferranti). ВП в нем содержит около 2 тысяч блоков по 512 слов, оперативная память — от 32 до 96 страниц такой же длины. Если ATLAS выполняет процесс, который запрашивает блок из ВП, то некоторым блокам отводятся страницы в оперативной памяти, остальные блоки помещаются на накопитель на магнитном барабане. Фиксированных соотношений между номе- рами страниц, блоков и сегментов не существует. Динамическое со- отношение между сегментами отражено в соответствующей таблице операционной системы. 97 7 ‘2792
Глава 3. Организация памяти Преобразование виртуального адреса в реальный происходит с помо- щью регистров адресов страниц (РАС). Структура виртуального адреса: Номер блока Номер строки Каждой странице ОП соответствует свой РАС, формат которого при- веден на рис. 3.5. Аппарат виртуальной адресации отображает вирту- альный адрес в реальный путем сравнения с содержимым всех РАС. Номер блока, занимающего страницу в данный момент Бит использования Бит записи Бит активности Рис. 3.5. Структура регистра адреса страницы Единственным найденным РАС будет содержащий тот же номер бло- ка и «1» в бите активности. РАС определяет номер страницы, с кото- рой он связан. Для получения реального адреса памяти к номеру страницы данного РАС присоединяется номер строки из виртуально- го адреса (ВА). В последовательной интерпретации процесс преобра- зования ВА в реальный можно отобразить схемой, представленной на рис. 3.6. Рис. 3.6. Схема отображения ВА в реальный адрес Бит записи в РАС служит для экономии времени перезаписи «стра- ницы» во внешнюю память (ВнП). Когда блок переносится из ВнП в оперативную память, в бит записи заносится «О». Если некоторая 98
3.4. Концепция виртуальной памяти строка данной страницы ОП изменяется в процессе обращения к ней, то бит записи устанавливают равным «1». И пока содержимое бита записи равно «О», эта страница является точной копией соответ- ствующего блока во ВнП. В бит использования «1» засылается при очередном обращении к данной странице. Через равные промежутки времени содержимое этого бита сканируется и записывается в определенную ячейку памя- ти, тем самым создавая статистику использования данной страницы. Подобная статистика полезна при замещении страниц в ОП. Для создания РАС требуется очень дорогая ассоциативная память, поэтому в mainframe-компьютерах число РАС меньше количества страниц ОП. В таких компьютерах каждому блоку ВП отводится одна последовательная ячейка памяти, указывающая место хранения это- го блока (ОП, ВнПили нигде). Имеется небольшое количество ассо- циативных регистров для РАС (обычно 8 или 16). Полный процесс отображения ВП в реальную выполняется за три этапа. 1. При обращении к блоку ВП, отображаемому на страницу ОП, РАС которой является одним из 8 (16) ассоциативных регистров, про- цесс отображения выполняется согласно схеме, приведенной на рис. 3.7. N стр. ОП РАС БЛ.0 0 БЛ.1 0 БЛ.2 0 БЛ.З 0 БЛ.2 1 БЛ.1 0 БЛ.0 0 БЛ.0 0 ВА 117 Рис. 3.7. Схема процесса отображения виртуального адреса (ВА) в реальный адрес (РА) в ЭВМ ATLAS РА (ОП) 117 99
Глава 3. Организация памяти 2. Если блок ВП не с тображен на странице ОП, то номер виртуально- го блока служит указателем для обращения к таблице блоков (ТБ) в оперативной памяти. Если из ТБ видно, что искомый блок нахо- дится в оперативной памяти, то номер страницы также может быть выбран из ТБ. Если же нужный блок находится во вспомогатель- ной памяти или отсутствует вообще, то происходит прерывание и осуществляется переход к управляющей процедуре (п. 3). 3. Обработк прерывания. Для эффективной работы системы необ- ходимо, чтобы ассоциативные регистры сод» ржали РАС для наи- более часто используемых страниц. Основная цель методов оптимизации распределения реальной памяти состоит в минимизации числа обменов между оперативной и вспомо- гательной памятью. Отсюда следует, что необходимо корректно вы- бирать стратегию замещения страниц. Наиболее часто на практике используются следующие стратегии: циклическое изгнание, случай- ная выборка, наименьшее число обращений с момента последнего прерывания. Результаты экспериментов показали, что число обме- нов, требуемых конкретной задачей при использовании указанных стратегий, различается не более чем на 10 %. Перенося концепцию виртуальной памяти на другие компоненты компьютера, можно перейти к концепции виртуального компьютера. 3.5. Оперативные и постоянные запоминающие устройства Все рассмотренные выше виды памяти характеризуются тем, что в них можно как записывать, так и считывать информацию. Прежде всего это оперативное запоминающее устройство (ОЗУ). ОЗУ бывает двух типов: статическое и динамическое. В статическом ОЗУ, конструируемом с помощью D-триггеров, ин- формация сохраняется до тех пор, пока к нему подается питание. Доступ к информации осуществляется за несколько наносекунд. В связи с этим статическое ОЗУ используют в качестве кэш-памяти. Динамическое ОЗУ — это набор ячеек, каждая из которых содержит транзистор и конденсатор. Нули и единицы (биты) информации соот- ветствуют заряженным и разряженным конденсаторам. Для предот- 100
3.5. Оперативные и постоянные запоминающие устройства вращения исчезновения информации (так как электрический заряд быстро исчезает) все конденсаторы должны каждые несколько мил- лисекунд обновляться (перезаряжаться). Процесс обновления обес- печивается внешней по отношению к ОЗУ логической схемой. Динамическое ОЗУ имеет большой объем, хотя время доступа к нему составляет десятки наносекунд. Динамическое ОЗУ, требующее один транзистор и один конденсатор на бит (статическое ОЗУ требует не менее шести транзисторов на бит), имеет очень высокую плотность записи. Сочетание основной памяти, реализованной на динамическом ОЗУ, с кэш-памятью, реа- лизованной на статическом ОЗУ, позволяет использовать достоинст- ва обоих типов ОЗУ. Для динамических ОЗУ все еше используется тип памяти FPM (Fast Page Mode) — быстрый постраничный режим, представляющий со- бой матрицу битов. Аппаратная поддержка такого режима обеспечи- вает поиск данных вначале по адресу строки, затем по адресу столбца. Второй тип, применяемый для динамического ОЗУ, — EDO (Extend- ed Date Output) — память с расширенными возможностями вывода. Обеспечивает обращение к памяти еще до завершения предыдущего обращения. Такой конвейерный режим не ускоряет доступ к памяти, однако увеличивает пропускную способность вывода. Очень часто данные следует сохранять даже при выключении пита- ния. Это привело к созданию ПЗУ — постоянных запоминающих устройств, не позволяющих изменять и стирать хранящуюся в них информацию. Запись в ПЗУ производится во время его изготовле- ния. В отличие от обычных ПЗУ, программируемые ПЗУ позволяют осуще- ствлять их программирование в условиях эксплуатации, например, пережигая крошечные плавкие перемычки в нужных строках и столб- цах и прилагая высокое напряжение к определенному выводу микро- схемы. Существует и стираемое программируемое ПЗУ, которое можно как программировать во время эксплуатации, так и удалять из него ин- формацию. Если на кварцевое окно в данном ПЗУ воздействовать сильным ультрафиолетовым светом в течение 15 минут, то все биты установятся в единицу. 101
Глава 3. Организация памяти В настоящее время применяются и электронно-перепрограммируе- мые ПЗУ, которые позволяют стирать информацию, не помещая ПЗУ в специальную камеру. Однако самые большие электронно-пере- программируемые ПЗУ по объему памяти в 64 раза меньше обычных стираемых ПЗУ, работают медленнее, а стоят значительно дороже. Поэтому такие ПЗУ используются только при необходимости сохра- нить информацию при выключенном питании. Современный тип электронно-перепрограммируемого ПЗУ — флэш- память, которая стирается и записывается блоками. Многие произво- дители создают небольшие печатные платы, содержащие сотни мега- байт и даже десятки гигабайт флэш-памяти. Они используются для хранения изображений в цифровых камерах, сотовых телефонах, для хранения BIOS в ПК микропрограмм для микроконтроллеров HDD и CDROM, а также для других целей. Флэш-память — это особый вид памяти, который используется, как правило, для мобильных устройств. Благодаря своим параметрам флэш-память применяется во всех видах мобильных устройств. Она не требует дополнительной энергии для хранения данных (энергия требуется только для записи), допускает перезапись хранимых в ней данных. Флэш-память не содержит механических движущихся час- тей (как обычные жесткие диски или CD), а поэтому потребляет значительно меньше энергии, что является одним из основных ее преимуществ. В зависимости от типа флэш-памяти возможна переза- пись информации от 10 000 до 1 000 000 раз. Информация, записанная на флэш-память, может храниться дли- тельное время (от 20 до 100 лет) и способна выдерживать значитель- ные механические нагрузки, в 5—10 раз превышающие предельно допустимые для обычных жестких дисков. Флэш-память очень компактна. Размер флэш-карты составляет от 20 до 40 мм (по длине или ширине), толщина до 3 мм. Флэш-карта мо- жет быть вмонтирована в мобильное устройство, а может быть пере- носимой и использоваться в нескольких устройствах (например, флэш-карта цифрового фотоаппарата может быть прочитана на обычном компьютере). В настоящее время микросхемы флэш-памя- ти производят более 50 компаний в мире. В техническом описании любого мобильного устройства сейчас указывается тип используемой флэш-памяти. 102
3.5. Оперативные и постоянные запоминающие устройства В простейшем случае ячейка флэш-памяти хранит один бит инфор- мации и состоит из одного полевого транзистора со специальной электрически изолированной областью («плавающим» затвором — floating gate), способной хранить заряд многие годы. Наличие или от- сутствие заряда кодирует один бит информации. При записи заряд помещается на плавающий затвор одним из двух способов (зависит от типа ячейки): методом инжекции «горячих» элек- тронов или методом туннелирования электронов. Стирание содержи- мого ячейки (снятие заряда с «плавающего» затвора) производится методом туннелирования. Как правило, наличие заряда на транзисторе понимается как логиче- ский «О», а его отсутствие — как логическая «1». Современная флэш-па- мять обычно изготавливается по 0,13- и 0,18-микронной технологии. Можно выделить несколько основных типов флэш-памяти. CompactFlash (CF) выпускается двух типов — CF type I и CF type II. Этот стандарт остается сегодня наиболее универсальным и перспек- тивным, несмотря на больший по сравнению с другими картами раз- мер (42 х 36 х 4 мм). SmartMedia — дешевая и ультратонкая (толщиной всего 3/4 милли- метра) флэш-карта. Невысокая цена за счет предельно простой кон- струкции, но невысокая защищенность информации от случайного стирания. Multimedia Card (ММС) — основное достоинство этого типа заклю- чается в миниатюрности и низком энергопотреблении, но при этом достаточно низкая скорость чтения и записи. Размер стандартной карты 24 х 32 х 1,4 мм, укороченной — 24 х 18 х 1,4 мм. Использует- ся в мобильных телефонах и других миниатюрных устройствах. SecureDigital (SD) — ее размер немногим больше ММС, но скорость чтения и емкость значительно выше. В связи с этим карта стоит дороже. SD и ММС обратно совместимы, то есть карты ММС можно вставить и использовать в разъеме для карт SD, но не наоборот. Впрочем, сей- час почти все устройства оборудованы именно разъемом SD (чаше всего его называют SD/MMC). MemoryStick — разработка фирмы Sony. Размер 24 х 32 х 1,4 (2,1) мм, довольно высокая защита информации, скорость чтения и записи со- поставимы с SecureDigital (SD), но емкость невысокая. 103
Глава 3. Организация памяти На данный момент, по оценкам аналитиков, наиболее распростра- ненными типами флэш-карт являются CompactFlash и SD/MMC. CompactFlash, в частности, используется во многих цифровых фото- аппаратах, например в популярной модели Canon digital ixus 400, а SD/MMC — в «карманных» компьютерах, например в популярной модели Rover рс рЗ. Цены на флэш-карты также оставляют потреби- телю возможность выбора. К примеру, SD/MMC стоит от 34$ (32 Мбайт) до 315$ (512 Мбайт), a CompactFlash — от 31$ (32 Мбайт) до 290$ (1 Гбайт). Возможно, со временем флэш-память вытеснит диски, учитывая бы- стрый доступ к данным и постоянно возрастающую емкость. 3.6. Дополнительная память Доступ к данным, расположенным в разноуровневой памяти, сущест- венно различается по времени. Доступ к регистровой памяти измеря- ется несколькими наносекундами (нс), к ОП — десятками наносе- кунд, к оптическим дискам доступ может измеряться секундами. Магнитные диски представляют собой алюминиевые диски с магнит- ным покрытием; диаметр их колеблется от 12 до 3 см и менее. Головка диска, поддерживаемая оздушной подушкой, записывает или счи- тывает с соответствующего участка движущегося диска биты инфор- мации. Последовательность бит, записанная по окружности диска за его полный оборот, называют дорожкой. Фрагмент дорожки диска показан на рис. 3.8. Преамбула 4096 инф.бит Преамбула 4096 инф.бит 1Ьловка записи-считывания Рис. 3.8. Фрагмент дорожки диска из двух секторов Как правило, сектор дорожки содержит 4096 информационных бит, после них размещается код исправления ошибок, в качестве которого применяется код Хемминга (см. гл. 5) или Рида-Соломона. Перед 104
3.6. Дополнительная память данными расположено поле синхронизации головки диска. Межсек- торный интервал разделяет соседние секторы. Указываемая произво- дителями емкость неформатированного диска, как правило, после форматирования уменьшается на 10—15 % за счет появления слу- жебных полей. Плотность записи надиске около 105 бит/сь?Диски герметично защищаются от проникновения пыли. В такой упаковке (винчестере), как правило, помещается несколько дисков (рис. 3.9). ТЬловки Скорость вращения дисков около 180 оборотов в секунду. Время пе- редачи информации зависит от времени поиска информации, объема преамбул, кодов исправления ошибок и ожидания необходимого сектора. Высокая скорость вращения дисков приводит к их нагреванию и изме- нению размеров, что требует периодической рекалибровки механиз- мов перемещения головок. Для работы с мультимедиа-программами выпускаются специальные аудио-видеодиски, не требующие терми- ческих рекалибровок и обеспечивающие необходимый непрерывный поток информации. 105
Глава 3. Организация памяти В настоящее время усложнен процесс хранения информации надис- ке за счет увеличения количества секторов при переходе от центра диска к его краю, что повышает емкость диска. Управляет диском специальная микросхема-контроллер, выполняю- щая команды READ, WRITE, FORMAT, преобразование отдельных поступающих байт в непрерывный поток бит и обратное преобразо- вание, обнаружение, локализацию и исправление ошибок, буфериза- цию совокупности секторов, их кэширование, замену неисправных секторов резервными и т.д. Дискета (floppy disk) имеет то же назначение, что и магнитные диски. При чтении информации с дискеты головка непосредственно касает- ся ее поверхности, в то время как головка магнитного диска пере- мещается над его поверхностью на воздушной подушке. Дискеты различаются физическими размерами, объемом хранимой информа- ции и плотностью записи — низкой (LD — Low Density) и высокой (HD — High Density). Оптические диски имеют более высокую плотность записи, чем маг- нитные, и обеспечивают хранение огромных объемов информации. Впервые оптические диски были разработаны фирмой Philips. В 1980 году фирма Philips вместе с Sony разработали Compact Disk (CD). Для обеспечения возможности хранения мультимедийной информации была решена проблема размещения в одном секторе аудио-, видео- и обычных данных. Большая емкость и низкая цена CD позволяют использовать их для многих приложений, в частности, значительная часть компьютерного программного обеспечения поставляется на компакт-дисках. Универсальная память, разработанная компанией Nantero на крем- ниевой основе размером с компакт-диск, способна хранить 10 мил- лиардов бит цифровой информации. Примечательно, что здесь для кодировки бита не используется электрический заряд на элементе схемы (обычная электронная память) и управление магнитным по- лем (как в жестких дисках). Кодировка осуществляется физической ориентацией наномерных структур. Каждая ячейка памяти изготов- лена из углеродных нанотрубок. Она подвешивается на расстоянии нескольких нанометров над электродом. В таком положении ток ме- жду нанотрубкой и электродом не проходит (состояние «0»), Если к нанотрубке приложить некоторое напряжение, она «провисает» 106
3.7. Управление памятью в середине, соприкасаясь с электродом, и образует цепь (состояние «1»). Положение нанотрубок сохраняется при снятом напряжении. В пер- спективе такая память позволит хранить триллионы бит информации на одном квадратном сантиметре. 3.7. Управление памятью Управление памятью, как правило, требует решения двух задач: ► распределение памяти между процессами, ► защита памяти от несанкционированного доступа. Для решения этих задач рассмотрим различные пространства адресов и их взаимное отображение. Пространство имен в программе представляет собой совокупность идентификаторов, которые программа использует для обращения к тем или иным областям памяти (например, имен переменных, точек вхо- да для программных модулей и т.д.). Как правило, реальное располо- жение соответствующих областей памяти не соответствует заданному порядку имен. Исключением является описание массивов (элементы массива должны идти непосредственно друг за другом в порядке воз- растания их индексов) и структур (поля структуры также должны рас- полагаться в смежных областях памяти). Логическое пространство адресов представляет собой множество число- вых значений, которые могут быть использованы для доступа к памя- ти в машинных командах. Мощность этого множества определяется архитектурой конкретной вычислительной системы. Так, процессор 18086 имеет 20-битовую шину адреса, следовательно, адресуемое ло- гическое пространство этого процессора содержит 220 адресов, то есть максимальный доступный адрес — 1 Мбайт. Переход к 32-разрядной адресной шине дает возможность оперировать с адресами до 4 Гбайт. Логический адрес часто представляется в формате «базовый адрес + + смещение», где в качестве базового адреса может выступать, напри- мер, значение сегментного регистра. Физическое пространство адресов ограничивается объемом реальной памяти конкретного компьютера. 107
Глава 3. Организация памяти Преобразование пространства имен в логическое пространство адресов выполняется на этапе подготовки исполняемого модуля и его загрузки в память перед выполнением. Рассмотрим этот этап подробнее. При компиляции программы отдельным символьным именам ставят- ся в соответствие логические адреса. Эти адреса имеют вид смещения относительно некоторого базового адреса. Значение базового адреса остается неопределенным. Оставшиеся символьные имена преобра- зуются в так называемые внешние ссылки, которые должны быть разрешены на последующих этапах обработки программы, в частно- сти на этапе линкования (редактирования связей). Этот этап может быть интегрирован в единое целое с компиляцией либо выделен в от- дельный этап. При линковании выполняется разрешение ссылок, ос- тавшихся после компиляции, за счет внешних библиотек и пр. В идеальном случае в исполняемом модуле не должно быть неразре- шенных внешних ссылок, за исключением динамически подключае- мых имен. Полученный исполняемый модуль является, как правило, перемещаемым, то есть все логические адреса в нем представлены в виде смещений относительно одного или нескольких базовых адре- сов. Наконец, на этапе загрузки программ осуществляется настройка базовых адресов. Полученные адреса, тем не менее, остаются логиче- скими. При преобразовании логических адресов в физические возможны два случая. 1. Пространство физических адресов больше пространства логических. В этом случае для эффективного использования всей физической памяти программы должны использовать специальные механизмы расширения памяти. В качестве примера одного из таких механиз- мов рассмотрим реализацию EMS (Extended Memory System), ха- рактерную для поздних моделей операционной системы MS DOS. Суть ее состоит в следующем: память свыше 1 Мбайт, объявленная как EMS, разбивается на страницы размером 4 Кбайт. С другой стороны, в области старших адресов памяти (то есть в границах ад- ресов OAOOOOh — OFFFFh) выделяется фрейм размером 16 Кбайт, в который перемещается информация из области EMS. Иллюстра- ция этого механизма приведена на рис. 3.10. 2. Пространство логических адресов больше пространства физических. В этом случае возможности преобразования значительно шире 108
3.7. Управление памятью 640 к Рис. 3.10. Иллюстрация механизма EMS и основаны на концепции виртуальной памяти — на диске созда- ется специальный файл подкачки (файл виртуальной памяти), разбитый на страницы. Подлежащая распределению оперативная память также разбивается на страницы того же размера. Логиче- ский адрес интерпретируется как «номер виртуальной страницы + смещение в странице». Некоторые из логических страниц загружа- ются в страницы оперативной памяти. Операционная система ве- дет специальную таблицу соответствия логических и физических страниц. При любом обращении к логическим адресам выполня- ется проверка нахождения этой страницы в оперативной памяти. Если страница отсутствует, происходит ее загрузка (возможно, с вытеснением надиск одной из страниц, загруженных ранее). Ме- ханизм работы с виртуальной памятью приведен на рис. 3.11. Файл подкачки Оперативная память Рис. 3.11. Организация виртуальной памяти 109
Глава 3. Организация памяти Различают следующие три типа исполняемых модулей в соответствии с механизмом использования памяти: ► простые (линейные); ► оверлейные (с перекрытием); ► динамические. В простых модулях каждая процедура получает свой блок логических адресов, не пересекающийся с блоками адресов других процедур. Такой механизм прост в использовании, поскольку после запуска процесса нет необходимости применять загрузчик. Однако такая структура исполняемого модуля приводит к неоправданно большому размеру используемой памяти в случае, если схема взаимодействия между процедурами имеет древовидную структуру. При этом может сложиться ситуация, когда пространства физических (или логиче- ских) адресов может не хватить для загрузки всей программы. Альтернативой простой схеме является оверлейная структура. При использовании такой схемы выделяются два или более модулей, ко- торые не обращаются друг к другу, и для них указывается единая точка перекрытия (точка оверлея). Все перекрывающиеся модули загружа- ются в память начиная с этой точки. Это позволяет уменьшить сум- марный объем загруженных модулей, но вынуждает тратить время на подзагрузку перекрывающихся частей. Различия между простой и оверлейной структурой показаны на рис. 3.12. Оверлейные структуры могут быть созданы вручную (то есть про- граммист указывает количество точек перекрытия и соответствующих Рис. 3.12. Различие между простыми и оверлейными модулями: а — схема вызова подпрограмм; б — структура простого модуля; в —структура оверлейного модуля 110
Упражнения им модулей) или автоматически. Кроме того, оверлеи реализуются как средствами операционной системы, так и с помощью соответст- вующих систем программирования. Как простые, так и оверлейные схемы предполагают, что информа- ция о подпрограммах, которые могут быть затребованы, известна до начала работы соответствующего процесса. В отличие от них динами- ческая схема позволяет определить это во время работы процесса. Упражнения 1. Охарактеризуйте уровни иерархии памяти по объему и времени доступа к данным. 2. Укажите содержимое стековой памяти до и после выполнения операции: а) сложения, б) умножения. 3. Для чего используется многоуровневая кэш-память? 4. Поясните параметры кэш-памяти: локализация в пространстве и лока- лизация во времени. 5. Как организована кэш-память в Pentium 4? 6. Что такое «расслоение памяти»? 7. Какие функции выполняет виртуальная память? 8. Реализуйте алгоритм преобразования виртуального адреса в реальный. 9. Определите назначение динамического и статического ОЗУ. 111
Глава 4 Компьютерные сети При решении ряда задач экономически нецелесообразно содержать для каждого компьютера в организации накопитель на жестких маг- нитных дисках большого объема, лазерный принтер, модем и другие устройства. Кроме того, при решении сложной задачи, разбитой на фрагменты, выполняемые на отдельных компьютерах разными ис- полнителями, достаточно сложен процесс координации их работы. Совместная работа над одной задачей требует постоянного и опера- тивного обмена информацией и текущего контроля промежуточных результатов для эффективного и успешного ее завершения. Персональные компьютеры, работающие в автономном режиме, пригодны лишь для решения индивидуальных (частных, персональ- ных) задач, подготовки различных документов, графиков, таблиц и т.п. При этом обычно возникает проблема обмена данными между пользователями автономных компьютеров. Наиболее широко рас- пространенными оказались два способа передачи сообщений: в виде «твердой» (распечатанной на бумаге) копии данных или с помощью копирования информации на дискету или другой носитель. Однако, если над проектом работают одновременно несколько человек и каж- дый ежедневно вносит в них изменения, возникают проблемы учета этих изменений в динамике. Существует ряд задач, решение которых непроизводительно или про- сто невозможно без совместного использования информации. На- пример, при резервировании и продаже билетов на транспорт, при формировании бюджета страны, составлении прогноза погоды и т.п. Справиться с указанными проблемами позволяет компьютерная сеть, представляющая собой объединение отдельно работающих компьюте- ров в один совместно функционирующий механизм, поддерживаемый соответствующим программным и аппаратным обеспечением. Компьютерные сети, обмен данными в которых осуществляется ко- пированием информации на дискету (или другой носитель) и переда- чей ее в такой форме на другие компьютеры, называют «переносной» сетью. 112
Глава 4. Компьютерные сети Компьютерная сеть позволяет обеспечить, по крайней мере, решение трех проблем: ► экономить память на жестких магнитных дисках, так как группа пользователей может применять одни и те же системные программы и пакеты программ общего назначения; ► упростить и сделать оперативным процесс обмена информацией между различными пользователями; ► получать одновременный доступ к одной и той же информации. Организуют работу всех компонент сети и обеспечивают их эффек- тивное функционирование сетевые операционные системы — NOS (Network Operating Systems). Компания Novell является одной из первых производителей компью- терных сетей (оборудования и программного обеспечения). Разрабо- танная ею NOS Netware способна поддерживать компьютеры (рабочие станции), управляемые операционными системами DOS, Windows, OS/2, UNIX, Windows NT, Mac System 7 и некоторыми другими ОС. Наиболее распространенной NOS в Республике Беларусь является Windows ХР (фирма Microsoft). Windows NT Server позволяет работать в сети пользователям, персо- нальные компьютеры (ПК) которых функционируют под управлени- ем MS DOS, Windows 3.11 и Windows 95. Клиенты загружают свои зада- ния, используя программное обеспечение, находящееся на жестких дисках сети. Каждый клиент (или рабочая станция) с помощью сете- вого адаптера с начальной программой сетевой загрузки (Remote Initial Program Load — RPL) осуществляет удаленную загрузку (booting re- motely) в сеть. Одна из принципиальных особенностей операционной системы Windows NT состоит в том, что сетевые возможности в нее встроены изначально. В таких системах, как OS/2, Windows 3.11 или MS DOS, возможности работы в сети добавлялись к готовым используемым программным продуктам. Одним из самых распространенных вычислительных комплексов в на- стоящее время являются, пожалуй, локальные вычислительные сети (ЛВС). Термин «локальная сеть» (LAN — Local Area Network) требует пояснения, о каком масштабе «локальности» идет речь. Технические 113 ®2Т92
Глава 4. Компьютерные сети характеристики ЛВС имеют значительный разброс. Типовое расстоя- ние между абонентами сети может составлять от нескольких метров до нескольких километров. Термин «область действия ЛВС» (site) пе- реводится в зависимости от контекста как «здание», «этаж», «поме- щение». Главное отличие ЛВС от глобальных (WAN — Wide Area Network) или распределенных сетей — это наличие для всех абонентов высокоско- ростного канала передачи данных, к которому компьютеры и другое оборудование подключаются через специальные блоки сопряжения — станции локальной сети. Большинство глобальных сетей представля- ют собой объединение различных ЛВС посредством коммутационного оборудования. Системы LAN Manager и LAN Server содержат богатые возможности для создания приложений типа клиент/сервер. Компьютер, работаю- щий под управлением Windows NT, может выступать как в роли кли- ента, так и в роли сервера. Windows NT Workstation и Windows NT Server могут работать в качестве клиента сервера как в одноранговых сетях, так и в среде распределенных приложений. Первая компьютерная сеть ARPANET (Advanced Research Project Agency NET) была разработана для потребностей Министерства обо- роны США и начала функционировать в 1969 году. Для обеспечения надежности передачи данных аналоговые сигналы были заменены цифровыми, а любое сообщение разбивалось на отдельные фрагмен- ты (пакеты, или дейтаграммы), передавалось по разным маршрутам в сети и интегрировалось только у получателя информации. Фраг- менты информации обрамлялись дополнительной информацией (упаковывались), которую получатель должен был учитывать для оз- накомления с полезной информацией. Набор правил, определивших принципы обмена данными в сети, получил название протокола. В 1971 году Ray Tomlinson разработал систему электронной почты, где в адресе впервые был использован символ @ (коммерческое и). В 1974 году рабочая группа, созданная агентством ARPA (руководи- тель Vinton Cerf), разработала универсальный протокол передачи дан- ных TCP/IP (Transmission Control Protocol), который успешно исполь- зуется до сегодняшнего дня. В СССР в 1991 году была введена в ком- мерческую эксплуатацию сеть RELCOM (разработка Института атомной энергии АН СССР). Однако использование компьютерных 114
4.1. Эталонная модель сети сетей порождает ряд проблем и трудностей. Назовем некоторые из них: ► усложнение администрирования; ► удорожание средств приема/передачи данных; ► усложнение проблемы защиты информации; ► разрешение на поиск информации требует больших средств и вре- мени, затрачиваемого на поиск, обеспечение достоверности и безо- пасности получения информации; ► усугубление угроз жизнедеятельности общества от действий от- дельных корпоративных объединений и лиц; ► восприятие «чужого» образа жизни вместе с получаемой информа- цией: компьютерные программы, фильмы, реклама, музыка, вирту- альная реальность и т.д.; ► проблема здоровья детей, использующих компьютер; ► расширение географии противоправных действий (перекачка денег со счетов, использование несанкционированной информации и т.д.); ► технические средства воздействия на подсознание людей без их ве- дома (25-й кадр, звуки определенного тембра и их сочетания, опреде- ленная гамма цвета и т.д.). Все эти и ряд других вопросов требуют обстоятельного изучения, ис- следования, оценки и выработки соответствующих технических, ор- ганизационных и правовых мер. 4.1. Эталонная модель сети Наличие больших объемов вычислений внутри учреждений без выхо- да (передачи) информации за их пределы и заметный рост информа- ции, передаваемой между учреждениями, привели к тому, что рядом фирм были разработаны вычислительные сети. Однако большое раз- нообразие их архитектурных решений затрудняло обмен информацией между сетями. Для упрощения решения этой проблемы требовалось стандартизировать многие решения по сетям. Поэтому в 1977 году при Комитете по вычислительной технике и обработке информа- ции Международной организации по стандартизации (International 115
Глава 4. Компьютерные сети Organization for Standardization — ISO) был образован новый подко- митет с целью создания модели межсетевого взаимодействия, на базе которой можно было бы разрабатывать основные направления стан- дартизации по сетям. В результате в 1979 году создана эталонная модель взаимодействия открытых систем (Open System Interconnection — OSI), называемая обычно «семиуровневой моделью» (рис. 4.1). OSI разделяет всевоз- можные процессы, происходящие в сети во время сеанса связи, на семь функциональных уровней (layers), строго организованных в со- ответствии с естественным следованием событий, происходящих на протяжении всего сеанса обмена информацией. Все уровни модели взаимодействуют строго по иерархической системе — каждый уро- вень обслуживает уровни, находящиеся выше его, и пользуется услу- гами уровней, расположенных ниже. Иерархия уровней следующая (снизу-вверх): физический, канальный, сетевой, транспортный, се- ансовый, представления данных и прикладной. Правила взаимодействия объектов одноименных уровней различных систем называют протоколами, правила взаимодействия объектов смеж- ных уровней одной и той же системы — межуровневым интерфейсом. Все протоколы связи соответствующих уровней взаимодействующих устройств сети стандартизованы. После определения полного набора протоколов любые два устройства могут взаимодействовать, несмот- ря на свои конструктивные особенности, функциональное назначе- ние или внутренний интерфейс. В модели OSI под открытой системой понимается система, выполняю- щая стандартное множество функций взаимодействия, принятое в инфор- мационно-вычислительной сети. На верхнем уровне взаимодействия осуществляются прикладные процессы и в модель включаются те их части, которые связаны с передачей информации между системами. Основные же части прикладных процессов, связанные с хранением и обработкой информации, в модели не рассматриваются. На нижнем уровне функции взаимодействия связаны с физической средой со- единения, по которой передается информация между системами. То- пология, структура и параметры этой среды в эталонной модели не рассматриваются. В информационно-вычислительной сети используются три типа соеди- нений: одностороннее (от одного объекта к другому либо к другим); 116
4.1. Эталонная модель сети поочередное двухстороннее (передача информации поочередно в обе стороны); одновременное двухстороннее (передача идет сразу в обе стороны). Тип процесса Уровень OSI (передатчик) Информационные процессы 7 Прикладной _ Представления О данных 5 Сеансовый Транспортный процесс 4 Транспортный Коммуникационные процессы 3 Сетевой 2 Канальный 1 Физический Протоколы Уровень OSI Рис. 4.1. Эталонная модель взаимодействия открытых систем Объекты N-ro уровня взаимодействуют друг с другом через соеди- нения, создаваемые на (N— 1)-м уровне. Все уровни в эталонной се- миуровневой модели существуют только для того, чтобы обеспечить работу основного прикладного уровня. Три верхних уровня модели OSI определяют информационные про- цессы, выполняемые в системе, транспортный уровень определяет про- цедуры передачи информации от системы-отправителя к системе-ад- ресату. На трех нижних уровнях выполняются коммуникационные процессы, осуществляющие передачу данных между взаимодействую- щими системами. Физический уровень (physical layer) обеспечивает интерфейс между машиной, участвующей во взаимодействии, и средой передачи сиг- налов, а также управляет потоком данных. Он принимает кадры дан- ных от канального уровня и передает их содержимое бит за битом в канал связи для формирования кадров. Среда передачи данных (ко- аксиальный кабель, оптический кабель или витая пара) в физический уровень не входит. Стандарты физического уровня включают реко- мендации V.24 МККТТ, EIA RS232. 117
Глава 4. Компьютерные сети Канальный уровень (data link layer) обеспечивает средства установления соединения, его поддержки и освобождения линий передачи данных, связывающих системы друг с другом. Как и для всех других уровней, главной его функцией является прием и передача данных. Из данных, передаваемых первым уровнем, здесь формируются так называемые «кадры» или последовательности кадров, осуществляется управление доступом к передающей среде, используемой несколькими машина- ми, обнаруживаются и исправляются ошибки и обеспечивается цело- стность передаваемых данных. Самым известным стандартом этого уровня является стандарт ISO — протокол управления каналом HDLC (High Level Data Link Control). Сетевой уровень (network layer) реализует функции маршрутизации, то есть определяет маршрут между передающим и принимающим компьютером, чтобы «кадры» канального уровня (здесь уже называе- мые «пакетами») могли передаваться через несколько каналов по од- ной или нескольким сетям. Обычно это требует включения в пакет сетевого адреса, причем этот адрес относится к принимающей маши- не. На сетевом уровне осуществляется управление потоками данных, которыми обмениваются системы, не связанные друг с другом физи- ческими соединениями. Самый известный стандарт этого уровня — рекомендации Х.25 МККТТ (для сетей общего пользования с комму- тацией пакетов). Известный протокол IP (Internet Protocol) представ- ляет собой пример интерфейса сетевого уровня. Транспортный уровень (transport layer) обеспечивает взаимодействие процессов в передающей и принимающей машинах и сквозное управ- ление движением пакетов между ними. Если обнаруживаются пакеты, некорректно распознанные маршрутизатором, то уровень формирует запрос на их ретрансляцию. Одна из основных задач уровня — поддерж- ка целостности данных. Уровень, если необходимо, упорядочивает пакеты в соответствии с первоначальным направлением следования и передает их на сеансовый уровень. Основными транспортными про- токолами являются TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Рассмотренные уровни (с 1 по 4) можно определить как уровни пере- дачи данных, уровни же 5—7 — это уровни обработки данных. Сеансовый уровень (session layer) организует и поддерживает сеансы взаимодействия (диалог) между прикладными процессами определен- ие
4.1. Эталонная модель сети ного типа, обрабатываемыми на разных компьютерах. Этот уровень управляет потоком служебной информации, определяет тип соеди- нения (одно- или двунаправленное) и гарантирует полную обработку текущего запроса до приема следующего. Может быть использовано несколько сеансовых уровней (а значит, и несколько протоколов) для таких различных по типу процессов, как передача звука и видео в цифровом коде и интерактивные вычисления. Уровень представления данных (presentation layer) осуществляет интер- претацию данных (форматов, кодов, структур, команд), передаваемых во время диалога между прикладнь ми процессами. На передающем компьютере этот уровень преобразует данные из формата, посылае- мого прикладным уровнем, в общепринятый формат, а на прини- мающем компьютере осуществляет обратное преобразование. При управлении экраном терминала реализуются и другие функции, на- пример выделение на экране особо важных полей, защита от стира- ния некоторых частей экрана и т.д. Прикладной уровень (application layer) реализует функции обслужи- вания прикладных процессов, которые не были реализованы всеми предыдущими уровнями. Это функции обслуживания сети, управле- ния заданиями, протоколы обмена данными определенного типа и т.д. Он предоставляет пользователю доступ к информации в сети через использование протоколов, например: FTP — протокол передачи файлов, DNS — доменная служба имен, Telnet — виртуальный терми- нал, SMTP — протокол обмена сообщениями по электронной почте И Т.Д. Прикладным процессом называют основной компонент системы, осу- ществляющий обработку информации для пользователей или адми- нистративное управление сетью. Прикладной процесс является либо источником, либо потребителем информации. Примеры прикладных процессов: ► человеко-машинный, в котором человек-оператор работает у пульта терминала; ► внутримашинный, определяемый программой работы с данными, расположенными в компьютере, или с сетевыми ресурсами; ► производственный, обеспечивающий сбор информации и управ- ляющий технологическим процессом. 119
Глава 4. Компьютерные сети Прикладные процессы административного уровня связаны с управ- лением ресурсами, расположенными на всех уровнях системы. В реальных системах уровни эталонной модели реализуются по-раз- ному. Имеются свои особенности и для ЛВС. На рис. 4.2 показано, как в Windows NT реализована модель OSI. Здесь NDIS (Network Driver Interface Specification) — спецификация интерфейса сетевого драйвера, LLC (Logical Link Control) — подуро- вень управления логической связью уровня канала данных, a RPC (Remote Procedure Call) — поддержка удаленных вызовов процедур. RPC Поставщики Именованные каналы 7. Уровень приложения ---- Режим пользователя Режим ядра 6. Уровень представления 5. Уровень сеанса Драйвер NETBIOS Редиректоры Серверы Драйвер WinSock Интерфейс транспортного драйвера 4. Транспортный уровень ПОТОКИ Транспортные протоколы 3. Сетевой уровень 2. Уровень канала данных (Ы£) Интерфейс NDIS ПОТОКИ Драйверы сетевых адаптеров 1. Физический уровень Интерфейс сетевого (ых) адаптера(ов) Рис. 4.2. Уровни сетевой архитектуры Windows NT 120
4.2. Топология локальных сетей 4.2. Топология локальных сетей Топология — это конфигурация соединения элементов ЛВС. Основные топологические решения делят, как правило, на два типа: ► широковещательные, где каждый источник PS (Physical Signalling) передает сигналы, которые могут восприниматься всеми приемниками (остальными PS). К таким конфигурациям относятся «шина», «дерево», «звезда с пассивным центром», «ячейка»; ► последовательные, в которых каждый физический подуровень пе- редает информацию только одному из PS. К таким топологиям отно- сятся «кольцо», «цепочка», «звезда с интеллектуальным центром», «снежинка» и «сетка». Рассмотрим широковещательные конфигурации. Основной тип конфигурации ЛВС — «шина» (рис. 4.3). • • Коммуникации между территориально распределенны- ми устройствами в ЛВС несколько похожи на комму- ~] I никации между модулями в компьютерах: высокая ско- I рость передачи данных, частая смена структуры потока, * * неравномерная загрузка. Основное их отличие состоит Pwc. 4.3. в том, что скорость передачи данных в ЛВС может быть Топология ниже, а длительность «взрывной» интенсивности боль- «шина» ше. Наличие высокоскоростного общего канала — наиболее харак- терная особенность современных локальных вычислительных сетей. Из-за неравномерного характера потока данных последние обычно передаются в форме пакетов, структура которых представлена на рис. 4.4. Так как одно устройство может получать пакеты от несколь- ких других устройств, то адрес отправителя — неотъемлемая часть структуры пакета. Адрес получателя Адрес отправителя Данные Контрольная сумма Рис. 4.4. Структура пакета Возможность широковещательного обращения реализуется резер- вированием специального адреса получателя для значения «Всем». Предполагается, что пакет с этим адресом будет обрабатываться все- ми устройствами. 121
Глава 4. Компьютерные сети Эффект использования шины в ЛВС состоит в том, что внутренние шины компьютера как бы увеличиваются и охватывают целую тер- риторию. Шины обеспечивают процессору доступ к периферийным устройствам, блокам памяти или другим процессорам, находящим- ся на значительном расстоянии от ЭВМ, но подключенным к шине (рис. 4.5). Интерфейсное устройство Рис. 4.5. Подключение терминала в ЛВС Сетевой контроллер управляет использованием шины, а процессор вызовов (ПВ) управляет интерфейсом с терминалами. ПВ отвечает за установку (создание) виртуального канала через сеть к порту ЭВМ и за освобождение этого канала по окончании сеанса связи с терми- налом. Во время сеанса ПВ получает данные от терминала, создает пакеты для ЛВС и направляет их сетевому контроллеру, обеспечи- вающему передачу пакета по шине. Если, как это принято в UNIX, компьютер реагирует на любой вве- денный символ, пакет должен приниматься и формироваться для ка- ждого вводимого символа. Шина обычно представляет собой пассивную среду и поэтому обла- дает очень высокой надежностью. Однако при использовании конфигурации «шина» возникает ряд проблем: ► каждая станция должна успеть распознать свой адрес за время, меньшее времени передачи данных; ► любая станция должна обеспечивать достаточную мощность сиг- нала, посылаемого в шину, чтобы он мог достичь наиболее удаленных станций; 122
4.2. Топология локальных сетей ► так как все станции наблюдают весь трафик, шина принципиально не защищена, поэтому к защищаемым от несанкционированного дос- тупа данным должны быть применены специальные способы защиты. Конфигурация типа «дерево» (рис. 4.6) образуется путем соединения нескольких шин активными повторителями или пассивными раз- множителями. Она более гибкая, чем конфигурация «шина», и легко позволяет охватить несколько этажей или несколько зданий. Широкополосные ЛВС с конфигурацией «дерево» обычно имеют ко- рень. Это означает, что сеть обладает особой управляющей позицией, в которой размещаются самые важные компоненты ЛВС. Деревья с корнем уязвимы, так как выход из строя оборудования, размещен- ного в корне, блокирует работу сети. Конфигурация типа «звезда» (рис. 4.7) — это дальнейшее развитие конфигурации «дерево с корнем» с ответвлением к каждому подклю- чаемому устройству. Эта топология традиционна в практике обычных коммуникационных систем и дает высокую скорость обмена инфор- мацией. Рис. 4.6. Конфигурация типа «дерево» Рис. 4.7. Конфигурация типа «звезда» В центре «звезды» размещается коммутирующее устройство, которое должно дублироваться, поскольку является очень важным для обес- печения жизнедеятельности системы. Иногда в центре «звезды» мо- жет находиться пассивный соединитель или активный повторитель (простые и надежные устройства). В сетях ARCNet (фирма Datapoint) используются оба варианта. Эта конфигурация требует значительно- го расхода кабеля. 123
Глава 4. Компьютерные сети Конфигурация типа «ячейка» предполагает, что каждый компьютер в такой сети соединен с любым другим отдельным кабелем (рис. 4.8). Сигнал от компьютера-отправителя к компьютеру-получателю мо- жет проходить по разным маршрутам, поэтому разрыв какого-то ка- беля не влияет на работоспособность сети. При построении больших сетей данная топология используется в сочетании с другими тополо- гиями в наиболее ответственных местах, где требуется высокая на- дежность. Топология «решетка» (рис. 4.9) может использоваться при большом количестве узлов и характеризуется регулярностью связей. Рис. 4.8. Конфигурация типа «ячейка» (full interconnect) Рис. 4.9. Топология «решетка» Топология «двойной тор» (рис. 4.10) — это разновидность решетки с соединенными краями и характеризуется большей, чем обычная ре- шетка, отказоустойчивостью. Рис. 4.10. Топология «двойной тор» 124
4.2. Топология локальных сетей Количество различных переходов от источника к приемнику харак- теризует размерность топологии. Теперь остановимся на конфигурациях последовательного типа. Здесь к передатчикам и приемникам предъявляются более низкие требова- ния, чем в широковещательных конфигурациях. В конфигурациях типа «кольцо» (рис. 4.11) и «цепочка» (рис. 4.12) для устойчивого функционирования ЛВС требуется постоянная работа всех блоков физической среды РМА (Physical Medium Attachment). Чтобы ослабить это требование, в каждый блок включается реле. В нормальном режиме реле замкнуты и размыкаются в случае потери питания или других неисправностей. Рис. 4.11. Конфигурация типа «кольцо» Рис. 4.12. Конфигурация типа «цепочка» Для упрощения разработки РМА и PS в конфигурации «кольцо» сиг- налы передаются по кольцу только в одном направлении. Каждая стан- ция располагает памятью объемом от нескольких байтов до целого пакета. Наличие памяти замедляет передвижение данных в кольце и обусловливает задержку, длительность которой возрастает с увели- чением количества станций. Если передача информации осуществляется по полному кругу, стан- ция-получатель может установить в процессе обработки пакета некий символ, подтверждающий факт получения информации. Например, в ЛВС Cambridge Ring, включающей около 50 станций с кольцом в 2 км, возврат подтверждения осуществляется за 20—25 мкс. Удаление пакетов из сети может осуществляться либо станцией-по- лучателем, либо, по завершении круга, станцией-отправителем. 125
Глава 4. Компьютерные сети Существуют специальные программы — «сборщики мусора», кото- рые в случае порчи отдельных станций опознают и уничтожают не- востребованные пакеты. Конфигурация «кольцо» имеет низкую от- Центральный блок казоустойчивость, так как выход из строя * I / блок какого-либо элемента кабеля останавли- вает работу всей сети. Определенным раз- / / ] решением этой ситуации является конфи- .А У гурация типа «звездообразное кольцо» 9Г (рис. 4.13), все «лучи» которой содержат JL по две линии. Общение между станциями осуществляется через центральный блок Рис.4.13. Конфигурация (обычно пассивный), который использу- типа <,звездообРазное КОЛЬЦО» ют для локализации неисправностей. Достоинство «звездообразного кольца» — простота управления. Отме- тим и некоторые недостатки: ► значительно увеличивается длина кабеля, ► для каждой вновь подключенной машины необходимо проклады- вать отдельный кабель. Конфигурации «цепочка» и «кольцо», уязвимы в отношении отказов и также требуют регенерации сигналов каждой станцией. Передача информации через физическую среду здесь должна осуществляться в двух направлениях. Конфигурация типа «сетка» (рис. 4.14) применяется в глобальных се- тях, поскольку позволяет выбирать наиболее оптимальный путь для связывания абонентов. В ЛВС это достоинство менее важно, так как передающая среда не является дорогостоящим ресурсом. Конфигурация типа «снежинка» представлена на рис. 4.15. В современных ЛВС применяются различные гибридные конфигура- ции, вобравшие в себя лучшие свойства перечисленных топологиче- ских решений. При проектировании относительно больших компьютерных сетей на разных участках сочетаются различные топологии. Приведем досто- инства и недостатки некоторых топологий (табл. 4.1). 126
4.3. Примеры различных типов шин Рис. 4.14. Конфигурация типа Рис. 4.15. Конфигурация типа «сетка» «снежинка» Таблица 4.1 Сравнение топологий Топология Преимущества Недостатки «Шина» Экономный расход кабеля. Относительно простая в ис- пользовании среда передачи данных. Легко расширяемая и надежная При больших объемах трафи- ка уменьшается пропускная способность сети. Выход ка- беля из строя прерывает рабо- ту многих пользователей «Кольцо» Увеличение количества поль- зователей не оказывает значи- тельного влияния на произво- дительность сети Выход из строя какого-нибудь компьютера может остановить работу всей сети. В динамике невозможно реконфигуриро- вать сеть «Звезда» Выход из строя какого-нибудь компьютера не влияет на ра- ботоспособность сети. Сеть легко модифицируется Выход из строя центрального узла приводит сеть в нерабо- чее состояние «Ячейка» Относительно просто локали- зовать и диагностировать от- казы. Высокая надежность Высокая избыточность кон- фигурации требует больших затрат кабеля 4.3. Примеры различных типов шин Одним из важных и простых способов объединения компонент ком- пьютера и компьютеров в целом в слаженно функционирующий механизм является шина. Шина состоит из набора разделяемых по функциональным возможностям линий, применяемых для передачи информации между различными устройствами сети. 127
Глава 4. Компьютерные сети Классификация линий передачи осуществляется либо по назначению, например шина данных, шина адреса, шина прерывания, шина син- хронизации, либо в зависимости от подсоединяемых устройств, например шина процессора, шина памяти, шина ввода-вывода, периферийная шина. Только одно устройство (master) в фиксированный момент времени может быть активным на шине. Для одновременного доступа не- скольких устройств используется специальный механизм, называе- мый арбитром, который анализирует поступившие запросы на доступ и предоставляет одному из них монопольное владение шиной. Другие устройства (slaves) могут одновременно получать информацию, передавае- мую устройством master. Именно широковещательность (broadcast) — главное достоинство шины наряду с простотой ее реализации. Рассмотрим три вида шин — ISA (Industry Standart Architecture — стандартная промышленная), PCI (Peripheral Component Interconnect — взаимодействие периферийных компонент) и USB (Universal Serial Bus). Шина ISA представляет собой небольшое расширение первона- чальной (исходной) шины IBM PC. Шина PCI шире ISA и работает с более высокой тактовой частотой. Шина USB используется для под- ключения периферийных устройств малого быстродействия (клавиа- тура, мышь, проектор и т.д.). Шина IBM PC — неофициальный стандарт систем с процессором 8088. Шина содержит 62 линии, из них 20—для адреса ячейки памяти, 8 — для данных, по одной линии для сигналов считывания информа- ции из памяти, записи информации в память, считывания (записи) с устройств ввода-вывода. Остальные линии предназначены для за- просов на прерывание, их обработки, а также для прямого доступа к памяти. Первоначальный вариант шины ISA имел 16 линий для данных, а затем шина была расширена до 32 разрядов. Более поздняя версия шины EISA (Extended Indusrty Standart Architecture) предоставляла возмож- ность параллельной обработки. Появление игр и других приложений, применяющих полноэкранные видеоизображения, потребовало создания новых шин. Для монитора разрешением 1024 х 768 цветное отображение (3 байт/пиксел) одного экрана содержит 2,25 Мбайт данных. Если учесть, что смена кадров на экране для создания видимости плавного движения должна быть 128
4.3. Примеры различных типов шин не менее 30 в секунду, то скорость передачи данных по шине должна быть 67,5 Мбайт/с. При этом для передачи изображения данные должны загрузиться с жесткого диска, компакт-диска или DVD-дис- ка через шину в память, потом еще раз через шину — в графический адаптер монитора. Таким образом, пропускная способность шины должна быть 135 Мбайт/с. Но в компьютере действует центральный процессор и другие устройства, которые пользуются шиной, что так- же потребует существенного увеличения ее пропускной способности. Максимальная частота передачи данных шины ISA — 8,33 МГц. При передаче 2 байт за цикл ее максимальная пропускная способность будет 16,7 Мбайт/с. Шина EISA может передавать 4 байта за цикл, следовательно, ее пропускная способность достигает 33,3 Мбайт/с. Ясно, что требованиям новых приложений она не удовлетворяет, по- этому в 1990 году была разработана шина PCI, которая фактически входит в каждый компьютер Intel, начиная с Pentium. Первая версия PCI передавала 32 бита за цикл и работала с частотой 33 МГц с общей пропускной способностью 133 Мбайт/с. Шина PCI 2.1. работает с частотой 66 МГц, способна передавать 64 бита за цикл, а ее общая пропускная способность составляет 528 Мбайт/с, что по- зволяет решить задачу полноэкранного изображения. Однако такой скорости недостаточно для шины памяти. В связи с этим компания Intel разрабатывает компьютеры, имеющие несколько шин с разной пропускной способностью, которые связывают через мосты (специ- альные микросхемы) компоненты компьютера и различные шины. Практически все компьютеры, начиная с Pentium II, выпускаются с одним или несколькими свободными слотами PCI для подключения дополнительных высокоскоростных периферийных устройств и с од- ним или несколькими слотами ISA для подключения медленнодейст- вующей периферии (рис. 4.16). Существуют универсальные платы, поддерживающие разный уровень напряжения, которые можно вста- вить в любой слот. Платы характеризуются разрядностью, при этом 32-битовые платы содержат 120 выводов, а 64-битовые — еще и 64 до- полнительных вывода. Шина PCI, поддерживающая 64-битовые платы, может поддерживать и 32-битовые, но не наоборот. Шины PCI и со- ответствующие платы могут работать с частотой 33 МГц или 66 МГц. В обоих случаях расположение контактов идентично. Чтобы не уве- личивать количество выводов на плате, адресные и информационные 129 О 2792
Глава 4. Компьютерные сети линии объединяются. В этом случае при операции считывания в цик- ле 1 задающее устройство передает адрес на шину, в цикле 2 шина ревер- сируется, открывая к ней доступ подчин иным устройствам, в цикле 3 подчиненное устройство выдает запрашиваемые данные. При опера- ции записи шине не надо переключаться, ибо задающее пространство помещает на нее и адрес, и данные. Тем не менее, минимальная тран- закция занимает три цикла. Если подчиненное устройство не может дать ответ в течение трех циклов, включается режим ожидания. Шина Локальная Шина кэш-памяти шина памяти Рис. 4.16. Архитектура типовой системы Pentium II (толщина стрелки характеризует пропускную способность соответствующей шины) Чтобы устройство могло передать сигнал по шине PCI, вначале необ- ходимо получить к ней доступ. Шина PCI управляется централизован- ным арбитром, который, как правило, встраивается в один из мостов между шинами (рис. 4.17). Каждое устройство PCI связано с арбит- ром двумя специальными линиями. Одна из них (REQ#) служит для запроса шины, а вторая (GNT#) — для получения разрешения на дос- туп к шине. 130
4.3. Примеры различных типов шин Чтобы осуществить запрос на доступ к шине, устройство PCI (в том числе и центральный процессор) устанавливает сигнал REQ# и ждет, пока арбитр не выдаст сигнал GNT#, после чего в следующем цикле устройство может использовать шину. Алгоритм работы арбитра мо- жет быть самым разнообразным (по приоритету, очереди, круговороту и т.д.) и не зависит от технических характеристик шины РС1, однако разрешение на доступ должно быть получено за разумное время. Рис. 4.17. Использование централизованного арбитра в шине PCI Как правило, доступ предоставляется на одну транзакцию, но при от- сутствии конкуренции на доступ к шине устройство может повторять транзакции снова и снова. Если устройство осуществляет очень дли- тельную передачу, а другому устройству необходимо получить доступ к шине, то арбитр может сбросить линию GNT#. После этого устрой- ство, занимающее шину, должно в следующем цикле освободить ее. Такое решение позволяет осуществить передачи большого объема. Выводы шины используются для обязательных и вспомогательных сигналов. Оставшиеся выводы задействованы для подключения пи- тания, «земли» и некоторых других сигналов. Некоторые устройства могут инициировать передачу информации по шине (задающие устройства), то есть являются активными, другие же ждут запросов (подчиненные устройства) — пассивные устройства (табл. 4.2). Если центральный процессор (ЦП) требует, например, от контролле- ра диска считать или записать блок информации, то ЦП работает как задающее устройство, а контроллер диска как подчиненное. Если же 131
Глава 4. Компьютерные сети контроллер диска командует памяти принять слово, считанное с дис- ка, то он выступает как задающее устройство. Память же ни при ка- ких обстоятельствах не может быть задающим устройством. Таблица 4.2 Примеры задающих и подчиненных устройств № Задающее устройство Подчиненное устройство Действие 1 ЦП Память Вызов команд и данных 2 цп Устройство I/O Инициализация передачи данных 3 ЦП Сопроцессор Передача команды от процессора к сопроцессору 4 Сопроцессор ЦП Вызов сопроцессором операндов и ЦП Для активизации шины большинство устройств связаны с ней через микросхему, которая по существу является усилителем двоичных сиг- налов, посылаемых шине, и называется драйвером шины. Подчинен- ные устройства таким же образом связываются через приемник шины. Устройства, которые могут выступать в роли задающего и подчинен- ного устройства, применяют приемопередатчик шины. Шина PCI используется для подсоединения высокоскоростных уст- ройств. Для подключения низкоскоростных устройств применяется шина USB (Universal Serial Bus). При этом не требуется снятия кожу- ха компьютера или его выключения (перезагрузки). Общая пропуск- ная способность шины составляет 1,5 Мбайт/с, что достаточно для таких устройств, как клавиатура, мышь, сканер, цифровой телефон, флэш-память и т.д. Шина USB содержит центральный хаб (концентратор) (см. 4.5.1), ко- торый вставляется в разъем главной шины. Хаб имеет разъемы для кабелей, подсоединяемых к устройствам ввода-вывода или дополни- тельным хабам для обеспечения требуемого количества подключе- ний. Следовательно, топология шины USB — это дерево с корнем в центральном хабе, который находится внутри компьютера. Кон- некторы кабеля со стороны устройства отличаются от коннекторов со стороны хаба, чтобы пользователь случайно не подсоединил кабель другой стороной. Центральный хаб определяет подсоединение ново- го устройства и прерывает работу операционной системы, которая распознает устройство и ряд его параметров. Если ОС решает, что 132
4.3. Примеры различных типов шин пропускной способности шины для нового устройства достаточно, ему присваивается уникальный адрес (1—127). Затем этот адрес и дру- гая информация загружаются в регистры конфигурации внутри уст- ройства. В состав шины USB входит ряд каналов от центрального хаба к уст- ройствам ввода-вывода. Каждое устройство может разбить свой ка- нал максимум на 16 подканалов для различных типов данных (аудио, видео и т.д.). В каждом канале или подканале данные перемещаются от центрального концентратора к устройству и обратно. Между двумя устройствами ввода-вывода обмен информацией не происходит. 4.3.1. Микросхемы процессоров и шины Шина, как и процессор, имеет адресные линии, информационные линии и линии управления. Однако между выводами процессора и сигнальными линиями может и не быть взаимно однозначного со- ответствия. Тогда в работу вступает микросхема-декодер, связываю- щая процессор с требуемой шиной. Микросхема процессоров содержит принимающие и передающие выводы, а также выводы, осуществляющие как прием, так и передачу. Все выводы микросхемы можно разделить на три типа: адресные, информационные и управляющие. Эти выводы связаны с соответ- ствующими выводами на микросхемах памяти и микросхемах уст- ройств ввода-вывода через набор параллельных проводов, называе- мых шиной. Центральный процессор обменивается информацией с памятью и ус- тройствами ввода-вывода, подавая сигналы на выходы и принимая сигналы на входы. Чтобы вызвать, например, команду, ЦП посылает в память адрес этой команды по адресным выводам. Затем он запус- кает одну или несколько линий управления, чтобы сообщить памяти, что ему надо, например, прочитать слово. Память выдает ответ, поме- щая требуемое слово на информационные выводы процессора и по- сылая сигнал о том, что задание выполнено. Получив этот сигнал, ЦП принимает слово и выполняет вызванную команду. Для каждого очередного слова весь процесс повторяется заново. Важным параметром, определяющим производительность процессо- ра, является количество адресных и информационных выводов. Если 133
Глава 4. Компьютерные сети адресных выводов т, то процессор может обращаться к 2т ячейкам памяти, а п информационных выводов позволяет считывать или запи- сывать за одну операцию и-битовое слово. Выводы управления регулируют и синхронизируют поток данных к про- цессору и от него, а также выполняют некоторые другие функции. Все процессоры содержат выводы питания (обычно +3,ЗВ или +5В), «землю» и синхронизирующий сигнал (меандра). Остальные выводы имеют разное назначение в зависимости от типа процессора. Среди выводов управления можно выделить ряд основных типов: управ- ление шиной, прерывание, арбитраж шины, состояние и прочие. Выводы управления шиной в основном представляют собой выходы из ЦП в шину (а значит, входы в микросхемы памяти и устройств вво- да-вывода). Выводы прерывания — это входы из устройств ввода-вывода в процес- сор. Иногда процессор дает устройству ввода-вывода сигнал начала операции с возможностью осуществления других действий до окон- чания операции в устройстве. По окончании операции устройство ввода-вывода через контроллер посылает сигнал на один из выводов прерывания, чтобы прервать работу ЦП и заставить его обслуживать устройство ввода-вывода (например, проверить ошибки ввода-выво- да). Некоторые процессоры содержат выходной вывод для подтвер- ждения факта получения сигнала прерывания. Для разрешения конфликтных ситуаций по одновременному доступу служит арбитр шины. Многие ЦП работают с различными сопроцессорами (графическим, с л-кратной точностью, с плавающей точкой и т.д.), для чего исполь- зуются специальные выводы для передачи сигналов. Процессоры могут использовать выводы для выдачи или приема ин- формации о состоянии процесса, для перезагрузки компьютера, для обеспечения совместимости с микросхемами устройств ввода-выво- да ранних моделей и т.д. Типичная схема микропроцессора изображена на рис. 4.18. Шины, внутренние по отношению к процессору, служат для передачи данных из АЛУ в АЛУ, а внешние связывают процессор с памятью и уст- ройствами ввода-вывода. Первые персональные компьютеры имели одну внешнюю шину, называемую системной, которая встраивалась 134
4.3. Примеры различных типов шин Рис. 4.18. Типичная схема микропроцессора (короткие диагональные линии указывают на наличие нескольких выводов) в материнскую плату, содержащую разъемы для микросхем памяти и устройств ввода-вывода. Современные персональные компьютеры содержат специальную шину между ЦП и памятью и хотя бы одну шину для устройств ввода-вывода. Установлены четкие правила, определяющие работу шины. Все уст- ройства, связанные с шиной, должны подчиняться этим правилам, чтобы платы, выпускаемые третьими компаниями, могли работать с шиной. Эти правила называют протоколом шины. Платы, конечно, также должны удовлетворять некоторым техническим требованиям (размеры, разъемы, потребляемая мощность, синхронизация и т.д.). На скорость и пропускную способность шины существенно влияют ее размеры, синхронизация, арбитраж и принципы работы. Помимо рассмотренных существуют и другие типы циклов. Обычно за один сеанс передается одно слово. При использовании кэш-памяти (например, 16 последовательных 32-битовых слов) передача блоками может оказаться более эффективной, чем последовательная передача информации. После начала чтения блока задающее устройство сооб- щает подчиненному количество передаваемых слов, помещая, на- пример, общее число слов на информационные линии. Задающее устройство выдает одно слово в течение каждого цикла до тех пор, 135
Глава 4. Компьютерные сети пока не будет передано требуемое количество слов. В этом случае в схеме передачи данных появляется дополнительный сигнал BLOCK, указывающий, что запрашивается передача блока. 4.4. Простое средство связи в сетях (шина) Перед обращением к шине процессор устанавливает сигнал BREQ (bus request signal) и ждет, чтобы арбитр предоставил доступ к шине с помощью сигнала BG (bus grant — допуск к шине). Аппаратное устройство арбитра производит выбор BREQ сигналов всех клиентов и затем генерирует маркер (token) одному клиенту, пре- доставляя ему монопольное использование шины. Клиент становится активным устройством (Master) и через Ts-driver управляет шиной. В то же время все другие устройства (Slave) могут получать информа- цию, передаваемую активным устройством, причем приемники всех Slave могут получить фактические данные шины одновременно. Имен- но свойство широковещательности (broadcast) передачи в каждом цикле шины является ее главным достоинством наряду с простотой. Арбитр получает сигналы запроса от всех устройств и определяет уст- ройство, которому разрешается доступ к шине. Одновременно посту- пающие запросы будут обслуживаться последовательно. Синхронизи- рующий арбитр может быть реализован простым конечным автоматом (FSM — Finite State Machine) (рис. 4.19). Рис. 4.19. Реализация арбитра 136
4.4. Простое средство связи в сетях (шина) 4.4.1. Связь компьютера с периферийными устройствами Механизмы взаимодействия компьютеров в сети аналогичны схеме взаимодействия компьютера с периферийными устройствами (ПУ). Для обмена данными между компьютером и ПУ предусмотрен внеш- ний интерфейс, то есть набор проводов (линий), соединяющих компь- ютер с ПУ, а также правил обмена информацией по этим проводам (рис. 4.20). Компьютер Данные Команды контроллера «Установить начало листа», «Переместить магнитную головку», «Сообщить состояние устройства» и др. Рис. 4.20. Связь компьютера с периферийным устройством Примерами интерфейсов, используемых в компьютерах, являются параллельный интерфейс, предназначенный, например, для подклю- чения принтеров, и последовательный интерфейс RS-232C. Интерфейс реализуется со стороны компьютера контроллером ПУ и специальной программой, управляющей контроллером (драйвер ПУ). 137
Глава 4. Компьютерные сети Со стороны ПУ интерфейс реализуется аппаратным устройством управ- ления. Программа выполняется процессором, обменивается данными с ПУ с помощью команд ввода/вывода. Контроллеры ПУ принимают от процессора команды управления и данные в свой внутренний буфер (порт), преобразуют их в соответ- ствии с форматами ПУ и выдают на внешний интерфейс. Периферийное устройство использует интерфейс для приема инфор- мации, а также передает информацию в компьютер. Таким образом, обмен данными по внешнему интерфейсу является двунаправленным. Схема передачи одного байта информации от приложения на пери- ферийное устройство следующая: ► программа обращается к драйверу устройства, сообщая ему адрес байта памяти в качестве параметра; ► драйвер загружает значение этого байта в буфер контроллера; ► контроллер ПУ начинает последовательно передавать биты в ли- нию связи, представляя их в виде электрических сигналов. Перед передачей первого бита информации контроллер ПУ форми- рует стартовый сигнал специфической формы, который для устройства управления ПУ является признаком начала передачи. После послед- него информационного бита аналогично формируется столовый сиг- нал. Стартовый и столовый сигналы обеспечивают синхронизацию передачи байта. Кроме информацио иных бит, контроллер может передавать бит кон- троля четности для повышения достоверности обмена. Устройство управления, обнаружив на линии стартовый бит, начина- ет принимать информационные биты, формируя из них байт в своем приемном буфере. Если передача сопровождается битом четности, то выполняется про- верка правильности передачи. При правильно выполненной передаче в соответствующем регистре устройства управления устанавливается признак завершения приема. Распределение функций между контроллером и драйвером жестко не закреплено. Обычно на драйвер возлагаются наиболее сложные 138
4.4. Простое средство связи в сетях (шина) функции (например, подсчет контрольной суммы последовательно- сти байт, анализ состояния ПУ, правильность выполнения команд и Т.Д.). Существуют как специализированные интерфейсы для подключения узкого класса устройств, так и интерфейсы общего назначения, являю- щиеся стандартными. Пример стандартного интерфейса — RS-232C, который поддерживается рядом терминалов, принтерами, манипуля- торами типа «мышь» и многими другими устройствами. 4.4.2. Пример взаимодействия двух компьютеров Взаимодействие двух компьютеров может быть реализовано на осно- ве схемы взаимодействия компьютера с периферией, например, че- рез последовательный интерфейс RS-232C. Главное отличие в том, что происходит взаимодействие двух программ, работающих на каж- дом из компьютеров. Рассмотрим схему соединения двух компьютеров по кабелю связи через COM-порты, которые, как известно, реализуют интерфейс RS-232C (такое соединение называется нуль-модемным). Пусть для определен- ности компьютеры работают под управлением операционной систе- мы MS DOS (рис. 4.21). Рис. 4.21. Взаимодействие двух компьютеров 139
Глава 4. Компьютерные сети Драйвер COM-порта вместе с контроллером работают аналогично взаимодействию ПУ с компьютером, однако при этом роль устройства управления ПУ выполняют компьютер и драйвер COM-порта другого компьютера. Драйвер компьютера периодически опрашивает признак завершения приема, устанавливаемый контроллером при правильно выполненной передаче данных, и при его появлении считывает при- нятый байт из буфера контроллера в оперативную память, делая его доступным для программ другого компьютера. Пусть приложению, работающему на компьютере А, необходимо прочитать информацию из некоторого файла, расположенного на диске компьютера В. В распоряжении программ компьютеров А и В имеются средства для передачи одного байта информации. Приложение А должно сформи- ровать сообщение — запрос для приложения В: имя файла, тип опе- рации (в данном случае — чтение) и т.д. Для передачи сообщения приложение Л обращается к драйверу СОМ-порта, передавая ему ад- рес расположения сообщения в памяти. Драйвер обеспечивает необ- ходимую передачу сообщения. Приложение В, приняв запрос, считывает требуемый файл с диска с помощью средств локальной ОС в буферную область своей опера- тивной памяти, а затем с помощью драйвера COM-порта передает считанные данные по каналу связи в компьютер А, где они доставля- ются приложению А. Функции взаимодействия двух компьютеров при передаче сообщений в данном случае встроены непосредственно во взаимодействующие приложения. Однако более эффективно создание специализирован- ного программного модуля, который будет формировать запросы и принимать результаты от всех приложений. Такой служебный мо- дуль называют клиентом. На стороне В должен раб тать другой мо- дуль — сервер, постоянно ожидающий запросы на доступ к файлам, расположенным на этом компьютере. Общая схема взаимодействия клиента и сервера с приложениями и операционной системой приведена на рис. 4.22. Полезной функцией клиентской программы является способность отличить запрос к удаленному файлу от запроса к локальному файлу. Редиректор — это часть клиентской программы, которая распознает и перенаправляет запрос к удаленной машине. 140
4.4. Простое средство связи в сетях (шина) Рис. 4.22. Взаимодействие программных компонент при связи двух компьютеров Редиректор унифицирует работу приложений, что позволяет не забо- титься, с каким ресурсом идет работа (локальным или сетевым). 4.4.3. Объединение нескольких компьютеров Линии передачи данных характеризуются активным сопротивлени- ем, емкостью и индуктивностью (рис. 4.23). Основные характеристики цепи: ► L' — характерная индуктивность на единицу длины; ► С' — характерная емкость на единицу длины; Рис. 4.23. Схема цепи линии передачи 141
Глава 4. Компьютерные сети ► R' — характерное сопротивление на единицу длины; ► G' — характерная проводимость на единицу длины. Важной характеристикой линии является волновое сопротивление, называемое импедансом линии. Импеданс — комплексная величина, измеряется в омах. 2= IjmL'+R' у jaC'+G' При высоких частотах передачи потерями (/?', G') можно пренебречь по сравнению с импедансом и емкостью. Приведенные соотношения могут быть применены, если время на- растания сигнала tr в два раза меньше времени распространения tp. В точке, где импеданс линии изменяется, волна, передаваемая по ка- белю, частично отражается. Коэффициент отражения р показывает количество энергии волны, отражаемой в определенной точке. о -г2~г1 Zj +Z2 о -г1~г2 Р21 ~ Zi +Z2 _ Z2 Р12 Р21 Рп -0,2 р21 =-0,2 Zi =50Q z2=75Q 75—50 Р|2“ 50+75 Причины отражения волны можно отобразить следующими графи- ками: V , t<t, 1 .... 1 у. V<2tP . 1 V _ 2t,t<3tp ( ’0 о 1 1 J—•— у 1 1 VA 1 1 1 д 1 i в 1 в 1 i в 1 При этом 142
4.4. Простое средство связи в сетях (шина) Напряжение волны в генераторе на выходе A: VA = Ио--2—. Ro +Zq R —Z Волна, отраженная в конце линии: Vrl = •рв, рв = — -—. Rt +Z0 D __g Волна, отраженная при выводе генератора: Vr2 = Vr\ рА, рА = —-- Ro +Z0 Отражения можно избежать, когда резистор Л, в точке В соответству- ет импедансу линии Zo, то есть коэффициент отражения становится равным нулю. Rt — резистор окончания линии передачи. Приведем примеры линий передачи. 1. Коаксиальный кабель (Coaxial) Центральная жила 2* - 50 Ом Оплетка 50 0м 2. Витая пара (Twisted Pair) Рассмотрим объединение нескольких компьютеров в сеть на основе самой простой и дешевой сетевой технологии Ethernet. Стандарт Ethernet принят в 1980 году. Основной принцип Ethernet — случайный метод доступа к разделяемой среде передачи данных. В качестве такой среды может быть использован коаксиальный ка- бель (тонкий либо толстый), витая пара, оптоволоконный кабель, 143
Глава 4. Компьютерные сети радиоволны. Выделяют обычный Ethernet (10base-X), быстрый Fast Ethernet (100base-XX), децентрализованный Ethernet (ISO Ethernet), Gigabit Ethernet (1000 Мбит/с), отличающиеся скоростью передачи данных и максимальной длиной сегмента. В стандарте Ethernet строго зафиксирована топология электрических связей. Рассмотрим способ подключения компьютеров к разделяемой среде в соответст ии с типовой структурой «общая шина» (рис. 4.24). В этом случае компьютеры подключаются к одному коаксиальному кабелю по схеме «монтажное ИЛИ»: передаваемая информация может распространяться в обе стороны. Управление доступом к линии связи осуществляется специальными контроллерами — сетевыми адапте- рами Ethernet. Каждый сетевой адаптер имеет уникальный физиче- ский адрес. Компьютеры Рис. 4.24. Сеть Ethernet Случайный метод доступа к разделяемой среде состоит из следующих операций. Определение доступности среды. Компьютер может начать передачу данных по сети, только если она свободна. Доступность среды опре- деляется по отсутствию сигналов, то есть никакой другой компьютер в данный момент не ведет передачу. Передача данных (захват среды). Если среда свободна, компьютер на- чинает вести передачу и таким образом захватывает среду. Время моно- польного использования разделяемой среды одним узлом ограничива- ется временем передачи одного кадра. Кадр — единица информации, которой обмениваются компьютеры в сети Ethernet. Кадр имеет фик- сированный формат, содержит данные и служебную информацию, например адрес получателя и адрес отправителя. Прием данных. При попадании кадра в разделяемую среду передачи данных все сетевые адаптеры одновременно начинают принимать 144
4.4. Простое средство связи в сетях (шина) кадр. Они анализируют адрес назначения и, если он совпадает с соб- ственным, кадр помещается во внутренний буфер сетевого адаптера. Таким образом, компьютер-адресат получает предназначенные ему данные. Коллизия. Возможна ситуация, когда два и более компьютера одно- временно определяют незанятость среды и начинают вести передачу. Такая ситуация, называемая коллизией, препятствует корректной пе- редаче данных. Вероятность возникновения коллизий зависит от ин- тенсивности сетевого трафика. Стандарт Ethernet предусматривает алгоритм обнаружения и корректной обработки коллизий. После обнаружения коллизии сетевые адаптеры, которые пытались передать свои кадры, прекращают передачу и после паузы случайной длительности повторяют попытку получить доступ к среде и передать кадр, который вызвал коллизию. Среда передачи данных выбирается в зависимости от поставленных целей: стоимости, обеспечения безопасности, скорости передачи данных и других параметров. Приведем некоторые сравнительные характеристики основных физических сред, используемых в настоя- щее время в компьютерных сетях (табл. 4.3). Таблица 4.3 Сравнение физических сред передачи данных Среда Достоинства Недостатки Витая пара Низкая стоимость, простое построение сети Невысокая безопасность, сильная восприимчивость к шуму Коаксиальный кабель Относительно высокая ско- рость передачи данных на короткие расстояния Недостаточная безопас- ность, значительная вос- приимчивость к шуму Оптоволокон- ный кабель Высокая скорость передачи данных на большие расстоя- ния, в том числе звуковой, цифровой и видеоинфор- мации Высокая стоимость, слож- ности при развертывании Из таблицы видно, что каждая из сред обладает как достоинствами, так и недостатками. Поэтому при проектировании систем руковод- ствуются некоторым компромиссом между их основными парамет- рами. Ю2792 145
Глава 4. Компьютерные сети 4.5. Сетевые технологии (LAN/WAN) При построении компьютерных сетей (КС) применяются различные сетевые технологии, каждая из которых имеет характерную для нее топологию соединения узлов сети и метод доступа к среде передачи. 4.5.1. Подключение сетевых компонентов Большинство КС для соединения используют кабели, которые вы- ступают в качестве физической среды передачи сигналов между ком- пьютерами. На практике применяются следующие типы кабелей: ► коаксиальный кабель (coaxcial); ► витая пара (twisted pair); ► оптоволоконный кабель (fiber optic). Коаксиальный кабель. Состоит из медной жилы (core), окружающей ее изоляции, экрана в виде металлической оплетки и внешней обо- лочки. Электрические сигналы передаются по жиле, оплетки играют роль «земли» и защищают жилу от электрических шумов (noise) и пе- рекрестных помех (crosstalk). Перекрестные помехи — это электриче- ские наводки, вызванные сигналами в соседних проводах. Существует два типа коаксиальных кабелей: ► тонкий (thinnet) коаксиальный кабель: диаметр около 0,5 см; отно- сится к группе семейства RG-58, его волновое сопротивление — 50 Ом; ► толстый (thicknet) коаксиальный кабель: диаметр около 1 см; ис- пользуется в качестве магистрали (backbone). Для подключения тонкого коаксиального кабеля к компьютерам при- меняются BNC-коннекторы. Для подключения к толстому коаксиальному кабелю применяется специальное устройство — трансивер. Витая пара. Простая витая пара — это два перевитых вокруг друг дру- га изолированных медных провода. Существует два типа витой пары: ► неэкранированная витая пара (UTP — Unshielded Twist Pair); ► экранированная (STP — Shielded Twist Pair). 146
4.5. Сетевые технологии (LAN/WAN) Несколько витых пар часто помещают в одну защитную оболочку. Их количество может быть разным. Завивка проводов позволяет изба- виться от электрических полей, наводимых соседними парами. Нормативные характеристики UTP кабелей определены стандартом EIA/TIA568, который включает пять категорий: 1. Традиционный телефонный кабель, по которому можно переда- вать только речь. 2. Кабель содержит четыре пары и способен передавать данные со скоростью до 4 Мбит/с. 3. Четыре витые пары, 9 витков на метр, скорость передачи — до 10 Мбит/с. 4. Четыре витые пары, скорость — до 16 Мбит/с. 5. Четыре витые пары, скорость передачи — до 100 Мбит/с. Экранированная витая пара (STP) имеет медную оплетку, которая обеспечивает надежную защиту от помех. Для подключения витой пары к компьютеру используются коннекто- ры RJ-45 (рис. 4.25). Рис. 4.25. Коннектор RJ-45 f 2 Оптоволоконный кабель. Предназначен для передачи данных на очень высоких скоростях. Данные передаются по оптическим волокнам в виде модулированных световых импульсов. Оптическое волокно — тонкий стеклянный цилиндр (соте), покрытый стеклянной оболочкой, с иным, чем у ядра, коэффициентом прелом- ления. Каждое оптоволокно передает сигналы в одном направлении, поэтому кабель состоит из двух волокон с самостоятельными кон- 147
Глава 4. Компьютерные сети некторами. Внешнее покрытие обеспечивает жесткость и прочность кабеля. Для передачи по кабелю кодированных сигналов используют две тех- нологии — немодулированную передачу и модулированную передачу. При немодулированной передаче данные передаются в виде цифровых сигналов, которые представляют собой дискретные электрические или световые импульсы. При таком способе передачи цифровой сиг- нал использует всю полосу пропускания* кабеля. Передаваемый сиг- нал обладает свойством к затуханию и, как следствие, искажается. Поэтому в немодулированных системах при передаче на большие расстояния используют повторители, которые усиливают сигнал. Модулированные системы передают данные в виде аналогового сиг- нала, использующего некоторую полосу частот. Сигналы кодируются непрерывной электромагнитной или световой волной. Для восста- новления сигнала в модулированных системах используются усили- тели. Любая технология локальных сетей имеет определенные ограниче- ния. Рассмотрим способы увеличения размеров сети в реальной среде. Повторитель (Repeater). При передаче сигнала по кабелю его ампли- туда уменьшается вследствие затухания, поэтому длина кабеля огра- ничена. Повторитель — это устройство, которое разбивает локальную сеть на сегменты, принимает затухающий сигнал из одного сегмента, восстанавливает и передает его в другой сегмент. Повторитель (рис. 4.26) функционирует на физическом уровне модели OSI и позволяет объединять сегменты, использующие только одина- ковые пакеты и протоколы LLC. Однако повторители могут переда- вать пакет из одного типа физического носителя в другой. Например, из сегмента на витой паре в кабель на оптоволокне. Рис. 4.26. Повторитель Т - Terminator * Полоса пропускания — здесь разность между максимальной и минимальной часто- той, которая может быть передана по кабелю. 148
4.5. Сетевые технологии (LAN/WAN) Концентратор (HUB). HUB — многопортовый повторитель (рис. 4.27), осуществляет функции повторителя сигналов на всех витых парах, подключенных к его портам, так что образуется единая среда переда- чи данных — логический (виртуальный) сегмент. Рис. 4.27. Концентратор (HUB) Мост (Bridge). Мост разбивает сеть на несколько сегментов, обеспе- чивая в них локализацию трафика (рис. 4.28). Рис. 4.28 Мост Мост позволяет: ► увеличить размер сети и количество компьютеров в нем; ► повысить производительность сети за счет снижения трафика; ► соединить разнородные физические средства передачи; ► объединить разнородные сегменты сети (например, Ethernet, Token Ring). Коммутатор (Switch). Коммутатор выполняет те же функции, что и мост, — сегментацию сети. Однако каждый порт коммутатора снаб- жается собственным процессором, каждый из которых работает па- раллельно (рис. 4.29). 149
Глава 4. Компьютерные сети Рис. 4.29. Коммутатор Между портами коммутатора устанавливаются виртуальные цепи пе- редачи. Порты могут работать в полудуплексном (одностороннем) или дуплексном (двустороннем) режиме. Поэтому N-портовый ком- мутатор может обеспечить до N/2 одновременно действующих вирту- альных цепей в полудуплексном режиме. В режиме полного дуплекса теоретически число таких цепей может достигнуть N. Коммутаторы могут быть блокирующими и неблокирующими. Не- блокирующий коммутатор способен с максимальной скоростью об- рабатывать все кадры, приходящие на все его порты. Для соединения портов в коммутаторе могут использоваться комму- тационные матрицы, высокоскоростные шины и разделяемая память. Маршрутизаторы (Router). Маршрутизатор — устройство, позволяю- щее соединять сегменты с различными архитектурами и протоколами, обеспечивая наилучший маршрут передачи и фильтрации трафика. Маршрутизаторы работают на сетевом уровне модели OSI. Работа маршрутизатора строится на основе таблиц маршрутизации, которые включают все известные сетевые адреса, способы связи с другими сетями, возможные пути между маршрутизаторами, стои- мость* передачи данных по этим маршрутам. Маршрутизатор, принимая пакеты, предназначенные для удаленной сети, пересылает их маршрутизатору, который обслуживает сеть на- значения (рис. 4.30). * Стоимость — здесь совокупная весовая оценка маршрута передачи данных, завися- щая в том числе от качества применяемых линий связи. (Примеч. ред.) 150
4.5. Сетевые технологии (LAN/WAN) Рис. 4.30. Маршрутизатор Маршрутизаторы подразделяются на два основных типа по способам формирования таблиц маршрутизации: ► статические, где таблицу жестко заданных маршрутов определяет администратор сети; ► динамические, где таблица маршрутизации строится автоматиче- ски с помощью протоколов маршрутизации: • OSPF (Open Shortest Path First) — алгоритм маршрутизации на основе анализа состояния каналов сети, • RIP (Routing Information Protocol) — дистанционно-векторный алгоритм маршрутизации. 4.5.2. Сетевой адаптер Сетевой адаптер представляет собой физический интерфейс между ком- пьютером и средой передачи. Платы сетевого адаптера вставляются в слоты расширения сетевых компьютеров или интегрируются на ма- теринскую плату. Для обеспечения физического соединения между компьютером и сетью к соответствующему разъему или порту платы подключается сетевой кабель. Назначение сетевого адаптера: ► подготовка данных, поступающих от компьютера; ► передача по сетевому кабелю; ► управление потоком данных. Сетевой адаптер состоит из аппаратной части и встроенных программ, записанных в ПЗУ. 151
Глава 4. Компьютерные сети Внутри компьютера данные передаются по шинам. Большинство со- временных компьютеров оснащены 32-разрядной шиной, где обес- печивается параллельная передача Данных. В то же время по сетевому кабелю данные должны передаваться в виде потока бит, то есть про- исходит последовательная передача. Сетевой адаптер принимает данные в параллельной форме и органи- зует их для последовательной, побитовой передачи. Процесс завер- шается переводом цифровых данных компьютера в электрические или оптические сигналы, передающиеся по сетевым кабелям. Это преобразование выполняет трансивер — приемопередатчик. Сетевой адаптер должен указывать свое местоположение в сети, что обеспечивается присвоением ему уникального сетевого адреса, запи- санного в ПЗУ. Перед отправкой данных в сеть адаптер согласует с принимающими платами параметры передачи — максимальные размеры блоков пере- даваемых данных, интервалы между передачами блоков, а также ско- рости передачи. Адаптеры отличаются рядом параметров, которые должны быть кор- ректно определены в системе. В их число входят: к номер прерывания (IRQ): физическая линия, по которой сетевая карта организует прерывание, посылая запрос компьютеру. Плата се- тевого адаптера должна использовать незанятую линию; ► базовый порт ввода/вывода: определяет канал, по которому переда- ются данные между платой сетевого адаптера и центральным про- цессором. Для процессора порт выглядит как адрес. Плата сетевого адаптера, как и любое другое устройство компьютера, должна иметь уникальный базовый порт ввода/вывода; ► базовый адрес памяти: область памяти компьютера, которая исполь- зуется сетевым адаптером в качестве буфера для входящих и исходящих блоков данных. Обычно выбирается адрес памяти, не занятый другим устройством компьютера; ► выбор трансивера: указывается тип используемого трансивера. Сете- вой адаптер поставляется с внешним или встроенным трансивером. Для обеспечения совместимости компьютера и сети плата сетевого адаптера должна соответствовать внутренней структуре компьютера 152
4.5. Сетевые технологии (LAN/WAN) (архитектуре шины данных) и иметь соединитель, соответствующий типу кабельной системы. Большинство современных компьютеров используют 32-разрядную шину PCI (Peripherical Component Interconnect) (см. 4.3), которая удов- летворяют большинству требований технологии Plug and Play, авто- матизирующей конфигурирование компьютера. Каждый тип кабеля имеет различные физические характеристики, поэтому плата сетевого адаптера ориентируется для работы с опреде- ленным типом кабеля. Некоторые платы имеют возможность работы с несколькими типами кабеля, выбор которых осуществляется с по- мощью переключателей либо программным способом. Сетевой адаптер оказывает существенное влияние на производитель- ность сети, предоставляя дополнительные возможности: прямой дос- туп к памяти, разделяемую системную память адаптера, управление шиной, встроенный микропроцессор. 4.5.3. Модель IEEE Project 802 Данная модель конкретизирует физический и канальный уровни для локальных сетей и представляет собой стандарты, называемые спе- цификациями 802, определяющими способы доступа сетевых адапте- ров к физической среде. Стандарты LAN, определенные Project 802, делятся на категории, на- пример: 802.1 — Объединение сетей; 802.2 — Управление логической связью; 802.3 — Ethernet; 802.5 — Token Ring; 802.12 — 100VG AnyLan. В соответствии с данной моделью канальный уровень разделен на два подуровня: управление логической связью (Logical Link Control — LLC), который устанавливает канал связи и определяет использование логических точек интерфейса, называемых точками доступа к услугам (Service Access Points — SAP); 153
Глава 4. Компьютерные сети управление доступом к среде (Media Access Control — МАС), который обеспечивает совместный доступ сетевых адаптеров к физическому уровню. Программное обеспечение, позволяющее компьютеру работать с опре- деленным устройством, называется драйвером (driver). Соответствую- щие сетевые драйверы обеспечивают связь между сетевыми адаптерами и редиректорами. Драйвер сетевого адаптера обеспечивает связь между компьютером и платой сетевого адаптера, которая связывает компь- ютер с сетью. Правила и процедуры передачи данных в сетевой среде определяют сетевые протоколы. Компьютеры используют протоколы для выполнения следующих про- цедур: ► разбиение данных на пакеты; ► добавление к пакету адресной информации; ► подготовка пакетов для передачи по сети; ► прием пакетов, передаваемых по кабелю; ► копирование данных из пакета в буфер и передача их в компьютер. Связь в сети обеспечивает множество работающих протоколов на различных уровнях модели OSI. Иерархическая последовательность протоколов, решающих задачу се- тевого взаимодействия, называется стеком сетевых протоколов. В качестве стандартных моделей протоколов наиболее широко ис- пользуются следующие стеки: ► ISO/OSI — полный набор протоколов, соответствующих модели OSI; ► TCP/IP — набор протоколов Интернета; ► IPX/SPX — стек фирмы Novell; ► NetBEUI. В зависимости от выполняемых действий выделяют три типа протоко- лов: прикладные, транспортные, сетевые. Прикладные протоколы работают на верхнем уровне модели OSI, обес- печивая взаимодействие приложений и обмен данными между ними (например, http — протокол стека TCP/IP для передачи Web-страниц). 154
4.5. Сетевые технологии (LAN/WAN) Транспортные протоколы поддерживают сеансы связи между компь- ютерами и гарантируют надежный обмен данными между ними (на- пример, TCP — протокол стека TCP/IP). Сетевые протоколы обеспечивают услуги связи (например, IP — про- токол стека TCP/IP для передачи пакетов). Протоколы, передающие данные из одной сети в другую, называют маршрутизируемыми. Такие протоколы используются для построения глобальных сетей. 4.5.4. Глобальные сети Глобальная сеть представляет собой множество локальных сетей, со- единенных каналами связи, в качестве которых применяются: ► сети с коммутацией пакетов; ► аналоговые каналы связи; ► цифровые каналы связи. Каналы связи (аналоговые и цифровые) могут быть выделенными и ком- мутируемыми. Выделенный канал имеет фиксированную пропускную способность и постоянно соединяет двух абонентов. Коммутируемые каналы разделяются между многими абонентами этих каналов. Наиболее популярными коммутируемыми каналами являются каналы телефонных сетей PSTN (Public Switched Telephone Network). Для работы на коммутируемых аналоговых линиях используются мо- демы. Модем — устройство, которое модулирует цифровой сигнал в анало- говый на передающей стороне и демодулирует аналоговый сигнал в цифровой на принимающей стороне. По типу передачи данных модемы бывают асинхронные и синхронные. Цифровые выделенные линии образуются путем постоянной комму- тации в первичных сетях. Существует два поколения технологий первичных сетей: ► PDH (Plesiochronic Ditital Hierarchy) — плезиохронная цифровая иерархия; ► SDH (Synchronous Digital Hierarchy) — синхронная цифровая иерархия. 155
Глава 4. Компьютерные сети Для подключения к цифровому каналу используется устройство, кото- рое называется устройством обслуживания канала и обработки данных (CSU/DSU — Channel Service Unit / Data Service Unit). Это устройство преобразует цифровые сигналы, генерируемые компьютером, в циф- ровые сигналы, применяемые для синхронной связи. Технология коммутации пакетов предполагает представление данных в виде пакетов и передачу их по доступным маршрутам. При передаче данных сети с коммутацией пакетов используют вирту- альные каналы, состоящие из цепочки логических связей между пере- дающим и принимающим компьютерами. Виртуальные каналы обеспечивают достаточную надежность достав- ки данных при выполнении следующих условий связи: ► наличие подтверждения; ► управление потоком данных; ► контроль ошибок. Виртуальные каналы могут быть: ► коммутируемые (SVC — Switched Virtual Circuit) — соединение меж- ду компьютерами осуществляется по маршруту, который сохраняется в течение всего сеанса связи; ► постоянные (PVC — Permanent Virtual Circuit) — соединение являет- ся постоянным и существует реально. Среди цифровых технологий DSL (Digital Subscriber Line) для гло- бальных сетей наибольшее распространение получили технологии ADSL (Asymmetric DSL) и VDSL (Very high data rate DSL). Наиболее перспективной в настоящее время считается технология ADSL. Это модемная технология, превращающая стандартные або- нентские телефонные аналоговые линии в линии высокоскоростного доступа. Технология ADSL позволяет передавать информацию к або- ненту со скоростью до 8,448 Мбит/с. В обратном направлении ис- пользуется скорость до 800 Кбит/с. Технология ADSL создана для выполнения двух основных функций: высокоскоростной передачи данных (доступ в Интернет, удаленный доступ к корпоративным данным) и интерактивного видео (видео по требованию, фильмы, игры и т.д.). 156
Упражнения Основное преимущество данной технологии — использование суще- ствующих телефонных линий для установления связи без ограниче- ний на обычные телефонные переговоры и факсы. ADSL реализуется с помощью модема ADSL и стойки модемов ADSL, называемой DSL Access Module (DSLAM). На участке между ADSL-модемом и DSLAM функционируют три пото- ка: высокоскоростной поток к абоненту, двунаправленный служебный поток и речевой канал в стандартном диапазоне частот (0,3—3,4 кГц). Частотные разделители выделяют речевой поток и направляют его к обычному телефонному аппарату. Упражнения 1. Какое назначение семиуровневой модели? 2. Опишите функции каждого из уровней эталонной модели взаимодейст- вия открытых систем и укажите соответствующие протоколы. 3. Опишите отличие широковещательных и последовательных конфигура- ций соединения элементов ЛВС. 4. Сравните по надежности функционирования и скорости передачи ин- формации различные сетевые конфигурации: «дерево», «звезда», «коль- цо», «цепочка», «звездообразное кольцо», «сетка», «снежинка». 5. Охарактеризуйте достоинства и недостатки физических сред передачи данных. 6. Какие типы шин вам известны? Охарактеризуйте их возможности. 7. Опишите функции концентратора, моста и коммутатора. 8. В чем суть технологии удаленного доступа? 9. Какие функции выполняет арбитр шины? 157
Глава 5 Кодирование данных в компьютерах Система кодирования данных возникла в связи с необходимостью счета, сравнения вещей и обмена. На протяжении истории развития земной цивилизации на разных континентах зарождались и развива- лись различные системы кодирования. В последние годы они во многом унифицировались, но до сих пор идет поиск новых способов кодирования уже в связи с использованием и развитием средств вы- числительной техники, в частности эффективного использования различных ресурсов: памяти, процессорного времени, удобочитае- мости для пользователя и т.д. Среди многочисленных классифика- ций подобных систем будем использовать только классификацию, базирующуюся на зависимости значения числа от позиции цифры в слове, то есть на позиционные и непозиционные системы кодиро- вания. 5.1. Формы чисел с фиксированной и плавающей точкой Двоичные числа в компьютерах представляются в двух видах: с фик- сированной и с плавающей точкой. В форме с фиксированной точкой последняя устанавливается за опре- деленным разрядом числа, отделяя его целую часть от дробной. Числа с фиксированной точкой масштабируются во избежание пере- полнения разрядной сетки во время их обработки. В форме с плавающей точкой числа представляются в виде N =mgp, где т — мантисса числа (правильная дробь, то есть tn < 1); р — поря- док числа (целое число); g — основание системы счисления. Порядок числа указывает положение точки в числе. При изменении порядка положение точки изменяется (она «плавает»). Если абсолют- ное значение мантиссы удовлетворяет условию 158
5.1. Формы чисел с фиксированной и плавающей точкой то число называют нормализованным. В двоичной системе это усло- вие запишется так: 1 >|ш| >0.1, то есть мантисса числа меньше единицы и первая значащая цифра непосредственно следует после точки. Если же в первой позиции по- сле точки записан нуль, то число называют ненормализованным. Представление чисел в нормализованном виде позволяет иметь в раз- рядной сетке большее значение числа, чем в ненормализованном, и, следовательно, повышает точность вычислений. Поэтому в разряд- ной сетке компьютеров хранятся нормализованные числа с плавающей точкой. Если в процессе вычислений появляется ненормализованное число, то оно автоматически нормализуется путем сдвига мантиссы с соответствующим изменением ее порядка. Десятичные числа хранятся и обрабатываются в компьютере в двоич- но-десятичном коде. Существует несколько способов кодирования десятичных цифр, использующих знаки двоичного алфавита. Пред- ставление знаков одного алфавита средствами (знаками, буквами, словами) другого алфавита называют кодированием. Простейший случай кодирования сообщения состоит в его дублировании. Про- цесс обратного преобразования информации называют декодирова- нием. Для представления информации в компьютере преимуществен- но используется двоичное кодирование, при котором символы вводи- мой в компьютер информации представляются средствами двоичного алфавита, состоящего из двух знаков, в качестве которых использу- ются символы «0» и «1». Двоичный алфавит по числу входящих в него символов является минимальным, поэтому при двоичном кодирова- нии алфавита, включающего большее число знаков, каждому знаку ставится в соответствие последовательность нескольких двоичных знаков или двоичное слово. Такие последовательности называются кодовыми комбинациями. Использование двоичного алфавита обусловливается сравнительной простотой построения электронных элементов с двумя устойчивыми состояниями. Совокупность всех комбинаций из определенного количества сим- волов, которые избраны для представления информации, называют 159
Глава 5. Кодирование данных в компьютерах кодом. Общее количество кодовых комбинаций может быть меньше или равно числу всевозможных комбинаций из заданного количества символов. Основная единица памяти — двоичный разряд, называемый битом. Используют также следующие единицы: байт — 8 бит, килобайт (Кбайт) — 1024 байт (210 байт), мегабайт (Мбайт) — 1024 Кбайт (220 байт), гигабайт (Гбайт) — 1024 Мбайт (230 байт), терабайт (Тбайт) — 1024 Гбайт (240 байт), петабайт (Пбайт) — 1024 Тбайт (250 байт). Обычно говорят, что IBM-совместимый персональный компьютер работает в двоичной и десятичной арифметике. На самом деле ис- пользуется двоичный и двоично—десятичный коды, где для каждой десятичной цифры используется 4 бита, позволяющих представить 16 комбинаций. Однако из них шесть комбинаций не используются. Двоично—десятичный код — это код «8421». Пример. Число 1944 в двоично—десятичном коде использует 16 бит и имеет вид: 194410 = 0001 1001 0100 OlOO2_io, а в двоичном коде 194410 = 00000111100110002, то есть 16 бит в 2—10-й форме хранит чис- ло от 0 до 9999, следовательно, всего используется 10 000 различных комбинаций. Именно по этой причине иногда говорят, что двоичная система эффективна. Если бы удалось применить достаточно надеж- ные устройства, способные поддерживать десять устойчивых состоя- ний, то четыре таких устройства могли бы хранить числа от 0 до 9999, то есть 10 000 комбинаций. В то же время такие устройства с десятью устойчивыми состояниями могли бы хранить лишь 16 комбинаций двоичных чисел. В этом случае более эффективной была бы десятич- ная система. В компьютерах, где используется двоичная система счисления (вклю- чая восьмеричную и шестнадцатеричную), адреса памяти также вы- ражаются в двоичном коде. Таким образом, если адрес состоит из л бит, то максимально адресуемая память 2". Количество бит для зада- ния адреса не зависит от количества бит в ячейке. А объем ячейки в компьютерах различен. Например, в IBM PC — 8 бит, в IBM 1130 — 16 бит, в DEC PDP от 15 до 18 бит, в CDC—3600 — 48 бит, CDC Cyber — 60 бит. Ячейка — минимальная единица, к которой можно обращаться. 160
5.2. Пом хозащищенные коды Всегда, вне зависимости от операции над кодовыми комбинациями (хранение, передача, процессирование), необходимо быть уверенным, что данные передаются и обрабатываются корректно. Для обеспече- ния данного свойства используются корректирующие коды. Приведем некоторые определения из теории кодирования. Равномерный код — код, все комбинации которого содержат одина- ковое количество символов. Неравномерный код — код с различным количеством символов для различных комбинаций (например, азбука Морзе). В компьютерах обычно используют равномерные коды. Кодовое расстояние — число позиций, в которых коды не совпадают. Так, если А - alt а2,...» а„, В - Ь\, Ь2,..., Ь„, то кодовое расстояние (И^ вычисляется по формуле W(A = z=i Пример. Пусть А - 101110, В - 000110, тогда W (А ® В) = 2. Минимальное кодовое расстояние (d) — это минимальное расстояние между двумя любыми кодовыми комбинациями в заданном коде. 5.2. Помехозащищенные коды В зависимости от назначения и возможностей помехозащищенных кодов различают коды самоконтролирующиеся, позволяющие автома- тически обнаруживать наиболее вероятные ошибки, и самокорректи- рующиеся, позволяющие автоматически исправлять ошибки. Одна из основных задач теории кодирования — снижение вероятно- сти появления ошибок, возникающих в результате помех в каналах связи. Помехоустойчивое кодирование базируется на избыточности информации за счет удлинения самого кода. Все символы исходного и закодированного сообщения являются элементами одного и того же конечного поля Вд=GF(q), где q = рт', т,ре N;p — простое число. 161 1 ^2792
Глава 5. Кодирование данных в компьютерах Сам процесс кодирования состоит в трансформации исходного сооб- щения at, а2, Fq в кодовую комбинацию Ь\, Ь2, —,Ь„, где Ь, &Fq, п> к. В случае простейшего линейного кода исходное сообщение а1г а2,..., ак кодируется словом вида О], а2,ак, Ьм, Ьк+2,Ь„. Здесь исходные (информационные) символы дополняются п—к сим- волами bj е Fg, которые называют контрольными. Если из того, что вектор (оь а2,а„) принадлежит линейному (л,^-ко- ду С над полем Fq, следует, что его циклический сдвиг (а„, аь ..., a„_t) тоже принадлежит С, то такой код называют циклическим. 5.2.1. Самоконтролирующиеся коды Кодирование чисел в позиционной системе счисления (ПСС) ис- пользует все кодовые комбинации для представления чисел. Так как в ПСС нет избыточности, то использовать такие системы для контро- ля информации невозможно. Во всех помехозащищенных кодах минимальное кодовое расстояние d должно быть больше единицы. Для обнаружения ошибки кратности t требуется, чтобы d= t + 1, а для ее исправления — </= 2/ + 1. С увеличе- нием значения d растет корректирующая способность кода, которая количественно может быть выражена как вероятность обнаружения или исправления ошибок различных типов. Избыточный код должен иметь наряду с т информационными еще и к контрольных разрядов. Количество контрольных разрядов характеризует а солютную избы- точность кода, а отношение к/п, где п = т + к, — его относительную избыточность. Пусть р — вероятность того, что один символ в слове длины п неве- рен. Если предположить, что п—s символов верны в слове длины л, то вероятность того, что в s символах имеются ошибки, будет равна р(5) = рЧ1-р)л-1. 162
5.2. Помехозащищенные коды Количество кодовых комбинаций, каждая из которых содержит s ошибочных элементов, равна числу сочетаний из л по s: " s!(n—s)! Наиболее часто на практике встречается ошибка в одном символе, следовательно, обнаружение и исправление одиночной ошибки яв- ляется очень важной задачей. Код должен быть построен таким образом, чтобы при минимальной избыточности обнаруживать часто встречающиеся ошибки. При этом процедуры кодирования и декодирования по возможности должны быть простыми в реализации и быстрыми в исполнении. Код с проверкой на четность образуется добавлением к группе ин- формационных двоичных знаков одного контрольного. Значение его выбирается таким образом, чтобы общее количество единиц в слове было четным или нечетным, то есть сумма цифр в числе по модулю 2 была соответственно равна 0 или 1. После чтения или записи данных в память проверяется, сохранено ли это требование. Здесь d = 2. Обнаруживаются одиночные ошибки и групповые ошибки с нечетной кратностью. Целесообразно дополнять группу информационных раз- рядов «до нечета», чтобы отличить значение 0 от отсутствия инфор- мации в слове, ибо в этом случае в слове будет хотя бы одна единица. 5.2.2. Самокорректирующиеся коды Применяя коды при d = 1 в качестве дополнительной информации, можно использовать повторную передачу слова, что обеспечит воз- можность операции сравнения и, следовательно, позволит обнару- жить и исправить неустойчивые ошибки. Вместо повторной передачи слов в компьютерах применяются избы- точные коды, в которых для представления информации используются практически все возможные кодовые комбинации, за исключением запрещенных. Появление запрещенных комбинаций фиксируется и расценивается как ошибка. Для избыточных кодов d > 1. Если, например, d-2, то любые две комби- нации данного кода отличаются не менее чем в двух разрядах. Любая одиночная ошибка приведет к появлению запрещенной комбинации. 163
Глава 5. Кодирование данных в компьютерах Такая ошибка будет обнаружена, то есть для обнаружения одиночной ошибки достаточно иметь код с d = 2. Чтобы можно было не только обнаружить, но и исправить одиночную ошибку, необходимо иметь код с d> 3. В этом случае любая одиночная ошибка создает запрещенную комбинацию. Этого достаточно, чтобы определить ошибочный разряд и исправить его. Процесс исправления состоит в поочередном изменении значения каждого разряда слова (О на 1 и 1 на 0) с последующей проверкой на появление запрещенной кодовой комбинации. Если после изменения разряда комбинация остается запрещенной, данный разряд вновь восстанавливается. Задача будет решена, когда будет инвертирован ошибочный разряд. Аналогично можно показать, что для обнаружения двойных ошибок необходим код с d = 3, а для их исправления — код с d= 5. Равновесный код «2 из 5» Особенность равновесного кода состоит в том, что в нем каждая кодо- вая комбинация содержит фиксированное число единиц и нулей. Комбинации отличаются только позициями единиц. Среди равновесных кодов наибольшее практическое применение по- лучил код «2 из 5», то есть 2 единицы и 3 нуля из пяти цифр кодовой комбинации (табл. 5.1). Таблица 5.1 Равновесный код «2 из 5» Кодируемое число Код «2 из 5» Кодируемое число Код «2 из 5» 0 01100 5 00110 1 11000 6 10001 2 10100 7 01001 3 10010 8 00101 4 01010 9 00011 Количество кодовых комбинаций равно 32, но для изображения цифр используется только 10 комбинаций. Комбинации выбираются та- ким образом, чтобы минимальное кодовое расстояние было равно 2. В связи с этим корректирующая способность рассматриваемого кода выше, чем у кода с проверкой на четность. Код «2 из 5» обнаруживает одиночные и групповые асимметрические ошибки. 164
5.2. Помехозащищенные коды Коды Хемминга Наиболее известные из самоконтролирующихся и самокорректи- рующихся кодов — коды Хемминга, ориентированные на двоичную систему счисления. Для построения самоконтролирующегося кода достаточно иметь один контрольный разряд (код с проверкой на четность). Но при этом неиз- вестно, в каком именно разряде произошла ошибка, и, следовательно, отсутствует возможность ее исправления. Остаются незамеченными ошибки, возникающие в четном числе разрядов. Коды Хемминга имеют большую относительную избыточность, чем коды с проверкой на четность, и предназначены либо для исправле- ния одиночных ошибок (при d=3), либо для исправления одиночных и обнаружения без исправления двойных ошибок (d = 4). В таком коде л—значное число имеет т информационных и к контрольных разрядов. Каждый из контрольных разрядов является знаком четно- сти для определенной группы информационных знаков слова. При декодировании производится к групповых проверок на четность. В результате каждой проверки в соответствующий разряд регистра ошибки записывается 0, если проверка была успешной, или 1, если была обнаружена нечетность. Группы для проверки образуются таким образом, что в регистре ошиб- ки после окончания проверки получалось ^-разрядное двоичное число, указывающее номер позиции ошибочного двоичного разряда. Изме- нение значения этого разряда (0 на 1 или 1 на 0) исправляет ошибку. Первоначально эти коды предложены Хеммингом в таком виде, при котором контрольные знаки занимали особые позиции: позиция i-ro знака имела номер 2'-1. При этом каждый контрольный разряд вхо- дил лишь в одну проверку на четность. Позже указанные ограниче- ния были сняты. В качестве примера рассмотрим код Хемминга, предназначенный для исправления одиночных ошибок, то есть код с минимальным кодо- вым расстоянием d = 3. Ошибка возможна в одной из п позиций. Если число контрольных знаков к, то число разрядов регистра ошибок должно удовлетворять условию к > log 2 (л+1). (1) 165
Глава 5. Кодирование данных в компьютерах Отсюда количество информационных разрядов т <п—log2(n+l). (2) Значения т и к для некоторых коротких кодов, вычисленные по фор- мулам (1) и (2), приведены в табл. 5.2. Таблица 5.2 Значения тип п 3 4 5 6 7 8 9 10 11 12 т 1 1 2 3 4 4 5 6 7 8 к 2 3 3 3 3 4 4 4 4 4 Чтобы число в регистре ошибок (РОШ) указывало номер позиции ошибочного разряда, группы для проверки выбираются по следую- щему правилу: I группа: все нечетные позиции, включая и позиции контрольного разряда, то есть позиции, в первом (младшем) разряде которых в дво- ичной системе стоит 1; II группа: все позиции, номера которых в двоичном представлении имеют 1 во втором разряде справа (например, 2, 3, 6, 7, 10) и т.д.; III группа: разряды, номера которых в двоичном представлении име- ют 1 в третьем разряде справа, и т.д. Примечание. Каждый контрольный разряд входит только в одну прове- рочную группу. Пример 1. Пусть к = 5 (табл. 5.3). Таблица 5.3 Формирование контрольных ipynn Номер проверки Позиция контрольного разряда Проверяемые позиции 1 1 1, 3, 5, 7, 9, 11, 13,... 2 2 2, 3, 6, 7, 10, U,... 3 4 4, 5, 6, 7, 12, 13,... 4 8 8, 9, 10, 11, 12, 13,... 5 16 16, 17, 18, 19, 20, 21,... 166
5.2. Помехозащищенные коды Пример 2. Рассмотрим семизначный код Хемминга, служащий для изображения чисел от 0 до 9 (табл. 5.4). Пусть код числа 6 передан в виде «0 1 10 0 1 1», а приняли его в виде «01000 1 1». Необходимо проверить корректность принятого кода. Формируем проверочные группы и осуществляем проверку. I проверка: разряды 1, 3, 5, 7 — дает 1 в младший разряд РОШ. II проверка: разряды 2, 3, 6, 7 — дает 0 во второй разряд РОШ. III проверка: разряды 4, 5, 6, 7 — дает 1 в третий разряд РОШ. Содержимое РОШ «101», значит, ошибка в пятой позиции. Примечание. В каждый из контрольных разрядов при построении кода Хемминга посылается такое значение, чтобы общее число единиц в его контрольной сумме было четным. РОШ заполняется начиная с младше- го разряда. Таблица 5.4 Семизначный код Хемминга Десятичное число Простой двоичный код Код Хемминга к к к 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 2 0 0 1 0 0 0 1 1 0 0 1 3 0 0 1 1 0 0 1 1 1 1 0 4 0 1 0 0 0 1 0 1 0 1 0 5 0 1 0 1 0 1 0 1 1 0 1 6 0 1 1 0 0 1 1 0 0 1 1 7 0 1 1 1 0 1 1 0 1 0 0 8 1 0 0 0 1 0 0 1 0 1 1 9 1 0 0 1 1 0 0 1 1 0 0 Вывод. Возрастание кодового расстояния позволяет увеличить кор- ректирующую способность кода. Так, при d=2 у кода с проверкой на четность возможно обнаружить одиночную ошибку, а код Хемминга с d = 3 исправляет ее. Для обнаружения и исправления кратных ошибок используют коды Рида-Соломона. Они относятся к классу циклических кодов. Коди- 167
Глава 5. Кодирование данных в компьютерах рование и декодирование в них — это вычислительные процедуры, которые для циклических кодов выполняются как действия с много- членами. Они допускают сравнительно простую схемотехническую реализацию в виде цифровых автоматов на базе регистров с обратны- ми связями. Систематические правила кодирования дают кодовые слова, удоб- ные для практики, ибо информационные слова размещаются в явном виде в к старших разрядах кодовых слов. Итак, если наборы символов образуют блок информации А, коди- руемый с целью обнаружения и исправления ошибок, то процесс кодирования состоит в формировании блока В, который получает некоторую избыточность в виде дополнительных контрольных сим- волов С. Избыточность кода строго дозируется в соответствии с за- данной степенью помехозащищенности, определяемой количеством допустимых ошибок. Контроль по модулю Рассмотренные выше коды используются лишь для повышения на- дежности передачи информации. Они непригодны для контроля выполнения операций в компьютере. Действительно, все рассмот- ренные коды основаны на определении изменения исходного кода. При выполнении же арифметических и логических операций (АЛО) код изменяется всегда. Известно много кодов для контроля выполнения АЛО. Например, код «2 из 5» или «2 из 7» (2 единицы и 3 нуля и 2 единицы и 5 нулей со- ответственно). Но эти коды имеют большую избыточность и требуют сложной схемной реализации. Рассматриваемый ниже контроль АЛО по модулю лишен указанных недостатков. Приведем несколько определений. Определение 1. Наименьшим неотрицательным вычетом C(7V) числа N по модулю Р назовем число C(N) = N- 'АП 168
5.2. Помехозащищенные коды Определение 2. Два числа N3 и N2 сравнимы по mod Р, если равны их наименьшие вычеты по этому модулю: C(N{)=C(N2), то есть M = AT2(modP). Верно соотношение NsC(N) (modP). Наибольшее распространение как в отечественных, так и в зарубеж- ных компьютерах получил раздельный контроль АЛО с помощью специального устройства, выполняющего арифметические операции над контрольными разрядами. При этом контрольные знаки представ- ляют собой двоичное изображение наименьшего вычета по mod Р. Такой контроль получил название контроля по модулю. Контроль АЛО основан на следующих свойствах: ► если Ni±N2=N3, то C(N3)±C(N2) = C(A3)(bmodP); ► если N\N2 = N3, то CfNdCfNd = C(N3) (mod P); ► если M = N2N3 + Na, to C(AT]) S [C(N2)C(N3) + C(A4)] (mod P). Кодирование чисел состоит в определении C(Nj), а для обнаружения ошибок АЛО вместо декодирования выполняется операция сравне- ния C(N3) и (C(Nt) Ф C(N2)), где Ф — знак выполняемой операции. Совпадение результатов является признаком отсутствия ошибки при выполнении АЛО. Принцип раздельного контроля по модулю может быть представлен схемой, приведенной на рис. 5.1. 169
Глава 5. Кодирование данных в компьютерах Кз-Nj + Nj Рис. 5.1. Контроль по модулю Для эффективного использования данного метода модуль, по которому производится контроль, должен удовлетворять следующим свойствам: ► быть достаточно большим, так как от его значения зависит коррек- тирующая способность кода; ► быть таким, чтобы наименьшие неотрицательные вычеты по нему можно было легко определить. Модуль с минимальным кодовым расстоянием d = 2 используют для обнаружения одиночных и некоторых кратных ошибок. Чаще выби- рают модуль Р, равный В - 1, где В — основание системы, что позво- ляет упростить определение вычетов. 5.3. Сравнительные характеристики корректирующих кодов Для оценки корректирующей способности кода пользуются величи- ной его потенциальной эффективности К, показывающей, во сколько раз уменьшается вероятность необнаруженных ошибок при контроле на основе данного кода, если пренебречь вероятностью неверной ра- боты контролирующей аппаратуры. Этот показатель позволяет лишь ориентировочно оценить возмож- ности кода, так как он определен для случая биномиального закона распределения ошибок в кодовом блоке и в предположении о симмет- рии всех устройств и каналов передачи данных, что не всегда спра- ведливо. Относительная избыточность R дает возможность в пределах каждой группы кодов приблизительно оценить относительный объем допол- 170
5.3. Сравнительные характеристики корректирующих кодов нительной аппаратуры, необходимой для реализации корректирую- щей способности кода. Более точные оценки можно получить только после выбора контрольных схем и элементной базы, на которой будет реализована эта аппаратура. В табл. 5.5 приведены выражения для относительной избыточности R и потенциальной эффективности К в зависимости от длины слова п и вероятности q ошибки в двоичном знаке. Для сравнения в таблице даны их значения при п = 36 (разрядность чисел в большинстве ком- пьютеров близка к этой величине). При окончательном выборе того или иного корректирующего кода, вообще говоря, необходимо учитывать предполагаемую структуру ком- пьютера, требования по надежности, реальную надежность выбранных элементов, заданное быстродействие, тип задач, для решения которых предназначен компьютер, и т.д. Поэтому невозможно сформулиро- вать общие рекомендации по применению методов и средств контроля или даже по выбору способа кодирования информации, обеспечи- вающего работу контрольных устройств. В связи с этим приведем лишь некоторые соображения о целесообразности применения того или иного кода. Таблица 5.5 Относительная избыточность н потенциальная эффективность кода Код и его минимальное расстояние d Относитель- ная избыточ- ность R Потенциальная эффективность К * * при л = 36 Код с проверкой на чет- ность (d = 2) 1- и—1 2 (п-1)9 0,03 0,057 9 Код Хемминга, в том чис- ле его циклический вари- ант (d = 3) log2(n + l) п- log2(n + l) 6 (л-1)(и-2)92 0,2 0,0046 92 Код с вычетами по моду- лю 3 (d = 2) 2 и—2 4 (и-1)9 0,06 0,11 9 Код с вычетами по моду- лю 7 (d = 2) 3 и—3 12 (и-1)9 0,09 0,34 9 Код с вычетами по моду- лю 15 (d = 2) 4 и—4 16 (и-1)9 0,125 0,46 9 Код «2 из 5» (d = 2) 0,52 0,83 9 0,52 0,83 9 171
Глава 5. Кодирование данных в компьютерах Код с проверкой на четность (d = 2) и код Хемминга (d = 3) целесооб- разно применять в случаях, когда в компьютере предполагается кон- тролировать схемными методами только хранение информации в ЗУ и ее внутренние передачи. При параллельной передаче данных закон распределения ошибок в слове обычно близок к биномиальному и вероятность одиночных ошибок значительно превышает вероят- ность групповых ошибок. При отсутствии дублирования более эффективным представляется код Хемминга, особенно для последовательной записи или чтения инфор- мации, когда возможно применение циклического варианта кода, требующего более простой кодирующей и декодирующей аппарату- ры. Обнаружение всех одиночных и двойных ошибок с помощью та- кого кода может обеспечить ббльший выигрыш в достоверности, чем это следует из табл. 5.5. Для кодов с вычетами по одному модулю вида 2*—1 при величине его от 3 до 15 относительная избыточность, как видно из табл. 5.5, отли- чается приблизительно в два раза. В таких же пределах будет изме- няться относительный объем контрольной аппаратуры при переходе от одного модуля к другому. Анализ различных возможных вариантов схем устройств определения вычетов показывает, что количество схемных элементов, приходящихся на один контрольный разряд в слове, практически не изменяется с возрастанием общего числа контрольных разрядов. От модуля т, выбранного для образования кода, зависит сложность контрольной аппаратуры. Эта аппаратура, помимо дополнительного ^-разрядного арифметического устройства, должна содержать, по край- ней мере одно устройство для определения вычетов. В компьютерах параллельного действия такое устройство составляет значительную часть дополнительной аппаратуры. Можно сформулировать следующие требования к величине модуля т. 1. Полученный код с наименьшими вычетами должен обеспечивать обнаружение заданных типов ошибок с максимальной вероятно- стью. Очевидно, с увеличением т возрастает не только корректирую- щая способность кода, но и его избыточность, а следовательно, объем контрольной аппаратуры. 2. Для облегчения контроля операции вычитания (сложения чисел с разными знаками) код с наименьшими вычетами должен быть 172
5.3. Сравнительные характеристики корректирующих кодов самодополняющимся. По существу, это значит, что при инверти- ровании всех контрольных двоичных знаков должно получаться дополнение до т. Обычно ограничиваются небольшими величинами модуля т, даю- щими код с минимальным кодовым расстоянием d = 2. Это обеспе- чивает обнаружение всех одиночных ошибок, наиболее вероятных в арифметических устройствах параллельного действия, а также не- которых типов кратных ошибок. Чтобы получить минимальное кодовое расстояние d = 2, величина т должна быть взаимно простой с основанием системы счисления Ь. В частности, можно положитьт =Ь±\. Предпочтительнее выбрать т = b — 1, где b — основание системы счисления. Это дает два важных преимущества. Во-первых, в этом случае деление числа на т с целью определения вычета можно заменить делением на т суммы fe-ичных цифр этого числа. Пусть задано число А в fe-ичной системе счисления: л —1 А = а„_хЬп~х +а„_2Ьп~2 +... + а^‘ +а0 = ^а(Ь‘. i О Все степени основания Ь' имеют вычет по модулю b— 1, равный 1. Следовательно, = o' (mod b— 1). Отсюда л —I л —I = J/iJmodi-l), i=0 »=o что подтверждает сформулированное выше положение. Второе преимущество состоит в самодополняемости кода с вычетами по модулю т = b — 1 для практически важных случаев, когда b = 2к. Действительно, инвертирование двоичных знаков вычета дает двоич- но-й-ичную цифру, являющуюся дополнением вычета до т. Но до- полнение вычета до т есть вычет дополнения л-разрядного числа до 2"—1, то есть вычет обратного кода этого числа. Это следует из того, что дополнение каждой цифры до b— 1 является вычетом по модулю b— 1 в данном разряде. Но сумма вычетов цифр сравнима с вычетом 173
Глава 5. Кодирование данных в компьютерах числа по тому же модулю. Следовательно, инвертирование двоичных знаков всей кодовой комбинации дает обратный код числа вместе с его вычетом по модулю b— 1. Найдем выражения для вероятности обнаружения ошибок различ- ной кратности, а также для потенциальной эффективности ^двоич- ных кодов с вычетами по модулю вида т = 2* — 1 при к = 2, 3 и 4, то есть при т = 3, 7 и 15. Сделаем следующие допущения: ► ошибки в любом двоичном разряде являются независимыми слу- чайными событиями и имеют одинаковую вероятность, равную q\ ► ошибки, состоящие в исчезновении единицы и в ее возникнове- нии вместо нуля, равновероятны; ► количество двоичных разрядов в числе п пропорционально к — ко- личеству разрядов в модульных группах, то есть всегда п = ск, где с — целое число. При таких допущениях распределение ошибок в числе подчиняется биномиальному закону, а поэтому вероятность одиночных ошибок будет иметь порядок nq, двойных — л2<?2, тройных — л3</3 и т.д. При малых значениях q, когда nq « 1, вероятность появления группо- вых ошибок быстро убывает при выводе приближенного выраже- ния для К. 1. Пусть т = 3 (к = 2). Определим вероятность обнаружения двойных ошибок. Под двойной подразумевается такая ошибка, при которой разность между правильным и искаженным числом равна ±2'+2J(i*j). Числа вида 2' при /=0, 1,2, 3,4, 5,... имеют чередующиеся вычеты по модулю 3, равные 1, 2, 2, 1, 2, ... Это означает, что наличие ошибок в какой-либо позиции может изменить вычет числа либо на ±1, либо на ±2. При двойной ошибке вычет изменяется на величину, равную сумме или разности этих значений. Сумма будет в случае исчезнове- ния или возникновения единицы на обеих позициях, а разность — когда характер ошибок в двух позициях различен. Двойная ошибка необнаружима, если эта сумма или разность равна 0 либо 3. При этом число изменится по сравнению с истинным на величину, кратную 3. 174
5.3. Сравнительные характеристики корректирующих кодов Всего возможны четыре комбинации чисел, изменяющих закодиро- ванную величину, а именно: 2'+2'; —2'—27; 2'-2>; -2'+2< Очевидно, если 2' и У имеют одинаковые знаки, то 2'+27 или —2'—У кратно 3 в случаях: a) Z четно, j нечетно; б) i нечетно, j четно; то есть в половине всех возможных сочетаний i и /. Если же 2' и У имеют разные знаки, то 2' - 2! или -2' + У кратно 3 в случаях: а) / четно, j четно; б) i нечетно, / нечетно, то есть также в половине всех возможных сочетаний i и /. Следовательно, при сделанных допущениях вероятность обнаруже- ния двойных ошибок равна 1/2. Вероятность обнаружения тройных ошибок, определенная аналогич- ным анализом всех возможных сочетаний, получается равной 3/4. Тройные ошибки и тем более ошибки более высоких кратностей ма- ловероятны, и их учет практически не повлияет на величину потен- циальной эффективности кода. Эффективность кода определяется как отношение вероятности всех ошибок в числе к вероятности необнаружимых ошибок. 2. Пусть т = 7 (к = 3). Вычеты по модулю 7 для чисел вида 2' при / = О, 1, 2, 3,4, 5,... равны 1, 2,4, 1, 2,4,... Определим вероятность обнару- жения двойных ошибок, изменяющих число на величину ±2' ± 2 Л При одинаковых знаках 2' и У все двойные ошибки обнаруживаются, так как 2' + У или -2' - У не может быть кратно 7. При разных знаках 2' - 2! или -2' + У будет кратно 7 в случаях, когда/ отличается от / на ±3, ±6, ±9 и т.д., то есть в 1/3 всех возможных сочета- ний / и j. Следовательно, вероятность обнаружения двойных ошибок равна 5/6. В результате анализа всех сочетаний для тройных ошибок определя- ется вероятность их обнаружения. Она будет равна 8/9. 175
Глава 5. Кодирование данных в компьютерах Таким образом, вероятность необнаружимых ошибок при контроле по модулю 7 можно считать равной Qk =|е2 о (вероятностью групповых ошибок кратности выше второй по-преж- нему пренебрегаем). Для потенциальной эффективности кода получаем выражение Х=——. (л-1)? 3. Пусть т = 15 (к = 4). На основании рассуждений, аналогичных пре- дыдущим, можно получить для этого кода & =|°2 о И Как следует из полученных соотношений, эффективность кода с уве- личением модуля значительно возрастает (даже при введенных упро- щающих предположениях). Значительное повышение эффективности можно получить, приме- няя код с минимальным расстоянием d > 2. Это достигается добавле- нием к числу в качестве контрольных разрядов вычетов этого числа по нескольким различным модулям. При этом обнаруживаться будут только такие ошибки, которые изменяют число на величину, кратную одновременно всем модулям. Для любой ограниченной длины кода числа всегда можно найти набор модулей, обеспечивающий заданное минимальное кодовое расстояние. Очевидно, для d= 3 модулей должно быть не меньше двух. Каждый из них можно выбрать в виде 2* - 1, чтобы упростить процедуру опреде- ления вычетов. При d > 3 возможно не только обнаружение, но и ав- томатическое исправление одиночных ошибок. Все приведенные в табл. 5.5 коды с вычетами имеют минимальное кодовое расстояние d = 2. Поэтому их потенциальная эффективность 176
5.4. Кодирование данных с симметричным представлением цифр при разных модулях, определенная при упомянутых выше упрощаю- щих предположениях, отличается всего лишь в несколько раз. Это позволяет утверждать, что контроль арифметических операций по модулю 3, для реализации которого требуется наименьший объем до- полнительной аппаратуры, может быть достаточно эффективным. Однако в некоторых компьютерах на основе таких кодов организуется единая система контроля для арифметических операций, для хране- ния информации в запоминающих устройствах и для ее внутренних передач. В этом случае находит применение код с вычетом по модулю 7, который позволяет обнаруживать не только все одиночные ошибки, но также и двойные ошибки, если они состоят в исчезновении двух единиц, возникновении двух единиц, либо имеют разные знаки, но произошли в смежных разрядах. При выборе модуля т = 15 обеспечи- вается обнаружение всех тройных ошибок в смежных разрядах. При расчете потенциальной эффективности кодов для биномиаль- ного закона распределения ошибок указанные свойства этих кодов оказывали незначительное влияние на конечный результат, так как вероятность групповых ошибок в этом случае резко убывает с повы- шением их кратности. Для хранения информации на магнитных дисках биномиальный закон не применим. Характер причин, вызывающих искажение информации при ее записи на диск, а также при чтении, таков, что вероятность групповых ошибок в смежных разрядах следу- ет ожидать близкой к вероятности одиночных ошибок. В этих условиях увеличение значения модуля т приводит к резкому повышению эффективности кода за счет групповых ошибок, хотя минимальное кодовое расстояние остается равным 2. 5.4. Кодирование данных с симметричным представлением цифр В позиционных системах кодирования данных (СКД) для изображе- ния положительных и отрицательных чисел обычно используются знаки «+» и «—». В позиционных сокращенных системах кодирова- ния, где разряды числа наряду с положительными могут принимать и отрицательные значения, знак числа явно не указывается.
Глава 5. Кодирование данных в компьютерах Особое место среди сокращенных систем занимает троичная СКД. В ней введены цифры 0, 1, 1 для обозначения чисел 0, +1, —1. Таким образом, базисные числа расположены симметрично относительно нуля. СКД является позиционной, так как значение каждой цифры в записи числа в три раза больше (меньше) значения той же цифры в соседней позиции. Число А в этой системе записывается в виде А=ап ап-\ — fli °-2— > где каждое а,- может принимать значения {0, 1,1}. Это сокращенная запись полинома: А — олЗи+ол_|Зи ^+...+ Gj3+Oo+g_j3 ^+o_j3 2+..., где 3", 3" *,..., 3°, 3 *, 3 2, ... — веса разрядов. Примеры представления чисел. -1=1з 1=13 -ю=ТоТ3 —2=Т13 2=1Т3 10=1013 -з=То3 3=103 0=03 -4=ТТ3 4=н3_ 1/3 =0,(3) =0,13 —5 =Т113 5=1ТТ3 32/81 =0,11 TTj Следует заметить, что знак числа в данной СКД определяется знаком старшей значащей цифры троичного изображения числа. Арифметические операции 1. Сложение. Таблица сложения а ь Примеры сложения чисел: +35 ~ 1 1 0 Т _35 - 1 1 0 Т 15 ~ 1 Т I 0 15 ~ Т 1 10 50-1Т1ТТ 50-1Т1Т -1 0 +1 -1 Т1 Т 0 0 Т 0 1 +1 0 1 11 178
5.4. Кодирование данных с симметричным представлением цифр 2. Умножение. Таблица умножения а ь Примеры умножения чисел: 1 Т Т 0-15 1 Т Т 1 - 16 1 Т Т 0 Т 1 1 0 Т 1 1 0 1 Т Т о 0 1 0 0 0 Т 0 - 240 1 0 1 т 1 0 Т 0 0 0 0 1 Т 1 1 3. Деление. Если промежуточное делимое (полученное из остатка путем сноса очередной цифры из делимого) содержит столько же раз- рядов, сколько делитель, то независимо от того, больше это промежу- точное делимое, чем делитель, или нет, в частное пишут «+1», если первые цифры делимого и делителя совпадают, или цифру «1», если нет. Если вслед за этим получается остаток, содержащий столько же разрядов, сколько и делитель, то повторяют указанные действия, за- писывая новую цифру частного в тот же разряд. Пример. 1 о 1 Т о Т 1 Т Т 11 Т Т Т 1 1 1 о о Т о о 1 1 Т Т 1 Г Т 1 1 1 Т о Т 1 о о 1 о ТоТ 1 Т Т т 2 1 т т о 1 Т Т Т 1 1 о При наличии остатка от деления, то есть нацело деление не осущест- вляется, в частном ставится запятая «,» и продолжается операция де- ления. 179
Глава 5. Кодирование данных в компьютерах Преимущества системы: ► знаковый разряд числа явно не указывается; ► отрицательные числа получаются из равных им по абсолютной величине положительных простой инверсией знаков всех разрядов числа; ► так как основание системы наиболее близко из целочисленных ос- нований к числу е, то аппаратурная реализация операций в ней опти- мальнее, чем в других (>3) основаниях системы. Из трудностей реализации можно отметить появление нескольких значений для одного и того же разряда частного. Такая система кодирования впервые была использована в компьюте- ре «Сетунь», разработанном в Московском государственном универ- ситете (СССР). 5.5. Кодирование данных в системах с отрицательным основанием Известны компьютеры, работающие в С КД с отрицательными основа- ниями. Обычно это машины последовательного действия. При вы- полнении арифметической операции оба операнда поступают на вход одновременно и обязательно младшими разрядами вперед, чтобы об- легчить перенос в старшие разряды. Целесообразность введения отрицательного основания обусловлива- ется тем, что знак числа органически включается в представление числа, в связи с чем не требуется специально отображать его. Неудобство использования системы состоит в том, что при реализа- ции процесса суммирования на один разряд могут прийтись два пере- носа, что усложняет схему сумматора. С точки зрения интервала представимых чисел при отрицательном основании имеет место некоторая несимметричность. Так, при чет- ном т (количестве разрядов) отрицательных чисел может быть пред- ставлено больше, чем положительных, а при нечетном — наоборот. 180
5.5. Кодирование данных в системах с отрицательным основанием Примеры. Пусть основание системы п = —2. Тогда при количестве разрядов т = 4 имеем: 0001 =4-1 0110 =+2 1011 =-9 0010 = —2 0111 =+3 1100 =-4 0011 =-1 1000 =-8 1101 = —3 0100 =+4 1001 =-7 1110 =-6 0101=+5 1010 = -10 1111 = —5 Итак, положительные числа: 1, 2, 3, 4, 5 (их пять), а отрицательные: —1, —2,..., —10 (их десять). При т = 3: 001 =+1 100 =+4 110 =+2 010 =-2 101=+5 111 =+3 ОН = -1 Итак, положительные числа: 1, 2, 3, 4, 5, а отрицательные: —1, —2. Известно, что каждое целое число Л может быть представлено в виде i=0 где при п<— 1 имеет место 0 < С( < —л—1. Для дробных чисел верно Л = £с,л-’. 1=1 Рассмотрим наиболее известный частный случай СКД при л = —2. Здесь С(€ {0; 1}. Предположим, что т = 5. Тогда таблица представле- ния целых чисел от—10 до 10 будет иметь следующий вид (табл. 5.6). 181
Глава 5. Кодирование данных в компьютерах Таблица 5.6 Представление целых чисел \Beca (-2)4 (-2)3 (-2)2 (-2)1 (-2)° \Beca (-2)4 (-2)3 (-2)2 (-2)1 (-2)° Числах 16 -8 4 —2 1 Числах 16 -8 4 —2 1 0 0 0 0 0 0 -10 0 1 0 1 0 1 0 0 0 0 1 —9 0 1 0 1 1 2 0 0 1 1 0 -8 0 1 0 0 0 3 0 0 1 1 1 —7 0 1 0 0 1 4 0 0 1 0 0 -6 0 1 1 1 0 5 0 0 1 0 1 -5 0 1 1 1 1 6 1 1 0 1 0 —4 0 1 1 0 0 7 1 1 0 1 1 -3 0 1 1 0 1 8 1 1 0 0 0 —2 0 0 0 1 0 9 1 1 0 0 1 -1 0 0 0 1 1 10 1 1 1 1 0 Из таблицы видно, что знак числа определяется местоположением первой значащей цифры: если она в четном разряде, то число отрица- тельное, если в нечетном — положительное. Рациональные числа Веса (-1/2) (-1/2)2 (-1/2)3 (-1/2)4 -1/2 1/4 -1/8 1/16 Числа -0,5 0,25 -0,125 0,0625 Арифметические операции 1. Сложение. Пусть ос,-, р,- — разряды слагаемых; Р;_{ — перенос из (г— 1)-го разряда на z-й; Р, — перенос из z-го в (г+1) -й. Тогда справед- ливо соотношение у, + Р,(—2) = а,- + Р,+Р,_|. Таблица сложения а. 0 0 1 1 0 0 1 1 0 0 1 1 ₽/ 0 1 0 1 0 1 0 1 0 1 0 1 Л-1 0 0 0 0 т 1 т I 1 1 1 1 т. 0 1 1 0 1 0 0 1 1 0 0 1 Pt 0 0 0 т 1 0 0 0 0 т т Г 182
5.5. Кодирование данных в системах с отрицательным основанием Возможные значения разрядов: Л-ьЛе{0; 1;Т},у,е{0; 1},а„р,е {0; 1}. Приведем пример. Пусть у, + Р,(—2) = 2, тогда у, = 0, Pt= — Ijyi+PX—2) = = —1, тогда у, =1, Р, =1. Примеры: 3 — 00 1 1 1 +9 - 1 1 0 0 1 5-00101 -6-01110 8-11000 +3 -00111 2. Вычитание. Так как a—b = a+b—lb = a+b+b(—2), причем Ь(—2) — это число Ь, сдвинутое на один разряд влево, то алгоритм вычитания мо- жет быть сформулирован следующим образом: для того чтобы из чис- ла а вычесть число Ь, необходимо к а прибавить b и затем прибавить Ь, сдвинутое на один разряд влево. Примеры: а +6-1 1 0 1 "+3-0 0 1 1 б 0 -5-0 1 1 1 1 0 1 0 7-0 “-10 - 0 в 1 1 0 0 0 1 1 0 1 +4-0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 (+ сдвинутое 3) 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 =+3 0 1 0 1 1 = -9 0 0 0 1 1 1 = +3 3. Умножение. Операция умножения осуществляется посредством по- следовательности операций сложений и сдвигов. Примеры: а 2-001 10 Х 5 -0 0 1 0 1 0 0 110 0 110 0 1 1 1 1 0 =+10 б 3-0 0111 Х-3-0 110 1 0 0 111 0 0 111 0 0 111 0 О О О 1 О 1 1 =—9 183
Глава 5. Кодирование данных в компьютерах 4. Деление. Пусть требуется разделить число и на число а и получить частное со, то есть о : а = со. Введем следующие обозначения: ак — это а, сдвинутое на к разрядов влево; 4+ 1 = V/ — «*, на каждом шаге алгоритма индекс у о,- увеличивается на 1; N(v) — номер разряда старшей значащей цифры. Разрядность частного со равна к + 1, а веса его разрядов будут иметь вид: (—2)* (—2)*-1, ..., (—2) °. Алгоритм деления. 1. Сдвигаем а на к разрядов влево до тех пор, пока старшая значащая цифра у а не станет под старшей значащей цифрой ъ, таким образом: а-» аЛ, то есть а преобразуется в аА; ц = v0, то есть V присваивается начальное обозначение t>0. 2. Вычитаем ъ0 — ак, то есть Vj = ц0 + а* + (—2) ак. 3. Если N(y>i+l) - N(ak), то записываем «1» в разряд (—2)* частного и еще раз вычитаем ак. 4. Если N(vi+l) < N(ak), то записываем «1» в разряд (—2)* частного и ак меняем на аЛ_], то есть сдвигаем ак на 1 разряд вправо и вычитаем а*_]. 5. Если N(vM) > N(ak), то записываем «О» в разряд (—2)* частного, ъ,+1 заменяем на ак меняем на ак_} и производим вычитание. 6. Процесс завершается, если t>/+1 = 0. I Замечание 1. Результат «0» или «1» записывается в разряд частного с весом (—2)*, где к — индекс у а. Замечание 2. Возможен случай, когда в один и тот же разряд частно- го записывается несколько значений. Формирование частного по- требует дополнительно одну операцию сложения. Замечание 3. Сравнение очередного ц- с нулем (п. 6 алгоритма) осу- ществляется на каждом шаге после выполнения одного из пунктов 3, 4 или 5. 184
5.5. Кодирование данных в системах с отрицательным основанием Пример 1. Пусть необходимо число 14 разделить на число 2, то есть ъ0 = 14, а = 2. Тогда 14 - 10010(_2), 2~110(_2). Для выравнивания старших значащих цифр делимого и делителя сдвигаем а на два разряда влево, то есть а-» а2 =11000. Структура частного со: Веса разрядов С-2)2 (-2)’ (-2)” Частное +1 +1 +1 +1 ПО 1 1 = 7 Процесс деления: 1 0 0 1 0 1)0 1 1 0 0 0 «2 Записываем 1 1 0 0 0 «1» во второй разряд <- 0 1 1 0 10 1), = ДГ(сх2) К, = 0? нет 1 1 0 0 0 «г Записываем 1 1 0 0 0 «1» во второй разряд <- 0 0 0 0 1 0 т>2 Мт>г) < М«г) И2 = 0? нет 1 10 0а, Записываем 1 1 0 0 Мт>з) < N(ai) «1» в первый разряд <- 0 0 0 1 1 0 v3 К3 = 0? нет 1 1 0 ас Записываем 1 1 0 «1» в нулевой разряд <- 0 0 0 0 0 0 и4 Ми>) < М«о) V4 = 0? да Stop Процесс деления завершен, так как ъ4 = 0. 185
Глава 5. Кодирование данных в компьютерах Пример 2. Пусть t>0 = 12, а = 2. Тогда 12-11100(_2), 2 - 110(_2). а-» а2 =11000. Структура частного со: Веса разрядов (—2)2 (-2)" (-2)” Частное 1 0 1 1 ПО 1 0 Процесс деления: 1 1 1 0 0 ч> 1 1 0 0 0 <4 Записываем 1 1 0 0 0 «1» во второй разряд <-0 0 0 1 0 0 *>1 М4) < Ма2) 1 1 0 0 «1 Записываем 1 1 0 0 «0» в первый разряд <- 1 1 0 0 0 ^2 Mv2) > М<ч) Vi возврат 0 0 1 0 0 4 0 1 1 0 “о Записываем 0 1 1 0 «1» в нулевой разряд <— 0 0 1 1 0 Ч М^') = Мао) 0 1 1 0 Записываем 0 1 1 0 «1» в нулевой разряд <- 0 0 0 0 0 41 Мнз) < Мао) Процесс окончен, так как = 0. 5.6. Кодирование данных с помощью вычетов Поиск новых систем кодирования данных имеет целью оптимизацию ресурсов, необходимых для обработки данных: памяти, процессор- ного времени, средств обеспечения надежности, точности вычисле- ний и т.д. 186
5.6. Кодирование данных с помощью вычетов Не явилась исключением и система кодирования данных с применени- ем вычетов. Она разработана с целью ускорения арифметических опе- раций, повышения точности и надежности вычислений. п Пусть Р2,Рп — целые числа; Р,> 1, (Р„ /’)= 1, i*j; Л/ = ;х— /=1 наименьшие неотрицательные решения системы сравнений i4=x,(modPz), г = 1,2,..., л; А с [0,Л/)- Тогда кортеж (хь х2, х„) будем называть кодом числа А в системе кода вычетов (СКВ) при заданных основаниях Ръ Р2,..., Рп. Записы- вают это обычно так: А ~ (хь х2,..., х„). Компоненты х,- называют разря- дами числа А в СКВ. Своими корнями данная система восходит к так называемой китайской теореме об остатках. Теорема. Пусть числа Ms и M's определены из условий Pt, Р2,..., Рк = MSPS, М, М’ = 1 (mod Ps) и пусть х0= Л/j М{ЬХ + М2 М2Ь2+...+ Мк Мк Ьк. Тогда совокупность значений х, удовлетворяющих системе срав- нения х = Z>](mod Рх), х = Z>2(m°d Рг)> • • ,х = Mmod Рк), определяет- ся сравнением х = x0(mod Plt ..., Рк). Среди особенностей СКВ исследователи отмечают следующие: ► каждый разряд числа несет информацию обо всем числе, откуда следует независимость разрядов друг от друга; ► отсутствие переносов между разрядами при выполнении арифме- тических операций упрощает их выполнение; ► малоразрядность компонент числа, в связи с чем арифметические операции превращаются в однотактные, иногда просто в выборку ре- зультата из таблицы. Арифметические операции Рассмотрим алгоритмы арифметических операций. Пусть необходи- мо выполнить операцию А ® В=С, где Л - (х1гх2, ...,х„); В~ (УьУг, УпУ, С~ (у,, у2, -.Y»)- 187
Глава 5. Кодирование данных в компьютерах 1. Если ® — сложение, то Х=|х,+У,|д, то есть у,- =xt +yt -1,Р, где /, 1, если xt + У{ > Р,, О, если X; + yi <Pi ,i = 1, л. 2. Если ® — вычитание, то Y< =1*/-У.1я> тоесть у, = х,-yt +ltP, {1,еслих.- <у,, О, если Xi >yi- 3. Если ® — умножение, то Т*=1л7>71лэ тоесть у, = х,у,- -/,/>, где/, = [х] — наибольшее целое, не больше х. я 4. Если ® — деление, то где= 0, 1,..., Pi— 1. Иногда операцию деления А/В заменяют операцией умножения А на мультипликативную инверсию от В по модулю М, то есть выполняют умножение: (хьх2, ...,х„)(у[,у^...,у'„), где (у!,У2, —, Ул ) — мультипликативная инверсия от В по модулю М. Здесь у. то есть у, — решение уравнения ly/y^/? =1 или сравнения у/у/ = = 1 (mod Pi). Мультипликативная инверсия существует, если (у„ Pj) = 1, для всех i = 1,л. 188
5.6. Кодирование данных с помощью вычетов Пример. Пусть Р| = 2, Р2 = 3, Р3 = 5. Л/= 30. Тогда числу А = 7 в данной СКВ будет соответствовать код (1, 1, 2), а числу 3 - (1, 0, 3). Выполним арифметические операции над кодами чисел 3 и 7 в СКВ (1,1,2) (1,1,2) (1,1,2) + - х (1,0,3) (1,0,3) (1,0,3) (0, 1,0) (0, 1,4) (1,0, 1) Следует отметить, что кодирование данных в СКВ в силу вышеука- занных свойств позволяет существенно уменьшить время выполне- ния основных арифметических операций. Восстановление позиционного значения числа А по его коду (хь х2, х„) в СКВ осуществляется из соотношения <4 дес ~ i=l где В, — ортогональные базисы; гА — ранг числа А. Ортогональные базисы представляют собой целые числа, удовлетво- ряющие соотношению _ fl (mod/}) . . 1 [0 (mod Ру)’ i,j = l, 2, ..., п , и ищутся среди чисел вида Пр>’ где е {1, 2, ..., Р, - 1}. Перевод чисел из позиционной системы счисления (ПСС) в СКВ мо- жет осуществляться различными способами. Приведем некоторые из них. 1. Решение системы линейных сравнений zl^x/modP,,), /=1,л. Тогда (хь х2, ..., х„) — код числа А в СКВ. 189
Глава 5. Кодирование данных в компьютерах 2. Нахождение наименьших неотрицательных остатков от деления А на все основания Р„1 = Гл. Полученные остатки и дадут представление А в СКВ. 3. Использование операций умножения и сложения по алгоритмам СКВ. В выбранной системе оснований Pi, Р2, Р„ заготовим В + 1 кон- станту 0,1,2, ..., В, где В — основание ПСС. Затем представляем ис- ходное число А по схеме Горнера: ((a„Z?+an_1)Z? + an_2)Z?+-+a0. (1) Подставляя значения чисел а0, аь ..., а„и В в заданной СКВ в выше- приведенной формуле (1) и выполняя операции сложения и умноже- ния, получим для числа А = а„ а„_{ ... а0 его код в СКВ. Для заданной системы оснований Р1г Р2,..., Р„ ортогональные базисы фиксируются и хранятся как константы на протяжении всего време- ни вычислений. Из общих соображений можно предположить, что наиболее целе- сообразна система оснований, требующая наименьшего числа мало- разрядных модулей. Однако это не всегда верно. Целесообразность выбранных модулей в каждом случае зависит от цели, поставленной при проектировании компьютера на базе системы в коде вычетов. Анализ алгоритмов выполнения различных операций в коде вычетов показывает, что основным требованием, предъявляемым к модулям си- стемы, является однозначность кодирования данных. Известно (из тео- рии чисел), что д ля выполнения этого требования необходимо, чтобы (Pi,Pj) = i для всех i*J, i,j= 1,...,л, то есть необходима взаимная простота модулей системы. Исследования показали, что полученные алгоритмы выполнения не- модульных операций в рамках классической СКВ близки к предель- ным. В связи с этим рассмотрим некоторое обобщение классической СКВ, которое позволяет усовершенствовать алгоритмы основных операций с целью уменьшения их вычислительной сложности, что дает возможность расширить класс задач, решаемых на компьютерах с базовой системой СКВ. 190
5.6. Кодирование данных с помощью вычетов Итак, целое неотрицательное число А будем представлять в виде (Xpcj + (1 - А,) (X! - PJ,\,хп + (1 - А„) (х„ - Р„)), (2) где А,е|0, 1|, х, = |Л|р;. Значения А,- следует выбирать таким образом, чтобы форма (2) для любого целого числа А из области определения имела нулевой ранг. Назовем форму (2) формой нулевого ранга (ФНР). Определение 1. Систему в коде вычетов, для которой любое целое А е [О, М) допускает ФНР, назовем безранговой СКВ (БСКВ). Из (2) следует, что разряды чисел в этой системе могут быть положи- тельными, отрицательными или равными нулю. Примеры, демонстрирующие представления целых чисел в БСКВ для оснований 7? = 2, Р? = 3, Р3 = 5, даны в табл. 5.7. При этом в пред- последнем столбце приведены коды чисел 0, 1,2, ..., 10, а в послед- нем — коды чисел 0,-1, —2, ..., —10. Из примера следует, что трансформирование положительных чисел в равные по абсолютной величине отрицательные получаются инвер- тированием знаков всех разрядов числа. Этот факт следует из (2) и формы восстановления позиционного значения числа по его коду в БСКВ. Суть инвертирования состоит в дополнении значения каж- дого разряда до соответствующего Р„ /= 1, 2,..., п и замене знака каж- дого разряда числа на противоположный. Таблица 5.7 Примеры БСКВ Числа в ПСС Форма СКВ Ранг Форма (1) Положительные числа в БСКВ Отрицательные числа в БСКВ 0 (0, 0, 0) 0 (0, 0, 0) (0, 0, 0) 1 (1, 1, 1) 1 (Т, 1, 1) (1, Т, Т) 2 (0, 2, 2) 1 (0, 1, 2) (0, 1,2) 3 (1, 0, 3) 1 (1,0, 3) (1, 0, 3) 4 (0, 1, 4) 1 (0, 2, 4) (0, 2, 4) 5 (1,2, 0) 1 (1,2,0) (1, 2, 0) 6 (0, 0, 1) 0 (0, 0, 1) (0, 0, 1) 7 (1, 1,2) 1 (1, 2, 2) (1,2, 2) 8 (0, 2, 3) 1 (0, 1, 3) (0, 1, 3) 9 (1, 0, 4) 1 (1,0, 1) (1,0, 1) 10 (0, 1, 0) 0 (0, 1, 0) (0, 1,0) 191
Глава 5. Кодирование данных в компьютерах Справедливы следующие теоремы. Теорема 1. Для того чтобы в СКВ с основаниями Р2,Р„, ор- тогональными базисами В1г В2,..., В„, весами mlf т2, .... т„ для лю- бого целого Ае [О, М) с рангом гА существовала ФНР, необходимо и достаточно, чтобы выполнялось соотношение га = Ymi’ ЛГ = [1’ 2’ «]• (3) j^Ni Доказательство. Необходимость. Пусть (хь х2,..., х„) — код неко- торого числа Ае D в заданной СКВ. Предположим, что его можно представить в форме (2). Не нарушая общности рассуждений, бу- дем считать, что А в форме (2) имеет вид (ХЬХ2, ... ,ХкгХМ-РМ, ... ,Xj-Pj,Xj+l, ...,х„). Тогда i=i 1=*+1 Согласно формуле восстановления позиционного значения числа А в СКВ имеем /1 = ^XjBi —гАМ. i=i Но это две численные формы одного и того же числа А. Значит, /=1 1=1 /=*+1 Тогда ~ГАМ = ^X/Bt - ^т,М = i=i /=1 i=*+i = YX‘B‘+ Ъ,(Х‘В‘ ~т> Ю+ Ъ,Х‘В' = «=1 /=*+! |=у+1 192
5.6. Кодирование данных с помощью вычетов = -Р^В.. i=l i=t+l 1*4+1, J Значит, j ГЛ= Ym‘’ i=k+\ то есть число А имеет ФНР. Необходимость доказана. Достаточность доказывается аналогичным образом, проводя рассуж- дения в обратном порядке, в предположении, что условие (2) выпол- няется. Следствие 1. Если для системы модулей Р\, Р2, ..., Рп веса ортого- нальных базисов т l = m2^...=m„= 1, то для любого Ле [О, Л/) суще- ствует ФНР. Следствие 2. Число А в ФНР будет иметь столько отрицательных разрядов, сколько слагаемых т, входит в сумму (3). Следствие 3. Чтобы число Ле [О,М) имело единственную ФНР, не- обходимо и достаточно, чтобы для указанного Л сумма (3) была единственной. Пусть РУ — область определения операций в БСКВ. Как следует из (2) ^maxL где ^min = -£(Р/ -1>,, ЛП1ах = • <=1 1=1 Установим связь между кодированием противоположных по знаку чисел. Пусть (хь х2,..., х„) представление числа Л > 0 в ФНР. По опре- делению БСКВ Л = £х,Д. (4) /=1 193 132ТЭ2
Глава 5. Кодирование данных в компьютерах Поскольку В, > 0, то -Л = £(-%,)/?,. /=1 Следовательно, представление числа —А по представлению числа А получается инвертированием знаков всех его разрядов. Отсюда сле- дует, что множество U симметрично относительно нуля. Пусть в классической СКВ ранги всех чисел Ае [О, М) заключены в интервале [rb r2], a R — множество всех целых чисел из [гь г2]. Теорема 2. В классической СКВ минимальный элемент множест- ва R равен нулю, а максимальный -л -1. 1=1 где /] — ранг числа А = 1. Доказательство. Из соотношения A = ^XiBi-rAM 1=1 для классической СКВ следует, что м=1 7 Но так как всегда А < М, а гА — целое, то можем записать Га = l/M^XiBi i=i Поскольку 0 < х, < Р„ то гА будет минимальным при х, = 0, то есть /] = 0. Аналогично Г2 1=1 /=1, п .1=1 (Pi -l)/n, Pi 194
5.6. Кодирование данных с помощью вычетов Л Л и |_< = 1 <=1 г‘ J i=l Следствие. Мощность множества R равна r2 + 1. Исследуем структуру множества О'. Обозначим через О* и D'_ соот- ветственно подмножества положительных и отрицательных элемен- тов множества О'. Разобьем весь интервал Mmin, /1тах] на интервалы длины М и перенумеруем их +0, ±1, ±2, ... соответственно влево и вправо от нуля. Из определения (4) и симметричности множества О следует, что (—А/,0] с С и [0,Л/) с О'. Пусть Р — множество всевозможных наборов (хь х2 —, хи)> удовле- творяющих условию — Pj < Х/< Ph i = 1, 2, ..., n, для системы модулей Pb Р2,..., Р„, допускающих ФНР. Пусть (хь х2,..., х„) — произвольный набор из Р, а ранги чисел Ае [0, Л/) принимают все целые значения из интервала [0, г2]. Будем говорить, что заданный набор порождает во множестве О' новый элемент, если возможно представление его в фор- ме (2) таким образом, чтобы результаты подстановки обеих версий наборов в (4) не были равны. Утверждение 1. Каждый набор (хь ..., х„) порождает в D' столько новых элементов, какова величина ранга числа, соответствующего этому набору в СКВ. Справедливость этого утверждения вытекает непосредственно из со- отношения (2) и теоремы 1. Следствие 1. Множества О± и DL имеют одну и ту же мощность, то есть |£>+| =| ЕГ|. Следствие 2. Мощность множества U меньше мощности множе- ства целых чисел из интервала Ит1П, Лтах]. Обозначим через О] множество особых точек, то есть Ot — это такое множество, что Ot с [>4min, Лтах], но О сгРУ. Наличие О] несколько ухудшает характеристики БСКВ. Если окажется, что существуют мно- жества О', для которых |/У| = |[/lmin, Лтах]| (рассматриваются только це- лые числа из интервала), то указанный недостаток будет исключен. 195
Глава 5. Кодирование данных в компьютерах ______________________________ !___________________________ Вообще говоря, не совсем ясно, насколько существен данный недос- таток, так как аналогичная ситуация, возникающая при округлении чисел в позиционной системе счисления, не вызывает практических затруднений, и тщательное ее исследование в научной литературе не встречается. Вышеизложенное позволяет сформулировать следующее утвержде- ние. Утверждение 2. Набор (хь х2,..., х„) из Рс рангом не порож- дает в интервале с номером +N (а следовательно и —N) особую точ- ку, если >N. Следствие 1. Число Ае [О, Л/) не может быть порождающим ни для какого элемента из интервала с номером N>r2. Следствие 2. Мощность множества V равна 2 £(^|«П +D-D) где |5,| — мощность множества элементами которого являются числа из [О, М), имеющие ранг /7. Выясним, как построить систему модулей, ортогональные базисы для которых имели бы наперед заданные веса. Теорема 3. Для того чтобы совокупность целых чисел Рь Р2,Р„ (Р,>1,1=1,2,..., п) представляла собой набор оснований системы в коде вычетов, ортогональные базисы для которых имели бы за- данные веса тиь т2,..., т„, необходимо и достаточно, чтобы для Р, выполнялось соотношение JJP7Wj+g,+1 , / = 1,2 (5) гае &!+1 = -1» & 0’ = 1> 2,..., п) — целые числа, & * 0. 196
5.6. Кодирование данных с помощью вычетов Доказательство теоремы 3 ведется методом индукции, причем вначале доказывается необходимость условий теоремы, а потом и их достаточность. Для ускорения поиска оснований безранговых систем полезно полу- чить оценки (верхние и нижние) для каждого из искомых наборов ос- нований. Получим также оценки для БСКВ с единичными весами ортогональных базисов. БСКВ, для которых тх = т2 = ... = т„, полезны в том плане, что алго- ритмы выполнения операций для соответствующих модулей Рь Р2, ..., Рп значительно проще, чем для оснований с произвольными веса- ми ортогональных базисов. Утверждение 3. Пусть Рх, Р2,..., Р„ — основания некоторой БСКВ, ортогональные базисы для которой имеют единичные веса, а Р,. = = (Р/) — соответственно нижняя (верхняя) оценка величины осно- вания Pj. Верны следующие равенства: =1/£/ПР,+1, 7=1 Р,‘ =ПЛ(«-/+!)• 7=1 Доказательство. Так как&+1 > 1, то, подставив в формулу (5) выра- жение g,+1 = 1 (в предположении, что Р1; Р2,..., Pt_x известны), по- лучим оценку для Р*. В применении к БСКВ, указанным в утверждении 3, формула для ортогонального базиса А =£.ПЛ-£'+1 - —+1 7=1 примет вид g, ПР> +1 = + +- • -+М” ’ <6> 7=1 где Л/, = M/Pi. 197
Глава 5. Кодирование данных в компьютерах Отсюда У 1U Pi+l Рп М) Не нарушая общности рассуждений, предположим, что система оснований упорядочена по возрастанию. Так как gt > 1 (Z = 1,2,..., п) и Р, < Р2 < ... < Рп, то 1 1 Pi+i < Р, ’ то есть KP^.J* +1)1, откуда следует, что /-1 /=1 Утверждение доказано. Пусть 5(и) — множество всех БСКВ с /л,= 1, i = 1, 2,..., п. При нахож- дении БСКВ всегда необходимо отыскивать величину g,. Используя полученные результаты, дадим его оценку для некоторого п. Из (6) следует, что Вместо Рр можно взять z'-e простое число. Тогда для оценки g\ необхо- п димо подсчитать сумму Sn = 1 / Ру Оказалось, что минимальное п, J=i при котором Sn > 2, равно 59. Следовательно, S(n) для всех п < 59 име- ет gt = 1. Так как для БСКВ, имеющих практическое значение, п < 59, то фактически всегда можно считать gi = 1. 198
5.7. Стандарт IEEE 754 Приведем примеры безранговых систем с количеством оснований, равным 3, 4 и 5: п = 3: Р, = 2, Р2 = 3, Р3 = 5; п =4: Р, = 2, Р2 = 3, Р3 = 7, Р4 = 41; и = 5: Pt = 2, Р2= 3, Р3 = 7, Р4 = 83, Р5 = 85; Pt = 2,Р2 = 3, Р3 = 7, Р4 = 43, Р5 = 1805; р, = 2, Р2 = 3, Р3 = 11, Р4 = 17, Р5 = 59. Из вышеизложенного следует, что БСКВ позволяет построить срав- нительно простые алгоритмы выполнения немодульных операций. Система в коде вычетов в основном применяется в специализирован- ных вычислительных устройствах из-за высокой сложности опера- ций определения знака числа и сравнения чисел. 5.7. Стандарт IEEE 754 Чтобы обеспечить корректность выполнения операций с плавающей точкой и однотипность представления данных, обеспечивающую воз- можность переноса данных с одного компьютера на другой, а также снабжающую разработчиков аппаратуры точной моделью арифметики с плавающей точкой, комиссия IEEE разработала и детально специ- фицировала стандарт 754. Институт инженеров по электротехнике и электронике (Institute of Electrical and Electronics Engineers — IEEE) ввел обязательный стандарт представления чисел с плавающей точкой в 32-разрядном формате. В нем определены не только представление чисел, но и правила вы- полнения четырех базовых арифметических операций. Любой ком- пьютер, соответствующий стандарту IEEE, должен поддерживать как минимум представление чисел с плавающей точкой одинарной точ- ности (32 разряда). Стандарт определяет три формата: с одинарной точностью (32 бита), с удвоенной точностью (64 бита) и с повышенной точностью (80 бит). Последний формат предназначен для уменьшения ошибок округления. 199
Глава 5. Кодирование данных в компьютерах Форматы с одинарной и удвоенной точностью начинаются со знако- вого разряда (0 соответствует знаку +, 1 соответствует знаку ), затем следует порядок (excess — смещение) соответственно 8 и 11 бит и ман- тисса — 23 и 52 бита. Нормализованная мантисса начинается с двоичной запятой, за кото- рой следует единичный бит и остаток мантиссы, причем первые два бита присутствуют неявно. Следовательно, нормализованная ман- тисса состоит из одного неявного бита (так как он всегда равен еди- нице) и неявного бита для двоичной запятой, за которыми следуют 23 или 52 произвольных бита. Для того чтобы обозначить такую «урезанную» мантиссу, использует- ся термин significant! вместо термина mantissa. Поэтому, если все 23 или 52 бита мантиссы равны нулю, мантисса имеет значение 1,0. Самое малое нормализованное число соответственно равно 2-126 и 2-1022, а самое большое число оценивается =2128 и =21024. Диапазон десятичных дробей — от=10~38 до 1038 и от =1О-308 до Ю308, самое ма- лое ненормализованное число будет ~ 1СГ45 и ~10-324. Традиционные проблемы, связанные с работой над числами с плавающей точкой, — что делать с переполнением, потерей значимости и неини- циированными числами — решаются в IEEE 754 следующим образом. Введены ненормализованные числа, имеющие порядок «0» и мантис- су, представленную следующими 23 или 52 битами. Неявный бит «1» слева от двоичной запятой здесь превращается в «0». Отличие таких чисел от нормализованных чисел простое — у нормализованных чисел порядок (экспонента) не может быть равен нулю. То есть здесь имеет- ся положительный и отрицательный нуль, определяемые знаковым битом (экспонента нуль и мантисса нуль), при этом бит слева от двоич- ной запятой по умолчанию равен нулю, а не единице (табл. 5.8). Таблица 5.8 Числовые типы стандарта IEEE Нормализованное число ± 10 < Exp < Мах | Любой набор бит Ненормализованное число ±|о| Любой ненулевой набор бит Нуль ±|о | 0 Бесконечность ±| 111 ... 11 0 Не число ±|1П... 1| Любой ненулевой набор бит 200
Упражнения Для обозначения переполнения принят тип бесконечность Это число можно использовать в качестве операнда с обычными арифметиче- скими правилами. Например, бесконечность и любое число в сумме дают бесконечность; конечное число, разделенное на бесконечность, равно нулю; любое конечное число, разделенное на нуль, стремится к бесконечности. При делении бесконечности на бесконечность результат не опреде- лен. Для такого случая существует специальный формат NaN (Not a Number — не число), который тоже можно использовать в качестве операнда. Значение NaN — результат недопустимой операции. Он может быть использован и в случае операций 0/0 и 4-1. Характерная особенность всех ненормализованных чисел — отсутст- вие подразумеваемой единицы слева от двоичной запятой, а их ман- тисса представляет собой любую ненулевую 23-разрядную дробную часть числа. В настоящее время большинство процессоров (в том числе Intel, SPARC и JVM) содержат команды с плавающей точкой, которые со- ответствуют стандарту IEEE 754. Упражнения 1. Какие требования предъявляются к коду данных, чтобы он мог обнару- живать и исправлять ошибки кратности fl 2. Для кода Хемминга разработайте и реализуйте алгоритм обнаружения ошибки при передаче данных. 3. Для системы с симметричным кодированием данных с основанием л = 3 разработайте и реализуйте алгоритмы выполнения операций умножения и деления. 4. Для системы кодирования данных с основанием л = -2 разработайте и реализуйте алгоритмы выполнения основных операций (сложение, ум- ножение, деление). 5. Разработайте и реализуйте алгоритм поиска ортогональных базисов с единичными весами для системы в коде вычетов. 6. Реализуйте алгоритмы выполнения арифметических операций в двоич- ной системе с плавающей точкой. 201
Глава 5. Кодирование данных в компьютерах 7. Преобразуйте в формат стандарта IEEE 754 с одинарной точностью сле- дующие числа: 7; 3/32; —3/32; 4,125. Представьте результаты в восьми шестнадцатеричных разрядах. 8. Разработайте и реализуйте алгоритмы перевода числа из ПСС в систему с отрицательным основанием. 9. Для системы кодирования данных в системе в коде вычетов разработайте и реализуйте алгоритмы основных операций (сложение и умножение). 10. Разработайте и реализуйте алгоритм сравнения чисел в системе кода вы- четов. 202
Глава 6 Микропроцессоры Наряду с развитием и совершенствованием технологии производства элементной базы совершенствуется и архитектура компьютеров. Ниже рассмотрены архитектурные решения, предлагаемые ведущими миро- выми фирмами по проектированию и производству компьютеров — IBM, Intel, Microsystems, Hewlett Packard, Motorola, DEC, Apple и др. Считается, что термин «микропроцессор» впервые прозвучал при пред- ставлении фирмой Intel интегрального микропрограммируемого вы- числительного устройства серии 4004 в 1972 году. Рассмотрим работу микропроцессора (МП) на примере простейшей восьмиразрядной конструкции (рис. 6.1). Каждый МП может реализовывать определен- ный набор системы команд (СК), хранящихся в специальной области памяти. Считывание и выполнение команд осуществляется в соот- ветствии с тактовыми импульсами от генератора сигналов. Управляющая программа задает адрес очередной команды для выпол- нения. Считанный из памяти код этой команды по шине адреса (ША) пересылается в регистр команд (РК). Дешифратор кода команд (ДШК) Рис. 6.1. Функциональная схема восьмиразрядного микропроцессора 203
Глава 6. Микропроцессоры расшифровывает ее и посылает в арифметико-логическое устройство (АЛУ) для исполнения. Обрабатываемые данные поступают на вход АЛУ через буферный регистр данных (БРД), используемый для вре- менного хранения введенной информации. Результат обработки из АЛУ направляется в устройство оперативного хранения, в качестве которого используется регистр-аккумулятор (РА), затем по шине данных (ШД) поступает на выход МП. В реальных МП оперативный РА входит составной частью в регистры общего назначения (РОН), являющиеся внутренней сверхоперативной памятью МП. 6.1. Методы адресации и типы команд В компьютерах с регистрами общего назначения метод (или режим) адресации объектов, с которыми манипулирует команда, может зада- вать константу, регистр или ячейку памяти. Система адресации определяет максимальный размер памяти, исполь- зуемой компьютером. Так, например, при 16-разрядном адресе па- мять составляет 216=64 Кбайт, при 32-разрядном адресе используется память объемом 232 = 4 Гбайт. В табл. 6.1 представлены основные методы адресации операндов, ко- торые реализованы в компьютерах, рассмотренных в настоящей книге. Методы адресации Таблица 6.1 Метод адресации Пример команды Смысл команды Использование команды Регистровая Add R4, R3 R4 = R4 + R3 Для записи требуемого значения в регистр Непосредст- венная или литерная Add R4, #3 R4=R4 + 3 Для задания констант Базовая со сме- щением Add R4, 100(Rl) R4 = R4 + + M(100 + Rl) Для обращения к ло- кальным переменным Косвенная регистровая Add R4, (Rl) R4 = R4+M(R1) Для обращения по ука- зателю к вычисленному адресу 204
6.1. Методы адресации и типы команд Окончание табл. 6.1 Метод адресации Пример команды Смысл команды Использование команды Индексная Add R3, (R1+R2) R3 = R3 + + M(R1 + R2) Полезна при работе с массивами: R1 — база, R3 — индекс Прямая или абсолютная Add Rl, (1000) Rl = Rl + M(1000) Полезна для обращения к статическим данным Косвенная Add Rl, @(R3) Rl = Rl+ + M(M(R3)) Если R3 — адрес указа- теля, то выбирается зна- чение по этому указателю Адресация непосредственных данных и литерных констант обычно рассматривается как один из методов адресации памяти (хотя значения данных, к которым в этом случае производятся обращения, являются частью самой команды и обрабатываются в общем потоке команд). В табл. 6.1 на примере команды сложения (Add) приведены наиболее употребительные названия методов адресации, хотя при описании архитектуры в документации производители компьютеров и ПО ис- пользуют разные названия этих методов. Знак «=>> используется для обозначения оператора присваивания, а буква М обозначает память (Memory). Таким образом M(R\) обозначает содержимое ячейки па- мяти, адрес которой определяется содержимым регистра R1. Использование сложных методов адресации позволяет существенно сократить количество команд в программе, но при этом значительно увеличивается сложность аппаратуры. Команды традиционного машинного уровня можно разделить на не- сколько основных типов, которые показаны в табл. 6.2. Таблица 6.2 Основные типы команд Тип операции Примеры Арифметические и логические Целочисленные арифметические и логи- ческие операции: сложение, вычитание, логическое сложение, логическое умно- жение и т.д. Пересылки данных Операции загрузки/записи 205
Глава 6. Микропроцессоры Окончание табл. 6.2 Тип операции Примеры Управление потоком команд Безусловные и условные переходы, вызовы процедур и возвраты Системные операции Системные вызовы, команды управления виртуальной памятью и т.д. Операции с плавающей точкой Операции сложения, вычитания, умноже- ния и деления над вещественными числами Десятичные операции Десятичное сложение, умножение, преоб- разование форматов и т.д. Операции над строками Пересылки, сравнения и поиск строк Ъш операнда может задаваться либо кодом операции в команде, либо с помощью тега, который хранится вместе с данными и интерпрети- руется аппаратурой во время обработки данных. Обычно тип операнда (целый, вещественный, символьный) опреде- ляет и его размер. Как правило, целые числа представляются в допол- нительном коде. Для задания символов компания IBM использует код EBCDIC, другие компании применяют код ASCII. Для представ- ления вещественных чисел с одинарной и двойной точностью при- держиваются стандарта IEEE 754. В ряде процессоров применяют двоично кодированные десятичные числа (двоично-десятичные числа), которые представляют в упако- ванном и неупакованном форматах. Упакованный формат предпола- гает, что для кодирования цифр 0—9 используют четыре разряда и две десятичные цифры упаковываются в каждый байт. В неупакованном формате байт содержит одну десятичную цифру, которая обычно изо- бражается в символьном коде ASCII. 6.2. Компьютеры со стековой архитектурой При создании компьютера одновременно проектируют и систему ко- манд для него. Существенное влияние на выбор операций для их вклю- чения в СК оказывают: ► элементная база и технологический уровень производства компью- теров; 206
6.2. Компьютеры со стековой архитектурой ► класс решаемых задач, определяющий необходимый набор опера- ций, воплощаемых в отдельные команды; ► системы комацд для компьютеров аналогичного класса; ► требования к быстродействию обработки данных, что может поро- дить создание команд с большой длиной слова (VLIW-команды). Анализ задач показывает, что в смесях программ доминирующую роль играют команды пересылки и процессорные команды, использую- щие регистры и простые режимы адресации. На сегодняшний день наибольшее распространение получили сле- дующие структуры команд: одноадресные (1А), двухадресные (2А), трехадресные (ЗА), безадресные (БА), команды с большой длиной слова (VLIW - БДС) (рис. 6.2): Причем операнд может указываться как адресом, так и непосредст- венно в структуре команды. В случае БА-команд операнды выбираются и результаты помещаются в стек (магазин, гнездо). Первыми (типичными) представителями БА-компьютеров являются KDF-9 и МВК Эльбрус. Характерная особенность таких компьютеров — наличие стековой памяти. Стек — это область оперативной памяти, которая используется для вре- менного хранения данных и операций. Доступ к элементам стека осуще- ствляется по принципу FILO (first in, last out — первым вошел, послед- ним вышел), причем только через вершину стека, то есть пользователю «виден» лишь тот элемент, который помещен в стек последним. Рассмотрим функционирование процессора со стековой организа- цией памяти. 207
Глава 6. Микропроцессоры При выполнении различных вычислительных процедур процессор использует либо новые операнды, ранее не выбиравшиеся из памяти компьютера, либо операнды, употреблявшиеся в предыдущих опера- циях. В процессорах с классической структурой обращение к любому операнду (1А-ЭВМ) требует цикла памяти. Рассмотрим пример. Пусть процессор вычисляет значение выражения v _ аг+Ь2 Л---------_ b + c Программа решения этой задачи для одноадресного компьютера мо- жет быть следующей (табл. 6.3). Таблица 6.3 Пример программы Номер команды Команда Комментарии 1 C->Z’ 2 (Е)+/> 3 Pj — рабочая ячейка 4 Л— 5 (Е)-а 6 (Е)^Р2 Р2 — рабочая ячейка 7 Ь—ьЕ. 8 9 (2) + (А) 10 (WO а2 +Ь2 Ь+с Как следует из приведенной программы, операнд а выбирается из па- мяти два раза (команды 4 и 5), b — 3 раза (команды 2, 7 и 8). Кроме того, потребовались дополнительные обращения к памяти для запо- Выполнение команды типа(£)®(Р) подразумевает, что результат операции поме- щается в первый регистр, в данном случае в регистр Е. 208
6.2. Компьютеры со стековой архитектурой минания и вызова из памяти результатов промежуточных вычисле- ний (команды 3, 6, 9, 10). Если главным фактором, ограничивающим быстродействие компью- тера, является время цикла памяти, то необходимость в дополнитель- ных обращениях к памяти значительно снижает скорость его работы. Очевидно, что принципиально необходимы обращения к памяти за данными только в первый раз. В дальнейшем они могут храниться в триггерных регистрах или СОЗУ. Указанные соображения получили воплощение в ряде логических структур некоторых процессоров. Рассмотрим тот же пример для новой ситуации (табл. 6.4): _ а2+Ь2 Л —-------е Ь + с Таблица 6.4 Реализация программы со стековой памятью № п/п Команда А Pi Рз Ра 1 Вызов Ь Ь 2 Дублирование Ь Ъ 3 Вызов с С Ъ Ъ 4 Сложение Ь + с ъ 5 Реверсирование Ъ Ь + с 6 Дублирование ь Ъ Ь+с 7 Умножение Л2 Ь + с 8 Вызов а а ь2 Ь+с 9 Дублирование а а Ь2 Ь+с 10 Умножение а2 ь2 Ь+с И Сложение а1+ Ь2 Ь + с 12 Деление а2+Ь2 Ь+с Как следует из табл. 6.4, понадобились лишь три обращения к памяти для вызова операндов (команды 1, 3,8). Меньшее количество обра- щений принципиально невозможно. Операнды и промежуточные 209
Глава 6. Микропроцессоры результаты поступают для операций в АУ из стековой памяти; 9 ко- манд из 12 являются безадресными. Вся программа размещается в трех 48-разрядных ячейках памяти. Главное преимущество использования стековой памяти состоит в том, что при переходе к подпрограммам (ПП) или в случае прерывания нет необходимости в специальных действиях по сохранению содер- жимого арифметических регистров в основной памяти. Новая про- грамма может немедленно начать работу. При введении в стековую память новой информации данные, соответствующие предыдущей программе, автоматически продвигаются вниз. Они возвращаются обратно, когда новая программа закончит вычисления. Наряду с указанным преимуществом стековой памяти отметим также: ► уменьшение количества обращений к памяти; ► упрощение способа обращения к ПП и обработки прерываний. Недостатки стековой организации памяти: ► большое число регистров с быстрым доступом; ► необходимость в дополнительном оборудовании, позволяющем следить за переполнением стековой памяти, ибо число регистров па- мяти конечно; ► приспособленность главным образом для решения научных задач и в меньшей степени для систем обработки данных или управления технологическими процессами. Важным вопросом построения любой системы команд является опти- мальное кодирование команд. Оно определяется количеством регистров и применяемых методов адресации, а также сложностью аппаратуры, необходимой для декодирования. Именно поэтому в современных RISC-архитектурах используются достаточно простые методы адре- сации, позволяющие резко упростить декодирование команд. Более сложные и редко встречающиеся в реальных программах методы адре- сации реализуются с помощью дополнительных команд, что, вообще говоря, приводит к увеличению размера программного кода. Однако такое увеличение программы с лихвой окупается возможностью про- стого увеличения частоты RISC-процессоров. Этот процесс вполне соответствует современному состоянию, когда максимальные так- товые частоты практически всех RISC-процессоров (Alpha, R4400, 210
6.2. Компьютеры со стековой архитектурой HyperSPARC и Power2) превышают тактовую частоту, достигнутую процессором Pentium. Общую технологию проектирования системы комавд для новой ЭВМ можно определить следующим образом: зная класс решаемых задач, выбираем некоторую типовую систему команд (СК) для широко рас- пространенного компьютера и исследуем ее на предмет покрытия всего разнообразия операций в заданном классе задач. Не встречаю- щиеся или редко встречающиеся операции не включаем в СК. Часто- ту применения операций для их задания в СК можно определить из соотношений «стоимость затрат — сложность реализации — получае- мый выигрыш». Второй путь проектирования СК состоит в расширении имеющейся системы команд. Один из способов такого расширения — создание макрокоманд, второй —дополнение имеющегося языка СК новыми командами, используя его синтаксис с последующим переассембли- рованием через расширение функций ассемблера. Оба эти способа принципиально одинаковы, но различаются в тактике реализации аппарата расширения. Так, система команд для ПК IBM покрывает следующие группы опе- раций: передачи данных, арифметические операции, операции ветв- ления и циклов, логические операции и операции обработки строк. Разработанную СК следует оптимизировать. Один из способов оптими- зации состоит в выявлении частоты повторений сочетаний двух или более команд, следующих друг за другом в некоторых типовых задачах для данного компьютера, с последующей заменой их одной командой, выполняющей те же функции. Это приводит к сокращению времени выполнения программы и уменьшению требуемого объема памяти. Так же исследуются и часто генерируемые компилятором некоторые последовательности команд, убирая из них избыточные коды. Оптимизация проводится и в пределах отдельной команды, изучая ее информационную емкость. Для этого можно применить аппарат тео- рии информации, в частности для оценки количества переданной информации — энтропию* источника. Тракт «процессор — память» при этом можно считать каналом связи. Энтропия — это мера вероятности пребывания системы в данном состоянии (в ста- тистической физике). (Примеч. авт.) 211
Глава 6. Микропроцессоры 6.3. Процессоры с микропрограммным управлением Для программиста язык ассемблерного типа является языком самого низкого уровня, а выполнение команды такого языка — элементар- ным шагом работы процессора. На самом деле такая комацда состоит из ряда элементарных подкоманд, последовательное выполнение ко- торых и реализует соответствующую команду языка ассемблера. Опе- рация, реализующая каждую подкоманду, управляется отдельным функциональным импульсом. Известны два подхода к построению логики формирования функ- циональных импульсов. Один из них — каждой операции процессора соответствует набор логических схем, определяющих вид функцио- нального импульса (ФИ) и такт, в котором он должен быть возбуж- ден. Пусть некоторый ФИ должен появиться в такте j операции т при условии наличия переполнения сумматора или в такте i операции п. Требуемое действие будет выполнено, если подать сигналы, соответ- ствующие указанным кодам операции, тактам и условиям на входы схем И, а выходы последних через схему ИЛИ соединить с формиро- вателем ФИ (рис. 6.3). Такой принцип управления операциями получил название «жесткой» или «запаянной» логики и широко применяется во многих компью- терах. Другой принцип организации управления состоит в следующем. Ка- ждой микрооперации (МИО) ставится в соответствие слово (или часть 212
6.3. Процессоры с микропрограммным управлением слова), называемое микрокомандой и хранимое в памяти подобно тому, как хранятся в памяти команды обычного компьютера. В данном случае команде соответствует микропрограмма, то есть набор микро- команд (МИК), указывающих, какие ФИ и в какой последовательно- сти необходимо возбуждать для выполнения данной операции. Такой подход получил название микропрограммирования или «хранимой логики». Таким образом в микропрограммном компьютере логика управления реализуется не в виде электронной схемы, а в виде зако- дированной информации, находящейся в некотором регистре. Идея микропрограммирования, высказанная в 1951 году Уилксом, до недавнего времени не находила широкого применения, ибо: ► не было надежных и быстродействующих ЗУ для хранения мик- ропрограммы, ► неправильно понимались задачи и выгоды микропрограммиро- вания. Поясним второй аргумент. Так, считалось, что ценность микро- программирования состоит в том, что каждый потребитель может сконструировать из МИК нужный ему набор операций в данной кон- кретной задаче. Замена наборов команд должна была достигаться за- меной информации в ЗУ без каких-либо переделок в аппаратуре. Однако в этом случае программисту необходимо знать все тонкости работы инженера — разработчика компьютера. А основная тенден- ция развития ЭВМ в связи с автоматизацией программирования со- стоит в том, чтобы освободить программиста от детального изучения компьютера и в максимальной степени приблизить язык компьютера к языку человека. Поэтому микропрограммные компьютеры счита- лись достаточно трудными для пользователя. В последнее время интерес к микропрограммному принципу возро- дился, поскольку: ► созданы односторонние (читающие) быстродействующие ЗУ с ма- лым циклом памяти, ► микропрограммирование рассматривается не как средство повы- шения гибкости программирования, а как метод построения системы управления процессором, удобный для инженера — разработчика компьютера. 213
Глава 6. Микропроцессоры Под микропрограммированием обычно понимают метод проектирова- ния и реализации функций устройства управления процессора в форме последовательности управляющих сигналов, которые служат для интер- претации операций обработки данных. Микропрограммное управление позволяет сократить сроки разра- ботки новых моделей компьютеров за счет разграничения функций между схемотехниками и микропрограммистами, а также повысить надежность работы компьютеров. Программист может и не подозревать о микропрограммной структуре компьютера и использовать все средства ПО и языки программиро- вания самого высокого уровня. Использование микропрограммного принципа позволяет облегчить разработку и изменение логики про- цессора. С появлением программного доступа к определению состояния про- цессора после выполнения каждой МИК, представляющей собой набор микроопераций, обеспечивается возможность создания эконо- мичной системы автоматической диагностики неисправностей и по- является способность к эмуляции, то есть к выполнению на данной ЭВМ программы, составленной в кодах команд другого компьютера. Это достигается введением дополнительного набора МИК, соответ- ствующих командам эмулируемого компьютера. Такие возможности способствуют распространению методов микро- программирования при построении УУ в современных компьютерах. 6.3.1. Горизонтальнее микропрограммирование Существует два вида микропрограммного управления — горизонтальное и вертикальное. При горизонтальном микропрограммировании каждому разряду МИК соответствует определенная микрооперация (МИО), выполняемая независимо от содержания других разрядов. Микро- программа может быть представлена в виде матрицы п х т, где п — число ФИ, т — количество МИК, то есть строка соответствует одной МИК, а столбец — одной МИО (рис. 6.4). Примерные значения разрядов МИК приведены на рис. 6.5. Наличие «1» в пересечении строки и столбца (рис. 6.4) означает по- сылку ФИ в данную МИК, а наличие «О» — отсутствие импульса. 214
6.3. Процессоры с микропрограммным управлением ФИ Рис. 6.4. Микропрограмма при горизонтальном микропрограммировании Рис. 6.5. Значение разрядов МИК (МИО): 1 — гашение сумматора; 2 — гашение указателя переполнения; 3 — обратный код сумматора; 4 — гашение регистра множителя частного; 5 — инвертирова- ние знака; 6 — сдвиг содержимого сумматора влево; 7 — сдвиг содержимого сумматора вправо; 8 — увеличение содержимого сумматора на 1; 9 — чтение из ЗУ в сумматор Размещение «1» в нескольких разрядах МИК означает выполнение нескольких МИО одновременно. Конечно, возбуждаемые МИО долж- ны быть совместимы. Пусть, например, разряды 9-разрядной МИК принимают следующие значения: 001001101. Тогда, если заданные разряды соответствуют се- мантике, указанной на рис. 6.5, МИО, определяемые разрядами 9, 7 и 6, несовместимы. Для расширения возможностей МИК иногда используют многотакт- ный принцип исполнения микрокоманд. При этом каждому разряду присваивается номер такта, в котором выполняется соответствующая ему МИО, то есть все совместимые МИО имеют один номер такта. Все остальные такты нумеруются в порядке их естественного выпол- нения. Однако универсальную нумерацию МИО в МИК указать за- труднительно. 215
Глава 6. Микр< процессоры Достоинства горизонтального микропрограммирования: ► возможность одновременного выполнения нескольких МИО; ► простота формирования ФИ (без схем дешифрации). Недостатки: ► большая длина МИК, так как число ФИ в современных компьюте- рах достигает нескольких сот, и соответственно большой объем ЗУ для хранения МИК; ► из-за ограничений совместимости операций, а также из-за после- довательного характера выполнения алгоритмов операций лишь не- большая часть разрядов МИК будет содержать «1». В основном матрица будет состоять из нулей. Неэффективное использование ЗУ привело к малому распространению горизонтального микропрограммирования. 6.3.2. Вертикальное микропрограммирование При вертикальном микропрограммировании каждая МИО определя- ется не состоянием одного разряда, а двоичным кодом, содержащимся в определенном поле МИК. Микрокоманда несколько напоминает формат обычных команд. Отличие состоит в том, что: ► выполняется более элементарное действие — МИО вместо операции; ► адресная часть (в большинстве случаев) определяет не ячейку па- мяти, а операционный регистр процессора. Формат МИК при вертикальном микропрограммировании приведен на рис. 6.6. КМО Л Код МИО Адресная часть МИК Рис. 6.6. Формат вертикальной МИК Поля Р\ и Р2 в адресной части МИК указывают двоичные номера опера- ционных регистров, содержимое которых участвует в одной операции. Одно из полей является одновременно и адресом результата. Таким образом, реализация арифметической или логической МИО, указан- ной в данной МИК, может быть выражена формулой (Р\) ® (P-fi -> Р\ или (Pii —*Р\, где ® — некоторая МИО. 216
6.3. Процессоры с микропрограммным управлением Для МИК обращения к памяти поле Pt указывает регистр, куда прини- мается информация, а Р2 — регистр, содержимое которого является адресом обращения к ЗУ. Указанный формат МИК не единственный. Каждая МИК выполняет следующие функции: ► указывает выполняемую МИО; ► указывает следующую МИО через задание «следующего адреса»; ► задает продолжительность МИК; ► указывает дополнительные действия — контроль, интерпретацию разрядов, зависящих от типа МИК, и т.д. Обычно в слове МИК имеются четыре зоны, соответствующие указан- ным функциям. Вообще говоря, некоторые из зон могут указываться неявно, например выбор очередной МИК может осуществляться из следующей ячейки, продолжительность МИК может быть определена одинаковой для всех МИК и т.д. Большую часть МИК занимает зона микроопераций. Кроме вертикального и горизонтального микропрограммирования существует и смешанное, горизонтально-вертикальное, позволяющее отдельные поля МИК объединять в наборы операций, допускающих параллельное выполнение. Микропрограммы записываются в специализированную память кон- троля, управления и т.д., называемой памятью микропрограмм. Каждая команда интерпретируется как обращение к памяти микропрограмм, а именно к адресу первой микрокоманды соответствующей микро- программы. Прочитанная микрокоманда помещается в регистр и де- кодируется для определения последовательности ФИ, управляющих необходимыми схемами выполнения этой микрокоманды. Затем аналогично выбираются, декодируются и выполняются сле- дующие микрокоманды, и так до завершения исполнения всей мик- ропрограммы. Обычно память для реализации микропрограмм осуществляется по схеме 2D, то есть сеткой, образованной шинами слов и шинами раз- рядов. Организация памяти по схеме 2D ориентирована на хранение небольшого количества длинных слов и обеспечивает к ним быстрый доступ. 217
Глава 6. Микропроцессоры Первыми компьютерами с микропрограммным управлением (в б. СССР) были МИР, НАИРИ, за рубежом — IBM 360/65, Spectra 70 и компьютеры компании RSA. 6.4. Процессоры с архитектурой 80x86 и Pentium Архитектура 80x86 создавалась несколькими независимыми группа- ми разработчиков, которые развивали ее более 15 лет, добавляя новые возможности к первоначальному набору команд. Микропроцессор 8080 построен на базе накапливающего сумматора (аккумулятора), а архитектура 8086 была расширена дополнительны- ми регистрами. Поскольку почти каждый регистр в этой архитектуре имеет определенное назначение, 8086 по классификации частично можно отнести к машинам с накапливающим сумматором, а частич- но — к машинам с регистрами общего назначения, в связи с чем его можно назвать расширенной машиной с накапливающим сумматором. Микропроцессор 8086 (точнее его версия 8088 с 8-битовой внешней шиной) стал основой завоевавшей впоследствии весь мир серии ком- пьютеров IBM PC, работающих под управлением операционной сис- темы MS DOS. В 1980 году был анонсирован сопроцессор плавающей точки 8087. Эта архитектура расширила 8086 почти на 60 команд работы с пла- вающей точкой. Анонсированный в 1982 году микропроцессор 80286 еще более рас- ширил архитектуру 8086. Была создана сложная модель распределения и защиты памяти, расширено адресное пространство до 24 разрядов, а также добавлено несколько команд. Поскольку требовалось обеспе- чить выполнение программ, разработанных для 8086, в 80286 без из- менений был предусмотрен режим реальных адресов, позволяющий машине выглядеть практически как 8086. В 1984 году компания IBM объявила об использовании этого процессора в своей новой серии персональных компьютеров IBM PC/AT. В 1987 году появился микропроцессор 80386, который расширил архитектуру 80286 до 32 бит. В дополнение к 32-битовой архитекту- ре с 32-битовыми регистрами и 32-битовым адресным пространст- вом в микропроцессоре 80386 появились новые режимы адресации 218
6.4. Процессоры с архитектурой 80x86 и Pentium и дополнительные операции. Все эти расширения превратили 80386 в машину, по идеологии близкую к машинам с регистрами общего назначения. Наряду с механизмом сегментации памяти в микропро- цессор 80386 добавлена поддержка страничной организации памяти. Как и 80286, микропроцессор 80386 имеет режим выполнения про- грамм, написанных для 8086. Хотя базовой операционной системой для этих микропроцессоров оставалась MS DOS, тем не менее 32-раз- рядная архитектура и страничная организация памяти послужили основой для переноса на эту платформу операционной системы UNIX. Следует отметить, что для процессора 80286 была создана операци- онная система XENIX (сокращенный вариант системы UNIX). Последующие процессоры (80486 в 1989 году и Pentium в 1993 году) были нацелены на увеличение производительности и добавили к ви- димому пользователем набору команд только три новые команды, облегчившие организацию многопроцессорной работы. Семейство процессоров i486 (i486SX, i486DX, i486DX2 и i486DX4), в котором сохранились система команд и методы адресации процес- сора i386, уже имеет некоторые свойства RISC-микропроцессоров. Например, наиболее употребительные команды выполняются за один такт. Процессоры i486SX и i486DX — это 32-битовые процессоры с внут- ренней кэш-памятью емкостью 8 Кбайт и 32-битовой шиной данных. Основное различие между ними состоит в том, что в процессоре i486SX отсутствует интегрированный сопроцессор плавающей точки. Поэтому он применяется в системах, для которых не критична производитель- ность при обработке вещественных чисел. Для этих систем обычно возможно расширение с помощью внешнего сопроцессора i487SX. Процессоры Intel OverDrive и i486DX2 практически идентичны. Од- нако кристалл OverDrive имеет корпус, который может устанавли- ваться в гнездо расширения сопроцессора i487SX, применяемое в ПК на базе i486SX. В процессорах OverDrive и i486DX2 используется тех- нология удвоения внутренней тактовой частоты, что позволяет уве- личить производительность процессора почти на 70 %. Процессор i486DX4/100 применяет технологию утроения тактовой частоты. Он работает с внутренней тактовой частотой 99 МГц, в то время как внешняя тактовая частота (частота, на которой работает внешняя шина) составляет 33 МГц. Этот процессор практически обеспечивает равные возможности с машинами класса 60 МГц Pentium. 219
Глава 6. Микропроцессоры Появившийся в 1993 году процессор Pentium ознаменовал собой новый этап в развитии архитектуры х86, связанный с адаптацией многих свойств процессоров с архитектурой RISC. Он изготовлен по 0,8-мик- ронной БиКМОП технологии и содержит 3,1 миллиона транзисторов. Появились процессоры Pentium, работающие с тактовой частотой 75, 90, 100 и 120 МГц. Главными особенностями процессора Pentium яв- ляются: ► двухпотоковая суперскалярная организация, допускающая парал- лельное выполнение пары простых команд; ► наличие двух независимых двухканальных множественно-ассо- циативных кэшей для команд и для данных, обеспечиваюших выбор- ку данных для двух операций в каждом такте; ► динамическое прогнозирование переходов; ► конвейерная организация устройства плавающей точки с восемью ступенями; ► двоичная совместимость с существующими процессорами семей- ства 80x86. Основные характеристики микропроцессоров ведущей компании в этом направлении представлены в табл. 6.5. Таблица 6.5 Некоторые характеристики микропроцессоров фирмы Intel Модель Разрядность (в битах) Тактовая частота, МГц Число команд Количество транзисторов данных адреса i286 16 24 10-33 134 14 • 104 1386 32 32 25-50 240 27,5 104 i486 32 32 33-100 240 12 105 Pentium 64 32 50-150 240 31 105 Pentium Pro 64 32 66-200 240 55 105 Pentium II 64 32 233-450 — 75 • 105 Pentium III 64 32 550-1200 — 85 • 105 Pentium IV — — 1400-2000 — от 42 106 Микроархитектура этого процессора базируется на идее суперска- лярной обработки (с некоторыми ограничениями). Основные команды распределяются по двум независимым исполнительным устройствам 220
6.4. Процессоры с архитектурой 80x86 и Pentium (конвейерам U и V). Конвейер U может выполнять любые команды семейства х86, включая целочисленные команды и команды с пла- вающей точкой. Конвейер Vпредназначен для выполнения простых целочисленных команд и некоторых команд с плавающей точкой. Команды могут направляться в каждое из этих устройств одновре- менно, причем при выдаче устройством управления в одном такте пары команд более сложная команда поступает в конвейер U, а менее сложная — в конвейер V. Такая попарная выдача команд возможна только для ограниченного подмножества целочисленных команд. Команды арифметики с плавающей точкой не могут запускаться в паре с целочисленными командами. Одновременная выдача двух команд возможна только при отсутствии зависимостей по регистрам. При ос- тановке команды по любой причине в одном конвейере, как правило, останавливается и второй конвейер. Остальные устройства процессора предназначены для снабжения кон- вейеров необходимыми командами и данными. В отличие от процессо- ров i486 в процессоре Pentium используется раздельная кэш-память команд и данных емкостью по 8 Кбайт, что обеспечивает независи- мость обращений. За один такт из каждой кэш-памяти могут считы- ваться два слова. Кэш-память данных построена на принципах дву- кратного расслоения, что обеспечивает одновременное считывание двух слов, принадлежащих одной строке кэш-памяти. Кэш-память команд хранит сразу три копии тегов, что позволяет в одном такте считывать два командных слова, принадлежащих либо одной строке, .либо смежным строкам для обеспечения попарной выдачи команд, при этом третья копия тегов используется для организации протокола наблюдения за когерентностью состояния кэш-памяти. Для повыше- ния эффективности перезагрузки кэш-памяти в процессоре приме- няется 64-битовая внешняя шина данных. В процессоре предусмотрен механизм динамического прогнозирова- ния направления переходов. С этой целью на кристалле размещены небольшая кэш-память, которая называется буфером целевых адресов переходов (ВТВ), и две независимые пары буферов предварительной выборки команд (по два 32-битовых буфера на каждый конвейер). Буфер целевых адресов переходов хранит адреса команд, которые нахо- дятся в буферах предварительной выборки. Работа буферов предвари- тельной выборки организована таким образом, что в каждый момент времени осуществляется выборка команд только в один из буферов 221
Глава 6. Микропроцессоры соответствующей пары. При обнаружении в потоке команд операции перехода вычисленный адрес перехода сравнивается с адресами, храня- щимися в буфере ВТВ. В случае совпадения предполагается, что пере- ход будет выполнен, и разрешается работа другого буфера предвари- тельной выборки, который начинает выдавать команды для выпол- нения в соответствующий конвейер. При несовпадении считается, что переход выполняться не будет и буфер предварительной выборки не переключается, продолжая обычный порядок выдачи команд Это позволяет избежать простоев конвейеров при правильном прогнозе направления перехода. Окончательное решение о направлении пере- хода, естественно, принимается на основании анализа кода условия. При неверном прогнозе содержимое конвейеров аннулируется и вы- дача команд начинается с необходимого адреса. Неверный прогноз приводит к приостановке работы конвейеров на 3—4 такта. Следует отметить, что возросшая производительность процессора Pentium требует и соответствующей организации системы на его ос- нове. Компания Intel разработала и поставляет все необходимые для этого наборы микросхем. Для согласования скорости с динамиче- ской основной памятью используется кэш-память второго уровня. Контроллер кэш-памяти 82496 и микросхемы статической памяти 82491 обеспечивают построение такой кэш-памяти объемом 256 Кбайт и работу процессора без тактов ожидания. Для эффективной органи- зации работы системы Intel разработала стандарт на локальную шину PCI. Выпускаются наборы микросхем для построения мощных ком- пьютеров на ее основе. В настоящее время компанич Intel разработала новый процессор, продолжающий архитектурную линию х86. Этот процессор получил название Р6. В нем 4—5 миллионов транзисторов, что обеспечивает повышение производительности до уровня 200 MIPS (66 МГц Pentium имеет производительность 112 MIPS). Для достижения такой произ- водительности используются технические решения, широко приме- няющиеся при построении RISC-процессоров: ► выполнение команд в отличной от предписанной программой по- следовательности, что во многих случаях устраняет приостановку кон- вейеров из-за ожидания операндов операций; ► использование методики переименования регистров, позволяю- щей увеличивать эффективный размер регистрового файла (малое количество регистров — одно из самых узких мест архитектуры х86); 222
6.4. Процессоры с архитектурой 80x86 и Pentium ► расширение суперскалярных возможностей по отношению к про- цессору Pentium, в котором обеспечивается одновременная выдача только двух команд с достаточно жесткими ограничениями на их комбинации. Кроме того, в разработку нового поколения процессоров х86 вклю- чились компании, ранее занимавшиеся изготовлением Intel-совмес- тимых процессоров. Это компании Advanced Micro Devices (AMD), Cyrix Corp и NexGen. С точки зрения микроархитектуры наиболее близок к Pentium процессор Ml компании Cyrix. Так же как и Pentium, он имеет два конвейера и может выполнять до двух команд в одном такте. Однако в процессоре М1 число случаев, когда операции могут выполняться попарно, значительно увеличено. Кроме того, в нем применяется методика обходов и ускорения пересылки данных, позво- ляющая устранить приостановку конвейеров во многих ситуациях, с ко- торыми не справляется Pentium. Процессор содержит 32 физических регистра (вместо 8 логических, предусмотренных архитектурой х86) и применяет методику переименования регистров для устранения зави- симостей поданным. Как и Pentium, процессор Ml для прогнозирова- ния направления перехода использует буфер целевых адресов пере- хода емкостью 256 элементов и поддерживает специальный стек воз- вратов, отслеживающий вызовы процедур и последующие возвраты. Основа процессоров К5 компании AMD и Nx586 компании NexGen — очень быстрое RISC-ядро, выполняющее высокорегулярные опера- ции в суперскалярном режиме. Внутренние форматы команд (ROP у компании AMD и RISC86 у компании NexGen) соответствуют тра- диционным системам команд RISC-процессоров. Все команды имеют одинаковую длину и кодируются в регулярном формате. Обращения к памяти выполняются специальными командами загрузки и записи. Как известно, архитектура х86 имеет очень сложную для декодирова- ния систему команд. В процессорах К5 и Nx586 осуществляется аппа- ратная трансляция команд х86 в команды внутреннего формата, что обеспечивает лучшие условия для распараллеливания вычислений. В процессоре К5 имеется 40, а в процессоре Nx586 — 22 физических регистра, которые реализуют методику переименования. В процессо- ре К5 информация, необходимая для прогнозирования направления перехода, записывается прямо в кэш команд и хранится вместе с каж- дой строкой кэш-памяти. В процессоре Nx586 для этих целей ис- пользуется кэш-память адресов переходов на 96 элементов. 223
Глава 6. Микропроцессоры Таким образом, компания Intel более не обладает монополией на мето- ды конструирования высокопроизводительных процессоров х86 и мож- но ожидать появления новых процессоров, не только не уступающих, но и, возможно, превосходящих по производительности процессоры компании, стоявшей у истоков этой архитектуры. Следует отметить, что сама компания Intel заключила стратегическое соглашение с ком- панией Hewlett Packard на разработку следующего поколения микро- процессоров, в которых архитектура х86 будет сочетаться с архитек- турой очень длинного командного слова (VLIW-архитектурой). С 1999 года в качестве настольных процессоров базового уровня ис- пользуются процессоры Celeron (фирма Intel), начиная с частоты 366 МГц. В массовых персональных компьютерах, рабочих станциях и серверах применяются процессоры Katmai и Tanner с частотой 500 МГц, а затем осуществляется переход на процессоры Cascades и Coppermine, исполненные по новой 0,18-мкм технологии. Процессор AMD Athlon™, архитектура и интерфейс которого отлича- ются от Intel, появился в 1999 году с архитектурой следующих ти- пов - К7, К75 и К76. Технические характеристики: ► 22 миллиона транзисторов; ► технология производства 0,25—0,18 мкм; ► тактовая частота 500—1000 МГц; ► кэш первого уровня 128 Кбайт (кэш данных 64 Кбайт и кэш ко- манд 64 Кбайт); ► кэш второго уровня 512 Кбайт, работающий на 1/2,2/5 или 1/3 час- тоты процессора; ► процессорная шина — Alpha EV-6 200 МГц (DDR 100x2). Первые модели AMD Athlon™ Thunderbird выпущены в 2000 году. Их ядро основано на архитектуре К7 и К75. Основное отличие от преды- дущих моделей — интеграция кэша £2, работающего на частоте про- цессора, в ядро. Процессор содержит 37 миллионов транзисторов на площади 120 мм2. Технические характеристики: ► технология производства 0,18 мкм; ► тактовая частота 600—1400 МГц; 224
6.4. Процессоры с архитектурой 80x86 и Pentium ► кэш первого уровня 128 Кбайт (64 Кбайт данных и 64 Кбайт ко- манд); ► кэш второго уровня 256 Кбайт (полноскоростной); ► общая разрядность 32; ► разъем Slot А, позднее — Socket A (Socket 462 в виде микросхемы); ► процессорная шина — Alpha EV-6 200 МГц и 266 МГц (DDR 100x2— 133x2). Процессор AMD Athlon™ MP (2001 год) рассчитан на работу в двух- процессорных системах и выполнен на ядре Palomino. Технические характеристики: ► технология производства 0,18 мкм; ► тактовая частота 1000—1667 МГц; ► кэш первого уровня 128 Кбайт (64 Кбайт данных и 64 Кбайт ко- манд); ► кэш второго уровня 256 Кбайт (полноскоростной); ► процессорная шина — Alpha EV-6 266 МГц (DDR 133x2); ► разрядность 32. В 2002 году AMD объявила о переходе на технологию 0,13 мкм и о вне- дрении новой технологии SOI (Silicon-on-Insulator — кремний на изо- ляторе). Это процессоры Athlon ХР 2100+ и 2200+ на 0,13-микронном ядре Thoroughbred (TBred). Процессоры Athlon ХР 2500+, 2600+, 2800+, 3000+, 3200+, основанные на ядре Palomino, были выпущены в 2003 году. Они работали с частотой шины FSB, равной 167 МГц, а модели Athlon ХР 2900+, 3100+работали с частотой 200 МГц. Ядро содержит 54,3 миллиона транзисторов и имеет площадь 101 мм2. Ядро Barton является последним представителем процессоров седь- мого поколения. Первые модели процессоров Athlon ХР (Thorton) выпущены в 2003 году. Все модели работают с частотой шины FSB, равной 133 МГц, кроме модели 2600+, имевшей шину в 166 МГц. 225 1^2792
Глава 6. Микропроцессоры Процессоры Athlon МР предназначены для многопроцессорных сис- тем и основаны на ядрах: ► Mustang (аналог ядра Palomino) — модели Athlon 1000 МРи 1200 МР; ► Corvette (аналог ядра Palomino) — модели Athlon МР1500+, МР1600+, МР1800+, МР1900+, МР2000+, МР2100+; ► Thoroughbred — модели Athlon МР2000+, МР2200+, МР2400+, МР2600+; ► Barton — модели Athlon МР2600+ и МР2800+. Процессоры Opteron архитектуры AMD64 были созданы в 2003 году. Их можно применять в одно- и двухпроцессорных конфигурациях. Частота процессоров от 1,4 до 1,8 ГГц. Разработаны три серии про- цессоров для применения в одно-, двух-, четырех- и восьмипроцес- сорных системах. Максимальная частота для процессоров Opteron составляет 2 ГГц (модели ХХ6). Сравнение моделей Athlon и Opteron приводится в табл. 6.6. Таблица 6.6 Сравнительные характеристики моделей Athlon и Opteron Параметры Athlon ХР Athlon 64 Athlon 64 FX Opteron Сокет Socket А Socket 754 Socket 940 Socket 940 Рейтинг/ модель 3200+ 3200+ FX-51 146 Частота 2,2 ГГц 2,0 ГГц 2,2 ГГц 2,0 ГГц Шина 3,2 Гбайт/с 6,4 Гбайт/с 6,4 Гбайт/с 6,4 Гбайт/с Память, скорость 6,4 Гбайт/с 3,2 Гбайт/с 6,4 Гбайт/с 5,3 Гбайт/с 1Л I: 64 Кбайт D: 64 Кбайт I: 64 Кбайт D: 64 Кбайт I: 64 Кбайт D: 64 Кбайт I: 64 Кбайт D: 64 Кбайт L2 512 Кбайт 1024 Кбайт 1024 Кбайт 1024 Кбайт Процессоры Sempron (2004 год) имели размер кэша второго уровня 256 Кбайт и частоту шины 333 МГц. Последним процессором Sempron с разъемом Socket А стала модель 2800+. Эти процессоры позиционируются в качестве конкурентов Intel Celeron D. 226
6.4. Процессоры с архитектурой 80x86 и Pentium Первые модели Athlon 64 Х2 выпущены в 2005 году. В ядрах с кэшем £2 объемом 512 Кбайт на каждое ядро (Manchester и Toledo 1М) со- держится 154 миллиона транзисторов, а площадь кристалла ядра со- ставляет 147 мм2. В ядрах с кэшем £2 объемом 1024 Кбайт на каждое ядро (Toledo) содержится 233 миллиона транзисторов, а площадь кри- сталла ядра — 205 мм2. Процессор имеет общий на оба ядра контроллер памяти и контроллер шины HyperTransport, а каждое ядро обладает собственной кэш-памятью £1 и £2. Ядро Manchester характеризуется наличием кэша второго уровня с 512 Кбайт для каждого ядра. Процессоры на ядре Toledo изначально комплектовались 1024 Кбайт £2 для каждого ядра, позже были выпу- щены с 512 Кбайт £2 для каждого ядра. Анализируя процессоры AMD, можно отметить, что компания практи- чески полностью перешла на использование архитектуры Clawhammer/ Sledgehammer или x86-64. В классе наиболее производительных про- цессорных решений AMD все чаще можно встретить двухъядерные решения, которых со временем будет становиться всё больше и больше. С точки зрения производственных возможностей AMD можно отме- тить, что в 2005 году компания уверенно освоила нормы 90 нм тех- процесса с применением технологии SOI. Процессоры серий Opteron позиционируются компанией AMD пре- жде всего в качестве элементов серверных систем, хотя некоторые серии рассчитаны на применение в различных встраиваемых решениях. Процессоры AMD Athlon 64 FX созданы на базе технологии AMD64, которая поддерживает выполнение 64-разрядных приложений и обо- рудована механизмом усовершенствованной антивирусной защиты (Enhanced Virus Protection) при поддержке операционной системы. Современный процессор серии Athlon 64 FX-57 выполнен на базе ядра San Diego и выпускается с соблюдением норм 90 нм с примене- нием SOI. Ядро San Diego имеет размер кэша £2 объемом 1 Мбайт. Взаимодействие двух ядер в процессорах Athlon 64 Х2 с распределен- ными шинами осуществляется через коммутатор Crossbar Switch. В настоящее время компания AMD выпускает модели процессоров Athlon 64 с различными ядрами, тактовыми частотами, объемами кэша £2, под разъемы Socket 754 или Socket 939, имеют интегриро- ванный контроллер памяти с поддержкой DDR400, работают с шиной HyperTransport 800 МГц или 1000 МГц. 227
Глава 6. Микропроцессоры В связи с развитием e-mail и Интернета фирма Intel остается на пе- реднем крае разработки процессоров, высокий уровень произво- дительности которых отвечает растущим требованиям современных приложений. 6.5. Особенности процессоров с архитектурой SPARC компании Sun Microsystems Масштабируемая процессорная архитектура компании Sun Microsystems (SPARC — Scalable Processor Architecture) является наиболее широко распространенной RISC-архитектурой, отражающей доминирующее положение компании на рынке UNIX-рабочих станций и серверов. Первоначально архитектура SPARC была разработана в целях упро- щения реализации 32-битового процессора. Впоследствии, по мере совершенствования технологии изготовления интегральных схем, она также постепенно развивалась, и в настоящее время имеется 64-би- товая версия этой архитектуры. В отличие от большинства RISC-архитектур SPARC использует реги- стровые окна, которые обеспечивают удобный механизм передачи па- раметров между программами и возврата результатов. Архитектура SPARC стала первой коммерческой разработкой, реализующей меха- низмы отложенных переходов и аннулирования команд. Это давало компилятору ббльшую свободу заполнения времени выполнения ко- манд перехода командой, которая реализуется в случае выполнения условий перехода и игнорируется в случае, если условие перехода не выполняется. Первый процессор SPARC изготовлен компанией Fujitsu на основе вентильной матрицы, работающей на частоте 16,67 МГц. На основе этого процессора была разработана первая рабочая станция Sun-4 производительностью 10 MIPS, выпущенная осенью 1987 года (до этого времени компания Sun использовала в своих изделиях микро- процессоры Motorola 680x0). В 1988 году Fujitsu увеличила тактовую частоту до 25 МГц, создав процессор производительностью 15 MIPS. Позднее тактовая частота процессоров SPARC была повышена до 40 МГц, а производительность — до 28 MIPS. 228
6.5. Особенности процессоров с архитектурой SPARC компании Sun Microsystems Дальнейшее увеличение производительности процессоров с архитек- турой SPARC было достигнуто компаниями Texas Instruments и Cypress за счет реализации в кристаллах принципов суперскалярной обра- ботки. Процессор SuperSPARC компании Texas Instruments стал осно- вой серии рабочих станций и серверов SPARCstation/SPARCserver 10 и SPARCstation/SPARCserver 20. Имеется несколько версий этого про- цессора, позволяющего в зависимости от смеси команд обрабатывать за один машинный такт до трех команд, отличающихся тактовой часто- той. Процессор SuperSPARC (рис. 6.7) имеет сбалансированную произ- водительность на операциях с фиксированной и плавающей точкой. Рис. 6.7. Блок-схема процессора SuperSPARC ПТ — плавающая точка. (Примеч. ред.) 229
Глава 6. Микропроцессоры Он содержит внутренний кэш емкостью 36 Кбайт (20 Кбайт — кэш ко- манд и 16 Кбайт — кэш данных), раздельные конвейеры целочисленной и вещественной арифметики и при тактовой частоте 75 МГц обеспечи- вает производительность около 205 MIPS. Процессор SuperSPARC при- меняется также в серверах SPARCserver 1000 и SPARCcenter 2000 ком- пании Sun. Конструктивно кристалл монтируется на взаимозаменяемых процессор- ных модулях трех типов, отличающихся наличием и объемом кэш-па- мяти второго уровня и тактовой частотой. Модуль Mbus SuperSPARC, используемый в модели 50, включает вышеописанный процессор SuperSPARC. Модули Mbus SuperSPARC в моделях 51,61 и 71 содер- жат по одному процессору SuperSPARC, работающему соответственно на частоте 50,60 и 75 МГц, по одному кристаллу кэш-контроллера (так называемому SuperCache), а также внешний кэш емкостью 1 Мбайт. Модули Mbus в моделях 502, 612, 712 и 514 содержат два SuperSPARC процессора и два кэш-контроллера каждый, а последние три моде- ли — и по одному (1 Мбайт) внешнему кэшу на каждый процессор. Использование кэш-памяти позволяет модулям ЦП работать с тактовой частотой, отличной от тактовой частоты материнской платы; поэтому пользователи всех моделей могут улучшить производительность своих систем заменой существующих модулей ЦП вместо того, чтобы про- изводить замену всей материнской платы. Sun совместно с Fujitsu создали и новую версию кристалла MicroSPARC II со встроенным кэшем емкостью 24 Кбайт. На его основе построены рабочие станции и серверы SPARCstation/ SPARCserver 4 и SPARCstation/ SPARCserver 5, работающие на частоте 70, 85 и 110 МГц. В начале 1995 года на рынке появились микропроцессоры HyperSPARC, однопроцессорные и двухпроцессорные рабочие станции с тактовой частотой процессора 100 и 125 МГц. К середине 1995 года тактовая частота процессоров SuperSPARC была доведена до 90 МГц. Позже появились 64-битовые процессоры UltraSPARC I с тактовой часто- той от 167 МГц, в начале 1996-го — процессоры UltraSPARC II с такто- вой частотой от 200 до 275 МГц, а в 1997—1998 годы — процессоры UltraSPARC III с частотой 500 МГц. Одной из главных задач, стоявших перед разработчиками микропро- цессора HyperSPARC (рис. 6.8), было повышение производительности, особенно при выполнении операций с плавающей точкой. Поэтому 230
6.5. Особенности процессоров с архитектурой SPARC компании Sun Microsystems особое внимание разработчиков было уделено созданию простых и сбалансированных шестиступенчатых конвейеров целочисленной арифметики и плавающей точки. Рис 6.8. Набор кристаллов процессора HyperSPARC Производительность процессоров HyperSPARC может меняться неза- висимо от скорости работы внешней шины (MBus). Набор кристал- лов HyperSPARC обеспечивает как синхронные, так и асинхронные операции с помощью специальной логики кристалла RT625. Отделе- ние внутренней шины процессора от внешней позволяет увеличивать тактовую частоту процессора независимо от частоты работы подсистем памяти и ввода-вывода. Это обеспечивает удлинение жизненного цикла, поскольку переход на более производительные модули HyperSPARC не требует переделки всей системы. Процессорный набор HyperSPARC с тактовой частотой 100 МГц по- строен на основе технологического процесса КМОП с тремя уровня- ми металлизации и проектными нормами 0,5 микрона. Внутренняя логика работает с напряжением питания 3,3 В. Центральный процессор RT620 состоит из целочисленного устройства, устройства плавающей точки, устройства загрузки-записи, устройст- ва переходов и двухканальной множественно-ассоциативной памяти команд емкостью 8 Кбайт. Целочисленное устройство включает АЛУ и отдельный тракт данных для операций загрузки-записи, которые 231
Глава 6. Микропроцессоры представляют собой два из четырех исполнительных устройств процес- сора. Устройство переходов обрабатывает команды передачи управ- ления, а устройство плавающей точки состоит из двух независимых конвейеров — сложения и умножения чисел с плавающей точкой. Для увеличения пропускной способности процессора команды пла- вающей точки, проходя через целочисленный конвейер, поступают в очередь, где ожидают запуска в одном из конвейеров плавающей точки. В каждом такте выбираются две команды. В общем случае, до тех пор пока эти две команды требуют для своего выполнения