Apple, заплановане старіння чи фізика — на власному досвіді програмування мікропроцесорів
Сумно буває чути, як кажуть, що Apple навмисно робить старі телефони повільнішими, щоб люди купували нові. Проблема в тому, що неможливо зробити інакше, якщо все максимально оптимізоване. Дозвольте пояснити — чому на прикладі з моєї практики програмування мікропроцесорів.
До того як піти в backend, я програмував мікроконтролери і мікропроцесори. І однією з останніх робіт, яка мене довела, був GSM модем з мікропроцесором на Li-Ion акумуляторі. Причому він автономно мав працювати тижнями. Після того як я випадково висадив акумулятор в нуль, він деградував і з часом почали відбуватися незрозумілі глюки. Глюки то з'являлися, то зникали — на прототипах це не рідкість, і я спочатку не звертав уваги, бо виглядало як апаратна проблема. Але з часом це дуже ускладнювало роботу, тож я почав шукати причину.
Не знаючи що робити, я почав читати документацію і, порівнявши з документацією на інший модем цього сімейства, помітив різницю - в специфікації написано, що він хоча і працює при майже будь-якій напрузі від 3В до 5В, але перепади напруги не можуть сягати більше сотої долі вольта за мілісекунду, при цьому пікове енергоспоживання може сягати кількох ампер. Це мене спантеличило — мало який Li-Ion взагалі може це витягнути, а в документації на мій модем цієї вимоги просто не було.
Тож я поставив здоровенний конденсатор паралельно до акумулятора і все стало працювати як годинник.
До речі, я дуже полюбив документацію на китайські вироби, мабуть, це й стало основною причиною, чому я пішов з embedded. Замовникам потрібно подешевше, тобто китайські компоненти, і їх мало хвилює, яка частина роботи відводиться на боротьбу з недоопрацюваннями, нестабільністю заліза, невідповідністю документації. Я радий витратити більшу частину часу на оптимізацію, але не на боротьбу з чужими багами та роботу навмання без повної документації, але це інша тема.
До чого тут Apple? До того, що їх процесори працюють на таких самих акумуляторах. І поки акумулятор новий він може забезпечити не тільки потрібний струм, а і не просідати напругою. При цьому моніторинг напруги на процесорі (BOD — Brown-Out Detection) є навіть в найдешевших мікроконтролерах. І якщо він є в процесорах Apple (сподіваюсь, що є, інакше вони лузери), то цілком очевидно варто обмежувати частоту, якщо напруга не витягує. Які ж є варіанти рішення:
- Можна ставити здоровенні конденсатори в середину телефону (і не іоністори, а саме конденсатори), що нікому не сподобається.
- Або від початку "не розганяти" процесор і просто запускати його на меншій швидкості завжди, що теж зовсім не має сенсу. Якщо ви не знаєте, то залежність між частотою процесора та енергоспоживанням далеко не лінійна — додаткові 100 МГц можуть непропорційно сильніше виїдати акумулятор.
- Можна збільшити акумулятор, але відчутну перевагу в продуктивності це дасть тільки на N-ний рік використання, а всі клієнти матимуть більші, важчі і дорожчі телефони. Теж не варіант.
Чому ж конкуренти можуть? Та ні, не тому, що такі продумані і класні, а швидше навпаки — у них немає такого рівня оптимізацій. Не факт, що Apple витиснула більше за конкурентів, але при максимальній оптимізації просідання швидкості при деградації акумулятора — це просто фізика, яку неможливо обійти.
Коментарі