Упрощение процедур обработки массивов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Упрощение процедур обработки массивов



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

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

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

Такое решение позволяет:

· модифицировать адреса команд в циклах, изменяя компонент адреса (индекса, хранящегося в РОНе), и не модифицируя саму команду,

· указывать  в  команде  только  короткий  компонент  адреса  (адрес

РОНа), где сохраняется 32-битовый адрес, а не полноразмерный адрес текущего элемента массива.

Для примера рассмотрим 32-разрядную структуру команды типа регистр-память процессора фирмы IBM (Семейство IBM/360). Структура команды представлена на рис. 3.9.

 

Код операции (8 бит.) № РОН (4бит)

Адрес операнда в памяти (20 разрядов)

   

 

  В(4бит) X(4бит) Смещение (D – 12 разрядов)

Рис. 3.9. Структура команды регистр/память IBM -360

 

Команда (рис.3.9) двухадресная и содержит три поля:

· поле кода операции (8 бит),

· поле задания номера РОНа (4 бита), содержащего первый операнд (процессор содержит шестнадцать 32-битных регистров общего назначения),

· поле адреса второго операнда в оперативной памяти (20 бит).

Адрес памяти задается тремя компонентами: базовым адресом кадра (B), индексом (Х) и смещением (D). Соответственно, поле адреса операнда в памяти содержит три поля:

· четырехбитное поле базы (B) задает номер РОНа (кроме нулевого), содержащего базовый адрес кадра данных,

· четырехбитное поле индекса (Х) задает номер РОНа (кроме нулевого), содержащего индекс (смещение адреса элемента в массиве),

· двенадцатибитное поле смещения (D) задает адрес первого элемента массива относительно базового адреса кадра данных.

Это базово-индексная адресация со смещением.

Нулевое значение полей B, X или D означает отсутствие этих компонентов адреса. Структура памяти с базово-индексной адресацией представлена на рис. 3.10.

 

Рис. 3.10. Базово-индексная адресация со смещением

 

Рассмотрим случай, когда вторым операндом является элемент Аi массива А размерности n (А[n]), (см. рис. 3.10.).

Для задания элемента массива его адрес в памяти разбивается на три компонента:

· базовый адрес кадра (окна) данных – (В),

· смещение начала массива в кадре данных – (D),

· смещение элемента в массиве (Х).

База (четырехбитное поле B) задает РОН, в котором находится 32-битный начальный адрес кадра, общий для всех данных кадра.

Прямой двенадцатибитный адрес смещения D задает адрес программного объекта относительно начала кадра (окна) данных (размер кадра здесь выбран 212 = 4096 байт).

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

Третий компонент (Х) индекс используется при обработке массивов. Его введение решает проблему переадресации данных в цикле без изменения команд на сумматоре.

На рис. 3.10 операндом является элемент массива Ai. Для задания его адреса дополнительно используется третий компонент адреса.Эточетырехбитное поле,содержащее адрес РОНа, в котором хранится смещение элемента Ai в массиве A[n].Номер элемента i связан со значением Х2 следующим соотношением:

Х2 = i ´ L, где L - длина операнда в байтах.

При базово-индексной адресации возможны два варианта вычисления адреса элемента массива:

1. с последовательной выборкой элементов массива,

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

В первом случае смещение элемента в массиве вычисляется по формуле: Х2 (i):= X2 (i+1), при Х2(0) = 0.

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

Во втором случае смещение элемента в массиве вычисляется по формуле:

Х2(i):= i ´ L

Формирование адресов при базово-индексной адресации (с последовательной выборкой элементов массива) производится по схеме (рис.3.11):

Адрес элемента массива = Содержимое РОНа X2 + Содержимое РОНа B2 + Смещение D2.

Задавая нулевые значения полей Х, В или D можно получать:

· относительно-базовую адресацию – (В)+D,

· индексную адресацию – (Х)+D,

· относительно-индексную адресацию (В)+(Х) без смещения,

· прямую адресацию – D.

 

Рис. 3.11. Формирование адреса операнда при последовательном

 обращении к операндам.

 

Формирование адресов при базово-индексной адресации (с произвольной выборкой элементов массива) производится по схеме (рис.3.12).

 

Рис. 3.12. Формирование адреса операнда при произвольных

обращениях к операндам.

 

Адрес элемента массива = Содержимое РОНа X2* L+ Содержимое РОНа B2 + Смещение D2.

Кроме указанных видов адресации возможны (например в МП PDP-11 фирмы DEC) дополнительные способы задания адресов данных:

· адресации с автоиндексированием. В этих адресациях после использования адреса значение индекса автоматически изменяется на размер операнда

в байтах, т.е. определяет адрес следующего элемента массива.

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

Если системы имеют несколько систем адресаций, то режимы адресаций могут задаваться:

· кодом операции (процессор фирмы IBM),

· полем режима адресации для каждого адреса в команде (процессор фирмы DEC),

· общим полем режима адресации для всех адресов в команде – постбайтом (процессор фирмы Intel).

Вопросы для самопроверки.

1. Понятие "режим адресации".

2. Причина сокращения разрядности адресных полей при задании адресов компонентами.

3. Причина упрощения обработки элементов массива при задании адресов компонентами.

4. Основные компоненты адреса объекта в памяти.

5. Основные виды адресации с использованием трех компонентов адреса.

 

Типы машинных арифметик

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

· команды обработки числовых данных в форме с фиксированной за-

пятой (точкой). Этот набор команд является базовым, определяющим универсальность средств обработки,

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

· команды обработки символьной информации,

· команды обработки десятичных чисел.

Последние два набора команд специализируют процессор на решение экономических задач, обработку символьной информации (обработку записей) и функции управления внешними объектами.

Часто для разных "арифметик" используются отдельные исполнительные устройства. Обычно для обработки числовой информации с фиксированной и плавающей точкой используются отдельные устройства с шириной обработки 16, 32, 64 бита, а для информации с плавающей точкой - даже до 128 бит. Обработка символьной информации и десятичных чисел производится на устройствах с последовательной обработкой (цифра за цифрой, символ за символом).

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

В последнее время процессоры стали оснащаться средствами мультимедиа – командами MMX. Это расширение архитектуры процессоров Intel, предназначенное для повышения быстродействия и качества работы мультимедиа-программ, таких как видео, графика, анимация и воспроизведение звука.

Собственно технология MMX – это 57 специфичных векторных команд. Модель обработки векторных команд SIMD (single instruction, multiple data – одна команда, много данных). Такая модель повышает производительность программ, поскольку одна команда обрабатывает несколько элементов данных одновременно.

В МП Pentium III технология MMX распространена и на команды с плавающей запятой (SSE – Streaming SIMD Extensions). Строго говоря, первенство в использовании подобных команд принадлежит корпорации AMD (расширение 3DNow, для МП K6). Это команды поддержки трехмерной графики.

В МП Pentium IV реализовано второе поколение потоковых команд ОКМД – команды расширения SSE2 (Streaming SIMD Extensions 2) – набор из 144 команд SSE2, поддерживающий новые форматы упакованных данных с использованием 128-битовых регистров (XMM-регистров) как при операциях с плавающей запятой, так и при операциях с фиксированной запятой.

Вопросы для самопроверки:

1. Четыре основных типа арифметик, реализуемых в современных ЭВМ.

2. Понятие адресной арифметики.

3. Характеристики операций команд ММХ и расширения SSE2.

Управление потоком команд.

Исключение из структуры команд адреса следующей команды предполагает исполнение (выборку) команд в порядке их расположения в программе. Такая выборка – в "естественном порядке" – производится при помощи счетчика команд, путем прибавления к содержимому счетчика команд количества байт в текущей команде.

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

К командам управления программой относятся команды:

· безусловного перехода,

· условного перехода,

· управления циклами,

· вызова (подпрограмм),

· условного вызова (подпрограмм).



Поделиться:


Последнее изменение этой страницы: 2021-04-04; просмотров: 72; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.175.182 (0.025 с.)