AMD Am29000

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:42, 16 января 2019.
AMD Am29000
Am29000-16gc.jpg
Производство: С 1988 (1988) по 1995 (1995)
Изобретен AMD
Частота CPU: 25  — 100 
Число ядер: 1
Расширение
  • x86

AMD Am29000 – семейство 32-битных RISC микропроцессоров и микроконтроллеров, которые разрабатывала и производила американская компания AMD. Для своего времени были самыми популярными среди аналогичных чипов на рынке, широко использовались в лазерных принтерах различными компаниями. В конце 1995 года компания AMD прекратила разработку данного семейства из-за смены приоритета компании в сторону рынка ПК. Бизнес AMD перешел в русло производства клонов процессоров 80186 компании Intel. Практически все ресурсы компании пошли на производство производительных настольных клонов процессоров архитектуры x86. При производстве AMD K5 использовались многие идеи и комплектующие последнего поколения AMD Am29000. Семейство 29000 копировало архитектуру Berkeley RISC, особенностью которой был концепт регистрового окна, технологии ускорявшей процедурные вызовы. [Источник 1]

Общая концепция

В парадигме регистрового окна процессорные регистры общего назначения делятся на глобальные регистры (для хранения глобальных переменных) и регистровый файл, не видимый целиком никакой программе. Перед вызовом подпрограммы текущая программа записывает в выходные регистры значения параметров, которые необходимо передать в подпрограмму. При передаче управления подпрограмме регистровое окно сдвигается, и выходные регистры предыдущей активной программы становятся для подпрограммы входными. Перед обратной передачей управления подпрограмма записывает результаты (возвращаемые значения) в свои входные регистры. Вызвавшая её программа после обратного смещения регистрового окна будет иметь к ним доступ. Главное достоинство регистровых окон — отсутствие работы со стеком при вызове подпрограмм. Кроме того, регистровые окна реализуют защиту памяти: подпрограмма не может изменить значения большинства регистров вызвавшей её программы.

Структура работы процессора приведена на рисунке 1. В оригинальной архитектуре, регистровые окна были фиксированного размера. Одна локальная переменная, могла использовать все восемь регистров, расходуя драгоценные ресурсы машины. В семействе 29000 использовалось окно переменного размера, для исправления данного недостатка. В этом случае только два регистра использовались переменными, один для локальной переменной, другой для возврата адреса. Так же были добавлены дополнительные регистры, помимо 128 регистров процедурного стека, были добавлены ещё 64 регистра для глобального доступа, в сравнении со 128-ю регистрами стека и 8-ю для глобального доступа в оригинальной архитектуре Berkley SPARC.

Эти изменения, вместе с умным компилятором, давали высокую производительность процедурных вызовов, в то же время имея множество глобальных регистров общего назначения. Семейство так же расширило регистровое окно кэшируемым стеком. Когда окно заполнялось, вызовы выталкивались с конца стека в память. В итоге данная архитектура была более продвинутой в сравнении с оригинальным концептом.

Другим не очевидным отличием семейства 29000 являлось отсутствие кодовых регистров специального назначения. Любой регистр мог быть использован для этих целей, позволяя легко сохранять состояния. Буфер инструкций использовался для хранения до 16 инструкций, используемых для повышения производительности команд перехода. Результат достигался хранением четырех инструкций с другого конца команд перехода, которые могли быть запущены сразу после того, как буфер заполнялся новыми инструкциями из памяти.

Рисунок 1 – Структура работы процессора

История создания

Первое семейство было выпущено в 1988 году. Оно включало встроенный узел управления памятью, но поддержка плавающей запятой была возложена на процессор "29027" FPU. "29005" был урезанной версией. Семейство обновилось процессорами "29030" и "29035", которые включали 8 или 4 КБ кэша инструкций соответственно. Следующее обновление встраивало поддержку плавающей запятой всеми процессорами семейства и добавило 4 КБ кэша данных в процессоре "29040".

Последний процессор семейства, 29050 имел первым по-настоящему новую архитектуру после процессора 29000 1988-го года. Его архитектура поддерживала парадигму "внеочередного выполнения" и улучшенную систему предугадывания команд перехода(путем их выполнения даже в тех случаях, когда в этом не было необходимости). Вычислительный конвейер имел пять шагов. На первом шаге читали первые четыре инструкции. Они декодировались и отправлялись резервным станциям на шаге 2. Резервные станции отправляли шесть инструкций шести функциональным устройствам на шаге 3. Все функциональные части имели одни и те же цикловые задержки за исключением целого перемножения, которое было вынесено за конвейер. 29050 имел лучшую производительность в вычислениях с плавающей точкой. На шаге четыре, все три результата могли быть записаны в буфер перераспределения или в резервные станции. Инструкции удаляли на шаге пять. Первоначально процессор продавался с частотами 25, 50, 75 МГц, затем появилась версия с частотой 100МГц.

Все улучшения, заложенные в последнем процессоре семейства использовались как базис при разработке K5. Модуль вычисления с плавающей точкой вовсе остался без изменения.

Обзор программной архитектуры

Программные режимы

В процессора Am29000 существует два взаимоисключающих режима выполнения программ: режим администратора и режим пользователя. В режиме администратора выполняемые программы имеют доступ ко всем ресурсам процессора, в то время как в режиме пользователя лишь к части ресурсов, а любая попытка получить доступ к запрещенному ресурсу вызывает срабатывание "ловушки". [Источник 2]

Видимые регистры

Am29000 включает три класса регистров которые доступны и управляемы инструкциями: регистры общего назначения, регистры специального назначения и TLB-регистры. На рисунке 2 представлена схема процессорного разъёма ZIF-сокет (Zero Insertion Force Socket) - "разъем с нулевым усилием вставки".

  • Регистры общего назначения
Рисунок 2 - Схема процессорного разъёма ZIF-сокет (Zero Insertion Force Socket)

Am 29000 имеет 192 регистра общего назначения. Регистры общего назначения не предназначены для какого-либо специального использования и доступна для любого подходящего использования программой. Большинство процессорных инструкций - трех-адресные инструкции. Инструкция выбирает любые 3 регистра из 192 для использования инструкцией выполнения.. Обычно два регистра содержат исходные операнды для инструкции и третий хранит результат выполнения инструкции. 192 регистра разделены на 64 глобальных и 128 локальных регистров. Глобальные регистры адресуются абсолютными номерами регистров, в то время как локальные получают свой номер в соответствии с внутренним указателем стека.

Для быстрого вызова процедуры часть стека выполнения компилятора отображается в локальные регистры. Статически выделенные переменные, временные значения, параметры операционной системы хранятся в глобальных регистрах.

Указатель стека для локальных регистров отображается в глобальный регистр номер 1. Указатель стека - полный 32-битный виртуальный адрес для вершины стека выполнения.

Регистры общего назначения могут быть разделены на части по 16 регистров в каждой для целей защиты доступа. Регистр в защищенном сегменте может быть доступен только программе, работающей в режиме администратора. Попытка получить доступ к такому регистру в режиме пользователя вызывает срабатывание "ловушки".

  • Регистры специального назначения

Am29000 содержит 23 регистра специального назначения. Эти регистры предоставляют контроль и данные некоторым процессорным функциям.

Регистры специального назначения используются только для перемещения данных. Любой регистр специального назначения может быть заполнен содержимым любого из регистров общего назначения. Операции не могут совершаться напрямую над содержимым регистра специального назначения.

Некоторые регистры специального назначения защищены и могут быть доступны только в режиме администратора. Эти ограничения работают как на чтение, так и на запись.Попытка любой программы в режиме пользователя получить доступ к такому регистру вызывает срабатывание ловушки.

  • TLB-регистры

TLB записи в блоке управления памяти Am29000 доступны через 128 TLB регистров. Одна запись содержится в двух таких регистрах TLB регистры разбиваются на пары в соответствии с определенной TLB-записью.

Остальные ограничения такие же, как и на регистры специального назначения.

Обзор множества инструкций

Трех-адресная архитектура инструкции Am29000 позволяет компилятору или программисту предотвратить разрушение операндов, помогает с выбором регистра и позволяет несколько раз использовать операнды.

Множество инструкций содержит 115 элементов. Эти инструкции поделены на 9 классов:

  1. Целочисленная арифметика - совершает целочисленное сложение, вычитание, умножение и деление.
  2. Сравнение - выполняет логические и арифметические сравнения. Некоторые инструкции в этом классе позволяют вызывать срабатывание ловушки, если состояние сравнения не было удовлетворено.
  3. Логическое - совершает множество булевых операций.
  4. Сдвиги - совершает арифметические и логические сдвиги, позволяет извлекать 32-битные слова из 64-битных сдвоенных слов.
  5. Перемещение данных - совершает перемещение полей данных между регистрами.
  6. Константа - позволяет генерировать большие константы в регистрах.
  7. Плавающая точка - включена в арифметику с плавающей точкой, сравнения, и преобразования форматов.
  8. Ветвление - совершает программные прыжки и подпрограммные вызовы.
  9. Остальное - выполняет остальные функции контроля операции не содержащиеся в других классах.

Типы данных

Слово определено как 32 бита данных. Полуслово состоит из 16 бит и двойное - из 64. 1 байт содержит 8 бит.

Обзор инженерной архитектуры

Четырех-ступенчатый конвейер

Условно-графическое обозначение четырех-ступенчатого конвейера приведено на рисунке 3. Am2900 реализует четырех-ступенчатый конвейер при выполнении инструкции. Четыре ступени называются:

  1. Приведение
  2. Декодирование
  3. Выполнение
  4. Запись

Конвейер спроектирован таким образом чтобы частота извлечения инструкции была настолько высокой, чтобы она укладывалась в одну инструкцию за такт. Перенаправление данных и блокировка конвейера управляется оборудование процессора.

Рисунок 3 - Условно-графическое обозначение четырех-ступенчатого конвейера

Блок приведения

Получает данные и отправляет инструкции другим функциональным блокам. Все компоненты данного блока работают на этапе приведения на процессорном конвейере.

Блок управления памятью

Выполняет перевод адреса и функции защиты памяти для всех ветвлений, загрузок и сохранений. Работает на стадии выполнения конвейера.

Режимы процессора

Режимы выполняют разные процессорные и системные задачи. Все режимы за исключение режима прерывания конвейера находятся под управлением инструкций.

Ввод/вывод

Состоит из следующих 32 битных шин и относящихся к ним инструментам управления: 1) Шина инструкций - отправляет инструкции в процессора

  1. Шина данных перенаправляет данные процессору и забирает их из него.
  2. Шина адреса, предоставляет адреса для доступа к данным и инструкциям. Шина адреса также используется для отправки данных сопроцессору.

Ввод вывод получает доступ и выполняет передачу данных ко всем внешним устройствам и памяти(вообще всей). [Источник 3]

Семейство

Am29000

  • Поддержка технологий CMOS и TTL.
  • Полная 32-битная архитектура с тремя шинами.
  • Одновременный доступ к инструкции и данным.
  • Поддержка Burst-режима.
  • 192 регистра общего назначения.
  • Демультиплексация, конвейерные шины адреса, инструкции и данных.
  • Трехадресная архитектура инструкций.
  • Побитовое выравнивание на уровне чипа позволяет получать доступ к байтам и полу словам.
  • 1,5 такта на инструкцию в среднем.
  • Конвейерная инфраструктура.
  • 23 миллиона инструкций в секунду на частоту 33 МГц.
  • 512-байтовый кэш.
  • 4 Гб виртуального адресного пространства c погрузкой страниц заранее(Am2900).
  • 64 разрядный блок управления памятью(только Am29000).
  • Поддержка режимов 33-, 25, 20- и 16 МГц(только Am29000).

Am29027

  • Быстрый ускоритель вычислений с плавающей точкой для процессора Am29000.
  • Совершает преобразования между экспонентами чисел и между форматами данных.
  • Множество инструкций для работы с числами с плавающей точкой.

Am29030/Am29035

  • Поддержка технологий CMOS и TTL.
  • Полная 32-битная архитектура с тремя шинами.
  • Одновременный доступ к инструкции и данным.
  • Поддержка Burst-режима
  • 192 регистра общего назначения.
  • Демультиплексация, конвейерные шины адреса, инструкции и данных.
  • Трехадресная архитектура инструкций.
  • Расширенная поддержка отладки.
  • Программируемые 16 и 32 битные шины.
  • Поддержка частот 33- и 25-МГц(Am29030) и 16Мгц(Am29035).
  • 8Кбайт (Am29030)/4Кбайт(Am29035) кэш-инструкций.

Am29040

  • Полная 32-битная архитектура с тремя шинами.
  • Двухцикловый 32-битовый мультипликатор для быстрой целочисленной арифметики.
  • 4-Кбайт кэш данных.
  • 8-КБайт кэш инструкций.
  • Поддержка технологий CMOS и TTL.
  • Одновременный доступ к инструкции и данным.
  • Поддержка Burst-режима.
  • 192 регистра общего назначения.
  • Демультиплексация, конвейерные шины адреса, инструкции и данных.
  • Трехадресная архитектура инструкций.
  • 33-, 40-, 50-МГц частоты работы процессора.
  • 4 Гбайта виртульного адресного пространства с предварительной загрузкой страниц.
  • Высокоэффективный режим сна.
  • Многопроцессорный режим.

Am29050

  • Полностью 32-битная архитектура с тремя шинами.
  • 55 миллионов инструкций в секунду на частоте 40 Мгц.
  • 80 Мегафлоп при вычислении не целочисленной арифметики на частоте 40Мгц.
  • 4 Гбайта виртуального адресного пространства с предварительной загрузкой страниц.
  • Одновременный доступ к инструкциям и данным.
  • Бинарная совместимость со всем семейством 29К.
  • Четырех-блоковый физический кэш данных.
  • Поддержка технологий CMOS и TTL.
  • Одновременный доступ к инструкции и данным.
  • Поддержка Burst-режима.
  • 1024 байтовый кэш ветвлений.
  • 64-блоковый блок управления памятью.

Am29200

  • Полностью интегрированная система для встраиваемых приложений.
  • Полностью 32-битная архитектура.
  • 16- and 20-MHz рабочие частоты.
  • 8 миллионов инструкций в секунду на частоте 16МГц.
  • 304 МБайта адресного пространства.
  • 192 регистра общего назначения.
  • Четыре блока постоянной памяти с интерфейсом для программирования.

Am29205

Отличия от 29200

  • Рабочая частота 12- и 16- МГц.
  • 68 МБайт адресного пространства.
  • Полностью 16-битная внешняя и 32-битовая внутренняя архитектуры.
  • Контроллер прерывания.

См. также

Иcточники

  1. AMD 29k (Streamlined Instruction Processor) ID Guide // CPUSHACK.COM [2004-2018] Дата обновления: 21.01.2012. - URL: http://www.cpushack.com/Am29k.html (дата обращения 16.01.2018).
  2. Index of AMD 29K // CHIPDB.ORG [2007-2018] Дата обновления: 21.01.2012. - URL: http://datasheets.chipdb.org/AMD/29K/ (дата обращения 16.01.2018).
  3. Evaluating and Programming the 29K RISC Family Third Edition – DRAFT// ARCHIVE.ORG [1995-2017] Дата обновления: 14.08.2017. - URL: https://web.archive.org/web/20070927060927/http://www.amd.com/epd/29k/29kprog/29kprog.pdf (дата обращения 16.01.2018).