Руководство пользователя по сигнальным процессорам Sharc
.pdfПамять 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