кристала, і до периферійних пристроїв. Через нього можна звертатися до внутрішньої пам'яті інших ADSP-2106х, з'єднаних в многопроцессорную систему. Схема з'єднання із загальною шиною дозволяє реалізовувати одне об'єднане адресний простір, в якому можуть зберігатися і код, і дані.
Зовнішня пам'ять може бути 16 -, 32 - або 48-розрядна; контролер прямого доступу в пам'ять (DMA) автоматично упаковує зовнішні дані в слова відповідної розрядності: 48-розрядні команди або 32-розрядні дані. Зауважимо, що внутрішня пам'ять розділена на два блоку, звані блок 0 і блок 1, а зовнішній простір пам'яті розділене на чотири банку.
Метод подвійного доступу до пам'яті
У процесорах сімейства ADSP-2100 і ADSP-21000 пам'ять традиційно розділяється на пам'ять програми (Для зберігання команд) і на пам'ять даних (для зберігання даних). Для модифікованої гарвардської архітектури процесорів характерна можливість зберігання даних у пам'яті програми. У ADSP-2106x підтримується поділ розташованих на кристалі шин на окремі шини: для пам'яті програми і пам'яті даних (як у сімействі ADSP-21000), але не обмежується використання одного з двох блоків пам'яті для зберігання програми, а іншого - для зберігання даних. Така організація дозволяє вільно конфігурувати пам'ять для зберігання різних комбінацій коду і даних.
Наявність незалежних шин пам'яті програми і пам'яті даних дозволяють ядру процесора ADSP-2106x одночасно звертатися до команд і даними в обох блоках пам'яті. Якщо необхідно звернутися до двох слів в одному і тому ж блоці пам'яті (по одній і тій же шині) за допомогою однієї команди, то буде потрібно додатковий цикл. Команди вибираються з пам'яті по шині пам'яті програми або з кеша команд. До даних можна звертатися по шині пам'яті даних (використовуючи DAG1) і по шині пам'яті програми (використовуючи DAG2). Схема з'єднання шин в ADSP-2106x показана на рис.5.1.
Два блоки пам'яті процесорів ADSP-2106x можуть бути налаштовані для зберігання різних комбінацій 48-розрядних команд і 32-розрядних даних. Тим не менш, максимальна ефективність (тобто виконання двох команд доступу до даних за один цикл) досягається, коли в одному блоці знаходяться команди і дані пам'яті програми, а в іншому блоці - тільки дані пам'яті даних. Це означає, що для команди, що вимагає двох звернень до даних, шина РМ (і DAG2) буде використовуватися для звернення до даних з блоку, що містить і команди, і дані, а шина DM (і DAG1) буде використовуватися для звернення до даних з блоку, що містить тільки дані, причому обирана команда повинна бути доступна з кеша. Інший спосіб полягає в тому, щоб зберігати один операнд у зовнішній пам'яті, а інший - в будь-якому блоці внутрішньої пам'яті.
При реалізації цифрових фільтрів і швидкого перетворення Фур'є (FFT) з використанням процесорів при виконанні деяких команд повинні бути доступні два операнда даних. У цифровому фільтрі, наприклад, коефіцієнти фільтра можуть зберігатися у вигляді 32-розрядних слів у тому ж самому блоці пам'яті, який містить 48-розрядні команди, в той час як 32-розрядні вибірки даних зберігаються в іншому блоці. Це дозволяє виконати в одному циклі команду з подвійним доступом до даних, коли коефіцієнти фільтра вибираються по шині РМ з використанням DAG2, а команда - З кеша. p> Щоб забезпечити паралельний доступ до двох областей пам'яті за один цикл, необхідно виконати наступні умови:
дві адреси повинні розміщуватися в різних блоках пам'яті (Тобто один в блоці 0, інший в блоці 1);
один адреса повинна генеруватися DAG1, а інший - DAG2;
адресу DAG1 не повинен вказувати на той же самий блок пам'яті, з якого буде обрана команда;
команда повинна бути наступного типу:
Compute, Rx = DM (10-17, М0-М7), Ry = PM (18-115, М8-М15); (Зауважимо, що читання і запис взаємозамінні).
Запам'ятайте, що якщо протягом передачі з використанням DAG2 обраній команди немає в кеші, то відбудеться невдале звернення до кешу.
Кеш-команди і звернення до даних по шині пам'яті
Зазвичай в ADSP-2106x команди вибираються по 48-розрядній шині даних пам'яті програми (PMD). Однак коли процесор виконує команду з подвійним доступом до даних, яка вимагає, щоб дані зчитувалися або записувались по шині PMD, то виникає конфлікт при використанні цієї шини. Кеш команд дозволяє вирішити цей конфлікт, забезпечуючи команду (якщо тільки вона збереглася в кеші після того, як була виконана вперше).
Забезпечуючи команду, кеш дозволяє ядру процесора звернутися до даних по шині PMD; ядро ​​процесора вибирає команду з кешу замість того, щоб вибирати її з пам'яті, так що в процесорі одночасно з вибором команди можуть передаватис...