Почему Palm 2004 года работает быстрее, чем iPhone?
В наше время эталоном плавности и производительности среди мобильных устройств принято считать iPhone. Действительно, инженеры Apple проделали довольно большую работу по оптимизации скорости отрисовки и плавности интерфейса, однако не одним iPhone мы были едины!
В 2004 году, Palm выпустила уникальный смартфон, который сочетал в себе привычный интерфейс, широкий функционал, невероятную производительность и... эмулятор M68k. Я решил разобраться, в чём-же заключается его главный секрет и готов рассказать вам о Treo 650 во всех подробностях!
❯ Предыстория
Устройства Palm всегда были уникальными и концептуально отличались от других карманных компьютеров. Пока другие производители гнались за самым мощным железом и функционалом, Palm делала акцент на обратную совместимость программ, высокую производительность и синхронизацию с ПК. История портативных гаджетов Palm начинается с КПК Pilot 1000, который вышел в 1996 году и стал одним из первых действительно массовых гаджетов в таком форм-факторе.
Pilot 1000 отдаленно напоминал современные смартфоны: у него был интерфейс, адаптированный для работы стилусом или пальцем, функционал органайзера, а также возможность установки сторонних программ и синхронизации с ПК. При этом у Palm'ов была одна очень интересная особенность: для ввода текста предлагалось использовать не виртуальную клавиатуру, а развитую технологию рукописного ввода Graffiti, которая стала визитной карточкой компании на протяжении долгих лет! Внутри Pilot'а был современный для тех лет процессор Motorola MC68328, работавший на частоте 16МГц и целых 128КБ оперативной памяти, а розничная цена составляла всего 299$, что обеспечило популярность модели и интерес со стороны разработчиков софта.
После успеха Pilot 1000, Palm продолжила развивать линейку КПК на всё той-же аппаратной платформе, постепенно проводя её апгрейды: сначала вышел Pilot Personal/Professional с поддержкой модема от 3Com, затем Pilot III с 2МБ оперативной памяти, подсветкой экрана и ИК-портом, а годом позже и флагманский Palm VII с доступом к интернету с помощью сети Mobitex. К 2000 году для PalmOS вышло довольно много различного софта, причём большинство было платным и для его покупки надо было выписывать чек или покупать физическую копию на диске.
К 2001-ому году, Palm начала терять позиции на рынке карманных компьютеров из-за появления Microsoft PocketPC: операционная система на базе Windows CE имела многозадачность, позволяла легко портировать программы с ПК благодаря схожему API и поддерживала самые разные архитектуры процессоров. Несмотря на то, что устройства на PPC были значительно дороже, многие пользователи отдавали предпочтение именно им — и с этим нужно было что-то делать.
В марте 2001 года компания представила новую модель — m505, которая отличалась наличием 16-битного цветного дисплея, новым процессором Motorola Dragonball VZ, работавшем на частоте 33МГц и целыми восемью мегабайтами оперативной памяти, а также новой операционной системой PalmOS 4.0. Кроме этого, компания начала лицензировать PalmOS сторонним производителям, благодаря чему появилась линейка самобытных КПК Sony CLIÉ.
Однако уже в 2002 году, сомнительные перспективы низкочастотных процессоров Dragonball и устаревшей архитектуры m68k были очевидны для Palm и они решились на рискованный шаг: в новой линейке Tungsten они решили перейти на процессоры TI OMAP с архитектурой ARM. Но как тогда быть с уже существующим софтом, который распространялся на дисках? Правильно — встроить эмулятор m68k (PACE) в новую систему PalmOS 5.0 «Garnet»!
И если на первый взгляд эта затея кажется глупой, вы просто сравните Dragonball VZ и TI OMAP 1510:
- Ядро: M68EC000 (корни идут от CMOS-версии M68k из 1985 года) vs ARM925T (почти самое современное ядро ARM на момент появления Tungsten, современнее только ARM926E)
- Частота: 33МГц vs 144МГц
- MIPS (число миллионов инструкций в секунду): 5.4 MIPS vs ~159 MIPS
- Кэш-память: Отсутствует vs 16КБ для инструкций и 8КБ для данных
Таким образом, программы для m68k на ARM Palm'ах работали не хуже, чем на оригинальных устройствах, однако с SDK для новых устройств был очень неприятный нюанс...
В том же 2002 году, Palm выпустила первое устройство, где отошла от концепции рукописного ввода и установила полноценную QWERTY-клавиатуру — Tungsten W. Влияние BlackBerry на тенденции бизнес-устройств в те годы было очевидным, поэтому Palm разработали не просто КПК, а целый коммуникатор — с собственным радиомодулем, дисплеем высокого разрешения и... почему-то всё тем-же процессором Dragonball VZ!
Пс, если кому-то Tungsten W не нужен или вы хотите его продать — пните в комментариях пожалуйста. Можно даже нерабочий — ремонтировать такие штучки для меня одно удовольствие!
А через год компания Handspring, созданная выходцами из Palm, представила своё собственное видение смартфона на PalmOS — Treo 600, который является кровным братом Treo 650, о котором мы с вами сегодня и поговорим. Но перед тем, как переходить к обзору устройства — мы с вами сначала его разберём и узнаем, что у него скрывается «под капотом» — здесь действительно есть на что посмотреть!
Свой Treo 650 я купил на китайской онлайн-барахолке примерно за 1.900 рублей вместе с кабелем, а выкупить и привезти его в Россию мне помогли подписчики Роман, Андрей и сервис YouCanBuy, за что вам огромное спасибо.
❯ Что внутри?
Разборка начинается с снятия задней крышки и выкручивания шести винтиков по периметру устройства. Однако перед разборкой я сразу обратил внимание на необычный 6-пиновый АКБ, который явно напоминал HTC'шные аккумуляторы тех лет. Главная их особенность в том, что на BMS (плата защиты) распаяны дополнительные чипы для обмена информацией о модели аккумулятора, его заряде, температуре и другие необходимые данные. Если запитать коммуникатор HTC тех лет от «лабораторника» просто подключив плюс и минус, то гаджет скорее всего включится, но драйвер контроллера питания не даст разрешение на старт зарядки и в меню не будет виден индикатор уровня заряда.
После разборки нас встречает «бутербродная» плата и до боли знакомая схемотехника. К сожалению, в процессе эксплуатации гаджет залили водой — на защитных экранах и контактах видны следы лёгкой коррозии, а на тест-поинтах и пятачках не распаянных SMD-компонентов — заметные потемнения.
Начнём пожалуй с верхней части бутерброда — платы, на которой виднеется слот под сим и IMEI. Крепится она на двух винтах и подключена с помощью разъёма штырькового типа. Думаю всем читателям уже очевидно, что это GSM-модем устройства, однако даже такая банальная вещь реализована здесь весьма необычным способом. Дело в том, что в коммуникаторах нулевых, использование внешних модемов было отнюдь не редкостью. В тех-же самых устройствах RoverPC и O2 можно было встретить внешние платы-модемы Telit, припаянные к основной плате методом поверхностного монтажа. Однако здесь, судя по всему, если радиочасть устройства выходила из строя, можно было самому просто поменять плату с модемом на другую и продолжать пользоваться смартфоном как ни в чем не бывало!
Конструктивно модем достаточно прост и построен на относительно распространенной компонентной базе тех лет:
- В качестве Baseband-процессора процессора используется система на кристалле Broadcom BCM2132. На самом деле, этот SoC самодостаточен и способен в одиночку выполнять практически все функции необходимые для простого кнопочного телефона. Состоит он из одного ядра ARM926EJ, способного работать на частоте до 74МГц, DSP-сопроцессора на архитектуре Teaklite, контроллера дисплея, камеры, SD-карт, NAND-флэшек, а также шин общего назначения — I2C, SPI, UART, USB.
- Чуть правее расположилась так называемая eMCP-микросхема Spansion S71PL032JA0, которая в одном корпусе содержит как оперативную, так и флэш-память, позволяя значительно сэкономить место на плате. Объём памяти скромный — 2МБ PSRAM и 4МБ NOR-памяти. Классика!
- Выше процессора находится чип Infineon PMB6258, который выполняет задачи RF-фронтэнда или трансивера. Простыми словами, именно он ответственен за преобразование аналогового сигнала с антенны в цифровой пакет, который затем обрабатывает DSP в Baseband'е. Справедливо и обратное: когда Baseband подготовил GSM-пакет, он отсылает его в трансивер, а тот «пускает» его в эфир!
- Рядом с PMB6258 расположился чип PMB2259, который выполняет роль VGA-драйвера или же усилителя сигнала. Вполне возможно, что это некий предусилитель, поскольку рядом с флэш-памятью скрывается ещё один безымянный GSM-усилитель.
С модемом закончили, здесь всё стандартно. Пора разбирать и изучать гаджет дальше: вытаскиваем шлейф клавиатуры и видим очень интересный парт-номер...
После снятия защитных экранов сомнений больше не осталось: рядом с процессором расположился чип производства самой HTC — 30H80049. Точное его назначение мне неизвестно, но по опыту с другими коммуникаторами этого вендора осмелюсь предположить, что он выполняет роль контроллера питания. Поскольку чипы HTC используются только в собственных разработках компании — становится очевидным, что аппаратную часть Palm Treo разработал именитый тайваньский производитель! Кто бы мог подумать?
Далее мы видим сердце основной части устройства — топовый для своих лет чипсет Intel PXA270. На самом деле, о крутости этого процессора можно рассказывать часами, чипы на базе микроархитектуры XScale были легендарными в гиковских и промышленных кругах благодаря хорошей документации, отличной производительности и наличию порта Linux. Но давайте по порядку:
- Одно ARMv5-совместимое ядро, построенное на собственной микроархитектуре Intel XScale, способное работать на частоте до 624МГц. Также PXA270 поддерживал набор SIMD-инструкций Wireless MMX (олды смахнули слезу, услышав знакомую аббревиатуру).
- 32 килобайта L1-кэша инструкций + 32 килобайта L1-кэша данных.
- Возможность выполнения до 800 миллионов инструкций в секунду (MIPS) при максимальной рабочей частоте.
- Контроллеры шин общего назначения: UART, I2C, SPI, USB.
- Периферийные модули для управления DRAM, NAND и NOR-памятью, а также контроллер SD-карт.
- Контроллеры клавиатуры, дисплея, ШИМ, GPIO и даже встроенный RTC...
- 64МБ встроенной NOR-памяти типа StrataFlash
- И всё это будучи изготовленным на 180нм техпроцессе!
Чуть ниже процессора расположился один-единственный чип SDRAM-памяти производства Infineon объёмом в 32МБ, а также микросхема NAND-памяти M-Systems объёмом аж в 64МБ. Одна флэшка под систему, вторая под пользовательские данные — где такое ещё можно увидеть?!
Около разъёма можно наблюдать ещё два «питальника» устройства: ШИМ-контроллер MAX1887, а также контроллер зарядки аккумулятора MAX1874E. Чуть ниже расположилась неизвестная микросхема, судя по характерной для Sony маркировке — это контроллер дисплея.
Не менее интересен и сам дисплей смартфона — это крупная 2.8" матрица Sony ACX533AKM с разрешением аж в 320x320, выполненная по технологии TFT-LCD (LTPS). По меркам 2004 года это очень большое разрешение для кнопочного устройства, примерно как в наше время 4K в смартфоне!
Лично меня удивляет тот факт, что на шлейфе присутствует нетипично-большое количество обвязки и в первую очередь внешняя микросхема формирования BIAS-напряжения (контрастности) TI TPS65110, который обычно встроен в сам кристалл дешифратора. Кроме того, похоже что сразу на шлейфе распаян драйвер подсветки — такое тоже встретишь не часто!
Ну что-ж, теперь мы знаем, что у Treo 650 находится «под капотом». На самом деле, у смартфона достаточно необычный даже по меркам тех лет конструктив, местами он напоминает плату самого первого коммуникатора от HTC — Wallaby и именно благодаря этой характерной преемственности, я сразу же понял откуда идут корни устройства!
С оценкой аппаратной части устройства мы закончили, давайте перейдем к программной!
❯ PalmOS — это чудо?
После включения нас встречает калибровка тачскрина, диалог первоначальной настройки и наконец главный экран. У Treo была интересная особенность: концепции рабочего стола в привычном понимании у него могло и не быть, а главным экраном являлось меню приложений, которое было разделено на несколько подгрупп.
В отличии от современников на Windows Mobile, Treo работает невероятно быстро. Почти все приложения открываются моментально и сразу готовы к работе, никаких экранов загрузки, ANR и тормозящих интерфейсов — всё работает так, как в новом iPhone сразу после покупки. И хотя iPhone куда более плавный, чем Treo 650, в некоторых кейсах смартфон от Palm показывает себя не хуже, а то и лучше какого-нибудь iPhone 15 на самой последней iOS!
За такой впечатляющей производительностью скрывается сразу две архитектурные тайны PalmOS. Первая заключается в том, что система от Palm «однозадачная» — и в ней одновременно может работать только один процесс, а для реализации отложных задач предлагается использовать кооперативную многозадачность и события. На самом деле, в ядре системы есть потоки и задачи, однако API для них задокументировано плохо, а планировщик включается лишь по запросу. Таким образом, приложению доступно практически всё процессорное время без необходимости делить его на кванты.
Вторая тайна удивит вас не меньше: помните в начале статьи я рассказывал о встроенном эмуляторе m68k — PACE? Дело в том, что Palm по каким-то причинам не успела портировать системные приложения на ARM и поэтому почти все системные и сторонние программы написаны для архитектуры m68k и выполняются в эмуляторе, сохраняя при этом невероятную производительность! А секрет здесь прост: дело в том, что PACE эмулирует только само процессорное ядро, но не весь КПК Palm. Когда программа вызывает системную функцию, эмулятор её перехватывает и вызывает соответствующую нативную реализацию для ARM.
По такой-же концепции написан эмулятор PPSSPP, а также слой совместимости с x86 в Windows 10 for ARM. По сути, это превращает нативные m68k-приложения в что-то типа интерпретируемых...
Интересно также то, что у PalmOS по сути и не было концепции файловой системы. Приложения хранили свои данные в собственных базах данных, которых могло быть несколько, а сделано это было для упрощения процесса синхронизации с компьютером. Для этого у Palm'ов была очень удобная программа — HotSync. С её помощью производился процесс авторизации пользователя, устанавливался софт (но никто не мешал устанавливать программы с SD-карты), делались бэкапы, а также переносились мультимедийные файлы.
Не менее интересна реализация сетевого стека в Palm'е, которая позволяет прицепить PPP вообще к любым портам в Treo. Сеть через UART? Пожалуйста. Сеть через ИК-порт — тоже без проблем. Сеть через BT или модем 3Com от модели 1998 года? Вообще без проблем! Можно было подключить даже Wi-Fi модуль в формате SDIO-карточки!
Однако в современном интернете у Treo 650 уже всё не так хорошо. К почтовым серверам с SSL он подключится не может, а браузер даже OpenNet не открывает. Это очень грустно...
Зато у Treo 650 всё хорошо с играми. В своё время известный мобильный издатель Astraware портировал на PalmOS многие Shareware-хиты нулевых. Здесь есть полноценная Zuma, Raging Thunder, классические игры Atari, арканоиды, головоломки и множество других игр из нулевых. Не все они работают идеально быстро (в том числе из-за необходимости эмуляции m68k), но поиграть было во что!
А для тех, кому не хватает нативных приложений, есть экзотическая Java-машина от IBM с поддержкой MIDP 2.0. Благодаря ей появляется возможность играть в легендарные игры для J2ME-телефонов, если они не используют специфичное API по типу 3D...
❯ Заключение
Вот такими были смартфоны Palm в начале нулевых годов. По правде сказать, Treo контрастирует на фоне Windows Mobile и Symbian-смартфонов не только невероятной производительностью, но и весьма странными архитектурными решениями. Уж чего-чего, но однозадачную ОС в смартфоне 2006 года точно не ожидаешь встретить, когда даже в самых недорогих и простых кнопочниках трудится полноценная RTOS!
Однако Treo 650 кажется диковинкой только в наше время. В те годы это было желаемое устройство для тех, кому необходимо много переписываться, читать и даже играть... Надеюсь, вам было интересно!
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Если вам понравилась статья...
И у вас появилось желание что-то мне задонатить (например прикольный гаджет или ретро-консоль) - пишите мне в телегу или в комментариях :) Без вашей помощи статьи бы не выходили!