Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Эффективное программирование современных микропроцессоров

Покупка
Основная коллекция
Артикул: 632058.01.99
Доступ онлайн
76 ₽
В корзину
Пособие посвящено изучению особенностей архитектуры современных микропроцессоров, которые влияют на скорость выполнения прикладных программ. Для закрепления теоретического материала по курсу «Архитектура ЭВМ и ВС» предлагаются практические работы. Их цель - сформировать практические навыки разработки эффективных программ с учетом организации иерархической памяти, наличия векторных расширений и других особенностей архитектуры. Учебное пособие предназначено для студентов I курса факультета ФПМИ направлений 010400.62 «Прикладная математика и информатика» и 010500.62 «Математическое обеспечение и администрирование информационных систем».
Маркова, В. П. Эффективное программирование современных микропроцессоров ; учебное пособие / В. П. Маркова, С. Е. Киреев, М. Б. Остапкевич. - Новосибирск : НГТУ, 2014. - 148 с. - ISBN 978-5-7782-2391-2. - Текст : электронный. - URL: https://znanium.ru/catalog/product/548254 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство образования и науки Российской Федерации

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ЭФФЕКТИВНОЕ 

ПРОГРАММИРОВАНИЕ 

СОВРЕМЕННЫХ 

МИКРОПРОЦЕССОРОВ

Утверждено 

Редакционно-издательским советом университета 

в качестве учебного пособия

НОВОСИБИРСК

2014

УДК 004.31-181.48(075.8)

Э 949

Коллектив авторов

В.П. Маркова, С.Е. Киреев, М.Б. Остапкевич, В.А. Перепелкин

Рецензенты:

д-р техн. наук, профессор, Я.И. Фет
канд. техн. наук, доцент В.Д. Корнеев

Работа подготовлена

на кафедре параллельных вычислительных технологий

Э 949
Эффективное программирование современных микропроцессо
ров: учеб. пособие / В.П. Маркова, С.Е. Киреев, М.Б. Остапкевич, 
В.А. Перепелкин. – Новосибирск: Изд-во НГТУ, 2014. – 148 с.

ISBN 978-5-7782-2391-2

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

Учебное пособие предназначено для студентов I курса факультета ФПМИ на
правлений 010400.62 «Прикладная математика и информатика» и 010500.62 «Математическое обеспечение и администрирование информационных систем».

ЭФФЕКТИВНОЕ ПРОГРАММИРОВАНИЕ 
СОВРЕМЕННЫХ МИКРОПРОЦЕССОРОВ

Учебное пособие

Редактор И.Л. Кескевич

Выпускающий редактор И.П. Брованова

Корректор И.Е. Семенова

Дизайн обложки А.В. Ладыжская

Компьютерная верстка А.В. Сухарева

Подписано  в  печать  07.02.2014.   Формат  60 84 1/16.   Бумага офсетная.   Тираж 200 экз. 

Уч.-изд. л.  8,6.    Печ. л.  9,25.    Изд. № 180/13.    Заказ №   238.
Цена договорная

Отпечатано в типографии

Новосибирского государственного технического университета

630073, г. Новосибирск, пр. К. Маркса, 20

УДК 004.31-181.48(075.8)

© Коллектив авторов, 2014

ISBN 978-5-7782-2391-2
© Новосибирский государственный

технический университет, 2014

1. ВВЕДЕНИЕ 

В АРХИТЕКТУРУ КОМПЬЮТЕРА

Практика программирования показывает, что типичная программа 

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

В настоящее время существует большое количество литературы по 

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

рассмотрению особенностей организации современных компью
теров, которые влияют на скорость выполнения программ;

подходам к разработке программ с учетом организации ком
пьютера.

Для лучшего усвоения теоретического материала и формирования 

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

1.1. ОПРЕДЕЛЕНИЕ АРХИТЕКТУРЫ 
И ОРГАНИЗАЦИИ КОМПЬЮТЕРА

Под архитектурой компьютера принято понимать логическое

представление компьютера с точки зрения программиста. Архитектура 
определяет организацию памяти, набор команд, форматы представления данных, способы адресации памяти, механизмы ввода/вывода, 
а также правила функционирования компьютера. Примерами современных архитектур являются  x86-64, ARM, POWER.

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

В процессе эволюции архитектуры, предложенной фон Нейманом 

[1], сформировалось несколько классов архитектур: CISC, RISC, 
VLIW. CISC – архитектура со сложным набором команд, большим 
числом форматов команд, режимов адресации памяти и малым регистровым файлом. Она ориентирована на написание эффективно работающих программ на языке ассемблера. RISC – архитектура с сокращенным набором команд. Имеется малое число простых форматов 
этих команд. Доступ к оперативной памяти производится отдельными 
командами. Команды обработки данных могут работать только с регистрами. Имеется большой регистровый файл. Архитектура ориентирована на использование языков высокого уровня. VLIW – это развитие 
RISC-архитектуры, в котором реализован параллелизм на уровне команд, который выявляется компилятором. 

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

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

Например, в рамках архитектуры x86 реализовано много микроар
хитектур. В первых микроархитектурах (8086, 8088) отсутствовали 
кэш-память, виртуальная память, команды выполнялись последовательно на одном конвейере. Развитие технологий построения СБИС 
позволило разместить на кристалле большое количество новых функциональных устройств. В микроархитектуре i386 введены кэш-память 
и страничная виртуальная память. В i486 добавлен конвейер, позво
ляющий завершать выполнение одной команды на каждом такте даже 
для команд, которые выполняются в течение нескольких тактов. В P5 
появилась суперскалярная организация, включающая два конвейера 
для целочисленных операций, раздельные кэш-памяти для инструкций 
и данных. В микроархитектуре P6 были добавлены функциональные 
устройства спекулятивного выполнения команд, выполнения векторных команд, выполнения команд вне порядка, аппаратный регистровый файл, позволяющий переименовывать программные регистры. 
В NetBurst число стадий конвейера увеличено до 20. В современной 
микроархитектуре Haswell количество арифметико-логических устройств увеличено до четырех.

Иногда к организации относят такие характеристики компьютера, 

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

1.2. АРХИТЕКТУРНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ

КОМПЬЮТЕРА ФОН НЕЙМАНА

Несмотря на радикальное отличие современных компьютеров от своих 

предшественников, принципы, на основе которых создавались архитектуры 
компьютеров в 1940–1950-х годах, используются при их построении и сегодня. Эти принципы были введены фон Нейманом в 1945 году при работе над 
проектом EDVAC [26]. Звучат они следующим образом.

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

выполняются последовательно. Именно эта последовательность команд и управляет работой компьютера.

Принцип хранимой программы. Команды представляются 

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

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

Принцип условного перехода. В наборе команд компьютера 

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

Принцип использования двоичной системы счисления для 

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

Принцип иерархичности запоминающих устройств. Этот 

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

1.3. КОМПЬЮТЕР ФОН НЕЙМАНА, 

ЕГО УЗКИЕ МЕСТА И УСОВЕРШЕНСТВОВАНИЯ

Компьютер фон Неймана включает в себя четыре основных компо
нента (рис. 1):

оперативную память (ОП);
устройство управления (УУ);
арифметико-логическое устройство (АЛУ);
устройства ввода-вывода и внешнюю память.

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

Устройство
управления

Арифметико-логическое

устройство

Процессор

Устройства ввода-вывода

и внешняя память

Рис. 1. Упрощенная схема компьютера фон Неймана

Оперативная память (основная память) обеспечивает хранение 

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

В каждой ячейке оперативной памяти в каждый момент времени 

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

Большинство современных компьютеров способно производить 

операции не над одним байтом, а сразу над последовательностями из 
нескольких байт. Такая группа байт называется словом. Его длина 
в битах определяет один из основных параметров архитектуры компьютера – разрядность. Так, компьютер со словами, состоящими из четырех байт, имеет 32-разрядную архитектуру, а со словами из восьми 
байт – 64-разрядную.

Оперативная память – это память с произвольным доступом, т. е. 

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

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

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

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

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

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

Код операции
Адрес

результата

Адрес

операнда 1

Адрес

операнда 2

Рис. 2. Формат команды процессора

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

Функционирование процессора (выполнение программы) состоит

в циклическом выполнении двух шагов:

выборка команды (рис. 3, а);
выполнение команды (рис. 3, б).

Устройство
управления

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

Счѐтчик команд

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

команда

адрес команды

Устройство
управления

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

Счѐтчик команд

операнды

команда

результат

(а)
(б)

Регистры
Регистры

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

Процессор
Процессор

а                                                                 б

Рис. 3. Два шага функционирования процессора: выборка команды (a) 

и выполнение команды (б)

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

010
add

1 0
1
1 1
0
010

P,
Q,
R

Код команды:

Таблица
операций

000
001
010
011
100
101
110
111

load
store
add
sub
mul
div
cmp
jmp

Память

000
001
010
011
100
101
110
111

14
52
17
29
47
33
50
84

Адрес результата

Адрес операнда 1

Адрес операнда 2

Код операции

АЛУ

Операнд 2

Операнд 1

Результат

Операция

17

33
add

Рис. 4. Принцип выполнения команды на основе ее битового представления

Таким образом, характерная черта компьютера фон Неймана – это 

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

Идея хранить программу и данные в одной памяти представляла 

собой изящное инженерное решение, соответствующее имевшемуся на
тот момент уровню технологий. Однако совместное хранение данных и 
программы и последовательное выполнение команд привело к так называемому «бутылочному горлу»: доступ к командам и данным осуществляется через один и тот же канал. Пропускная способность этого 
канала ограничивает скорость работы компьютера. Несмотря на огромный прогресс в области CБИС-технологий и программного обеспечения, производительность процессоров в настоящее время подошла 
к теоретическому пределу. Исходные положения архитектуры компьютера фон Неймана, с одной стороны, привели к усложнению компьютеров, а с другой стороны, они препятствовали увеличению скорости 
выполнения программ. Поэтому постепенно наметилась тенденция отхода от классической реализации архитектуры фон Неймана с целью 
преодолеть ее ограничения. И если в XX веке вклад в повышение производительности процессоров был в большей степени схемотехнический за счет повышения тактовой частоты процессора, то с 2000-х годов доля увеличения производительности за счет усовершенствования
организации компьютера стала расти.

Улучшения микроархитектуры направлены на ускорение доступа 

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

1.4. ОСНОВНЫЕ КОМПОНЕНТЫ 
СОВРЕМЕННОГО КОМПЬЮТЕРА

Современные компьютеры (как настольные персональные, так 

и серверы) являются многоядерными (рис. 5). Функционально каждое 
ядро вместе с оперативной памятью унаследовало принципиальные 

Доступ онлайн
76 ₽
В корзину