Архитектура компьютеров
Покупка
Тематика:
Аппаратное обеспечение
Издательство:
Вышэйшая школа
Автор:
Буза Михаил Константинович
Год издания: 2015
Кол-во страниц: 414
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 978-985-06-2652-3
Артикул: 704201.01.99
Учебник подготовлен в полном соответствии с учебной программой дисциплины «Архитектура компьютеров» для учреждений высшего образования. Содержит сведения о последних достижениях в области архитектур вычислительных систем (компьютеров), в том числе многоядерных, графических и квантовых процессоров. Актуальность книги обусловлена отсутствием соответствующей отечественной учебной
литературы в данной предметной области. Для студентов учреждений высшего образования, специализирующихся в области системного программирования, разработки эффективных программных проектов, особенно операционных систем. Может быть использован разработчиками новых архитектурных решений. Отдельные главы будут полезны специалистам, работающим в смежных областях информатики, главная цель которых - проектирование эффективных приложений в собственной предметной области.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Утверждено Министерством образования Республики Беларусь в качестве учебника для студентов учреждений высшего образования по специальностям «Информатика», «Прикладная информатика», «Прикладная математика» Минск «Вышэйшая школа» 2015 М. К. БУЗА Архитектура КОМПЬЮТЕРОВ
УДК 004.2(075.8) ББК 32.973-02я73 Б90 Р ецен з ен ты: кафедра интеллектуальных информационных технологий учреждения образования «Белорусский государственный университет информатики и радиоэлектроники» (заведующий кафедрой доктор технических наук, профессор В.В. Голенков); главный научный сотрудник Объединенного института проблем информатики Национальной академии наук Беларуси доктор технических наук, профессор С.Ф. Липницкий Все права на данное издание защищены. Воспроизведение всей книги или любой ее части не может быть осуществлено без разрешения изда те льства. ISBN 978-985-06-2652-3 © Буза М.К., 2015 © Оформление. УП «Издательство “Вы шэйшая школа”», 2015
СПИСОК ОСНОВНЫХ СОКРАЩЕНИЙ AЛУ – арифметико-логическое устройство АО – арифметическая операция АПА – аппарат преобразования адресов ВнУ – внешнее устройство ВС – вычислительная система ЗУ – запоминающее устройство МС – многопроцессорная система МП – микропроцессор НМД – накопитель на магнитных дисках ОЗУ – оперативное запоминающее устройство ОП – оперативная память ОС – операционная система ПВВ – процессор ввода-вывода ПЗУ – постоянное запоминающее устройство ПК – персональный компьютер ПО – программное обеспечение ПУ – периферийное устройство ПЭ – процессорный элемент РОН – регистр общего назначения СК – система команд СКВ – система в коде вычетов СОЗУ – сверхоперативное запоминающее устройство ССП – слово состояния программы УВМ – управляющая вычислительная машина УУ – устройство управления ФИУ – функциональное исполнительное устройство ФУ – функциональное устройство ЦП – центральный процессор ЯВУ – язык высокого уровня ЯП – язык программирования ЯПП – язык параллельного программирования ЯПФ – ярусно-параллельные формы ADSL – Asymmetric Digital Subscriber Line ASIC – Application Specific Integrated Circuits BIOS – Basic Input-Output System BREQ – Bus Request Signal CAL – Compute Abstraction Layer CD – Compact Disk CF – Compact Flash CISC – Complete Instruction Set Computer COMA – Cache Only Memory Access CPU – Central Processing Unit 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 FPGA – Field Programmable Gate Arrays FSM – Finite State Machine GPU – Graphics Processing Unit
GPGPU – General Purpose Graphics Processing Units HD – High Density HDLC – High Level Data Link Control HPF – Highest Priority First HT – Hyper Transport HTT – Hyper-Threading Technology IP – Internet Protocol ISA – Industry Standard Architecture ISO – International Organization for Standardization LAN – Local Area Netword LD – Low Density LDT – Lightning Data Transport LLC – Logical Link Control LRU – Least Recently Used MAC – Media Access Control MAP – Multy Associative Processor MIMD – Multiple Instruction Stream / Multiple Data Stream MIPS – Millions of Instructions Per Second MISD – Multiple Instruction Stream / Single Data Stream MISP – Multiple Instruction Stream Processing MPI – Message Passing Interface MPP – Massively Parallel Processing NUMA – Non Uniform Memory Access OpenCL – Open Computing Language OSI – Open System Interconnection PCI – Peripheral Component Interconnect PMA – Physical Medium Attachment PS – Physical Signaling PVM – Parallel Virtual Machine RISC – Reduced Instruction Set Computer ROM – Read Only Memory ROP – Raster Operations 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 Multiprocessing SP – Unified Streaming Processors SPARC – Scalable Processor Architecture SPMD – Single Program Multiple Data SR – Second hand Resource SUMA – Slightly Uniform Memory Architecture TA – Texture Address Unit TCP – Transmission Control Protocol TF – Texture Filtering Unit TLP – Thread Level Parallelism UDP – User Datagram Protocol UMA – Uniform Memory Access USB – Universal Serial Bus VDSL – Very high data rate DSL VLIW – Very Long Instruction Word WAN – Wide Area Network
ПРЕДИСЛОВИЕ Компьютерная наука находится сегодня в стадии интенсивного и многопланового развития, в связи с чем нет строгого и обоснованного разделения этой области знания на самостоятельные учебные дисциплины. Она прошла путь от создания некоторого языка программирования до цельной системы знаний, воплощенных в серию учебных дисциплин, преподаваемых в университетах. Среди них проектирование и анализ алгоритмов, базы данных, архитектура компьютеров, операционные системы, компьютерные сети, компиляторы и т.д. В последние годы реализованы новые архитектурные решения компьютеров, существенным изменениям подверглась логическая организация действующих вычислительных систем, расширилась сфера применения нейровычислителей. Значимые успехи достигнуты в области проектирования многоядерных, графических и квантовых процессоров. Дисциплина «Архитектура компьютеров» изучает внутреннюю организацию вычислительной системы, знание которой позволяет программистам любого уровня рационально использовать все ресурсы системы и проектировать эффективные программы. Значительные достижения в развитии технологий проектирования средств вычислительной техники, программного обеспечения и его надежности, инструментариев и методов инжиниринга, аттестации и верификации программных проектов, а также новый спектр приложений вычислительной техники и программного обеспечения привели к необходимости пересмотреть существующие архитектурные решения компьютеров. Вместо монопольной концепции последовательного исполнения операций появились идеи совместной, параллельной и распределенной обработки данных. На смену однопроцессорным компьютерам, базирующимся на принципах Дж. фон Неймана, пришли многопроцессорные, конвейерные и параллельные архитектуры. Наряду с традиционными компьютерами на CISC-процессорах многочисленными фирмами реализованы концепции RISC-процессоров, воплотивших сокращенный набор регистровых команд. В области суперкомпьютеров в настоящее время достигнута пиковая производительность в 100 Пбайт/с. Среди последних разработок такие вычислительные гиганты, как суперкомпьютер «Titan-Cray XK7» (США) с производительностью 17,59 Пфлопс и пиковой производительностью 20,13 Пфлопс, а также лидер среди компьютеров – суперкомпьютер «Tianhe-2» (Китай) с производительностью 33,86 Пфлопс на тесте Linpack и пиковой производительностью 54,90 Пфлопс. Существенное развитие получили компьютеры с VLIW-архитектурой, позволившей за счет упаковки в одну связку нескольких команд, масштабируемости, предикации, загрузки по предположению, тегов и дескрипторов ускорить процесс обработки. Широкое распространение нашли векторно-конвейерные компьютеры, массово-параллельные компьютеры с распределенной памятью, компьютеры с кластерной архитектурой, позволяющей достигать практически неограниченной производительности. Все эти решения требуют осмысления, чему в немалой степени способствует предлагаемый учебник. Одна из его целей – пройти путь от компьютеров фон Неймана до создания новых архитектурных ансамблей. В книге уделяется внимание как теоретическим аспектам, так и реальным архитектурам, воплощенным в действующих вычислительных системах и способствующим развитию существующих и генерации новых идей в этой области.
Базируясь на понятии процесса, рассмотрены ключевые теоретические решения, многие из которых можно обнаружить в большинстве современных вычислительных систем. Для освоения учебника необходимы знания в области структур компьютеров, проектирования программ и владение начальными сведениями по операционным системам. Каждая из 12 глав учебника представляет отдельный интерес, что дает возможность некоторые главы включать в смежные курсы («Высокопроизводительные вычисления», «Операционные системы», «Компьютерные сети», «Системы параллельного действия», «Проектирование процессорной обработки» и т.д.). Это позволяет работать с учебником, не обязательно придерживаясь порядка, предложенного автором. Учебник подготовлен в полном соответствии с учебной программой дисциплины «Архитектура компьютеров» для учреждений высшего образования Республики Беларусь. Автор выражает глубокую благодарность доктору технических наук, профессору В.В. Голенкову (Белорусский государственный университет информатики и радиоэлектроники) и доктору технических наук, профессору С.Ф. Липницкому (Объединенный институт проблем информатики Национальной академии наук Беларуси) за полезные замечания и рекомендации, способствующие улучшению содержания книги. Автор
ВВЕДЕНИЕ Сегодня прогресс невозможен без компьютеризации всех сфер деятельности. От скорости и полноты обработки и передачи информации зависят не только достижения в научной, образовательной, экономической деятельности, но и успехи в сфере политики и защиты государственных интересов, в совокупности способствующие устойчивому развитию всех стран. Важная роль в этом процессе принадлежит суперкомпьютерам, производительность которых возрастала в последнее время на порядок за каждое пятилетие. Приведем основные параметры некоторых машин этого класса. Векторно-конвейерный компьютер «Cray T932» фирмы «Cray Research Inc.» (в настоящее время это подразделение «Silicon Craphics») выпускается с 1996 г. Максимальная производительность одного процессора – около 2 млрд операций в секунду, оперативная память наращивается до 8 Гбайт, дисковое пространство – до 256 000 Гбайт (т.е. 256 Тбайт). Компьютер в максимальной конфигурации содержит 32 идентичных процессора, работающих над общей памятью, поэтому ма ксимальная производительность всей вычислительной системы составляет более 60 млрд операций в секунду. Массово-параллельный компьютер IBM SP2 фирмы IBM (иногда такие компьютеры называют компьютерами с массовым параллелизмом) строится на основе стандартных микропроцессоров «PowerPC 604e» или «Power2 SC», соединенных между собой через высокоскоростной коммутатор, причем каждый имеет свою локальную оперативную память и дисковую подсистему. В частности, максимальная система, установленная в Тихоокеанской северо-западной лаборатории (Pacific Northwest National Laboratory) в США, содержит 512 процессоров. Исходя из числа процессоров, можно представить суммарную мощность всей вычислительной системы. Среди суперкомпьютеров с массовым параллелизмом можно выделить «Intel Red» (пиковая производительность 4 Тфлопс) и «IBM White» (12 Тфлопс). Компьютер с кластерной архитектурой «HP Exemplar» от «Hewlett-Packard», например, модели V2250 (класс V) построен на основе микропроцессора PA-8200, работающего с тактовой частотой 240 МГц. До 16 процессоров можно объединить в рамках одного узла с общей оперативной памятью до 16 Гбайт. В свою очередь узлы в рамках одной вычислительной системы соединяются между собой через высокоскоростные каналы передачи данных. Компания «Linux Networks» создала высокопроизводительный кластерный Linux-суперкомпьютер с 1323 процессорами для Министерства обороны США. Суперкомпьютер «Titan-Cray XK7», разработанный в США, имеет производительность 17,59 Пфлопс и пиковую предельную производительность 20,13 Пфлопс. Компьютер содержит более 18 тыс. процессоров «Opteron 6200» , а общее количество ядер составляет 560 640. Лидер среди компьютеров – суперкомпьютер «Tianhe-2», созданный в Китае, с производительностью 33,86 Пфлопс на тесте Linpack и пиковой (теоретической) производительностью 54,90 Пфлопс. Он построен на основе 12-ядерных процессоров «Intel Xeon Phi ES-2692», работающих с частотой 2,2 ГГц. Общее количество ядер 3 120 000. Объем памяти 1024 Тбайт. Работает под операционной системой Kylin Linux. Возникает естественный вопрос: при решении каких задач необходим су перкомпьютер? Чтобы оценить сложность решаемых на практике задач, обратимся к такой области, как, например, оптимизация процесса добычи нефти. Представим подземный нефтяной резервуар с неким количеством пробуренных скважин: по одним на по
верхность откачивается нефть, по другим обратно закачивается вода. Нужно смоделировать ситуацию в данном резервуаре, чтобы оценить запасы нефти или необходимость в дополнительных скважинах. Для определения необходимых арифметических операций достаточно принять упрощенную схему, при которой моделируемая область отображается в куб. Разумные размеры куба для получения правдоподобных результатов – 100 · 100 · 100 точек. В каждой точке куба надо вычислить от 5 до 20 функций: три компоненты скорости, давление, температуру, концентрацию компонент (вода, газ и нефть – это минимальный набор компонент, в более реалистичных моделях рассматривают, например, различные фракции нефти). Далее значения функций находят как решение нелинейных уравнений, что требует от 200 до 1000 арифметических операций. И наконец, если исследуется нестационарный процесс, т.е. нужно понять, как эта система ведет себя во времени, то производится от 100 до 1000 шагов по времени. В итоге получаем: 106 (точек сетки) · 10(функций) · 500(операций) · 500(шагов по времени) = 2,5 · 1012, т.е. 2500 млрд арифметических операций для выполнения одного лишь расчета. А изменение параметров модели? А отслеживание текущей ситуации при изменении входных данных? Подобные расчеты необходимо делать много раз, что предъявляет очень жесткие требования к производительности используемых вычислительных систем. Примеры использования суперкомпьютеров можно найти в автомобилестроении, фармакологии, задачах прогноза погоды и моделирования изменения климата, сейсморазведки и т.д. Первый компьютер EDSAC (1949 г.) с тактом 2 мкс мог выполнить 2n арифметических операций за 18n мс, т.е. в среднем 100 арифметических операций в секунду, а суперкомпьютер «Cray C90» имеет время такта около 4 нс с пиковой производительностью около 1 млрд арифметических операций в секунду. Производительность компьютеров за этот период выросла приблизительно в 10 млн раз. Уменьшение времени такта является прямым способом увеличения производительности, однако эта составляющая (с 2 мкс до 4 нс) в общем объеме обеспечивает ускорение лишь в 500 раз. Остальной рост производительности дает использование новых архитектурных решений, среди которых значительное место занимает воплощение принципа параллельной, распределенной и конвейерной обработки данных. Идея конвейерной обработки состоит в выделении отдельных этапов выполнения общей операции, причем результат работы каждого этапа передается следующему и одновременно принимается новая порция входных данных. Таким образом, за счет совмещения операций, раньше разнесенных во времени, увеличивается скорость обработки данных. Обратимся к истории основных нововведений в архитектуре процессоров. • IBM 701 (1953 г.), IBM 704 (1955 г.): разрядно-параллельная память, разряднопараллельная арифметика. Первые компьютеры (EDSAC, EDVAC, UNIVAC) имели разрядно-последовательную память, из которой слова считывались последовательно бит за битом. Первым компьютером, использующим разрядно-параллельную память и разрядно-параллельную арифметику, стал IBM 701, а наибольшую популярность получила модель IBM 704, в которой впервые были применены память на ферритовых сердечниках и аппаратное арифметическое устройство (АУ) с плавающей точкой. • IBM 709 (1958 г.): независимые процессоры ввода-вывода. Процессоры первых компьютеров сами управляли вводом-выводом. Однако скорость работы самого бы
строго внешнего устройства – магнитной ленты была в 1000 раз меньше быстродействия процессора, поэтому во время операций ввода-вывода процессор фактически простаивал. В 1958 г. к компьютеру IBM 704 присоединили 6 независимых процессоров ввода-вывода, которые могли работать параллельно с основным процессором, а сам компьютер переименовали в IBM 709. • «IBM Stretch» (1961 г.): опережающий просмотр, расслоение памяти. Компьютер имеет две принципиально важные особенности: опережающий просмотр вперед для выборки команд и расслоение памяти на два банка для согласования низкой скорости выборки из памяти и скорости выполнения операций. • «Atlas» (1963 г.): конвейер команд. Впервые конвейерный принцип выполнения команд был использован в машине «Atlas», разработанной в Манчестерском университете. Выполнение команд разбито на 4 стадии: выборка команды, вычисление адреса операнда, выборка операнда и выполнение операции. Конвейеризация позволила уменьшить время выполнения команд с 6 до 1,6 мкс. Данный компьютер оказал огромное влияние как на архитектуру ЭВМ, так и на программное обеспечение. В нем впервые применена мультипрограммная операционная система (ОС), основанная на использовании виртуальной памяти и системы пре рываний. • CDC 6600 (1964 г.): независимые функциональные устройства (ФУ). Фирма «Control Data Corporation» (CDC) при непосредственном участии одного из ее основателей, Сеймура Р. Крэя (Seymour R. Cray), выпустила первый компьютер, в котором использовалось несколько независимых функциональных устройств. Приведем некоторые параметры компьютера: время такта 100 нс, производительность 2–3 млн операций в секунду, оперативная память разбита на 32 банка 60-разрядных слов по 4096 слов в каждом, цикл памяти 1 мкс, 10 независимых функциональных устройств. • CDC 7600 (1969 г.): конвейерные независимые функциональные устройства. CDC выпускает компьютер CDC 7600 с восемью независимыми конвейерными функциональными устройствами – сочетание параллельной и конвейерной обработки. Основные параметры: время такта 27,5 нс, производительность 10–15 млн операций в секунду, 8 конвейерных функциональных устройств, двухуровневая память. • ILLIAC IV (1974 г.): матричные процессоры. Проект: 256 процессорных элементов (ПЭ), включающих 4 квадранта по 64 ПЭ, возможность реконфигурации (2 квадранта по 128 ПЭ или 1 квадрант из 256 ПЭ), время такта 40 нс, производительность 1 Гфлопс. Реализована матрица из 64 ПЭ, все элементы которой работали в синхронном режиме, выполняя в каждый момент времени одну и ту же команду, поступившую от устройства управления (УУ), но над своими данными; ПЭ имел собственное арифметико-логическое устройство (АЛУ) с полным набором команд. Оперативная память (ОП), или оперативное запоминающее устройство (ОЗУ), – 2 К слов по 64 разряда, цикл памяти 350 нс, каждый ПЭ имел непосредственный доступ только к своей ОП. Сеть пересылки данных – двумерный тор со сдвигом на единицу на границе по горизонтали. Стоимость проекта в 4 раза выше планируемой. Сделан лишь 1 квадрант, такт 80 нс, реальная производительность до 50 Мфлопс. Данный проект оказал огромное влияние на архитектуру последующих машин, построенных по схожему принципу, в частности, на архитектуру PEPE, BSP, ICL, DAP. • «Cray-1» (1976 г.): векторно-конвейерные процессоры. Компания «Cray Research» в 1976 г. выпускает первый векторно-конвейерный компьютер «Cray-1»: время такта 12,5 нс, 12 конвейерных функциональных устройств, пиковая производительность 160 млн операций в секунду, оперативная память до 1 М слов по 64 разряда, цикл памяти 50 нс.
Главным новшеством проекта является введение векторных команд, работающих с целыми массивами независимых данных и позволяющих эффективно использовать конвейерные функциональные устройства. Иерархия памяти прямого отношения к параллелизму не имеет, однако, безусловно, относится к тем особенностям архитектуры компьютеров, которые имеют значение для повышения их производительности (сглаживание разницы между скоростью работы процессора и временем выборки из памяти). Основные уровни: регистры, кэш-память, оперативная память, дисковая память. Время выборки по уровням от дисковой памяти к регистрам уменьшается, стоимость в пересчете на 1 слово (байт) растет. В настоящее время подобная иерархия поддерживается даже на персональных компьютерах. На современном этапе высокопроизводительная техника развивается по следующим основным направлениям. 1. Векторно-конвейерные компьютеры. Особенностью таких машин являются конвейерные функциональные устройства и набор векторных инструкций в системе команд. Векторные команды оперируют целыми массивами независимых данных, что позволяет эффективно загружать доступные конвейеры. 2. Массово-параллельные компьютеры с распределенной памятью. Идея построения компьютеров этого класса проста: серийные микропроцессоры снабжаются локальной памятью и соединяются посредством некоторой коммуникационной среды. Они обладают свойством масштабируемости. Недостатком компьютеров этого класса является то, что межпроцессорное взаимодействие идет намного медленнее, чем локальная обработка данных самими процессорами. К этому же классу можно отнести и сети компьютеров, которые все чаще рассматривают как дешевую альтернативу очень дорогим суперкомпьютерам. 3. Параллельные компьютеры с общей памятью. Вся оперативная память таких компьютеров разделяется несколькими одинаковыми процессорами. Это снимает проблемы предыдущего класса, но добавляет новые: число процессоров, имеющих доступ к общей памяти, по чисто техническим причинам нельзя сделать большим. 4. Компьютеры с кластерной архитектурой. Это направление, строго говоря, представляет собой комбинации трех предыдущих. Из нескольких процессоров (традиционных или векторно-конвейерных) и общей для них памяти формируется вычислительный узел. Если полученной вычислительной мощности недостаточно, то несколько узлов объединяются высокоскоростными каналами. В настоящее время такие компьютеры признаны наиболее перспективными. В странах СНГ в этом направлении работают Объединенный институт проблем информатики Национальной академии наук Беларуси, Институт проблем информатики Российской академии наук, Московский государственный университет им. М.В. Ломоносова, Белорусский государственный университет, Научно-исследовательский институт многопроцессорных вычислительных систем (Таганрог), Сибирский государственный университет телекоммуникаций и информатики (Новосибирск) и др. 5. Грид-системы (Grid system). Через средства коммуникации эти системы должны объединить все компьютеры, их программное обеспечение и профессионалов в области информатики. С помощью системы осуществляется переход на оказание информационных услуг с соответствующей оплатой. Влияние многопроцессорных компьютеров на скорость обработки программ представлено законом Амдала. Предположим, что в программе доля операций, которые нужно выполнять последовательно, равна f, где 0 <= f <= 1 (при этом доля понимается по числу операций в процессе выполнения).