Powerpc что это
Перейти к содержимому

Powerpc что это

  • автор:

Микропроцессоры PowerPC

Ключевую роль в создании семейства микропроцессоров PowerPC сыграла корпорация IBM (www.ibm.com). Дело в том, что за основу создаваемого семейства был взят ее процессор POWER (Performance Optimization With Enhanced RISC). Стоит отметить, что существенный вклад в развитие фундаментальной концепции RISC-архитектуры внесли ученые из Исследовательского центра IBM, где в середине 70-х годов был разработан мини-компьютер IBM 801. Дальнейшее развитие этих идей нашло отражение при создании концепции POWER в конце 80-х. Впоследствии именно данная архитектура стала основой нескольких семейств рабочих станций и серверов корпорации.

POWER во многих отношениях представляет собой традиционную RISC-архитектуру. В ней сохранены наиболее важные отличительные особенности RISC: фиксированная длина команд, простые способы адресации и команд, большой размер регистрового файла, а также и 3-операндный формат инструкций. Однако архитектура POWER имеет несколько дополнительных свойств, которые отличают ее от других RISC-архитектур.

Микропроцессор PowerPC 750

Ее набор команд изначально был основан на идее суперскалярной обработки. В базовой архитектуре команды распределяются по трем независимым исполнительным устройствам: целочисленной и вещественной арифметики, а также переходов. Для сокращения времени выполнения в POWER были введены специальные команды групповой загрузки и записи, которые обеспечивали пересылку содержимого нескольких регистров в памяти (и обратно) с помощью единственной команды. Архитектура переходов POWER была организована с учетом их предварительного просмотра и методики свертывания. Кстати, реализация условных переходов, используемая в архитектуре POWER, является ее уникальным свойством по сравнению с другими RISC-процессорами.

Первая аппаратная реализация POWER появилась на рынке в 1990 г. С тех пор IBM представила еще несколько версий процессоров (POWER2, POWER2+, POWER3, POWER3-II), обеспечивающих поддержку кэш-памяти второго уровня и имеющих расширенный набор команд.

PowerPC положила начало однокристальной архитектуре POWER. Кроме того, в ней было сделано несколько упрощений с целью приспособления для однокристальных процессоров: исключены команды, которые могли бы стать препятствием повышения тактовой частоты; устранены архитектурные препятствия суперскалярной обработке и внеочередному выполнению команд; добавлены свойства, необходимые для поддержки симметричной многопроцессорной обработки; ее разрядность расширена до 64. Отметим, что PowerPC поддерживает ту же самую базовую модель программирования и назначение кодов операций команд, что и архитектура POWER.

Итак, осенью 1991 г. три известные корпорации — Apple, IBM и Motorola сообщили о решении создать семейство RISC-процессоров для широкого спектра областей применения. Предполагалось, что данные кристаллы будут использоваться на компьютерах, начиная от серверов верхнего уровня и рабочих станций до настольных ПК. Проект был рассчитан на 10 лет, но первенец семейства — процессор под торговой маркой PowerPC 601 появился уже в 1993 г. Он имел 32-разрядную внутреннюю структуру и размещался на кристалле прощадью 121 кв. мм. Общее количество транзисторов составляло 2,8 млн. Были выпущены модели с тактовыми частотами 50, 66, 80 МГц. На кристалле PowerPC 601 находилось три исполнительных устройства: целочисленное, вещественной арифметики и блок обработки переходов. Все три устройства работали параллельно и в значительной степени независимо. Благодаря суперскалярной архитектуре за один такт могло выполняться до трех команд одновременно. Процессор оперировал с 8-, 16-, 32-разрядными целыми числами, а также с 32-, 64-разрядными числами с плавающей запятой. На кристалле располагались раздельная кэш-память команд и данных объемом 32 Кб (16+16) и устройство управления памятью. Процессор имел 64-разрядную шину данных и 32-разрядную шину адресов.

Уже в 1994 г. появился следующий процессор семейства. Им стал PowerPC 603. Структура этого процессора копировала структуру PowerPC 601. Но он размещался на кристалле площадью 85,1 кв. мм и был изготовлен с учетом проектных норм 0,5 мкм на 1,6 млн. транзисторов. Потребляемая мощность процессора, работавшего на частоте 80 МГц, не превышала 2,5 Вт. Данное устройство во многом представляло собой упрощенную версию предыдущего. Оно выполняло не более двух команд за один такт, а размер кэш-памяти равнялся всего 8 Кб (4+4).

В 1995 г. вышла улучшенная версия данного процессора под маркой PowerPC 603e. У этого кристалла производительность была увеличена. Первоначально он выпускался с тактовыми частотами 80 и 100 МГц. В настоящее время такие кристаллы находят применение в качестве встраиваемых микропроцессоров. Их тактовые частоты составляют 100, 166 и 200 МГц.

При использовании проектных норм 0,5 мкм процессор размещался на кристалле площадью 98 кв. мм и содержал 2,8 млн. транзисторов. На частоте 100 МГц он потреблял примерно 3,2 Вт. Еще одной новинкой в этом процессоре стало появление трех энергосберегающих режимов, а также устройства динамического управления энергопотреблением. При использовании проектных норм 0,35 мкм площадь кристалла уменьшается до 79 кв. мм.

Одновременно с PowerPC 603e появился кристалл PowerPC 602 для портативных компьютеров, выполненный с учетом проектных норм 0,5 мкм. На кристалле площадью 50 кв. мм размещалось до 1 млн. транзисторов. Шины адреса и данных устройства были мультиплексированы. Иными словами, сначала процессор выводил на шину адрес и специальным сигналом информировал об этом все устройства, а затем по той же шине передавал данные. Доступ к памяти осуществлялся в пакетном режиме, что делало снижение производительности процессора не столь ощутимым.

К трем основным исполнительным устройствам добавили еще одно — формирования адресов доступа к памяти. Тем не менее структура блоков процессора упростилась по сравнению с PowerPC 603. Так, устройство для операций вещественной арифметики могло обрабатывать только 32-разрядные числа (в предыдущих — 64-разрядные). Количество производимых за один такт операций сократилось до одной, что уменьшило размер блока декодирования и упростило схему предсказания ветвления. Также исключили сложные графические и строковые операции, благодаря чему упростилось устройство формирования адресов. Оставшиеся операции пересылки были оптимизированы и выполнялись за один такт. Кэш-память команд и данных составляли теперь по 2 Кб (впоследствии 4 Кб) каждая. Процессор имел быстрый механизм защиты памяти и все режимы энергосбережения, как у PowerPC 603.

В конце 1996 г. была анонсирована еще одна модель — PowerPC 603ev с тактовой частотой 166 МГц (180 и 200 МГц). Кристалл производился с соблюдением проектных норм 0,35 мкм. В нем были усовершенствованы блоки операций деления и управления кэш-памятью.

Последним 32-разрядным процессором этого семейства стал PowerPC 604. Он был анонсирован в конце 1995 г. Процессор построен по технологии 0,35 мкм и работал на тактовых частотах 100, 120, 133 и 150 МГц. Усовершенствованный вариант этого процессора — PowerPC 604e, выполненный с использованием того же технологического процесса. Он на кристалле площадью 148 кв. мм содержал 5,1 млн. транзисторов. Были выпущены микросхемы, работающие на тактовых частотах 167, 180, 200, а затем и 332 МГц. Внутренняя кэш-память на кристалле возросла вдвое — 32 Кб для команд и 32 Кб для данных.

В 1995 г. вышел первый 64-разрядный процессор семейства — PowerPC 620, предназначенный для рабочих станций и высокопроизводительных серверов. Этот кристалл имел шесть уже независимых исполнительных устройств и встроенную кэш-память на 64 Кб (32+32). Микросхема производилась с учетом проектных норм 0,5 мкм на кристалле площадью 311 кв. мм и содержала 7 млн. транзисторов. В процессоре использовалась четырехконвейерная суперскалярная архитектура с шестью исполнительными устройствами: тремя блоками целочисленной арифметики, одним блоком для операций с плавающей точкой, блоком загрузки/сохранения и блоком переходов. За один такт процессор мог выполнять до четырех команд. Шинный интерфейс кристалла включал унифицированную внутреннюю поддержку кэш-памяти второго уровня объемом до 128 Мб.

К сожалению, корпорации Motorola и IBM строили совершенно разные планы относительно микропроцессоров PowerPC. Так, IBM все больше ориентировала свои кристаллы на собственные серверы и рабочие станции. В то же время Motorola, хотя и продолжала производить 32-разрядные микросхемы для компьютеров Apple, стала прощупывать возможности применения PowerPC в коммуникационном оборудовании.

В июне 1998 г. IBM и Motorola объявили о том, что совместное предприятие — центр проектирования PowerPC (известный под названием Somerset) полностью перешел к корпорации Motorola. Это произошло в связи с разным видением руководства компаний будущего PowerPC. В частности, IBM решила сосредоточиться на производстве быстрых микропроцессоров с технологией медных межсоединений.

Первым микропроцессором IBM с медными межсоединениями в 1998 г. стал кристалл PowerPC 750. Вообще говоря, по сравнению с технологией, где межсоединения элементов выполнены на основе алюминия, медь позволяет сделать кристалл меньше и быстрее. Медная металлизация уменьшает общее сопротивление, что позволяет увеличить скорость работы кристалла на 15-20%. Обычно технология дополняется еще одной новинкой — технологией “кремний на изоляторе” (SOI, Silicon On Insulator). Она уменьшает паразитные емкости, возникающие между элементами микросхемы и подложкой, благодаря чему также увеличивается тактовая частота транзисторов, а скорость повышается на 20-30%. То есть общий рост производительности в идеальном случае может достигнуть 50%. Уже через год IBM объявила о том, что ею продано более 1 млн. микропроцессоров PowerPC с медными межсоединениями. Таким образом, среди ряда крупнейших фирм, выпускающих полупроводниковые приборы, IBM стала первым производителем микропроцессоров и микроконтроллеров с медными межсоединениями (технологический процесс CMOS7S).

Одной из особенностей PowerPC 750 была отличная от используемой в предыдущих версиях PowerPC схема кэширования. Микросхема имела выделенную шину, с помощью которой кэш-память второго уровня (емкостью 0,5; 1 или 2 Мб) подсоединялась непосредственно к кристаллу (такая схема кэширования называется Back Side), а не через системную шину. При этом выделенная шина работала на удвоенной тактовой частоте (системной шины), благодаря чему появлялась возможность использования микросхем памяти типа SRAM 233 МГц. Кристаллы PowerPC 750, работающие на тактовых частотах от 200 до 500 МГц, выполнялись с учетом проектных норм 0,25 (PID8t) и 0,22 (PID8p) мкм.

Версия микропроцессора PowerPC 750CX отличалась наличием встроенной двухвходовой наборно-ассоциативной 256-килобайтовой кэш-памяти. Отметим, что восьмивходовая наборно-ассоциативная кэш-память первого уровня для команд и данных имеет объем по 32 Кб каждая. Кристалл выполнен с учетом проектных норм 0,18 мкм, с шестислойной медной металлизацией. Рабочие тактовые частоты составляют 366, 400 и 466 МГц.

В феврале этого года IBM сообщила о разработке модели PowerPC 750CXe, которая названа корпорацией “самым производительным процессором из серии PowerPC”. Кристалл PowerPC 750CXe содержит 256 Кб встроенной кэш-памяти второго уровня и изготовлен с использованием медных межсоединений и с соблюдением проектных норм 0,18 мкм. IBM уже запустила в массовое производство PowerPC 750CXe с тактовыми частотами 400, 500 и 600 МГц, их поставки начнутся в апреле. Образцы 700 МГц кристаллов появятся в мае. По имеющейся информации, корпорация Apple уже планирует встраивать данные процессоры в свои компьютеры G3 iMac.

В заключение стоит отметить, что архитектура POWER в этом году получит развитие в новом процессоре Power4. Эта микросхема, вообще говоря, содержит два процессора, разделяющих общую кэш-память второго уровня с пропускной способностью свыше 100 Гб/с. Связь процессоров с кэш-памятью второго уровня, равно как и с другими микросхемами, осуществляется посредством коммутатора (55 Гб/с). Для обеспечения когерентности кэш-памяти и пересылки данных в кэш-память второго уровня применяется специальный протокол.

Оба процессора Power4 имеют два конвейерных блока для работы с 64-разрядными операндами с плавающей запятой на частоте 1 ГГц. В процессорах реализуется внеочередное исполнение команд. Они содержат раздельные кэш-памяти команд и данных первого уровня емкостью по 64 Кб каждая. Кроме разделяемой кэш-памяти на кристалле второго уровня допускается применение внешней кэш-памяти третьего уровня. Для образования мультипроцессорных конфигураций имеются три канала с суммарной пропускной способностью 45 Гб/с.

Микропроцессор будет реализован на кристалле площадью 400 кв. мм, содержащем 170 млн. транзисторов. Он создается с соблюдением проектных норм 0,18 мкм, использованием технологии SOI и пятислойной медной металлизации. Для организации SMP-систем планируется помещать четыре микросхемы (восемь процессоров) в один MCM-модуль (Multi-chip Ceramic Module).

Powerpc что это

Переносы / Перенос на платформу PowerPC

  • Debian на платформе PowerPC
  • Debian на 32-битной платформе PowerPC (powerpc)
  • Debian на 64-битных PowerPC с порядком байтов от младшего с старшему (ppc64el)
  • Установка
  • Ссылки — документация
  • Доступное участникам оборудование
  • Контактная информация

Debian на платформе PowerPC

рисунок PPC-750

PowerPC — это RISC процессор, разработанный IBM, Motorola (теперь Freescale) и Apple. Архитектура PowerPC имеет как 32-битное, так и 64-битное исполнение (в 64-битное исполнение включено 32-битное). Первый процессор этого типа был 32-битного исполнения, имел номер 601 и был выпущен в 1992 году. С тех пор было выпущено несколько других 32-битных исполнений, включая процессоры 603, 604, 750 (G3), 7400 (G4) и процессор для встроенных коммуникаций PowerQUICC. 64-битные воплощения, включая 620, POWER4, power5 и 970 (G5).

Перенос Linux на платформу PowerPC появился в ядрах ветки 2.2.x. Основным ресурсом по разработке PowerPC Linux является penguinppc, который также содержит список совместимого железа. Поддержка PowerPC в ядре Linux сейчас разрабатывается как часть главного (`main’) ядра Linux на kernel.org.

Перенос Debian PowerPC был начат в 1997 на German Linux Congress в Вюрцбурге. Машина PowerPC (Motorola StarMax 4000, 200 МГЦ 604e) была пожертвована проекту Debian. Дополнительная информация об этом компьютере доступна на странице истории.

Debian на 32-битной платформе PowerPC (powerpc)

Он впервые стал официальной архитектурой выпуска с выходом Debian GNU/Linux 2.2 ( Potato ) и сохранял этот статус до выпуска Debian 9 ( stretch ). Последним выпуском с поддержкой 32-битной платформы PowerPC является Debian 8 ( jessie ). Дополнительную информацию смотрите в информации о выпуске и руководстве по установке.

Debian на 64-битных PowerPC с порядком байтов от младшего с старшему (ppc64el)

Начиная с выпуска Debian 8.0 ( jessie ), ppc64el является официально поддерживаемой архитектурой Debian. Дополнительную информацию смотрите в информации по выпуску и руководстве по установке.

Тем не менее, заметьте, что на вики-странице ppc64el также доступна информация об установке и об ABI.

Установка

Существуют разнообразные систем, использующие микропроцессор PowerPC. Информацию об установке Debian/PowerPC на вашей конкретной системе см. на наших страницах по установке.

Есть некоторые особенности, о которых вы должны знать при установке на iBook, TiBook или iBook2, особенно, когда есть двойная загрузка с Mac OS X. Некоторые машины iBook2, особенно новые модели, пока ещё не очень хорошо поддерживаются. Конкретную информацию о возможных проблемах и способах их решения см. на следующих страницах:

  • Уильяма Р. Сойербатса (William R. Sowerbutts’) Установка Debian GNU/Linux на Mac Mini
  • Миджа (Mij’s) Хитрости при установки debian на iBook2
  • Установка Debian GNU/Linux на iBook 3.3 (G4) Себастьена Франсуа (Sébastien FRANÇOIS)
  • Установка Debian по сети на IBM RS/6000 44P-170 (POWER3) HOWTO Ральфом Брадесета (Rolf Brudeseth)
  • Установка Debian GNU/Linux на p630 LPAR (7028-6C4) — на английском и на немецком (Флориан М. Вепс (Florian M. Weps))
  • Дэниела ДэВото (Daniel DeVoto) Установка Debian Wheezy/testing на iBook G3

Debian GNU/Linux официально не поддерживает машины NuBus PowerPC, типа 6100, 7100, 8100 и большинство серий Performa. Однако, существует ядро на основе MkLinux, которое может быть запущено из загрузчика Mac OS. Система Debian может быть установлена с использованием этого ядра, которое доступно на http://nubus-pmac.sourceforge.net/.

Когда обновляете систему с Potato на Woody или обновляете очень старые ядра, следует ознакомиться с важной информацией об изменении клавиатурных кодов. Это может сэкономить ваше время и избавить от лишней головной боли!

Ссылки — документация

Спецификации оборудования для компьютеров Apple доступны на AppleSpec.

Дополнительная информация и документация по архитектуре POWER:

  • Официальная спецификация ABI ELFv2 (в разделе ‘Link’) или PDF. Требуется регистрация.
  • GNU Tools Caldron 2014 слайды и видео

Доступное участникам оборудование

Ознакомьтесь со списком машин Debian, чтобы получить доступ к машине переноса Debian на powerpc/ppc64el.

Контактная информация

Если вам нужна помощь, попробуйте получить её в следующих местах:

Списки рассылки

Список рассылки Debian PowerPC — самое правильное место для вопросов, предложений об усовершенствовании или для общения по системе PowerPC, работающей под Debian. Для вопросов касающихся всего Debian, а не конкретно PowerPC, доступен также список debian-user.

Конференции Usenet

Linux для систем PowerPC

  • comp.os.linux.misc
  • comp.os.linux.networking
  • comp.os.linux.hardware
  • comp.os.linux.x

IRC

На irc.debian.org есть канал #debian для общих тем, связанных с Debian, и канал #debianppc для вопросов, специфичных для Debian на процессорах PowerPC. Вы почти всегда найдёте того, кто будет рад поделиться информацией и помочь вам с вашей проблемой.

Назад на домашнюю страницу проекта Debian.

Эта страница также доступна на следующих языках:
Как установить язык по умолчанию

  • О Debian
    • Общественный договор
    • Кодекс поведения
    • Свободное ПО
    • Партнёры
    • Пожертвования
    • Юридическая информация
    • Защита персональных данных
    • Как с нами связаться
    • Где взять Debian
      • Установка по сети
      • ISO-образы CD/USB
      • Поставщики CD
      • Предустановка
      • Новости
        • Новости проекта
        • События
        • Информация о выпусках
        • Инструкции по установке
        • Книги о Debian
        • Вики-страницы Debian
        • Поддержка
          • Международный Debian
          • Информация о безопасности
          • Сообщения об ошибках
          • Списки рассылки
          • Архивы списков рассылки
          • Перенос на другие архитектуры
          • Карта сайта
          • Поиск
          • Блог Debian
          • Микроновости Debian
          • Планета Debian

          Для связи обратитесь к нашей странице контактов. Также доступен исходный код веб-сайта.

          Последнее изменение: Птн, 6 Окт 2023, 12:35:23 UTC Последняя сборка: Пнд, 9 Окт 2023, 14:38:13 UTC
          Авторские права © 1997-2023 SPI и другие; См. условия лицензии
          Debian является зарегистрированным товарным знаком компании Software in the Public Interest, Inc. (Программное обеспечение в интересах общества)

          Эмоциональная история процессоров для первых компьютеров с 70-х до начала 90-х: AIM PowerPC

          В первой части были обзорно описаны многие разные процессоры до середины 90-х. Во второй части был обзор процессоров мейнфреймов IBM. Недавно мне предоставилась возможность немного попрограммировать для PowerPC, на основе чего появилась возможность добавить ещё одну часть к этим обзорам.

          Первым процессором архитектуры RISC стал разработанный в IBM во второй половине 70-х Джоном Коком процессор 801, который показал 2-кратный прирост производительности по сравнению с процессорами архитектуры CISC, используемой в мейнфреймах. На базе 801 был разработан процессор ROMP, который использовался в рабочей станции IBM RT PC (персональный компьютер технологии RISC), появившейся в 1986. Этот процессор использовал уже 32-разрядные регистры вместо 24-разрядных на 801 и имел поддержку работы с виртуальной памятью, которой не было на 801. Первый вариант ROMP был сделан в 1981 и это делает его одним из первым RISC-процессоров с 32-битной архитектурой (другими в этом ряду были AT&T Bellmac 32 и Berkeley RISC). Однако IBM задерживала внедрение этой технологии до 1985, что фактически означает, что успехи с производством ARM были решающими к склонению IBM к широкому использованию процессоров RISC. IBM могла банально отстать с инновациями от маленькой фирмы Acorn. Интересно, но IBM в итоге проиграла ARM, этот результат был возможно естественным следствием из задержек с внедрением новых технологий, что возможно было частью глобальной политики тех времен.

          Дальнейшие разработки в области архитектуры RISC привели IBM в 1990 к созданию архитектуры POWER, которая впервые использовалась в процессорах POWER1, которые нашли своё применение, в частности, в рабочих станциях RS/6000. Архитектура POWER развивается до сих пор, последним здесь стал процессор POWER10 (2021). Архитектура POWER стала базой для разработки процессора PowerPC (оптимизация производительности c использованием усовершенствованной RISC архитектуры – производительность вычислений) альянсом AIM (Apple-IBM-Motorola), который смог сделать свой первый процессор в 1992.

          До сих пор не вполне понятно, почему Apple предпочла PowerPC другим возможным вариантам. Она могла бы просто вложиться в разработку 68k и помочь Motorola добиться качественной эволюции своих процессоров, как это смогла сделать Intel. Хотя теоретически 68k хуже соответствуют мультискалярной архитектуре, чем x86, но практические результаты, показанные 68060, позволяют предположить, что это направление было не безнадежным. 68060 оказался даже быстрее Pentium на ряде типовых расчётов. Кроме того, у Motorola был и свой очень быстрый RISC-процессор 88000, который почему-то был проигнорирован практически всеми ИТ-компаниями. Apple, однако, пробовала использовать 88000 вместо 68к, был создан эмулятор 68к и два прототипа, которые успешно грузили macOS. Но дальнейшие разработки по не совсем понятным причинам были остановлены. Трудно поверить, что неофициальная кампания по подрыву позиций Motorola, начатая в 1980 Intel, не имела ко всем последующим неудачам и финальному краху Motorola никакого отношения. Apple могла бы вложиться и в ARM, но этот самый перспективный вариант возможно не прошел, из-за того, что тогда ARM ещё контролировался Acorn. Был ещё уже почти завершившийся успехом вариант перехода на архитектуру Sun SPARC, Sun сама перешла на SPARC с 68k, что могло бы сильно упростить подобный переход и для Apple, но в последний момент сделка сорвалась. Также по неясным причинам, имеющим отношение к большому бизнесу и политике, а не к техническим характеристикам, не состоялась сделка по переходу на процессоры архитектуры MIPS. Помимо компьютеров Apple, процессоры PowerPC были также использованы в малосерийных компьютерах AmigaOne, реинкарнации легендарных компьютеров Commodore Amiga. Были и другие системы на базе PowerPC.

          Характерной особенностью систем Macintosh на базе PowerPC является очень качественная поддержка эмуляции процессоров 68k, что позволяет использовать почти все программы, написанные для 68k-систем, абсолютно также как и PowerPC-программы. Любопытно, что для первого Power Macintosh Apple предлагала вариант с дополнительным процессором Intel 80486 для возможности работы с операционными системами Microsoft и IBM. Такое трудно было представить с первыми Макинтошами, в те времена подобные дополнительные платы были типовыми только для компьютеров Commodore Amiga.

          iMac G3, наиболее успешный компьютер с процессором PowerPC, их продано более 5 миллионов

          PowerPC весьма необычный процессор на фоне других процессоров как RISC-, так и CISC-архитектуры. Особенно он необычен своим способом работы с флагами. Флаги результатов сравнений (четыре бита, тетрада) могут храниться в восьми разных слотах! Можно, получается, набирать результаты до 8-х операций и использовать их с задержкой в последующих кодах! Результаты сравнений можно перекладывать из одного слота в другой или даже делать со слотами битовые операции – тоже очень необычные свойства. Существуют инструкции для знаковых и беззнаковых сравнений, что просто унаследовано от архитектуры IBM/370. Флаг переноса не используется в сравнениях и поэтому присутствует только в единственном числе. Необычна и работа с двумя флагами переполнения. Есть единственный текущий флаг переполнения, при его установке устанавливается и флаг суммарного переполнения, который может быть сброшен только специальным образом, обычные арифметические команды сбросить его не могут. Этот флаг суммарного (не текущего!) переполнения копируется при выполнении арифметических команд в одну из тетрад флагов результатов. Как-то выглядит очень перемудрённо.

          Другой характерной особенностью, унаследованной от IBM/370 и POWER, является архаичная система названия инструкций ассемблера. Название каждой инструкции отражает тип её аргументов. Например, LWZ означает грузить 32 бита (слово) из памяти в регистр, а LBZ – грузить байт. Такая система позволяет именовать регистры номерами, но этого давно уже практически никто не использует – все ассемблеры позволяют использовать имена типа R1 для регистров и в абсолютном большинстве кодов так и делают. Также от IBM/370 и POWER унаследована особая роль регистра 0, он при использовании в адресации и нескольких других случаях заменяется нулем.

          Архитектура PowerPC отличается также необычностью работы с регистрами. Прежде всего, регистров реально много. Есть 32 регистра общего назначения (причем для указателя стека выбран почему-то регистр с номером 1), 32 регистра для работы с вещественными числами, регистр для хранения флагов результатов целочисленных математических операций, что, как это уже отмечалось, даёт возможность сохранять до 8 тетрад-слотов с такими флагами. Для вещественных чисел есть также специальный регистр для хранения флагов и других битовых значений. Есть ещё и специальные регистры, число которых может быть более 1000! Из этих специальных регистров только несколько доступны для несистемного программирования. Часть специальных регистров могут даже иметь разное назначение на разных вариантах PowerPC! Три специальных регистра необходимы для прикладного программирования: регистр исключений (хранит, в частности, перенос и оба флага переполнения), связной регистр LR (нужен для вызова подпрограмм, аналогичен подобному регистру в архитектурах IBM/370, POWER, ARM и др.) и регистр-счётчик. Два последних регистра фактически являются дополнением к регистрам общего назначения (РОН). Интересно, что регистр-счётчик можно использовать и как адрес. Можно заметить отсутствие в архитектуре PowerPC регистра PC (счётчика команд), что действительно весьма необычно. Регистр состояния – системный и закрыт поэтому для прикладного программирования. В PowerPC есть и много других системных регистров. При этом нужно иметь в виду, что системные регистры и специальные – это совершенно разные наборы регистров.

          Система команд PowerPC весьма большая и скорее нетипичная для архитектур RISC. Хотя, строго говоря, из названия POWER и следует, что эта архитектура лишь использует архитектуру RISC как элемент, повышающий производительность, имея в своём составе и другие элементы. Кроме того, несмотря на обилие команд и регистров, PowerPC отличается весьма простыми методами адресации, что вполне соответствует идеологии RISC. Обычно инструкции имеют три операнда. Можно использовать регистры и 16-битные константы, что выгодно отличает от архитектуры ARM, где константы только 8-битные, или IBM/370, где они 12-битные. Для адресации можно использовать либо адрес в регистре с 16-битным явным смещением (у ARM смещение 12-битное), либо индексную адресацию из суммы двух регистров. Использование регистра 0 даёт возможность использовать просто явный 16-битный адрес или адрес в одном регистре. Можно заметить, что перемещаемая адресация отсутствует.

          Математические команды по умолчанию не меняют флагов. Для их генерации нужно использовать специальные варианты инструкций, а для команд сравнений указывать ещё в какой из 8-и слотов флаги помещать (слот 0 используется по умолчанию для целых, а 1 для вещественных). Для генерации переноса или его использования также нужны специальные варианты инструкций. И для генерации переполнения также нужен свой вариант инструкций. В общем случае, инструкция может иметь до 12 вариантов, отличающихся только способом работы с флагами! Рассмотрим все варианты инструкций сложения:

          1. ADD ADD. ADDO ADDO. ADDC ADDC. ADDCO ADDCO. ADDE ADDE. ADDEO ADDEO (основные 12);
          2. ADDI ADDIS ADDIC ADDIC. (для работы с 16-битной константой);
          3. ADDME ADDME. ADDMEO ADDMEO. ADDZE ADDZE. ADDZEO ADDZEO. (двухадресные, для работы с переносом и константами 0 и -1).

          Как можно заметить не все возможные варианты инструкций реально существуют, нет, например, инструкции сложения с переносом без генерации переноса. Всего можно насчитать 24 вариант мнемоник для инструкции сложения. Для вычитаний существует чуть меньше, только 21. Для сравнения, для архитектуры x86 есть всего две мнемоники для сложений ADD и ADC. Для ARM – 4, соответствующие мнемоникам PowerPC: ADD, ADDS, ADC и ADCS.

          Команд для целочисленного сравнения четыре, а с учётом указания слота – 32! В большинстве других процессоров вместо этого многообразия есть обычно одна единственная инструкция CMP.

          Инструкций для работы с поразрядными логическими операциями рекордно много. Помимо типовых И, ИЛИ, исключающего ИЛИ и НЕ есть ещё и все остальные возможные поразрядные логические операции: И-НЕ, ИЛИ-НЕ, эквивалентность, . В операциях И и ИЛИ один из аргументов можно инвертировать – это инструкции ANDC и ORC. Название второй инструкции получилось весьма звучным. Здесь буква C означает Complement (дополнение), для инструкций сложения и вычитания эта же буква означает Carry (перенос), что может немного сбивать с толку. Для каждой поразрядной логической инструкции с регистрами существуют варианты с установкой и без установки флагов. Кроме того, для операций AND, OR и XOR в качестве операнда можно использовать 16-битную константу в двух вариантах, как и для сложения или вычитания. Некоторые операции с константами, как и в случаях со сложением и вычитанием, можно использовать только в варианте с установкой флагов, а некоторые только без. Для операций AND и OR можно насчитать по 6 разных мнемоник, в других ассемблерах обычно хватает одной-двух.

          Умножения на PowerPC похоже на умножение в ARM, одно умножение дает только половину результата. Но в отличие от ARM, в PowerPC есть умножения для получения обоих частей результата. Как обычно, есть варианты команд с установкой флагов и без. Есть также варианты с установкой флага переполнения и без. Для получения старшей половины результата опять есть два варианта для знакового и беззнакового умножения. Итого имеем 8 разных названий для операций умножения.

          Деление на PowerPC отличается от этой операции на других процессорах, оно производит только частное. Для получения остатка нужно ещё умножать и вычитать. Как и для умножения, для деления есть 8 вариантов. Интересно, что деление на ноль можно обнаружить по флагу переполнения. При знаковом делении возможна ещё одна неопределенность, когда наибольшее отрицательное число делится на -1.

          В системе команд PowerPC есть довольно специальные, например, подсчет числа лидирующих нулей в слове. Обычные сдвиги и вращения в PowerPC стали частными случаями более необычных и сложных операций, которые используют битовую маску. Благодаря этой маске можно, в частности, сдвигать любую битовую последовательность в слове, например, инструкция RLWINM R2,R3,4,0,31 просто вращает значение регистра 3 влево 4 раза и заносит результат в регистр 2, RLWINM R2,R3,2,0,29 делает сдвиг влево на 2, RLWINM R2,R3,30,2,31 – логический сдвиг вправо на 2, RLWINM R2,R3,4,0,6 берёт 7 бит с позиции 4 из регистра 3 и переносит их в начало регистра 2 с занулением всех остальных бит регистра 2, RLWINM R2,R3,11,25,31 – аналогично, но переносит эти 7 бит в конец регистра 2. Эта же команда может просто занулять последовательности бит, например, RLWINM R2,R2,0,5,5 зануляет все биты кроме 5-о в R2, RLWINM R2,R2,0,6,4 зануляет только бит 5. Маску можно использовать не для зануления, а для сохранения неизменными выбранных бит в регистре-результате, что реализует вставку бит, например, RLWIMI R2,R3,30,2,8 берёт 7 первых бит регистра 3 и вставляет их в позицию 2 регистра 2. Вращать можно только влево, но из-за наличия быстрого сдвигателя, замена правых вращений на левые не замедляет расчётов.

          Для логических сдвигов есть зачем-то 4 дублирующие RLWNM операции, что весьма странно для архитектуры RISC. Для арифметических сдвигов вправо предусмотрены специальные операции и только они среди операций сдвигов и вращений устанавливают флаг переноса, хотя делают это совершенно не так, как могла бы подсказать интуиция. Среди команд PowerPC нет таких, которые могли бы делать вращения через перенос или даже просто устанавливать перенос типовым образом. Однако наличие операций для битовых вставок позволяет реализовать многословные сдвиги и вращения гораздо эффективнее, чем через перенос.

          Операции для работы с памятью для PowerPC делятся на две группы: для отдельных регистров и для групп регистров. Инструкции первой группы весьма просты и удобны: можно как грузить байт, полуслово или слово в регистр, так и сохранять байты, полуслова и слова из регистра в память. Полуслова при загрузке в регистр расширяются знаком или нулями, а байты только нулями. Интересной особенностью PowerPC является адресация с обновлением, когда после загрузки или выгрузки значение регистра-адреса увеличивается на размер загруженных или выгруженных данных. Однако, в отличие от ARM нет возможности сначала увеличить адрес, а потом делать операцию с памятью. Весьма интересны операции PowerPC для загрузки-выгрузки слов и полуслов с обратным порядком байт.

          Групповые загрузки и выгрузки сделаны в PowerPC неуклюже, гораздо с меньшей гибкостью, чем для ARM, 68k или даже древнего IBM/360. Так PowerPC позволяет грузить/выгружать только все регистры подряд от данного до последнего, т.е. R31. Возможно из-за неудобства этих инструкций они могут быть реализованы так, что исполняются медленнее, чем эквивалентная группа инструкций для индивидуальной загрузки-выгрузки! Для PowerPC есть ещё скорее экзотические инструкции строковой или побайтовой загрузки-выгрузки, которые позволяют как грузить невыровненные последовательности байт в группу регистров, так и выгружать последовательности байт по любому адресу в памяти. Из-за мультискалярности архитектуры, PowerPC поддерживает особые инструкции для синхронизации работы с памятью.

          Наверное наибольшей неожиданностью при знакомстве с системой команд PowerPC может оказаться большая сложность инструкций перехода. Обычно их используют в упрощенных, а не в полных вариантах. В PowerPC такие инструкции обрабатываются на отдельном устройстве, параллельно исполнению других команд. В командах переходов, в отличие от других команд, можно использовать не только абсолютную адресацию, но и перемещаемую. Для безусловных переходов явный адрес задаётся 26 битами, что весьма хорошо для перемещаемых переходов, но вот для абсолютных переходов получается, что можно адресовать только первые 64 МБ памяти. Если нужен абсолютный переход за пределы 64 МВ, то адрес перехода надо сначала поместить в специальный регистр, связи или счётчик. Переходов по содержимому РОН нет. Однако, специальный регистр можно загрузить только содержимым РОН, что делает необходимым две дополнительные операции для выполнения абсолютного перехода в любое место памяти.

          Самая большая заморочка связана с условными переходами. Явный адрес здесь задаётся только 15-ю битами, что вполне неплохо для перемещаемых переходов, но почти бессмысленно мало для абсолютных. Поэтому вместо последних нужно обычно использовать условные переходы через содержимое специальных регистров со всеми издержками, описанными выше. Почти во всех условных переходах используется специальный регистр-счётчик, который декрементируется и сравнивается с нулём, что создаёт одно из двух условий для перехода. Второе условие определяется одним из битов в регистре флагов, т.е. можно выбирать любой бит во всех восьми слотах. Можно произвольно комбинировать оба условия, в частности, игнорировать одно или даже оба. В последнем случае получим короткий безусловный переход, бесполезную дублирующую длинный переход инструкцию. Кроме того, можно делать подсказку предсказателю переходов, но эта возможность работает не на всех процессорах. Интересно, что переход через регистр-счётчик можно делать и при использовании этого регистра для генерации условия перехода – трудно поверить, что такое может быть как-то использовано практически. Интересно ещё, что вызовы подпрограмм можно делать через регистр связи, т.е. вызываем подпрограмму через адрес в этом регистре и сохраняем адрес возврата в нем же. Условные переходы по содержимому специальных регистров дают возможность условных возвратов из подпрограмм, что часто весьма полезно.

          PowerPC в отличие от ARM изначально имел мощную поддержку системной работы с памятью и кэшем. Поддерживается страничная виртуальная память и многозадачность. Кроме того, в PowerPC изначально была заложена идея перехода на 64-разрядную архитектуру, поэтому переход на неё для этого процессора – это теоретически совершенно естественный процесс, в отличие от x86 или ARM.

          Первый процессор PowerPC (601) унаследовал несколько десятков команд от архитектуры POWER, от которых отказались в последующих вариантах PowerPC. Однако macOS продолжает поддерживать эти команды через эмуляцию. Вообще, коды команд PowerPC имеют свои соответствия в архитектуре POWER, но ряд инструкций определяются несколько по-разному в обеих архитектурах. Интересно, что почему-то, несмотря на указанное соответствие, ассемблерные инструкций для POWER и PowerPC в большинстве случаев совершенно разные.

          Архитектура PowerPC изначально поддерживает операции с вещественными числами. Более того, целочисленные и вещественные вычисления проходят параллельно, что позволяет, например, ускорить целочисленные расчёты, используя для целочисленных данных вещественные регистры и инструкции пересылки данных. Так как для других систем дробная арифметика не рассматривалась, то и для PowerPC с этим не будет исключения. Можно только упомянуть, что точность расчетов на математических сопроцессорах для x86 и 68k несколько выше, чем на PowerPC. Что создавало некоторые проблемы при переходе с 68k на PowerPC.

          Интересно сравнить возможности первых PowerPC и ARM. PowerPC имеет несколько очевидных преимуществ. Главное из которых – это существенно большее количество РОН. Другие преимущества: встроенная поддержка управления памятью, встроенный математический сопроцессор, параллельное исполнение инструкций, аппаратное деление, инструкции для вращения с маской, индексная адресация, бо́льшие значения для констант и переходов, поддержка работы с полусловами. Но у ARM также есть свои заметные преимущества: очень гибкая работа с быстрым сдвигателем делает многие вычисления намного более быстрыми, инструкции для групповой загрузки-выгрузки регистров намного удобнее, наличие общей перемещаемой адресации, существенно меньшее энергопотребление, условность всех операций позволяет избегать части переходов и писать более быстрые и компактные коды, наличие умножения с накоплением. А современные ARM-32 могут использовать и полуслова, и полное умножение, и управление памятью.

          В заключении, краткий список наиболее известных процессоров PowerPC. 601 появился в 1993 и использовался в первых Power Macintosh. 603 появился чуть позже, он медленнее 601 на одинаковых частотах, но проще, что позволяло выпускать его более высокочастотные варианты. 604 появился в 1994, он имеет расширенные мультискалярные возможности – 6 независимых устройств для исполнения команд, 601 имеет их только 3. 620 появился с задержкой, только в 1997 и был первым 64-битным PowerPC. Однако он оказался медленнее 603 и поэтому нашёл только весьма ограниченное применение. Наиболее успешными процессорами PowerPC стали варианты модели 750, появившейся впервые в 1997. В Apple этот процессор получил наименование G3. Это 32-битный процессор. Переход на 64-бита в Apple проходил не сразу. 7400 производился с 1999 и поддерживал векторную математику, в Apple его называли G4. Только в 2002 появился наконец процессор 970, который стал первым 64-битным процессором, нашедшим себе применение в массовых персональных компьютерах. В Apple этот процессор получил обозначение G5. И на этом история PowerPC в персональных компьютерах фактически подошла к концу. AIM распался в 2004. Интересно, что Apple стала готовить переход на архитектуру x86, ещё в конце 90-х.

          Главной целью этого обзора было ознакомить читателей с типовыми особенностями первых процессоров PowerPC. Буду рад получить дополнения и критические замечания. Спасибо за прочтение.

          Этот материал доступен и на английском.

          PowerPC 970 (G5), “ультра-легкий”

          Последняя часть кодового наименования проекта PPC 970 (GP-UL) обозначала “ультра-легкий”. GP было кодовым наименованием процессора POWER 4. Критики обвиняли Apple и IBM в обмане, PPC G5 не был даже просто “легким”, но где обман в GP-UL? Судьба PowerPC пятого поколения широко известна, все знают что “не получилось”, что Apple, отчаявшись, перешла на Intel – отражение этих событий в общественном сознании прямолинейно и беспощадно к павшим. Мол, история Apple – это история лжи, глупости и фантастической корысти.

          PowerPC 970 (G5), “ультра-легкий”. Фото.

          А эпопея с PowerPC G5 доказывает это. Фигуранты эпопеи, в течение двух лет (с июня 2003 по июнь 2005), “меняли показания” и “изворачивались”.

          Сначала PowerPC пятого поколения обещали небо в алмазах и невероятные достижения “уже через год”, потом – чуть ли не мешали их с грязью, утверждая что для развития одной единицы мощности (что это такое?) PowerPC расходует в 5 раз больше энергии чем Intel-процессоры.

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

          Разработчикам PowerPC просто не хватило времени. В 2005 году Intel работала над новой архитектурой процессоров (Core), соединявшую в себе преимущества RISC и CISC, проект был близок к завершению. Тем кого посвятили в подробности этого проекта стало ясно: у PowerPC, шансов на быструю и легкую победу нет. Среди посвященных был Стив Джобс.

          Если бы не Intel Core, поражение PowerPC было бы временным.

          IBM, Freescale и P.A. Semi (ведущие разработчики PowerPC в 2005 году), несомненно взяли бы реванш. Но у Apple, основного потребителя PowerPC в индустрии, именно в 2005 году ни времени, ни желания, ждать реванша уже не было. У Apple была альтернатива.

          PowerPC 970 – первая презентация

          Дата и обстоятельства возникновения проекта GP-UL… неизвестны. Зато известно где и когда об этом проекте было заявлено публично. 15 октября 2002 года, в конференц-центре именем МакЭнери в Сан-Хосе, во второй день микропроцессорного форума MPF.

          Представил PowerPC 970 сотрудник IBM Microelectronics, старший архитектор процессоров PowerPC Питер Сэндон. PowerPC 970 он назвал “первым в новой семье 64-битных высоко-производительных PowerPC процессоров”.

          Происхождение PowerPC 970 было почти царское: он был разработан на основе POWER 4, одного из отлично зарекомендовавших себя процессоров-тяжеловесов для особо важных и ответственных задач. В его конструкции производительность была принесена в жертву надежности, умышленно: в областях его применения ошибка стоила бы слишком дорого, и эта паранойя была уместна.

          Для PowerPC 970 параноидальные меры были избыточны, в “ультра-легком”, по сравнению с его предком, процессоре, ничто не мешало инженерам IBM вдавить педаль газа в пол и разогнать их детище до немыслимых для POWER 4 тактовых частот.

          В обывательском создании “легкий” значит “ослабленный”, но реальность парадоксальна (это её главное свойство): PowerPC 970 не уступал своему ответственному предку почти ни в чем, а по ряду очень важных свойств даже превосходил его.

          Также как POWER 4, PowerPC 970 был “настоящим 64-битным процессором”. 64-битными были все его внутренности: и регистры, и магистрали данных. Более того, все что связано с AltiVec (векторные модули процессора) было 128-битным… Обыватели были в восторге.

          PowerPC 970 (G5), “ультра-легкий”. PowerPC 970 – первая презентация. Фото.

          Правда, увеличение разрядности не имело никакого отношения ни к производительности, ни к мощи – но мощь психологического эффекта была какой надо. Тем не менее, самым главным достоинством POWER 4 и PowerPC 970 была поддержка 32-битного кода. То есть, никаких 32- и 64-битных режимов или вариантов программ не требовалось.

          С точки зрения пользователя и прикладного программиста, обе разновидности программ просто работали.

          Число регистров поражало воображение: 32 64-битных целочисленных регистра, 32 64-битных регистров для чисел с плавающей точкой, 32 128-битных регистра для векторного блока, и по 48 регистров каждого из этих типов данных для “переименования”.

          8 исполнительных модулей – два для целочисленных операций, два для арифметики с плавающей точкой, два для векторных операций и два для работы с памятью (загрузка и выгрузка). Разные конвейеры для разных типов данных, с разным число стадий: от 17 для целочисленных до 25 для векторных.

          Техническими подробностями можно было бы занять еще несколько страниц, но вместо этого мы просто подведем итог: инженеры IBM, в сотрудничестве с Apple (в чем, кроме разработки “северного моста”, оно заключалось выяснить я так и не смог) создали самый настоящий шедевр.

          На заводе IBM в штате Нью-Йорк, предельно автоматизированные и почти безлюдные цеха которого через несколько месяцев (на мероприятии Apple) были показаны публике – любят “яблочники” производственную тему – вскоре началось производство этих процессоров. К 15 октября 2002 года новый процессор существовал в нескольких дюжинах экземпляров, а его характеристики сообщались в сослагательном наклонении.

          С физической точки зрения процессор был замечательным: технологический процесс 0,13 мкм, 8-слоёв SOI (КНИ, кремний-на-изоляторе) на медной основе, медные межсоединения и прочие “вкусности”.

          PowerPC 970, вторжение в реальность

          PowerPC 970 (G5), “ультра-легкий”. PowerPC 970, вторжение в реальность. Фото.

          В начале века в индустрии микропроцессоров шла ожесточенная война. За тактовые частоты. IBM в ней не участвовала: за лидерство боролись Intel и AMD. Самый прямой способ увеличить производительность процессора – увеличение его тактовой частоты.

          Путь этот… пагубный и конечный, зато простой и эффективный – до поры до времени, да и покупатели прочно подсели на эти числа: 2,5 ГГц, 2.8 ГГц, 3,0 ГГЦ…

          Но появление PowerPC 970, которые при меньших тактовых частотах, за счет инженерного искусства его создателей, не уступали лучшим изделиям воюющих сторон, не ускользнуло от их внимания. Возможно, именно этот шок ускорил развитие проекта новой архитектуры процессоров Intel, объединявших в себе лучшее из RISC и CISC…

          Пока все выглядело безоблачно и многообещающе. На WWDC 2003 года Стив представил PowerPC 970 (это торговая марка IBM), он же PowerPC G5 (торговая марка Apple), и первые компьютеры на основе этого процессора.

          Это были мощные настольные Mac’и предназначенные для профессионалов. В очередной раз Mac’и превосходили “быстрые PC” по всем мыслимым параметрам – в том числе и по части сложности системы охлаждения.

          Новый процессор был “горячим” не только по производительности, но и вообще.

          В идеальном мире с этим не было бы никаких проблем. Первая цель (быстрый процессор с премиальными характеристиками) была успешно достигнута. Революция свершилась.

          Отныне, перед инженерами IBM стояли другие первостепенные задачи: перейти на процесс 90 нанометров (а в перспективе и на 65), снизить энергопотребление при той же или даже большей производительности, уменьшить выделение тепла… В преодолении препятствий на пути к этим целям и состоит работа настоящего инженера.

          Пожалуй, к 2006-2007 году они могли бы и преуспеть… Но не судьба.

          В 2003-2004 годы, по мнению экспертов, Apple переведет на новые и радикально более мощные PowerPC пятого поколения верхнюю часть её продуктовой линейки, PowerMac и PowerBook (обнадеживающие новости от IBM, казалось, позволяли надеяться на это), а в бытовых компьютерах (eMac, iMac и iBook) будут использоваться все более продвинутые и производительные модификации процессоров четвертого поколения, пока…

          Как мы сегодня знаем, эксперты дважды ошиблись в этих прогнозах. IBM удалось снизить теплоотдачу одной из разрабатываемых модификаций PowerPC 970, но для применения в портативных компьютерах он не подходил: он был слишком прожорлив для этого, даже в режиме “sleep”.

          С “бытовыми” настольными компьютерами эксперты тоже промахнулись. iMac G5 все-таки вышел в свет, и наделал своим появлением много шума. Термодинамика его корпуса тоже была нетривиальна, зато про энергопотребление можно было скромно промолчать.

          А законодатель в области портативных компьютеров в течение двух-трех лет не возмущать спокойствие новыми шедеврами уже не имел никакой возможности. Последствия проблем одной единственной компании для индустрии процессоров были намного драматичнее чем эти её проблемы…

          Обсудить историю Apple вы можете в нашем Telegram-чате.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *