Впервые технология Thumb была встроена в ядро ARM7 еще в 1995 году. Адаптированное под технологию Thumb (Thumb-ориентированное) ядро получило типовое обозначение ARM7TDMI и за достаточно короткое время было лицензировано большим количеством фирм-изготовителей всевозможного оборудования, поскольку технология Thumb, явилась откликом фирмы ARM на стремление разработчиков критичных к стоимости применений, типа сотовых телефонов, дисководов CD, модемов и пейджеров, получить приборы с 32-разрядной производительностью и 32-разрядным адресным пространством, но без увеличения стоимости, связываемого с переходом к 32-разрядным системам. Превосходная плотность кода, достигаемая использованием технологии Thumb, позволяет уменьшить требуемый объем памяти - обеспечивает 32-разрядную производительность системы при использовании памяти 16-разрядного формата, что ведет к снижению стоимости системы.
Необходимо отметить, что ядро ARM7TDMI используется при создании не только специализированных ИС, но и при создании микроконтроллеров общего назначения. Так фирма Atmel в сентябре 1998 года начала поставки микроконтроллеров семейства AT91, в основу которых положено ядро ARM7TDMI. Информацию по приборам серии AT91 можно получить на сайте http://www.gaw.ru/html.cgi/doc/atmel/at91.htm.
Архитектура ARM является RISC архитектурой, и система команд и связанный с нею механизм декодирования намного проще, чем у микропрограммируемых CISC компьютеров, что приводит к высокой скорости обработки команд, впечатляющей скорости отклика на прерывания (в реальном масштабе времени), реализации прибора на кристалле малых размеров и, следовательно, малой стоимости прибора.
Конвейерная обработка реализована таким образом, что все компоненты систем памяти и обработки работают непрерывно. Обычно, в то время как одна команда выполняется, следующая команда декодируется и третья команда выбирается из памяти.
Возможности системы команд ARM7TDMI могут быть расширены за счет добавления до 16 внешних сопроцессоров.
При разработке интерфейса памяти разработчики ориентировались на обеспечение реализации потенциально возможной производительности без повышения стоимости самой памяти. Критичные к быстродействию сигналы управления также конвейеризованы с тем, чтобы реализовать функции управления системой памяти в стандартной логике с малым потреблением, и эти сигналы управления упрощают использование быстрых локальных режимов обращения, необходимых для стандартных динамических RAM. Кроме того, интерфейс памяти идеально подходит для организации взаимодействия как со встроенной на кристалл памятью, так и с внешней памятью, с блоками Flash памяти, что позволяет реализовать внутрисистемное программирование, защиту памяти, снизить время выхода на рынок, сократить общую стоимость системы.
Интерфейс с памятью у процессора ARM7TDMI организуется следующими основными элементами:
32-разрядной шиной адреса, определяющей адрес ячейки памяти, которую необходимо использовать.
32-разрядной двунаправленной шиной передачи данных D[31:0], плюс двумя отдельными однонаправленными шинами данных DIN[31:0] и DOUT[31:0], через которые перемещаются команды и данные. Данные могут иметь формат слова, полуслова или байта.
Сигналами управления, определяющими, например, формат перемещаемых данных и направление их передачи и, кроме того, уровень приоритета.
Рис. 1. Блок-схема процессора ядра ARM7TDMI
Этот набор сигналов позволяет ARM7TDMI достаточно просто организовывать интерфейс с DRAM, SRAM и ROM. Для полного использования страничного режима доступа к DRAM, обеспечивается информация о том, является доступ к памяти последовательным или нет. Вообще говоря, интерфейс со статической памятью намного проще чем интерфейс с динамической памятью.
Поскольку ядро ARM7TDMI в основе своей имеет ядро ARM7, то ограничимся кратким напоминанием о его архитектуре и больше внимания уделим особенностям, внесенным технологией Thumb.
Процессор ARM7TDMI - 32-разрядный RISC процессор с 3-уровневым конвейером, сформированный вокруг банка из 37 32-разрядных регистров, в который входят 6 регистров состояния. Процессор оснащен встроенным умножителем 32x8 и 32-разрядным многорегистровым циклическим устройством сдвига. Пять независимых встроенных шин (PC шина, шина инкремента, шина ALU и A- и B-шины) обеспечивают, при выполнении команд высокую степень параллелизма.
Как видно из сравнения блок-схем процессоров ARM7 и ARM7TDMI (См. Рис. 1) в блоке конвейера процессора добавился декомпрессор команд Thumb.
Однако разработчики фирмы ARM этим не ограничились и, имея в виду встраивание ядра в приборы с большим уровнем интеграции, расширили ядро ARM7TDMI (см. Рис. 2) дополнительными аппаратными блоками, обеспечивающими возможность отладки глубоко встроенного ядра.
Рис. 2. Блок-схема ядра ARM7TDMI
Как видно из Рис. 2, ядро ARM7TDMI состоит из ядра собственно процессора, показанного на Рис.1, и расширений отладки: контроллера сканирования TAP (boundary scan) и внутрисхемного эмулятора (ICEBreaker).
Аппаратные расширения отладки ARM7TDMI, обеспечивают развернутые возможности отладки, облегчающие разработку пользовательского прикладного программного обеспечения, операционных систем, и самих аппаратных средств. Аппаратные расширения отладки позволяют останавливать ядро или при выборке заданной команды (в контрольной точке) или при обращении к данным (в точке просмотра), или асинхронно - по запросу отладки.
В этих точках, через JTAG последовательный интерфейс, может быть исследовано внутреннее состояние ядра ARM7TDMI, находящегося в состоянии отладки, и внешние состояния системы. По завершении исследования состояния ядра и системы могут быть восстановлены и продолжено выполнение программы.
Режим отладки ARM7TDMI устанавливается или запросом по одному из сигналов внешнего интерфейса отладки, или внутренним функциональным блоком ICEBreaker, состоящим из двух модулей контрольных точек (watchpoint), работающих в реальном масштабе времени с регистрами состояния и управления ядра, и обеспечивающим поддержку встроенной отладки ядра ARM7TDMI. ICEBreaker программируется в последовательном режиме с использованием контроллера TAP - средства управления работой цепочек сканирования (Scan Chain 0, 1 и 2) через последовательный интерфейс JTAG.
Интерфейс отладки ARM7TDMI основан на архитектуре, описанной в стандарте IEEE Std. 1149.1-1990 "Standard Test Access Port (TAP) and Boundary-Scan Architecture".
Как уже отмечалось выше высокопроизводительное 32-разрядное статическое RISC ядро ARM7TDMI занимает на кристалле очень малую площадь, малое потребление энергии ядром позволяет использовать его в критичных к потреблению применениях, технология Thumb позволяет использовать память 16-разрядного формата меньшей емкости и, соответственно, меньшей стоимости. Не удивительно, что только в течение года, по окончании разработки ядра ARM7TDMI, ядро было лицензировано такими фирмами, как NEC, TI, Symbios Logic, Oki, Atmel, Samsung и VLSI. В дальнейшем лицензии на использование ядра ARM7TDMI получили такие гранды полупроводниковой и электронной отраслей как IBM, HP, Epson, Matsushita и многие другие.
Идя навстречу запросам фирм-разработчиков ASIC и ASSP, разработчиков электронной аппаратуры фирма ARM расширила номенклатуру функциональных макроядер на основе ядра ARM7TDMI (будем называть макроядром некоторое ядро, в данном случае ARM7TDMI, со схемотехнически интегрированными вместе ним дополнительными, расширяющими его возможности функциональными модулями) и в настоящее время в семейство ARM7 Thumb входят: ядро ARM7TDMI, макроядра ARM710T, ARM720T и ARM740T, и синтезируемое (с изменяемой конфигурацией) ядро ARM7TDMI-S.
Основные характеристики четырех первых процессоров приведены в таблице.
Ядро CPU | Площадь кристалла | Потребление (mW/MHz) | Тактовая частота | Производительность | Ядро CPU | Кэш | Управление памятью |
ARM7TDMIARM RISCядро с Thumb и EmbeddedICE | 1, 0 мм2 при 0, 25мкм2, 1 мм2 при 0, 35 мкм4, 8 мм2 при 0, 6 мкм | Пиковое: 1, 2Среднее: 0, 6Idle: < 100 мкВт, при 3, 3 В, CMOS 0, 35 мкм | 66 МГц при нормах 0, 35 µ м, CMOS | 0, 9 MIPS/MHz 59 MIPS при 66 МГц | N/A | N/A | N/A |
ARM710TКэшированное процессорное макроядро | 5, 8 мм2 при 0, 25 мкм11, 7 мм2 при 0, 35 мкм | Пиковое: 3, 6Среднее: 1, 8Idle: < 100 мкВт при включенном кэш, 3, 3 В, 0, 35мкм CMOS | 59 МГц при нормах 0, 35мкм CMOS | 53 MIPS при 59МГц | ARM7TDMI | 8 Кбайт единый кэш | MMU с полной поддержкой виртуальной памяти |
ARM740TКэшированное процессорное макроядро | 4, 9 мм2 при 0, 25 мкм9, 8 мм2 при 0, 35 мкм | Пиковое: 3, 5Среднее: 1, 6Idle: <100 мкВт при включенном кэш, 3, 3 В, 0, 35мкм CMOS | 59 МГц при нормах 0, 35мкм CMOS | 53 MIPS при 59МГц | ARM7TDMI | 8 Кбайт единый кэш | Простая Конфигурация Памяти и Защиты |
ARM720TКэшированное процессорное макроядро с MMU для WindowsCE | 5, 8 мм2 при 0, 25мкм11, 7 мм2 при 0, 35 мкм | Пиковое: 3, 6Среднее: 1, 8Idle: < 100 мкВт при включенном кэш, 3, 3 В, 0, 35мкм CMOS | 59 МГц при нормах 0, 35мкм | 53 MIPS при 59МГц | ARM7TDMI | 8 Кбайт единый кэш | MMU с полной поддержкой виртуальной памяти и быстрого контекстного переключения |
Необходимо отметить, что указанные в таблице характеристики (тактовая частота, производительность, потребление, площадь, занимаемая на кристалле) представлены приведенными к CMOS технологии с топологическими нормами 0, 35 мкм. Масштабирование топологии к меньшим топологическим нормам приведет к росту и тактовой частоты и производительности при соответствующем уменьшении занимаемой на кристалле площади напряжения питания и потребления. Так фирма TI, использующая в ряде своих разработок ядро ARM7TDMI, при CMOS технологии GS20 с топологическими нормами 0, 18 мкм получила тактовую частоту свыше 80 МГц, и готова использовать его в CMOS технологии GS30 с топологическими нормами 0, 15 мкм.
При разработке этих макроядер фирма ARM ориентировалась на конкретные области применения, где особенности каждого макроядра позволят реализовать дополнительные возможности без существенного прироста стоимости. Добавление к макроядрам встроенного кэш позволяет минимизировать время доступа к внешней памяти и, сохраняя максимальную производительность, позволяет использовать недорогие RAM. Становится возможным использование системной шины и внешней памяти с быстродействием более низким, чем быстродействие процессора и, следовательно, уменьшить потребление. Широкая полоса частот системной шины может быть также использована и для увеличения полной производительности системы - высвобожденную полосу частот могут использовать другие периферийные устройства, обеспечивая высокую пропускную способность данных в устройствах типа MPEG декодеров цифровых TV приставок.