Смекни!
smekni.com

Организация памяти СП. Доступ к памяти. Блоки памяти (стр. 3 из 4)

ADSP-2106x переводит свои выводы данных в третье состояние.

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

Заметим, что если запись в память является частью условной команды, которая не выполняется из-за того, что условие ложно, то ADSP-2106x выводит адрес и сигнал выбора памяти для записи, но не выставляет строб записи и не выводит никаких данных.

Шины памяти и генерация адресов

В процессоре ADSP-2106x есть три внутренние шины, соединенные с его двухпортовой памятью: шины РМ, DM и шина I/O. Шины РМ и DM совместно используют один порт памяти, а шина I/O - другой порт.

Программный автомат и генераторы адреса данных (DAG1 и DAG2) формируют адреса памяти. Программный автомат выводит 24-разрядный адрес на шину РМ для выбора команды. DAG1 и DAG2 обеспечивают адреса для чтения и записи данных (см. рис.5.1).

Два генератора адреса данных позволяют выполнять косвенную адресацию данных. DAG1 выводит 32-разрядный адрес на шину адреса DM. DAG2 вырабатывает 24-разрядный адрес для обращения к данным по шине данных РМ. DAG1 и DAG2 могут генерировать адреса одновременно - по шине РМА и шине DMA - для двойных операндов чтения/записи, если команда, которая должна быть выбрана, доступна из кэша.

48-разрядная шина PMD используется для передачи команд (и данных), 40-разрядная шина DMD используется для передачи данных. Разрядность шины PMD - 48 бит в соответствие с длиной командного слова. Когда эта шина используется для передачи 32-разрядных данных с плавающей точкой или 32-разрядных данных с фиксированной точкой, то данные выравниваются к 32 старшим разрядам шины.

40-разрядная шина DMD обеспечивает путь для передачи за один цикл содержимого любого регистра в процессоре в любой другой регистр или в любую ячейку внешней памяти. Адреса данных берутся из одного из двух источников: абсолютной величины, определенной в команде (прямая адресация), или с выхода генератора адреса данных (косвенная адресация).32-разрядные данные с фиксированной точкой и 32-разрядные данные с плавающей точкой одиночной точности также выравниваются к 32 старшим разрядам шины.

Регистры РХ, соединяющие шины, позволяют выполнять обмен данными между 48-разрядной шиной PMD и 40-разрядной шиной DMD или между 40-разрядным регистровым файлом и шиной PMD. Эти регистры содержат аппаратные средства для устранения различия в разрядности шин.

Три шины: РМ, DM и I/O - объединяются во внешнем порте процессора, образуя вне кристалла одиночные шины данных (DATA47_0) и адреса (ADDR31 _0).

Обмен данными между шинами памяти

Регистр РХ обеспечивает обмен данными между внутренними шинами: между 48-разрядной шиной PMD и 40-разрядной шиной данных DMD.48-разрядный регистр РХ состоит из двух регистров: 16-разрядного РХ1 и 32-разрядного РХ2. РХ1 и РХ2 могут независимо использоваться в командах, а также рассматриваться как объединенный регистр РХ.

Любой из двух регистров РХ1 и РХ2 или объединенный регистр РХ могут использоваться при передаче данных между универсальными регистрами или между памятью и регистром. Эта передача данных может выполняться по шине PMD или по шине DMD. Регистры РХ могут считываться в регистровый файл данных или записываться из него по шине PMD или по шине DMD.

При передаче данных с использованием регистра РХ данные выравниваются в нем так, как показано на рис.5.3. Когда данные передаются между РХ2 и шиной PMD, то используются 32 старших разряда шины. При передаче данных из РХ2 16 младших разрядов шины PMD заполняются нулями. Когда данные передаются между РХ1 и шиной PMD, то используются 16 средних разрядов шины РМ. При передаче данных из РХ1 биты 15-0 и биты 47-32 заполняются нулями. Когда объединенный регистр РХ используется для передачи данных по шине PMD, то все 48 разрядов могут считываться из памяти программы или записываться в нее. РХ2 содержит 32 старших разряда, а РХ1 содержит 16 младших разрядов 48-разрядного слова.

Например, если необходимо записать по шине PMD 48-разрядное слово в область памяти, называемую Portl, то можно использовать следующие команды:

R0=0x9A00; /* загрузка в R0 16 младших бит */

Rl=0xl2345678; /* загрузка в R1 32 старших бита */ PX1=RO; PX2=R1;

РМ (Portl) =РХ; /* запись 16 младших бит битами 15-0 */

/*и 32 старших бита битами 47-16 шины PMD */

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

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

Процессор Общий

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

Объем Максимальный объем памяти

памяти данных памяти программы ADSP-21060 4Мбита128 К х 3280 К х 48

ADSP-21062 2Мбита64 К х 3240 К х 48

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

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

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

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

Процессор Общий объем Максимальный объем Максимальный объем
памяти памяти данных памяти программы
ADSP-21060 4 Мбита 128 К х 32 80 К х 48
ADSP-21062 1 Мбит 32 К х 32 16 К х 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 в адресном пространстве коротких слов.

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

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

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

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

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

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

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

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

48-разрядные команды, 32-разрядные данные с плавающей точкой, 16-разрядные короткие слова данных.

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

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

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

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

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

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