На основе какой архитектуры процессоров строятся dsp
В статье подробно рассматривается извечная проблема: что лучше выбрать, когда требуется цифровая обработка сигнала – высокопроизводительный микропроцессор или DSP? Подробно рассматриваются все аспекты проблемы, включая трудоемкость разработки и стоимость компонентов. Статья написана с точки зрения разработчика и представляет безусловный интерес для инженеров-проектировщиков микропроцессорных систем.
Разработчики систем цифровой обработки сигналов имеют широкий выбор процессоров для решения своих задач. Наряду с микропроцессорами общего назначения, традиционными специализированными сигнальными процессорами DSP, все большее распространение получают гибридные процессоры. Среди них можно выделить собственно гибридные процессоры, т.е. процессоры, имеющие характерные особенности архитектуры как процессоров общего назначения, так и сигнальных процессоров, а также процессоры с расширениями DSP (DSP enhanced processors) — процессоры общего назначения, с точки зрения архитектуры, но дополненные специализированными блоками или сопроцессорами DSP, и многоядерные системы. Некоторое представление о таком разнообразии дает рисунок 1, на котором различные семейства процессоров распределены в соответствии с их производительностью и оптимизацией для обработки сигналов. Нетрудно найти процессор под любую задачу — гораздо сложнее выбрать оптимальный вариант.
Особенности алгоритмов DSP
Особенности DSP
Большие объемы вычислений
Параллельно работающие вычислительные блоки, аппаратное ускорение основных функций DSP
Высокая точность вычислений
Многоразрядные регистры аккумулятора, охранные биты, аппаратная реализация арифметики с насыщением
Высокая пропускная способность памяти
Гарвардская архитектура, поддержка параллельных передач данных
Предсказуемость параметров доступа к данным
Специализированные способы адресации
Локальность времени выполнения
Аппаратная реализация циклов, потоковая обработка прерываний
Блок умножения или умножения с накоплением, выполняющий операцию за 1 цикл, команда умножения с накоплением
Статическая память без кэша, но с прямым доступом
Ограничения реального времени
Минимум динамических архитектурных особенностей, встроенная память (ОЗУ) вместо кэша
16-разрядные типы данных, округление, арифметика с насыщением
При выборе процессора для системы цифровой обработки сигнала целесообразно рассматривать следующие факторы:
– производительность;
– трудоемкость разработки;
– доступность, переносимость кода;
– совместимость, поддержка производителем процессоров;
– стоимость;
– размер;
– потребляемая мощность.
Быстродействие процессора определяется тремя факторами: пропускной способностью канала обработки данных, скоростью доступа к памяти и ограничениями реального времени. Скорость обработки данных определяется доступными вычислительными ресурсами и возможностью одновременной работы. Быстродействие подсистемы памяти определяется ее архитектурой (гарвардская или фон-Неймановская), схемотехникой (статическая/динамическая), наличием кэшей и механизмов прямого доступа к памяти. Возможность работы в реальном времени ограничивается недетерминированностью операций и динамическими свойствами процессора. Основные особенности каналов обработки данных в сигнальных процессорах и процессорах общего назначения приведены в таблице 2 для систем начального уровня и в таблице 3 — для высокопроизводительных систем.
Сигнальный процессор начального уровня
Микропроцессор начального уровня
Специализированные аппаратные блоки выполняют все основные арифметические операции за 1 цикл
Умножение и многоразрядные сдвиги, как правило, требуют более 1 цикла
Обычно 16-разрядный, поддерживает и целочисленные, и нецелочисленные операции
32-разрядный, возможны только целые числа
Аппаратная поддержка управления точностью вычислений: «сторожевые» биты, насыщение, режимы округления
Насыщение, округление, как правило, требуют дополнительного цикла
Ограниченный набор битовых операций
Возможен расширенный набор битовых операций
Производительный сигнальный процессор
Производительный микропроцессор
До 8 арифметических модулей
Как правило, от 1 до 3 арифметических модулей
Наличие специализированных арифметических устройств: блок умножения с накоплением, декодер Витерби
Универсальные математические устройства: блок целочисленной арифметики, устройство вычислений с плавающей запятой
Поддержка различных разрядностей данных
Поддержка различных разрядностей данных
Набор битовых операций может варьироваться от очень ограниченного до разнообразного
Возможен расширенный набор битовых операций
Аппаратная обработка округлений и математики с насыщением
Насыщение и округление, как правило, требуют дополнительного цикла
Разработка программ для процессоров общего назначения является, как правило, менее трудоемкой. Сложность вызывает реализация SIMD-вычислений (в любых типах процессоров) — компилятор не всегда оказывается эффективным. С точки зрения поддержки, для DSP доступны библиотеки и инструменты DSP, в то время как для процессоров общего назначения — библиотеки и инструменты. Особенности наборов команд процессоров общего назначения и сигнальных процессоров приведены в таблицах 4 и 5. Что характерно, у простых DSP система команд более сложная, ориентированная на специфические операции, используемые при обработке сигналов.
Данная статья открывает серию публикаций, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В статье дается общее представление об архитектуре процессора. Статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых в Рязанском государственном радиотехническом университете.
Цифровые сигнальные процессоры TMS320C66xх строятся по архитектуре KeyStone и представляют собой высокопроизводительные многоядерные сигнальные процессоры, работающие как с фиксированной, так и с плавающей точкой. Архитектура KeyStone – это разработанный фирмой Texas Instruments принцип изготовления многоядерных систем на кристалле, позволяющий организовывать эффективную совместную работу большого числа ядер DSP- и RISC-типов, акселераторов и устройств периферии с обеспечением достаточной пропускной способности внутренних и внешних каналов пересылки данных, основой чего являются аппаратные компоненты: Multicore Navigator (контроллер обмена данными по внутренним интерфейсам), TeraNet (внутренняя шина пересылки данных), Multicore Shared Memory Controller (контроллер доступа к общей памяти) и HyperLink (интерфейс с внешними устройствами на внутрикристальной скорости).
Архитектура процессора TMS320C6678 [2], наиболее высокопроизводительного процессора в семействе TMS320C66xх, изображена на Рисунке 1. Архитектура может быть разбита на следующие основные компоненты:
- набор операционных ядер (CorePack);
- подсистема работы с общей внутренней и внешней памятью (Memory Subsystem);
- периферийные устройства;
- сетевой сопроцессор (Network Coprocessor);
- контроллер внутренних пересылок (Multicore Navigator);
- служебные аппаратные модули и внутренняя шина TeraNet.
Рисунок 1. Общая архитектура процессора TMS320C6678
Процессор TMS320C6678 работает на тактовой частоте 1.25 ГГц. В основе функционирования процессора лежит набор операционных ядер С66х CorePack, количество и состав которых зависят от конкретной модели процессора. ЦСП TMS320C6678 включает в свой состав 8 ядер DSP-типа. Ядро является базовым вычислительным элементом и включает в свой состав вычислительные блоки, наборы регистров, программный автомат, память программ и данных. Память, входящая в состав ядра, называется локальной.
Кроме локальной памяти, есть память общая для всех ядер – общая память многоядерного процессора (Multicore Shared Memory – MSM). Доступ к общей памяти осуществляется через подсистему управления памятью (Memory Subsystem), которая также включает интерфейс внешней памяти EMIF для обмена данными между процессором и внешними микросхемами памяти.
Сетевой сопроцессор повышает эффективность работы процессора в составе различного рода телекоммуникационных устройств, реализуя аппаратно типовые для данной сферы задачи обработки данных. В основе работы сопроцессора лежат акселератор пакетной передачи данных (Packet Accelerator) и акселератор защиты информации (Security Accelerator). В спецификации на процессор перечислен набор протоколов и стандартов, поддерживаемых данными акселераторами.
Периферийные устройства включают:
- Serial RapidIO (SRIO) версии 2.1 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 4;
- PCI Express (PCIe) версии Gen2 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 2;
- HyperLink – интерфейс внутренней шины, позволяющий коммутировать процессоры, построенные по архитектуре KeyStone, напрямую друг с другом и осуществлять обмен на внутрикристальной скорости; скорость передачи данных – до 50 Gbaud;
- Gigabit Ethernet (GbE) обеспечивает скорости передачи: 10/100/1000 Mbps и поддерживается аппаратным акселератором сетевых коммуникаций (сетевым сопроцессором);
- EMIF DDR3 – интерфейс внешней памяти типа DDR3; имеет разрядность шины 64 бита, обеспечивающую адресуемое пространство памяти до 8 Гбайт;
- EMIF – интерфейс внешней памяти общего назначения; имеет разрядность шины 16 бит и может использоваться для подключения 256MB NAND Flash или 16MB NOR Flash;
- TSIP (Telecom Serial Ports) – телекоммуникационный последовательный порт; обеспечивает скорости передачи до 8 Mбит/с на одну линию при числе линий – до 8;
- UART – универсальный асинхронный последовательный порт;
- I2C – шина внутренней связи;
- GPIO – ввод-вывод общего назначения – 16 выводов;
- SPI – универсальный последовательной интерфейс;
- Таймеры (Timers) – используются для генерации периодических событий.
- модуль отладки и трассировки (Debug and Trace) – позволяет получать отладочным инструментальным средствам доступ к внутренним ресурсам работающего процессора;
- загрузочное ПЗУ (boot ROM) – хранит программу начальной загрузки;
- аппаратный семафор (semaphore) – служит для аппаратной поддержки организации совместного доступа параллельных процессов к общим ресурсам процессора;
- модуль управления питанием – реализует динамическое управление режимами питания компонентов процессора с целью минимизации энергозатрат в моменты, когда процессор работает не в полную мощь;
- схема ФАПЧ – формирует внутренние тактовые частоты процессора из внешнего опорного тактирующего сигнала;
- контроллер прямого доступа в память (EDMA) – управляет процессом пересылки данных, разгружая операционные ядра ЦСП и являясь альтернативой Multicore Navigator.
Основой функционирования многоядерного процессора TMS320C66xх с позиции высокоскоростного обмена данными между всеми многочисленными компонентами процессора, а также внешними модулями, служит внутренняя шина TeraNet.
В следующей статье будет подробно рассмотрена архитектура операционного ядра C66x.
1. Multicore Programming Guide / SPRAB27B — August 2012;
2. TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual / SPRS691C — February 2012.
Характерные особенности RISC-процессоров
- Элемент маркированного списка.
- Фиксированная длина машинных инструкций, простой формат команды.
- Специализированные команды для операций с памятью — чтения или записи. Операции вида Read-Modify-Write («прочитать-изменить-записать») отсутствуют. Любые операции «изменить» выполняются только над содержимым регистров (т.н. архитектура load-and-store).
- Большое количество регистров общего назначения (32 и более).
- Отсутствие поддержки операций вида «изменить» над укороченными типами данных — байт, 16-битное слово. Так, например, система команд DEC Alpha содержала только операции над 64-битными словами, и требовала разработки и последующего вызова процедур для выполнения операций над байтами, 16- и 32-битными словами.
- Отсутствие микропрограмм внутри самого процессора.
История RISC
Предпосылки развития RISC архитектур:
- Обширная замена ассемблера на языки программирования высокого уровня в 1980-х годах. Даже операционные системы все чаще были написаны на языках высокого уровня.
- Недостаток памяти для выполнения сложных оптимизаций в компиляторах.
- Невозможность получить достаточно вычислительной мощности.
Характеристики
Распространенное заблуждение "компьютер с сокращенным набором команд" ошибочно наводит на мысль, что инструкции просто устранены, в результате меньшего набора инструкций. На самом деле, на протяжении многих лет, наборы команд RISC выросли в размерах, и сегодня многие из них имеют больший набор инструкций, чем многие CISC процессоры. Некоторые процессоры RISC, такие как PowerPC имеют наборы инструкций, большие, чем в CISC IBM System/370.
Термин "пониженная" в этой фразе предназначался, для описания тот факта, что объем работы какой-либо одной инструкции снижается, по сравнению со «сложными инструкциями» от CISC - процессоров, которые могут потребовать десятки данных циклов памяти, чтобы выполнить одну команду. В частности, процессоры RISC обычно имеют отдельные инструкции для ввода/вывода и обработки данных.
Процессоры также имели относительно небольшое число регистров, по нескольким причинам:
- Увеличенное количество регистров также подразумевает больше времени сохранение и восстановление содержимого регистра в стеке машины.
- Регистры процессора являются более дорогостоящими , чем внешние ячейки памяти; большие наборы регистров были громоздкими с ограниченными плат или интеграции микросхем.
В первые дни компьютерной индустрии, программирование было сделано в ассемблере или машинном коде, который поощрял мощные и простые в использовании инструкции. Поэтому конструкторы CPU пытались сделать инструкции, которые будут делать столько работы, сколько возможно. С появлением высокоуровневых языков, компьютерные архитекторы начали создавать специальные инструкции непосредственно реализующие определенные центральные механизмы таких языков. Еще одна общая цель состояла в том, чтобы обеспечить все возможные режим адресации для каждой команды, известной как ортогональность, чтобы облегчить реализацию компилятора. Поэтому арифметические операции могут часто имеют результаты, а также операнды непосредственно в памяти.
История
Первые DSP появились в 1970-х годах. Эти процессоры стали логичным развитием специализированных аналогово-цифровых устройств, предназначенных для обработки речи, прежде всего её кодирования и фильтрации (прорыв в соответствующих научно-технических отраслях стал возможен благодаря спросу на эти технологии в годы Второй Мировой войны). Трудоемкость и сложность разработки устройств под каждую возникающую задачу, а также успехи в развитии электронной базы (широкое распространение технологии MOSFET) и математических алгоритмов (БПФ, цифровая фильтрация) привели к возможности создания универсальных, т.е. программируемых, цифровых процессоров, которые могли быть с помощью программ адаптированы для широкого класса задач. Адаптируемость на практике означала снижение стоимости разработок, сокращение времени выхода на рынок (time-to-market), возможность послепродажного обновления алгоритма для устранения ошибок, возможность поддержки новых требований пользователей. Во многих случаях эти возможности с лихвой компенсировали ухудшение производительности по сравнению со специальными ускорителями.
Из-за необходимости обработки в реальном времени и экономии электроэнергии DSP сильно отличались от процессоров общего назначения. В каком-то смысле они были первым примером программируемых вычислительных ускорителей, т.е. процессоров, максимально эффективно решающих определённый класс задач.
Преимущества RISC
- Повышение производительности
- Новый микропроцессор может быть разработан и испытан более быстро.
- Операционная система и прикладные программисты, которые используют инструкции микропроцессора могут легче разрабатывать код с меньшим набором команд.
- Простота RISC обеспечивает большую свободу выбора, как использовать пространство на микропроцессоре.
Содержание
Последние разработки
В 1985 году IBM начала разработку RISC-архитектуры следующего поколения. Проект получил название America Project. Разработка процессора и набора инструкций для него закончилась в 1990 году. Сам кристалл получил название POWER1 и использовался в серверах и рабочих станциях IBM. Он обладал достаточно высоким уровнем производительности, но имел многочиповую компоновку и состоял из 11 различных микросхем. В 1992 году IBM представила бюджетный вариант процессора POWER1, который умещался в одном чипе.
Как оказалось в начале 1990-х годов, RISC-архитектуры позволяют получить большую производительность, чем CISC, за счёт использования суперскалярного и VLIW-подхода, а также за счёт возможности серьёзного повышения тактовой частоты и упрощения кристалла с высвобождением площади под кэш, достигающий огромных ёмкостей. Также RISC-архитектуры позволили сильно снизить энергопотребление процессора за счёт уменьшения числа транзисторов. Первое время RISC-архитектуры с трудом принимались рынком из-за отсутствия программного обеспечения для них. Эта проблема была решена переносом UNIX-подобных операционных систем (SunOS) на RISC-архитектуры.
В настоящее время многие архитектуры процессоров являются RISC-подобными, к примеру, ARM, DEC Alpha, SPARC, AVR, MIPS, POWER и PowerPC. Наиболее широко используемые в настольных компьютерах процессоры архитектуры x86 ранее являлись CISC-процессорами, однако новые процессоры, начиная с Intel Pentium Pro, являются CISC-процессорами с RISC-ядром. Они непосредственно перед исполнением преобразуют CISC-инструкции x86-процессоров в более простой набор внутренних инструкций RISC. После того, как процессоры архитектуры x86 были переведены на суперскалярную RISC-архитектуру, можно сказать, что большинство существующих ныне процессоров основаны на архитектуре RISC.
Использование RISC - архитектур
RISC - архитектуры в настоящее время используются в широком спектре платформ, от сотовых телефонов и планшетных компьютеров до некоторых из самых быстрых в мире суперкомпьютеров, таких как K компьютер, самый быстрый из TOP500 списка в 2011 году.
Суперкомпьютеры
- IBM 's Power Architecture, используется во многих суперкомпьютерах, серверах среднего уровня и рабочих станций IBM.
- Hewlett-Packard's PA-RIS, также известный как HP-PA (снят с производства в конце 2008 года).
Мобильные системы
- Архитектура ARM доминирует на рынке малой мощности и низкой стоимости встраиваемых систем (обычно 200-1800 МГц в 2014 году). Он используется в ряде систем, таких как большинство Android систем, в Apple, iPhone и IPad, Microsoft Windows Phone (бывший Windows Mobile ), RIM устройства, Nintendo Game Boy Advance и Nintendo DS, и т.д. (напр. Рис. 3)
- В PlayStation, PlayStation 2, Nintendo 64, PlayStation Portable.
- Hitachi 's SuperH, первоначально широко используется в Сега Супер 32X, Saturn и Dreamcast, в настоящее время разработаны и продаются Renesas как SH4.
- Atmel AVR используется в различных продуктах, начиная от Xbox контроллеров до BMW автомобилей.
- SPARC, с помощью Oracle (ранее Sun Microsystems ) и Fujitsu.
Начало исследований
Первая система, которая может быть названа системой «RISC», — суперкомпьютер «CDC 6600», который был создан в 1964 году, за десять лет до появления соответствующего термина. CDC 6600 имел архитектуру «RISC» всего с двумя режимами адресации («регистр+регистр» и «регистр+непосредственное значение») и 74 кодами команд (тогда как 8086 имел 400 кодов команд). В «CDC 6600» было 11 конвейерных устройств арифметической и логической обработки, а также пять устройств загрузки и два устройства хранения. Память была много блочной, поэтому все устройства загрузки-хранения могли работать одновременно. Базовая тактовая частота/частота выдачи команд была в 10 раз выше, чем время доступа к памяти. Джим Торнтон и Сеймур Крэй, разработчики «CDC 6600», создали для него мощный процессор, позволявший быстро обрабатывать большие объёмы цифровых данных. Главный процессор поддерживался десятью простыми периферийными процессорами, выполнявшими операции ввода-вывода и другие функции ОС. Позднее появилась шутка, что термин «RISC» на самом деле расшифровывается как «Really invented by Seymour Cray» (пер. с англ.: «на самом деле придуман Сеймуром Крэем»).
Если быть уж совсем точным, то первой компанией, начавшей разработку RISC-архитектуры, стала IBM. Еще в 1974 году стартовала разработка процессора IBM 801, которая и заложила первые основы для этой платформы. А проект Berkeley RISC окончательно сформировал архитектуру. Все х86-процессоры, решения компании Motorola и подавляющее большинство выпущенных в 1980-е годы кристаллов имели архитектуру CISC (Complex Instruction Set Computing). Совокупность всех особенностей привела к тому, что чипы стали не только сложными и дорогими в производстве, но и достигли своего потолка производительности. Для дальнейшего увеличения быстродействия требовалось наращивать количество транзисторов, однако освоенные технологические нормы не позволяли создавать более сложные решения. С этим столкнулась Intel при выпуске семейства i486. Для поднятия производительности они внесли изменения в архитектуру процессоров, добавив кэш-память, множители и конвейеры. Словом, 486-е «камни» получили некоторые «фишки» архитектуры RISC. Тем не менее к созданию RISC-платформы американская компания никакого отношения не имеет. Своим созданием архитектура обязана американскому инженеру Дэвиду Паттерсону, который руководил проектом Berkeley RISC с 1980 по 1984 годы.
Первоначальной идеей, которая затем воплотилась в столь масштабный проект Berkeley RISC, стало исследование работы Motorola 68000. В ходе наблюдений выяснилось, что программы попросту не использовали подавляющее большинство инструкций, заложенных в процессор. Например, система Unix при компиляции использовала лишь 30% команд. Поэтому в рамках проекта Berkeley RISC планировалось создать такой процессор, который бы содержал лишь самые необходимые инструкции.
Дебютными решениями стали RISC I и RISC II — детища Паттерсона и проекта Berkeley RISC. Первый содержал более чем 44 000 транзисторов и работал на частоте 4 МГц. Такой процессор при выполнении небольших программ был в среднем в два раза быстрее VAX 11/780 и примерно в четыре раза производительнее, чем «камень» Zilog Z8000. RISC II отличался от предшественника большим количеством инструкций: 39 против 32. Он был более быстрым. Его преимущество над процессором VAX достигало 200%, а Motorola 68000 в некоторых программах был медленнее примерно в четыре раза.
Практически в то же время, в 1981 году, Джон Хеннесси начал аналогичный проект, названный «архитектура „MIPS“» в Стэнфордском университете. Создатель «MIPS» практически полностью сфокусировался на конвейерной обработке, попытавшись «выжать всё» из этой технологии. Конвейерная обработка использовалась и в других продуктах, некоторые идеи, реализованные в MIPS, позволили разработанному чипу работать значительно быстрее аналогов. Наиболее важным было требование выполнения любой из инструкций процессора за один такт. Это требование позволило конвейеру работать на гораздо больших скоростях передачи данных и привело к значительному ускорению работы процессора. С другой стороны, исполнение этого требования имело негативный побочный эффект в виде удаления из набора инструкций таких полезных операций, как умножение или деление. В первые годы попытки развития архитектуры «RISC» были хорошо известны, однако оставались в рамках породивших их университетских исследовательских лабораторий. Многие в компьютерной индустрии считали, что преимущества процессоров «RISC» не проявятся при использовании в реальных продуктах из-за низкой эффективности использования памяти в составных инструкциях. Однако с 1986 года исследовательские проекты «RISC» начали выпускать первые работающие продукты.
DSP-процессоры: назначение и особенности
Большинство из нас в повседневной жизни постоянно сталкивается с различными компьютерными системами: процессорами общего назначения (general-purpose, в основном x86) в ноутбуках и рабочих станциях, их мощными многоядерными версиями в датацентрах, мобильными процессорами в телефонах, многочисленными контроллерами в бытовой технике и на транспорте. Но помимо всех упомянутых вариантов есть ещё одно важное, хотя и редко упоминаемое семейство: цифровые сигнальные процессоры, чаще именуемые Digital Signal Processors или просто DSP.
Именно DSP решают задачи обработки больших объёмов информации в реальном времени, возникающие при передаче данных (звонков и мобильного Интернета) в мобильных сетях, обработке фотографий и восстановлению звука. Даже в топовых телефонах вся эта работа выполняется не на мощных ARM-ядрах, а на специализированных DSP.
В этой статье будет кратко изложена история DSP, их отличие от процессоров общего назначения, особенности их архитектуры, а также будет подробно рассказано о способах оптимизации кода.
Преимущества DSP
Чем же именно отличаются DSP от обычных мощных процессоров общего назначения, особенно таких мощных как Intel Xeon или Cortex-A, и почему процессоры общего назначения не используют для обработки сигналов? Чтобы ответить на этот вопрос посмотрим на топологию современного процессора от Intel.
Из рисунка мы видим, что значительная часть площади кристалла отводится не под вычислительные ресурсы, а под сложную логику определения зависимостей, спекулятивного исполнения (out-of-order speculative execution) и составления расписания (scheduling). В сумме накладные расходы приводят к тому, что “КПД” процессора, т.е. энергия, затрачиваемая на выполнение реальных вычислений, составляет менее 1%:
While a simple arithmetic operation requires around 0.5–20 pJ, modern cores spend about 2000 pJ to schedule it.
Conventional multicore processors consume 157–707 times more energy than customized hardware designs.
(из статьи “Rise and Fall of Dark Silicon”, приведённой в списке литературы).
Чтобы сделать сравнение более конкретным, возьмём мощный процессор общего назначения от Intel и мощный DSP фирмы Texas Instruments (например Skylake Xeon Platinum 8180M и TMS320C6713BZDP300):
Продолжаем рассматривать устройство многоядерного DSP TMS320C6678. Данная статья посвящена устройству операционных ядер процессора. Архитектура ядер описывается кратко с акцентом на сравнении платформы С66х с более ранними хорошо известными моделями С6000.
Операционное ядро сигнального процессора – это основной элемент, непосредственно реализующий вычислительные действия, направленные на осуществление обработки сигнала в соответствии с алгоритмом, диктуемым заложенной в процессор программой. Многоядерные процессоры семейства TMS320C66xх содержат набор операционных ядер, что является предпосылкой соответствующего роста вычислительной производительности устройства по сравнению с одноядерными процессорами. Далее будет рассмотрено одно типовое ЦСП-ядро процессора TMS320C66хх.
Процессоры TMS320C66x являются развитием платформы С6000 сигнальных процессоров фирмы Texas Instruments. Основы построения архитектуры являются одинаковыми, однако, их возможности и, частично, интерпретация их функционирования, претерпели некоторые модификации.
Ядро процессора TMS320C66xх строится по архитектуре с очень длинным командным словом (Very Long Instruction Word – VLIW – «Ви-Эл-Ай-Дабл-Ю»). Каждое ядро включает 8 работающих параллельно вычислительных блоков (2 умножителя и 6 АЛУ) и регистровый файл из 64 32-разрядных регистров. По сравнению с последними моделями процессоров линейки TMS320C6000 процессоры TMS320C66xх имеют следующие особенности.
-
В 4 раза увеличено число выполняемых за такт операций умножения с накоплением как для фиксированной, так и для плавающей точки. Каждое ядро способно выполнить за один такт 32 умножения 16х16 бит с фиксированной точкой или 8 умножений 32х32 бита в формате с плавающей точкой.
Рисунок 1 — Пример векторного перемножения
Процессоры TMS320C66x содержат двойной набор вычислительных блоков – один на стороне А (Data Path A); другой на стороне В (Data Path B). Набор вычислительных блоков классический и включает умножитель .M, АЛУ .L, сдвигатель .S и генератор адреса данных .D. В современных ЦСП функции каждого из этих блоков существенно расширены и могут частично перекрываться, однако, для упрощения понимания удобно использовать классическую терминологию. Все блоки работают параллельно, извлекая операнды из регистров регистрового файла (А/В Register File) и возвращая результат соответствующей операции в один из регистров.
Данные, прежде чем попасть в регистровый файл на обработку, хранятся в памяти данных внутренней или внешней (L1D, L2 Cache/SRAM, MSM SRAM, DDR3 SRAM). В память записываются также результаты обработки и промежуточные массивы данных. Подсистема памяти процессора TMS320C66x будет рассмотрена отдельно в соответствующем разделе.
Данные обрабатываются в соответствии с программой, загруженной на процессор. В ходе работы программа располагается в памяти программ (L1P, L2 Cache/SRAM, MSM SRAM, DDR3 SRAM). За чтение программы из памяти (Instruction Fetch), ее декодирование (Decode) и распределение по соответствующим исполнительным элементам (Dispatch) отвечает программный автомат.
Рисунок 2 — Архитектура ядра процессора C66x
Дополнительными аппаратными модулями в составе ядра процессора являются набор регистров контроля и управления (Control Registers), логика внутрисхемной эмуляции (In-Circuit Emulation), контроллер прерываний и исключений (Interrupt and Exception Controller), менеджер работы с памятью, включающий модуль защиты памяти (Program/Data Memory Controller), и ряд других компонентов.
Далее рассмотрим более подробно вычислительные блоки и регистры операционного ядра. При этом будем акцентировать внимание только на отличиях ядра С66х от ядер предшествующих моделей процессоров.
В процессорах С66х применен принцип упакованных команд – наиболее часто используемые команды имеют 16-разрядную длину при базовой длине командного слова 32 разряда. Это позволяет экономить память программ. Программный автомат процессора способен извлекать из памяти, декодировать и распределять до 15 команд одновременно.
По каналам пересечения сторон А и В можно передавать только 64-разрядные слова.
Возможности по загрузке операндов из памяти в регистры не изменились – четыре 32-разрядных слова за один такт. Возможности записи в память расширены до четырех 32-разрядных слова за такт по сравнению с процессорами TMS320C67x.
Команды выбираются из памяти всегда по 8 слов, образуя пакет выборки. При этом такой пакет может в действительности включать до 14 команд за счет наличия 16-разрядных команд, упакованных в одно слово.
Если пакет выборки включает упакованные команды, то такой пакет сопровождается заголовком, занимающим 2 старших слова. В заголовке указывается, что содержится в пакете, какие из команд являются 16-разрядными, и какие из команд выполняются параллельно.
Адресация производится аналогично более ранним моделям процессоров. Интересно, однако, отметить, что для циклической адресации реализована возможность зацикливания не по выровненным адресам.
Работа конвейера при обработке команд в целом не отличается от общего для платформы C6000 подхода к организации выполнения программ. Конвейер включает 4 стадии выборки команды, 2 стадии декодирования и от 1 до 10 стадий выполнения команды. Разные команды выполняются разное число тактов. Команды, исполняющиеся за одну стадию выполнения, называются однотактными. К однотактным командам относится большинство операций с фиксированной точкой. Команды работы с плавающей точкой, даже базовые операции умножения и сложения, являются 4-тактными командами. Команды обращения к памяти, команды переходов и многие другие не являются однотактными. Различие времени выполнения разных команд обуславливает наличие различных ограничений на совместное использование команд и ресурсов процессора. Все это делает процесс программирования процессора, особенно на низком уровне, достаточно непростой задачей. Однако данная концепция, как уже было сказано, лежит в основе всей платформы C6000.
Работа с прерываниями организована аналогично другим моделям процессоров С6000. Типы прерываний: перезапуск, немаскируемое прерывание, маскируемые прерывания и исключения. В специальном регистре указывается адрес таблицы векторов прерываний. В таблице размещается набор кодов для каждого из прерываний. Если обработка прерывания несложна, весь соответствующий код может быть записан непосредственно в саму таблицу. Если код не умещается, необходимо организовывать переход на процедуру обработки прерывания.
Обычно при отклике на прерывание происходит отключение других маскируемых прерываний. Однако искусственно можно организовать вложенную обработку прерываний за счет специальных фрагментов кода, описанных в документации.
RISC (англ. Restricted (reduced) Instruction Set Computer — «компьютер с сокращённым набором команд») — архитектура процессора, в котором быстродействие увеличивается за счёт упрощения инструкций, чтобы их декодирование было более простым, а время выполнения — меньшим. Термин «сокращённый» в названии описывает тот факт, что сокращён объём (и время) работы, выполняемый каждой отдельной инструкцией — как максимум один цикл доступа к памяти.
Широко известные семейства RISC включают в себя DEC Alpha, AMD Am29000, ARC, ARM, Atmel AVR, BlackFin, Intel i860 и i960, MIPS, Motorola 88000, PA-RISC, RISC-V, SuperH и SPARC. В 21-м веке, использование архитектуры ARM процессоров смартфонов и планшетных компьютеров , таких как IPad и Android устройств обеспечили широкую базу пользователей для систем на базе RISC. Процессоры RISC также используются в суперкомпьютерах, таких как компьютер K, самый быстрый из TOP500 в 2011 году, и четвертый в списке 2013 года.
Читайте также: