Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы / Мышев А.В. (ч.1)

.pdf
Скачиваний:
31
Добавлен:
11.06.2015
Размер:
864.53 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

Факультет кибернетики

А.В. МЫШЕВ

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

ВПРОЦЕССОРНЫХ СИСТЕМАХ

СФОННЕЙМАНОВСКОЙ АРХИТЕКТУРОЙ

Часть 1

Учебное пособие по курсу «Процессоры и запоминающие устройства»

Обнинск 2004

УДК 681.31

Мышев А.В. Алгоритмы и программирование арифметических операций в процессорных системах с фоннеймановской архитектурой. Часть 1. Учебное пособие по курсу «Процессоры и запоминающие устройства» для студентов специальности 22.01. – Об-

нинск: ИАТЭ, 2004. – 52 с.

Впособии изложен материал, отражающий основные принципы

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

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

Пособие рассчитано на широкую аудиторию и представляет интерес как для студентов, обучающихся по специальности 22.01, так

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

Илл. 18, библиограф. 7 наим.

Рецензенты: к.т.н., А.А. Абакумов (мл) к.т.н., Е.Г. Типикин

Темплан 2004, поз.9

©А.В. Мышев, 2004 г.

©Обнинский государственный технический университет атомной энергетики, 2004 г.

2

ВВЕДЕНИЕ

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

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

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

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

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

3

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

ГЛАВА 1. ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ В ПРОЦЕССОРНОЙ СИСТЕМЕ И ОСНОВЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ

1.1. Биты, байты, слова

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

Бит. Двоичная цифра, имеющая всего два значения 1 и 0, называется битом (BInary digiT). С помощью двух битов можно представить четыре значения (кода) – 00, 01, 10 и 11; с помощью трех битов – восемь значений от 000 до 111 и т.д. Группа из n битов позволяет представить 2n значений или комбинаций – от 00…00 до

11…11.

Единицы данных. Во всех современных компьютерах важную роль играет представление данных группами по 8 битов, называемых байтами (byte-слог) и содержащими любую из 28=256 комбинаций. По существу, байт стал стандартной базовой единицей, из которой образуются все остальные единицы машинных данных. В зависимости от того, как интерпретируется содержимое байта, оно может быть кодированным представлением символа внешнего алфавита, целым знаковым или беззнаковым числом, частью команды или более сложной единицей данных и т.д. Другими словами, интерпретацию байта определяет программист в зависимости от контекста своей программы.

4

Биты в байте нумеруются справа налево, начиная с нуля (см. рис. 1.1).Такая нумерация принята во всех компьютерах; только в моделях ЕС ЭВМ биты нумеруются слева направо.

Трехбитная единица данных называется триадой. Она может содержать 8 комбинаций от 000 до 111. Триады используются только в восьмеричной системе счисления.

Рис. 1.1. Машинное представление данных

Четырехбитная единица данных называется тетрадой; она может содержать 16 различных комбинаций от 0000 до 1111. Применение тетрад ограничено упакованными десятичными числами.

Единица данных, состоящая из 16 битов, или двух байтов, называется словом. Слово может содержать любую из 216 = 65536 комбинаций. Для краткой записи больших ступеней числа два число 210=1024 обозначается «К» и читается как приставка «кило-» или просто как буква «к». По аналогии с нумерацией битов байты в слове также нумеруются справа налево, начиная с нуля: байт 0 является младшим, а байт 1 – старшим.

Следующая единица данных состоит из четырех байтов и называется двойным (длинным) словом. Число возможных комбинаций в двойном слове составляет 232, что очень близко к 4 миллиардам. Число 220=1 048 576, близкое к миллиону, обозначают «М» и читают как приставку «мега-» или как букву «м», а число 230=1 073 741 824, близ-

5

кое к миллиарду, обозначают «Г» и читают как приставку «гига-» или как букву «г».

Последняя из рассматриваемых нами единица данных состоит из 64 битов или 8 байтов и называется счетверенным словом (возможно, появится более короткий термин «тетраслово»). Число комбинаций в этой единице данных составляет 264 или более 1019.

Машинное слово. Основная или базовая единица данных, которой оперирует микропроцессор, называется машинным словом. Практически во всех микропроцессорах длина машинного слова кратна байту. Длина слова является важнейшей характеристикой микропроцессора, и в соответствии с ней микропроцессоры подразделяются на 8-, 16или 32-битные. В 16-битных микропроцессорах всегда есть команды обработки байтов, а в 32-битных микропроцессорах – команды операции с байтами и словами.

Хранение данных в памяти. Программы и данные, к которым процессор имеет непосредственный доступ, хранятся в основной памяти, иногда называемой также оператив-

ной памятью (запоминающим устройством).

Различают логическую и физическую основную память. Логическая память, т.е. та память, которую видит и к которой обращается процессор, организована в последовательность из N байтов, образующих пространство логической памяти. Байты нумеруются от 0 до N-1, и порядковый номер байта называется его адресом (см. рис 1.2).

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

N=2m, m=log2N.

6

Формируемый процессором адрес памяти всегда является адресом байта в пространстве логической памяти; он называется эффективным, виртуальным или логическим адресом. Ниже используется термин логический адрес. Длина логического адреса может совпадать, а может и не совпадать с длиной машинного слова, например, в 8-битных микропроцессорах длина логического адреса составляет 16 битов, определяя пространство логической памяти 64 Кбайт. В 16-битных микропроцессорах длина логического адреса обычно совпадает с длинной машинного слова, и пространство логической памяти также составляет 64 Кбайт.

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

ройством управления памятью или диспетчером памяти. Устрой-

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

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

7

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

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

Рис. 1.3. Логическая и физическая память

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

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

8

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

На рис. 1.4 показано, что адресом двойного слова является 1000Н и по этому адресу находится его младший байт. Принятые правила несколько неудобны для пользователей, т.к. как мы привыкли читать слева направо – «от старшего к младшему». Это неудобство проявляется только при анализе содержимого памяти, выведенного на дисплей или принтер в шестнадцатеричном формате. При программировании на любом языке (кроме машинного языка) учитывать «обратный» порядок байтов в памяти не требуется.

Рис. 1.4. Хранение в памяти двойного слова

В тех случаях, когда длина слова в памяти превышает байт, на размещение данных могут накладываться ограничения. Например, обычно требуется, чтобы 16-битные слова размещались только по четным адресам (или по так называемым границам слов), двойные слова – по адресам, кратным 4 (по границам двойных слов) и т. д.

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

ленным границам. На рис. 1.5 показаны два варианта размещения слова в памяти с длиной слова 16 битов. Когда слово выровнено (рис. 1.5, а), для его считывания достаточно одного обращения к памяти по адресу 1000Н. Если же слово не выровнено, считывание его потребует двух операций в памяти (по адресам 1000Н и 1002Н),

9

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

Рис. 1.5. Размещениесловавпамятиа) свыравниванием, б) безвыравнивания

1.2. Форматы целых двоичных чисел

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

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

10