Введение
PowerPC (с расшифровкой Performance Optimization With Enhanced RISC – Performance Computing, иногда сокращаемой как PPC) — это архитектура набора команд RISC (reduced instruction set computer), разработанная альянсом Apple, IBM и Motorola в 1991 году, известным как AIM. PowerPC, как развивающаяся архитектура набора команд, с 2006 года называется Power ISA, в то время как старое название продолжает использоваться как торговая марка для некоторых реализаций процессоров на базе Power Architecture. Изначально разработанная для персональных компьютеров, эта архитектура хорошо известна благодаря использованию в настольных и портативных компьютерах Apple с 1994 по 2006 год, а также в ряде игровых консолей, включая Xbox 360 от Microsoft, PlayStation 3 от Sony и GameCube, Wii и Wii U от Nintendo. PowerPC также применялся в марсоходах Curiosity и Perseverance на Марсе и в различных спутниках. Впоследствии он стал нишевой архитектурой для персональных компьютеров, особенно в реализациях AmigaOS 4, но остаётся популярным для встраиваемых систем. PowerPC был основой инициатив AIM PReP и Common Hardware Reference Platform (CHRP) в 1990-х годах. Он во многом основан на более ранней архитектуре IBM POWER и сохраняет с ней высокий уровень совместимости; архитектуры остались достаточно близкими, чтобы одни и те же программы и операционные системы могли работать на обеих платформах при некоторой подготовке; новые чипы серии Power используют Power ISA.
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple–IBM–Motorola alliance, known as AIM. PowerPC, as an evolving instruction set, has been named Power ISA since 2006, while the old name lives on as a trademark for some implementations of Power Architecture–based processors. Originally intended for personal computers, the architecture is well known for being used by Apple's desktop and laptop lines from 1994 until 2006, and in several videogame consoles including Microsoft's Xbox 360, Sony's PlayStation 3, and Nintendo's GameCube, Wii, and Wii U. PowerPC was also used for the Curiosity and Perseverance rovers on Mars and a variety of satellites. It has since become a niche architecture for personal computers, particularly with AmigaOS 4 implementations, but remains popular for embedded systems. PowerPC was the cornerstone of AIM's PReP and Common Hardware Reference Platform (CHRP) initiatives in the 1990s. It is largely based on the earlier IBM POWER architecture, and retains a high level of compatibility with it; the architectures have remained close enough that the same programs and operating systems will run on both if some care is taken in preparation; newer chips in the Power series use the Power ISA.
История
История RISC началась с исследовательского проекта IBM 801, руководителем которого был Джон Кокк, где он разработал концепции RISC в 1975–1978 годах. Микропроцессоры, основанные на 801, использовались в ряде встраиваемых продуктов IBM и в конечном итоге стали 16-регистровым процессором IBM ROMP, применяемым в IBM RT PC. RT PC представлял собой быстро разработанную систему, реализующую архитектуру RISC. В период с 1982 по 1984 год IBM начала проект по созданию самого быстрого микропроцессора на рынке; эта новая 32-битная архитектура на протяжении всего цикла разработки, длившегося около 5–6 лет, получила название «Проект «Америка»». Результатом стала архитектура набора команд POWER, представленная в начале 1990 года вместе с системой RISC System/6000. Оригинальный микропроцессор POWER, одна из первых суперскалярных реализаций RISC, представляет собой высокопроизводительную многочиповую конструкцию. Вскоре IBM осознала необходимость в микропроцессоре на одном чипе для масштабирования линейки RS/6000 от машин начального уровня до высокопроизводительных. Началась работа над однокристальным микропроцессором POWER, получившим обозначение RSC (RISC Single Chip). В начале 1991 года IBM пришла к выводу, что его конструкция потенциально может стать микропроцессором, выпускаемым в больших объемах и используемым в отрасли.
Эндийские режимы
Большинство чипов PowerPC переключают порядок байтов (эндианитет) с помощью бита в MSR (регистре состояния машины), при этом второй бит предназначен для запуска ОС с другим порядком байтов. Доступ к "инвертированной таблице страниц" (хеш-таблице, функционирующей как TLB с памятью вне чипа) всегда осуществляется в режиме старшего порядка байтов (big endian). Процессор запускается в режиме старшего порядка байтов. В режиме младшего порядка байтов (little endian) три младших бита эффективного адреса подвергаются операции исключающего ИЛИ (XOR) с трехбитным значением, выбираемым в зависимости от длины операнда. Этого достаточно, чтобы для обычного программного обеспечения процессор выглядел как работающий в режиме младшего порядка байтов. Операционная система будет видеть искаженное представление данных при доступе к внешним чипам, таким как видео- и сетевое оборудование. Для исправления этого искажения материнская плата должна выполнять безусловный 64-битный обмен байтами для всех данных, поступающих в процессор или покидающих его. Таким образом, порядок байтов становится свойством материнской платы. ОС, работающая в режиме младшего порядка байтов на материнской плате старшего порядка байтов, должна выполнять обмен байтами и отменять операцию XOR при доступе к чипам младшего порядка байтов. Операции AltiVec, несмотря на 128-битную разрядность, обрабатываются как 64-битные. Это обеспечивает совместимость с материнскими платами младшего порядка байтов, разработанными до появления AltiVec. Интересным побочным эффектом этой реализации является то, что программа может сохранить 64-битное значение (самый длинный формат операнда) в память в одном режиме порядка байтов, переключить режимы и считать то же 64-битное значение, не обнаружив изменения порядка байтов. Это не произойдет, если материнская плата будет переключена одновременно. Mercury Systems и Matrox использовали PowerPC в режиме младшего порядка байтов. Это было сделано для того, чтобы устройства PowerPC, выступающие в качестве сопроцессоров на платах PCI, могли обмениваться структурами данных с хост-компьютерами на базе x86. И PCI, и x86 используют порядок байтов младшим порядком байтов. OS/2 и Windows NT для PowerPC работали в режиме младшего порядка байтов, в то время как Solaris, AIX и Linux работали в режиме старшего порядка байтов. Некоторые встроенные чипы PowerPC от IBM используют бит порядка байтов для каждой страницы. Ничто из вышесказанного к ним не относится.
Реализация
Первой реализацией архитектуры был PowerPC 601, выпущенный в 1992 году, основанный на RSC и реализующий гибрид инструкций POWER1 и PowerPC. Это позволило IBM использовать чип в своих существующих платформах на базе POWER1, хотя это также означало некоторые трудности при переходе на "чистые" PowerPC второго поколения. Apple продолжала работу над новой линейкой компьютеров Macintosh на основе чипа и в конечном итоге выпустила их как Power Macintosh на базе 601 14 марта 1994 года. Карты ускорителя, основанные на чипах PowerPC первого поколения, были созданы для Amiga в преддверии перехода на возможную новую платформу Amiga, разработанную вокруг PowerPC. Карты ускорителя также включали процессор Motorola 68040 или 68060 для обеспечения обратной совместимости, поскольку в то время очень мало приложений могли работать непосредственно на чипах PPC. Однако новые машины так и не появились, и впоследствии Commodore объявила о банкротстве. Более десяти лет спустя была выпущена AmigaOS 4, которая закрепила платформу на этой архитектуре. OS4 совместима с этими ускорителями первого поколения, а также с несколькими пользовательскими материнскими платами, созданными для нового воплощения платформы Amiga. IBM также имела полную линейку настольных компьютеров на базе PowerPC, готовых к отгрузке; к сожалению, операционная система, которую IBM планировала использовать на этих компьютерах — Microsoft Windows NT — не была завершена к началу 1993 года, когда машины были готовы к маркетингу. Соответственно, и ввиду того, что IBM испытывала неприязнь к Microsoft, IBM решила портировать OS/2 на PowerPC в виде Workplace OS. Эта новая программная платформа разрабатывалась в течение трех лет (1992–1995 гг.) и была отменена с релизом для разработчиков в декабре 1995 года из-за разочаровывающего запуска PowerPC 620. По этой причине настольные компьютеры IBM PowerPC не поступили в продажу, хотя эталонный дизайн (с кодовым названием Sandalbow), основанный на процессоре PowerPC 601, был выпущен как модель RS/6000 (в выпуске Byte за апрель 1994 года была опубликована обширная статья о настольных компьютерах Apple и IBM PowerPC). Apple, у которой также не было ОС на базе PowerPC, пошла другим путем. Используя платформу портирования, полученную в результате секретного проекта Star Trek, компания перенесла основные части своей операционной системы Mac OS на архитектуру PowerPC и разработала эмулятор 68k, который мог запускать приложения на базе 68k и части ОС, которые не были переписаны. Второе поколение было "чистым" и включало в себя "низкопроизводительный" PowerPC 603 и "высокопроизводительный" PowerPC 604. 603 примечателен своей низкой стоимостью и энергопотреблением. Это была намеренная цель разработки Motorola, которая использовала проект 603 для создания базового ядра для всех будущих поколений чипов PPC. Apple попыталась использовать 603 в новом дизайне ноутбука, но не смогла из-за небольшого кэша первого уровня размером 8 КБ. Эмулятор 68000 в Mac OS не помещался в 8 КБ и, следовательно, значительно замедлял работу компьютера. 603e решил эту проблему, имея кэш L1 объемом 16 КБ, что позволило эмулятору работать эффективно. В 1993 году разработчики на заводе IBM в Эссекс-Джанкшн, Берлингтон, штат Вермонт, начали работу над версией PowerPC, которая поддерживала бы набор инструкций Intel x86 непосредственно на CPU. Хотя это был лишь один из нескольких параллельных проектов архитектуры Power, над которыми работала IBM, этот чип стал известен внутри IBM и в СМИ как PowerPC 615. Опасения по поводу прибыльности и слухи о проблемах с производительностью при переключении между x86 и наборами инструкций PowerPC привели к отмене проекта в 1995 году после производства лишь ограниченного количества чипов для внутреннего тестирования. Помимо слухов, процесс переключения занимал всего 5 циклов, то есть время, необходимое процессору для опустошения конвейера инструкций. Microsoft также способствовала гибели процессора, отказавшись поддерживать режим PowerPC. Первая 64-битная реализация — PowerPC 620, но она, по-видимому, не получила широкого распространения, поскольку Apple не хотела ее покупать, а из-за большой площади кристалла она была слишком дорогой для встраиваемых систем. Он был выпущен позже и оказался медленнее, чем ожидалось, и IBM использовала собственный дизайн POWER3, не предложив 64-битной "маленькой" версии до выхода PowerPC 970 в конце 2002 года. 970 — 64-битный процессор, производный от серверного процессора POWER4. Для его создания ядро POWER4 было модифицировано для обеспечения обратной совместимости с 32-битными процессорами PowerPC, и был добавлен векторный блок (подобный расширениям AltiVec в серии 74xx от Motorola). Процессоры IBM RS64 — это семейство чипов, реализующих вариант PowerPC под названием "Amazon". Эти процессоры используются в компьютерных семействах RS/6000 и IBM AS/400; архитектура Amazon включает в себя проприетарные расширения, используемые AS/400. Процессоры POWER4 и более поздние процессоры POWER реализуют архитектуру Amazon и заменили чипы RS64 в семействах RS/6000 и AS/400. IBM разработала отдельную линейку продуктов под названием "4xx", ориентированную на встраиваемый рынок. Эти дизайны включали 401, 403, 405, 440 и 460. В 2004 году IBM продала свою линейку продуктов 4xx корпорации Applied Micro Circuits Corporation (AMCC). AMCC продолжает разрабатывать новые высокопроизводительные продукты, частично основанные на технологиях IBM, а также на технологиях, разработанных внутри AMCC. Эти продукты ориентированы на различные приложения, включая сети, беспроводную связь, хранение данных, печать/изображение и промышленную автоматизацию. В количественном выражении PowerPC чаще всего встречается в контроллерах автомобилей. Для автомобильного рынка Freescale Semiconductor первоначально предлагала множество вариантов под названием MPC5xx, таких как MPC555, построенных на варианте ядра 601 под названием 8xx и разработанных в Израиле компанией MSIL (Motorola Silicon Israel Limited). Ядро 601 является одновыпускным, то есть может выдавать только одну инструкцию за тактовый цикл. К нему добавлены различные элементы пользовательского оборудования для обеспечения ввода-вывода на одном чипе. В 2004 году для автомобильного рынка были выпущены устройства следующего поколения с четырехзначным номером 55xx. Они используют более новые ядра PowerPC серии e200. Сетевое оборудование — еще одна область, где в больших количествах используются встраиваемые процессоры PowerPC. MSIL взяла движок QUICC из MC68302 и создала PowerQUICC MPC860. Это был очень известный процессор, который использовался во многих граничных маршрутизаторах Cisco в конце 1990-х годов. Варианты PowerQUICC включают MPC850 и MPC823/MPC823e. Все варианты включают отдельный RISC-микродвижок под названием CPM, который разгружает задачи обработки связи от центрального процессора и имеет функции DMA. Следующим чипом в этой семье стал MPC8260 с ядром на базе 603e и другим CPM. Honda также использует процессоры PowerPC для своего робота ASIMO. В 2003 году BAE Systems Platform Solutions поставила бортовой компьютер для истребителя F-35. Эта платформа состоит из двух PowerPC от Freescale в тройной резервной конфигурации. В 2024 году Aeronautical Development Establishment протестировала высокопроизводительный цифровой компьютер системы управления полетом, работающий на четырехъядерном процессоре PowerPC на борту HAL Tejas Mark 1A.
Операционные системы
Операционные системы, работающие на архитектуре PowerPC, как правило, разделяются на те, что предназначены для систем PowerPC общего назначения, и те, что предназначены для встраиваемых систем PowerPC.