Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ лекции 2006.doc
Скачиваний:
193
Добавлен:
20.05.2014
Размер:
3.7 Mб
Скачать

Микропроцессорная память

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

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

Основная (оперативная) память - структура адресной памяти

Память состоит из ячеек, каждая из которых может хранить некоторую порцию информации. Каждая ячейка имеет номер, который называется адресом. Если память содержит nячеек, они будут иметь адреса от 0 доn-1, как правило, каждая ячейка содержит один байт. Для ЭВМ байтовая организация оперативной памяти является не только основной, но и вполне естественной (см. рис. 5.2). Для хранения данных в такой памяти и обращения к ней надо каждый раз наращивать (инкрементировать) счетчик команд на единицу.

Элементарной единицей памяти всех современных компьютеров является байт, состоящий из восьми двоичных разрядов. Каждый байт имеет свой адрес. В наиболее распространенной 32-разрядной архитектуре адреса байтов изменяются от 0 до 232 - 1 с шагом 1. Память, с логической точки зрения, можно рассматривать как массив байтов: можно прочесть или записать байт с заданным адресом. Содержимое байта трактуется либо как неотрицательное целое число в диапазоне от 0 до 255, либо как число со знаком в диапазоне от -128 до 127.

7 . . . . . . 0

0

1

2

.

.

.

65533

65534

65535

Рис. 5.2 Байтовая организация памяти

Однако физически при работе с памятью по шине передаются не отдельные байты, а машинные слова. В 32-разрядной архитектуре машинное слово — это четыре подряд идущих байта, при этом адрес младшего байта кратен четырем. (В 64-разрядной архитектуре машинное слово состоит из восьми байтов.) Машинное слово — это наиболее естественный элемент данных для процессора. Машинное слово содержит целое число, которое можно рассматривать либо как беззнаковое в диапазоне от 0 до 232 - 1, либо как знаковое в диапазоне от -2 31 до 231 - 1. Адрес памяти также представляет собой машинное слово. Принято нумеровать биты внутри машинного слова (как и внутри байта) справа налево, начиная с нуля и кончая 31. Младший бит имеет нулевой номер, старший, или знаковый, бит — номер 31 . Младшие биты числа находятся в младших битах машинного слова. В этом случае каждое 16-разрядное слово состоит из двух последовательно расположенных байтов. Например, байты 2 и 3 образуют одно полное слово, а байты 3 и 4 нет. При работе с такой памятью счетчик команд микропроцессора после выборки каждой команды должен наращиваться на 2, а не на 1, как в предыдущем случае. Аналогично решается задача в случае 4-х байтового слова.

15 . . . . . . 8 7. . . . . . . 0 15 . . . . . . 8 7. . . . . . . 0

10 0 1

32 2 3

54 4 5

.

.

65533 65532 65532 65533

65535 65534 65534 65535

.

.

“A” “B”

Рис.5.3 Прямой и обратный порядок хранения 2-х байтового слова при прямом и обратном порядке хранения

Рассмотрим пример:

- записать четырехбайтовое слово 1 7 B A

Обратный порядок байтов Прямой порядок байтов

0 1 2 3 3 2 1 0

1 7 B A

1 7 B A

0 0

44

4 5 6 7 7 6 5 4

Байт с наиболее значащей частью

(“big-end”, в исходном числе он находится слева) сохраняется в память по наименьшему адресуN=0, (n=4),

машины: Sparc, Apple, IBM-370 ….

Байт с наиболее значащей частью (слева)

сохраняется в память по наибольшему адресу N=3 (n=7), (“little-end”),

машины: Intel

Рис. 5.4 Два способа хранения многобайтовых данных

Необходимо отметить, что и в том, и в другом случае слово, содержащее это число, имеет, адрес – 0, но в первом случае мы записываем его в прямом виде - 17BA, а во втором в перевернутом. Принято в качестве адреса слова, которое состоит из нескольких последовательно расположенных байтов, использовать адрес байта с наименьшим номером. В итоге адреса слов уже не будут меняться через единицу, приращение будет зависеть от длины машинного слова. Архитектура Big End была популярна в середине XX века. К концу 70-х годов программисты осознали, что Little End-архитектура гораздо удобнее. Например, один из аргументов в пользу Little End заключается в том, что целое число, занимающее машинное слово с адресом n, и байт с тем же адресом содержат одно и то же значение (конечно, если оно не превышает 255). В случае Big End это не так: например, если целое число с адресом n содержит число 17, то байт с адресом n содержит 0; или если целое число содержит отрицательное значение -77, то байт с адресом n содержит отрицательное значение -1. При небрежном программировании это порождает массу ошибок. Поэтому большинство современных процессоров построены по архитектуре Little End. Тем не менее многие компьютерные протоколы ориентируются на Big End, поскольку они были приняты достаточно давно. Например, все протоколы сети Internet передают данные в формате Big End, т.к. они были разработаны в 70-х годах XX века. На машинах с архитектурой Little End приходится переставлять байты внутри слова перед отправкой IP-пакета в сеть или при получении IP-пакета из сети.