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

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
128
Добавлен:
01.05.2014
Размер:
9.49 Mб
Скачать

Память 5

5.2.1. Пространство внутренней памяти ADSP-21060

Пространство внутренней памяти ADSP 21060 показано на рис. 5.6. Эта память состоит из трех областей адреса:

Регистры IOP

с 0x0000 0000

по 0x0000

00FF

Адреса нормальных слов

с 0x0002 0000

по 0x0003 FFFF

Таблица векторов прерываний

с 0x0002 0000

по 0x0002

007F

Адреса коротких слов

с 0x0004 0000

по 0x0007 FFFF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.6. Пространство внутренней памяти ADSP-21060

131

5 Память

Регистры IOP это 256 отображенных в карте памяти регистров, которые управляют конфигурацией системы ADSP 2106x, а также различными операциями ввода вывода. Адресное пространство между адресами регистров IOP и адресами нормальных слов с 0x0000 0100 по 0x0001 FFFF является не используемой памятью, и в него нельзя производить запись.

Блок 0 располагается в начале пространства адресов нормальных слов с адреса 0x0002 0000. Блок 1 располагается в середине с адреса 0x0003 0000.

0x0000

0000

0x0000 00FF

Регистры IOP (регистры управления/состояния)

0x0000 0100

0x0001 FFFF

Зарезервированные адреса

0x0002

0000

0x0002 FFFF

Блок 0 – Адреса нормальных слов (32 разрядные,

 

 

 

48 разрядные слова)

0x0003

0000

0x0003 FFFF

Блок 1 – Адреса нормальных слов (32 разрядные,

 

 

 

48 разрядные слова)

0x0004

0000

0x0005 FFFF Блок 0 – Адреса коротких слов (16 разрядные слова)

0x0006

0000

0x0007 FFFF Блок 1 – Адреса коротких слов (16 разрядные слова)

Таблица 5.1. Адреса внутренней памяти ADSP-21060

Адресное пространство нормальных слов и адресное пространство коротких слов, фактически, занимают одну и ту же физическую память. Например, адрес нормального слова 0x0002 0000 (при обращении к 32 разрядным данным в адресном пространстве нормальных слов) обозначает то же самое местоположение, что и адреса короткого слова 0x0004 0000 и 0x0004 0001.

К 4 Мбитам памяти процессора ADSP 21060 можно обращаться с использованием адресации нормальных слов, адресации коротких слов или их комбинации. Адреса нормальных слов лежат в диапазоне от 0x0002 0000 до 0x0003 FFFF и занимают 4 Мбита памяти, если слова 32 разрядные (128 К x 32). Диапазон адресов нормальных слов, если слова 48 разрядные (80 К x 48), также занимает 4 Мбита памяти, но в конце блока 0 и блока 1 есть «несуществующие» адреса (более подробно о физическом расположении 48 разрядных и 32 разрядных слов в памяти см. в разделе «Организация внутренней памяти и размер слова»). Адреса коротких слов лежат в диапазоне от 0x0004 0000 до 0x0007 FFFF и занимают точно 4 Mбита памяти (256 К x 16).

Для адресации нормальных слов каждый 2 Мбитный блок памяти содержит 64 К адресуемого пространства (для 32 разрядных слов данных), а для адресации коротких слов каждый 2 Мбитный блок содержит 128 К адресуемого пространства.

132

Память 5

Адреса нормальных и коротких слов могут генерироваться по всем трем шинам: DM, РМ и I/O. Генерация адреса коротких слов выполняется по шине I/O, когда внешнее устройство считывает из внутренней памяти ADSP 2106x или записывает в нее (это не относится к передачам по DMA).

Возможность адресации коротких слов позволяет увеличить объем 16 разрядных данных, которые могут храниться во внутренней памяти, а также позволяет адресовать 32 разрядные данные, разделяя их на старшее слово (MSW) и младшее слово (LSW). При считывании из памяти 16 разрядные короткие слова расширяются до 32 разрядных и могут либо дополняться по знаку в старших разрядах, либо заполняться нулями в младших разрядах (это определяется битом SSE в регистре MODE1).

Таблица векторов прерываний ADSP 2106x размещается в начале адресного пространства нормальных слов (с 0x0002 0000 по 0x0002 007F), когда начальная загрузка процессора выполняется из внешнего источника (из EPROM, хост процессора или через линк порт). Если процессор находится в режиме «нет начальной загрузки», то таблица векторов прерываний размещается во внешней памяти (с 0x0040 0000 по 0x0040 007F). Если бит IIVT в регистре SYSCON установлен, то таблица векторов прерываний постоянно находится во внутренней памяти независимо от режима начальной загрузки.

5.2.2. Пространство внутренней памяти ADSP-21062

Объем памяти процессоров ADSP 21062 и ADSP 21060 различен (см. ниже)

Процессор

Общий объем

Максимальный объем

Максимальный объем

 

памяти

памяти данных

памяти программы

ADSP 21060

4 Мбита

128 К x 32

80 К x 48

ADSP 21062

2 Мбита

64 К x 32

40 К x 48

Память в ADSP 21062 разделена на два равных блока – блок 0 и блок 1, таким же образом, как и в ADSP 21060. Пространство памяти многопроцессорной системы и пространство внешней памяти у процессоров ADSP 21062 и ADSP 21060 одинаковы.

Блок 0 в ADSP 21062 располагается в адресном пространстве нормальных слов, начиная с адреса 0x0002 0000, блок 1 – с адреса 0x0002 8000. Карта 2 х Мбит внутренней памяти ADSP 21062 приведена на рис. 5.7a и в табл. 5.2a. Диапазон адресов псевдонимов блока 1 будет фактически располагаться в блоке 1, 0x0002 8000 – 0x0002 FFFF в адресном пространстве нормальных слов, 0x0005 0000 – 0x0005 FFFF в адресном пространстве коротких слов.

133

5 Память

0x0000 0000

0x0000 00FF

Регистры IOP (регистры управления/состояния)

0x0000 0100

0x0001 FFFF

Зарезервированные адреса

0x0002 0000

0x0002 7FFF

Блок 0 – адреса нормальных слов

0x0002 8000

0x0002 FFFF

Блок 1 – адреса нормальных слов

0x0003 0000

0x0003 7FFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

адреса нормальных слов

0x0003 8000

0x0003 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

адреса нормальных слов

0x0004 0000

0x0004 FFFF

Блок 0 адреса коротких слов

0x0005 0000

0x0005 FFFF

Блок 1 адреса коротких слов

0x0006 0000

0x0006 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

адреса коротких слов

0x0007 0000

0x0007 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

адреса коротких слов

Таблица 5.2а. Адреса внутренней памяти ADSP-21062

5.2.3. Пространство внутренней памяти ADSP-21061

Объем памяти у процессоров ADSP 21061 и ADSP 21060 различен (см. ниже).

Процессор

Общий объем

Максимальный объем

Максимальный объем

 

памяти

памяти данных

памяти программы

ADSP 21060

4

Мбита

128 К x 32

80 К x 48

ADSP 21062

1

Мбит

32 К x 32

16 К x 48

Память, расположенная на кристалле процессора ADSP 21061, разделена на два равных блока, блок 0 и блок 1, так же как и память ADSP 21060. Пространство памяти многопроцессорной системы и пространство внешней памяти у процессоров ADSP 21061 и ADSP 21060 одинаковы.

Блок 0 процессора ADSP 21061 располагается в адресном пространстве нормальных слов, начиная с адреса 0x0002 0000, блок 1 – с адреса 0x0002 4000. Карта памяти для 1 Мбита внутренней памяти ADSP 21061 показана на рис. 5.7б и в таблице 5.2б. Диапазон адресов псевдонимов блока 1 будет фактически располагаться в блоке 1, 0x0002 4000 – 0x0002 7FFF в адресном пространстве нормальных слов, 0x0004 8000 – 0x0004 FFFF в адресном пространстве коротких слов.

134

Память 5

0x0000 0000

Регистры IOP

0x0000 0100

Зарезервированное

адресное

пространство

0x0001 FFFF

0x0002 0000

Блок 0

0x0002 8000

Блок 1

0x0003 0000

Псевдоним блока 1

0x0003 8000

Псевдоним блока 1

0x0003 FFFF

Адреса нормальных слов

Доступная для использования память (блок 0 и блок 1):

64 К х 32 и/или 40 К х 48

0x0004 0000

Блок 0

0x0005 0000

Блок 1

0x0006 0000

Псевдоним блока 1

0x0007 0000

Псевдоним блока 1

0x0007 FFFF

Адреса коротких слов

Доступная для использования память (блок 0 и блок 1): 128 К х 16

Рис. 5.7а. Пространство внутренней памяти ADSP-21062

135

5 Память

0x0000

0000

0x0000 00FF

Регистры IOP (регистры управления/состояния)

0x0000

0100

0x0001 FFFF

Зарезервированные адреса

0x0002

0000

0x0002 3FFF

Блок 0 – адреса нормальных слов

0x0002

4000

0x0002 7FFF

Блок 1 – адреса нормальных слов

0x0002

8000

0x0002 BFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

 

адреса нормальных слов

0x0002 C000 0x0002 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

 

адреса нормальных слов

0x0003

0000

0x0003 3FFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

 

адреса нормальных слов

0x0003

4000

0x0003 7FFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

 

адреса нормальных слов

0x0003

8000

0x0003 BFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

 

адреса нормальных слов

0x0003 C000 0x0003 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) –

 

 

 

адреса нормальных слов

0x0004

0000

0x0004 7FFF

Блок 0 – адреса коротких слов

0x0004

8000

0x0004 FFFF

Блок 1 – адреса коротких слов

0x0005

0000

0x0005 7FFF

Псевдоним блока 1 (т. е. доступ в блок 1) – адреса

коротких слов

 

0x0005

8000

0x0005 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) – адреса

коротких слов

 

0x0006

0000

0x0006 7FFF

Псевдоним блока 1 (т. е. доступ в блок 1) – адреса

коротких слов

 

0x0006

8000

0x0006 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) – адреса

коротких слов

 

0x0007

0000

0x0007 7FFF

Псевдоним блока 1 (т. е. доступ в блок 1) – адреса

коротких слов

 

0x0007

8000

0x0007 FFFF

Псевдоним блока 1 (т. е. доступ в блок 1) – адреса

коротких слов

 

Таблица 5.2б. Адреса внутренней памяти ADSP-21061

5.2.4 Перенесение кодов из ADSP-21060 в ADSP-21062 или ADSP-21061

Для облегчения перенесения кодов между процессорами ADSP 2106x используется система создания псевдонимов блока 1, которая устраняет необходимость в изменении кодов. Например, блок 0 в ADSP 21062 начинается в пространстве адресов нормальных слов с адреса 0x0002 0000. Блок 1 в ADSP 21062 начинается в конце блока 0 со смежными (продолжающимися) адресами. Остающиеся адреса во внутренней памяти делятся на блоки, называемые псевдонимами блока 1. Создание псевдонимов позволяет сохранять любой код

136

Память 5

0x0000 0000

Регистры IOP

0x0000 0100

Зарезервированное

пространство

памяти

0x0001 FFFF

0x0002 0000

Блок 0

0x0002 4000

Блок 1

0x0002 8000

Псевдоним блока 1

0x0002 C000

Псевдоним блока 1

0x0003 0000

Псевдоним блока 1

0x0003 4000

Псевдоним блока 1

0x0003 8000

Псевдоним блока 1

0x0003 C000

Псевдоним блока 1

0x0003 FFFF

Адреса нормальных слов

Доступная для использования память (блок 0 и блок 1):

32 К х 32

и/или

16 К х 48

0x0004 0000

Блок 0

0x0004 8000

Блок 1

0x0005 0000

Псевдоним

блока 1

0x0005 8000

Псевдоним

блока 1

0x0006 0000

Псевдоним

блока 1

0x0006 8000

Псевдоним

блока 1

0x0007 0000

Псевдоним

блока 1

0x0007 80000

Псевдоним

блока 1

0x0007 FFFF

Адреса коротких слов

Доступная для использования память (блок 0 и блок 1): 64 К х 16

Рис. 5.7б. Пространство внутренней памяти ADSP-21061

или данные из блока 1 в ADSP 21060 по тем же самым адресам в ADSP 21062 – эти адреса будут псевдонимами фактического блока 1 процессора. Подобная структура создания псевдонимов формируется и в ADSP 21061. (см. карты памяти для процессоров ADSP 21061 и ADSP 21062).

137

5 Память

5.2.5. Пространство памяти многопроцессорной системы

Пространство памяти многопроцессорной системы отображается во внутреннюю память других процессоров ADSP 2106x в многопроцессорной системе. Это позволяет каждому ADSP 2106x обращаться к внутренней памяти и к отображенным в карте памяти регистрам IOP других процессоров.

Когда поле адреса E нулевое, а поле М ненулевое, то образуется адрес пространства памяти многопроцессорной системы, как показано на рис. 5.5. Значение поля М определяет идентификатор (ID2 0) того внешнего процессора ADSP 2106x, к которому будет осуществляться обращение, и только этот процессор будет реагировать на циклы чтения/записи. Если поле М=111, то выполняется широковещательная запись во все процессоры. Все процессоры реагируют на этот адрес, как если бы использовался идентификатор, разрешающий запись в их внутреннюю память.

Вместо прямого обращения к собственной внутренней памяти ADSP 2106x может также обращаться к ней через пространство памяти многопроцессорной системы, используя собственный ID. В этом случае процессор просто считывает из собственной внутренней памяти или записывает в нее и не делает попытку доступа по внешней системной шине. (заметим, что это обращение к собственной внутренней памяти через пространство памяти многопроцессорной системы осуществляется только по адресу, сгенерированному ядром процессора, а не по адресу, сгенерированному контроллером DMA).

Если оба поля E и М адреса на внешней шине нулевые, тогда адрес будет игнорироваться. Исключение составляет только случай, когда ID процессора также не равен нулю, т. е. М=ID2 0=000. Адреса с М=ID2 0=000 разрешены только в системах с одним процессором.

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

Для получения дополнительной информации относительно обращения к пространству памяти многопроцессорной системы см. разделы «Прямое чтение и прямая запись ведомого» и «Передача данных через буферы EPBx» в главе

Многопроцессорная система этого руководства.

5.2.6. Пространство внешней памяти

К внешней памяти можно обращаться через внешний порт по шинам DM, РМ и шине внешнего порта (EP). DAG1, программный автомат (и DAG2) и IOP управляют этими шинами.

138

Память 5

32 разрядные адреса генерируются DAG1 и устройством I/О по шине адреса DM и шине адреса I/O, что позволяет адресовать полный объем памяти размером 4 гигаслова. Программный автомат и DAG2 генерируют 24 разрядные адреса по шине адреса РМ, ограничивая адресацию 12 младшими мегасловами (с 0x0040 0000 по 0x00FF FFFF).

5.2.7. Ограничения при обращении к пространству памяти

Три внутренних шины (DM, РМ и I/O) ADSP 2106x могут использоваться для обращения к карте памяти процессора согласно следующим правилам:

По шине DM можно обращаться ко всему пространству памяти.

По шине РМ можно обращаться только к пространству внутренней памяти и к 12 младшим мегасловам пространства внешней памяти.

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

Заметим, что в Версии кристалла 1.0 (Silicon Revision 1.0) и более ранних версиях при операции адресации с предмодификацией не должно изменяться пространство памяти адреса. Например, предмодификация адреса в пространстве внутренней памяти не должна давать адрес в пространстве внешней памяти. Есть одно исключение из этого правила: команда косвенного перехода (JUMP) или команда вызова (CALL) с пред модификацией адреса могут вызывать переход из внутренней памяти во внешнюю. Версии кристалла 2.0 (Silicon Revision 2.0) и более поздние версии не имеют ограничений на предмодификацию.

5.3. Организация внутренней памяти и размер слова

Во внутренней SRAM размещаются следующие типы слов:

48 разрядные команды,

32 разрядные данные с плавающей точкой,

16 разрядные короткие слова данных.

40 разрядные слова данных с плавающей точкой повышенной точности размещаются в 48 разрядных словах. 40 бит выравниваются по левому краю (биты 47 8).

Если ядро процессора обращается к своей внутренней памяти, то размер слова определяется согласно следующим правилам:

139

5 Память

При выборке команды всегда считывается 48 разрядное слово;

При чтении/записи с использованием адресации нормальных слов производятся операции с 32 разрядными или 48 разрядными словами в зависимости от того, как блок памяти сконфигурирован в регистре SYSCON;

При чтении/записи с использованием адресации коротких слов всегда производятся операции с 16 разрядными словами;

При чтении/записи регистра PX по шине РМ (DAG 2) всегда производятся операции с 48 разрядными словами (если не используется адресация коротких слов);

При чтении/записи регистра PX по шине DM (DAG 1) всегда производятся операции с 40 разрядными словами (если не используется адресация коротких слов).

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

5.3.1. 32-разрядные и 48-разрядные слова

Каждый 2 Мбитный блок памяти процессора ADSP 21060 физически организован как шестнадцать 16 разрядных столбцов объемом 8 Кслов каждый. (у ADSP 21062 каждый 1 Мбитный блок памяти организован аналогично, за исключением того, что объем столбца – 4 Кслова). Для 48 разрядных команд требуются три смежных столбца памяти, для 32 разрядных слов данных требуются два смежных столбца.

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

16 столбцов + 3 столбца в группе = 5 групп.

В итоге имеется пять доступных групп; один столбец (16 й) не используется. Т. о., 2 Мбитный блок памяти ADSP 21060, который полностью состоит из 48 разрядных слов, обеспечивает:

8 К × 5 групп = 40 Кслов для хранения команд.

Для 32 разрядных слов данных столбцы группируются по два. В блоке памяти, целиком состоящем из 32 разрядных слов:

140