Мобильник с двенадцатимегапиксельной камерой

В одном из предыдущих постов я писал про то, что современные электронные устройства, типа DVD-плееров, мобильников, фотоаппаратов и прочей электронной техники «широкого потребления» построены на специализированных микросхемах. Вместо мощного процессора и его «обвязки» в виде ОЗУ, ПЗУ, контролеров шин и прочих недешевых микросхем используется одна микросхема, в которой многие сложные функции реализованы аппаратно, а управление всем этим хозяйством возложено на довольно простое процессорное ядро.

Все разнообразие китайских мобильников, цифровых фотоаппаратов, MP3 и DVD-плееров, ресиверов цифрового телевидения построено по сходному принципу – берется reference design из документации, например, на процессор для фотоаппарата (например, Zoran COACH – Camera On A CHip, что кагбэ символизирует), выбираются подходящие микросхемы «обвязки» (CMOS или CCD-матрица, флэш-ПЗУ и «оперативка»), затем все это чудо упаковывается в красивый корпус и впаривается доверчивым покупателям.

Могу, например, поспорить, что подавляющее большинство цифровых фотоаппаратов-мыльниц стоимостью примерно до 200$ построено на базе какого-нибудь процессора фирмы Zoran или Ambarella – крупнейших производителей таких «систем на чипе». Только очень крупные производители, например, Canon или Nikon могут делать свои аналогичные процессоры для более дорогих камер.

Сегодня разработка недорогой бытовой электроники превращается в простое копирование схемы типового включения такой микросхемы. Фактически, DVD-плееры какого-нибудь Panasonic и BBK могут быть построены на одной и той же микросхеме от Zoran, разница, фактически, будет лишь в «прошивке». Бывает и «круче». На одном спутниковом форуме был продемонстрирован способ «переделки» устаревшего ресивера Arion F-100 в новый (на тот момент) Openbox F-300 при помощи новой «флешки», мотка МГТФ и паяльника. Ресиверы, разработанные разными фирмами (Arion и Wonik), оказались «близнецами» внутри, и это немудрено – они оба построены на одном чипе STi5518 и используют одинаковые тюнеры фирмы Sharp.

Можно сказать, что вся современная бытовая электроника разрабатывается буквально десятком фирм из Silicon Valley. Если взять любой DVD или MP3-плеер, фотоаппарат или видеокамеру, то очень вероятно, что эмблему, нанесенную на его процессор, можно будет найти на этом плакате:

siliconvalley

Там, где возникают какие-то сложности, почти всегда делается reference design – своего рода «гарантированно работающий» образец. Иногда такой «образец» делается и сторонними фирмами, в этом случае его иногда называют «платформой». Большинство китайских мобильников на Dealextreme и радиорынках нашей необъятной Родины построены на одной из «платформ», разработанных фирмой Fly.

В принципе, китайский «национальный характер» очень способствует появлению разнообразных копий и «клонов» этого самого reference design. В современном Китае, как это не странно, не так много действительно квалифицированных инженеров или конструкторских групп, способных «с нуля» разработать, к примеру, мобильный телефон. Зато в невообразимом количестве представлены «копировщики», способные аккуратно скопировать и слегка доработать существующий образец. Довольно много и программистов с дизайнерами, которые могут сделать новому мобильнику свой пользовательский интерфейс, похожий на что угодно – от яблофона до Nokia.

Конечно, это только мое мнение, но мне кажется, что китайским инженерам не хватает какой-то тяги к «необычным» решениям. Нельзя, например, без содрогания смотреть на корявый «интерфейс» радиоприемника с MP3-плеером Degen 1123. Конечно, SDR-приемник на микросхеме Silicon Labs – это очень неплохая вещь, но создается впечатление, что MP3-плеер там встроили «для галочки». В самом деле, кому в 2009 году нужен MP3-плеер, с трудом ориентирующийся в структуре директорий, не умеющий работать с IDv3-тегами и не отображающий названий папок и файлов?

Почему плеер в Degen 1123 настолько убог? Дело в том, что разработан приемник инженерами фирмы Degen, применившими там процессор фирмы Holtek, хорошо им знакомый. К сожалению, сегодня никто уже не делает MP3-плееры на таких процессорах, когда есть более специализированные разработки, например, «платформа» S1 MP3. Потому «дегеновцам» пришлось «изобретать велосипед», который получился довольно убогим с точки зрения функциональности.

Конечно, платформа S1 совершенно отличается от холтековских процессоров. Начнем хотя бы с того, что в ней применено процессорное ядро, совместимое с Z80, а Holtek напоминает «увеличенный» PIC. Но кто мешает вместо микросхемы радиоприемника Philips поставить Silabs, соответственно доработав «прошивку»? Получившееся устройство было бы гораздо приятнее в обращении, чем чудовищный Degen 1123.

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

Я человек добрый, поэтому дарю китайским конструкторам и маркетологам совершенно дурацкую идею. В современных мобильниках редко бывают фотокамеры с разрешением больше 2-3 мегапикселей. Дело в том, что процессоры мобильников с трудом обрабатывают снимки бОльших размеров. Зато процессор Zoran COACH – с легкостью (последние варианты этого процессора поддерживают двенадцатимегапиксельные матрицы). Вполне возможно «прицепить» к этому процессору какой-нибудь GSM-модуль, и получить в результате мобильник с невероятно крутой камерой. Современные убирающиеся в корпус камеры объективы (не pinhole, как в мобильниках, а складывающиеся вовнутрь – как, к примеру, у фотоаппаратов «Зоркий», если кто помнит, только снабженные моторчиком) не будут мешать удерживать устройство в режиме «мобильника».

Конечно, у такого аппарата не будет, скорее всего, Java-игр – просто не потянет процессор. Но, насколько я знаю, существует несколько достаточно «простых» с точки зрения вычислительной мощности эмуляторов приставки Nintendo Entertainment System, у нас известной как «Денди». Думаю, Mario и прочие бэтмены по накалу страстей не уступают той дряни, которую пишут на Java ущербные недопрограммисты.

Согласитесь, гибрид «Денди», мобильника и фотоаппарата при определенной «маркетинговой раскрутке» мог бы оказаться очень и очень интересной штукой.

А вот объясните мне, тупому…

…такую вот гримасу капиталистической экономики.

Читаю сейчас новости про Саяно-Шушенскую ГЭС. Вопросы о том, был ли там взрыв, было ли это терактом и прочие подобные оставим прокуратуре, благо прокурорским за это деньги платят. Интересно другое. Не так давно РАО ЕЭС – ведомство Чубайса (он же Рыжий Гитлер, но я не об этом) было разделено на множество мелких «генерирующих компаний» — владельцев нескольких электростанций, каждая из которых самостоятельно устанавливала свои тарифы.

Одна из таких компаний – «РусГидро» владела и аварийной Саяно-Шушенской ГЭС, которая обеспечивала примерно четверть имеющихся у компании мощностей. Теперь «РусГидро», чтобы выполнить обязательства по поставке электроэнергии, будет закупать ее у других компаний. Для «РусГидро» это будет означать колоссальные убытки, кроме того, придется еще и восстанавливать оборудование на Саяно-Шушенской.

Естественно, потеря четверти мощностей для мелкой компании – это колоссальный удар. В то же время, например, для «гиганта» вроде РАО ЕЭС выход из эксплуатации даже такой станции, как Саяно-Шушенская ГЭС, конечно, не остался бы совершенно незамеченным, но нанес бы на порядок меньший ущерб компании.

Учитывая, что наша энергосистема уже много лет не то что не расширяется, но даже с трудом поддерживается в работоспособном состоянии, не могу понять причины, заставившие разделить РАО ЕЭС на «генерирующие компании». Ежу понятно, что чем мельче фирма («крайний» вариант – приватизировать отдельные энергоблоки :) ), тем сложнее ей будет справиться с любым отказом оборудования.

Что это? Глупость или вредительство? (с) Андрей Януарьевич Вышинский, наверное.

Вопрос про помощь начинающим

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

Возникает резонный вопрос: что мешает сначала прочитать текст и уже имеющиеся комментарии, а уже потом задавать свой, без сомнения, ценный и интересный вопрос? Один из довольно крупных форумов на тему спутникового телевидения «славился» любовью модераторов к «поддержанию порядка» — то есть стиранию вопросов начинающих, которые уже давно «схаваны и высраны», или перемещению их в более подходящие темы. Это не имеет ничего общего с «фундаментальным анальным огораживанием», просто таким образом модераторы пытались как-то сохранить ценность обсуждавшихся в прошлом тем, не давая им исчезнуть на …дцатой странице под ворохом вопросов типа «Не показывает любимый канал, ресивер фуфло, гоните деньги взад». Стирались и вопросы, ответы на которые были неоднократно даны раньше, или находились на одной из последних страниц темы. В общем, форум пытались превратить во что-то вроде FAQ.

Удивляет и ничем не объяснимая тяга к тому, чтобы кто-то «разжевал» простейшие вопросы. Кто, казалось бы, может помешать взять бумажку и карандашик и выписать имеющиеся в схеме детали, благо их не так много?

Думаю, каждый посетитель любого тематического форума или ЖЖ-сообщества прекрасно знает о существовании подобных «вопросов-баянов». Относиться к ним и их авторам можно по-разному, поэтому хочется задать читателям два вопроса.

Первое. Как вы отвечаете на такие «всех уже доставшие» вопросы? Сразу посылаете учить матчасть и курить маны, или подробно отвечаете даже на самые «ламерские» вопросы?

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

PS Естественно, вопросы «Помогите сделать курсовую за одну ночь», появляющиеся в конце мая на электронных форумах – это не ламерство, это злостное нежелание думать собственным моском. Ничего, кроме игнора или лулзов, их авторы просто не заслуживают.

Про вычислительную мощность

Развитие нынешней вычислительной техники идет по пути наращивания вычислительных возможностей в рамках существующей архитектуры – больше гигагерц тактовой частоты, больше операций в секунду, больше гигабайт памяти… Для чего нужны такие мощности применительно к «домашнему» персональному компьютеру? Для того, чтобы отрисовывать «окошки» Windows или просчитывать несложную логику в играх, вполне достаточно чего-нибудь наподобие первого «Пентиума», а то «четыреста восемьдесят шестого».

Будем считать, что все программы написаны «хорошо», никто не пытается производить сложные вычисления только по причине криворукости программиста (луч анального поноса посылается фирме Lotus). Тогда все задачи, требующие большого количества вычислений, разбиваются на две категории – «мультимедиа», то есть работа с графикой, видео, цифровым звуком, синтез 3D-графики и «действительно сложные задачи» — например, расчет индекса Доу-Джонса или цены на бананы в Гондурасе.

«Мультимедийные» задачи, можно сказать, естественны для домашнего компьютера. Конечно, я ни разу не сторонник той мысли, что домашний компьютер должен быть гибридом медиацентра и игровой приставки с выходом в Интернет, но возьмем это в качестве примера. Мало кто рассчитывает дома атомные бомбы, а вот посмотреть фильм или поиграть в Doom – милое дело. Давайте оценим сложность, к примеру, декодирования JPEG. Предположим, что все вычисления выполняются на обычном «универсальном» процессоре. Тогда достаточно оценить скорость выполнения двух наиболее сложных операций – «деквантизации», представляющей собой 64 умножения и обратного косинус-преобразования. Если косинус-преобразование ускорить тем же способом, что и в случае быстрого дискретного преобразования Фурье, то в конечном итоге для декодирования каждого блока 8×8 понадобится 106 мультипликативных и 42 аддитивных операции. Точно так же оценивается и количество операций при кодировании JPEG. Заметьте, что я намеренно считаю сложения и умножения «порознь» — умножение зачастую — гораздо более сложная операция, обычно занимающая намного больше тактов процессора.

Все широко используемые видеокодеки основаны на той же идее дискретного косинус-преобразования и «квантизации», поэтому оценки скорости этих операций дают нам представление о числе операций, необходимом для просмотра видео на компьютере. Понятно, что это – довольно требовательная к ресурсам задача. Например, на стоящем в моем ноутбуке Pentium M с частотой 1,7 ГГц просмотр DVD-фильма требует 30-50% процессорного времени. Стоимость «минимального» процессора, способного в реальном времени декодировать MPEG-2 (какой-нибудь Pentium III), получается довольно высокой (а если учитывать и «обвязку» в виде памяти и контролеров привода – очень и очень существенной). При этом кажется непонятным, почему китайский DVD-плеер может стоить менее 30$, а микросхема, используемая в нем в качестве процессора, стоит около 10$.

Дело в том, что совершенно необязательно считать «элементарными» операциями обычные арифметические операции. Если рассмотреть все то же косинус-преобразование с квантизацией как функцию, «входом» которой являются 512 бит (таблица 8×8 байт), и с теми же 512 битами на выходе, то можно составить ее таблицу значений. Можно составить, например, схему из функциональных элементов И, ИЛИ и НЕ, которая будет реализовывать эту функцию. Есть даже методы автоматического синтеза таких схем, например, асимптотически оптимальный (то есть строящий схему с довольно близким к минимальному числом элементов) метод Лупанова. Реализовав такую схему «в железе», например, как модуль процессора, получим возможность вычислить заданную функцию за один такт.

Конечно, пример выше – своего рода жульничество. Нам никто не разрешит использовать такое количество элементов, которое возникнет в рассмотренной выше схеме – ее сложность будет сопоставима с «полноценным» процессором. Практическая ценность его близка к нулю, и сравнима с таковой, например, у программы для машины Тьюринга или чего-нибудь Brainfuck-подобного. В реальности поступают проще. Достаточно легко, к примеру, реализовать любой конечный автомат. Кроме этого, можно разбить задачу на более простые операции с более простыми схемами. Таким образом можно упростить схему. При этом скорость ее работы все равно останется очень высокой. Например, сделанный «на скорую руку» JPEG-кодер на довольно простой и «медленной» ПЛИС фирмы Xilinx способен обработать в секунду порядка 3 мегапикселей (тактовая частота – всего 50 МГц), при этом он состоит примерно из 7000 элементов. Для сравнения, «универсальный» процессор Zilog Z80 состоял из 3500 элементов, но ни о каком JPEG-кодировании на нем речь даже не идет. Если же вместо ПЛИС использовать специально разработанную микросхему, то скорость повысится на порядок. JPEG-кодер (какой-нибудь Zoran COACH или Ambarella) в любом современном цифровом фотоаппарате-мыльнице способен за одну секунду обработать не менее 20-30 мегапикселей. Это сравнимо с производительностью Pentium IV, но на порядок выгоднее и с точки зрения стоимости (напрямую зависящей от числа элементов), и с точки зрения энергопотребления.

Все современные процессоры представляют собой, грубо говоря, калькуляторы. Конечно, и у них существуют инструкции, позволяющие быстро выполнять некоторые характерные для «мультимедиа» операции, например, набор инструкций MMX в процессорах персоналок. Тем не менее, крайне важно сохранить универсальность центрального процессора, не превращая его в начинку для фотоаппарата или DVD-плеера. Для таких вычислений, как матричные операции для 3D-графики или преобразование Фурье для кодирования графики, уже давно применяют и более специализированные процессоры – соответственно, видеоускорители или аппаратные MPEG-декодеры. Даже первые «Pentium», снабженные аппаратным декодером MPEG, были способны показывать фильмы с DVD или VideoCD. Стоит упомянуть и компьютеры Amiga, которые в начале 90-х были единственными «персоналками», способными обрабатывать видео – благодаря специализированным сопроцессорам. Тактовая же частота центрального процессора составляла всего лишь 14 МГц. Конечно, никто не запрещает использовать для тех же вычислений центральный процессор, но специализированные справятся с ними гораздо быстрее.

Собственно, использование сопроцессоров для некоторых сложных операций – давно не новость. Гораздо интереснее может выглядеть другая, менее очевидная вещь. Уже достаточно давно выпускаются ПЛИС – программируемые логические интегральные схемы, специальные микросхемы, состоящие из отдельных «кирпичиков», каждый из которых может быть элементом И, ИЛИ и НЕ. Связи между этими модулями задаются «прошивкой» микросхемы. Именно с использованием ПЛИС моделируются «заказные» микросхемы (тут передаю горячий привет [info]corvus_bkgk). В зависимости от «прошивки» ПЛИС может реализовывать самые различные функции.

Удивительно, но до использования перепрограммируемых ПЛИС в персональном компьютере «дошли» только у нас в России. Многие «спектрумисты» слышали про «клон» ZX Spectrum под названием Sprinter. На самом деле Sprinter – в корне отличающийся от Spectrum компьютер, способный только эмулировать последний. Более того, Sprinter может имитировать поведение несовместимых между собой «клонов», и может работать в «своем» режиме, превосходящем по возможностям любой другой Spectrum или его клон. Это достигается путем использования в качестве системной логики в этом компьютере нескольких ПЛИС, «прошивка» которых может заменяться «на лету», во время работы компьютера.

Довольно «объемистая» ПЛИС может выполнять функции, например, видеоускорителя, или декодера MPEG, и даже сопроцессора для любых других операций, например, криптографических. Конечно, использование ПЛИС в «персоналках» потребовало бы специальных библиотек, наподобие DirectX, но могло бы дать немалый выигрыш в вычислительно сложных операциях.

Не буду говорить об общей «кривости» архитектуры современного PC, состоящей преимущественно из тяжелого наследия уродца фирмы IBM и ночного кошмара фирмы Intel, не буду издеваться над тем, что самые современные процессоры состоят в основном из «костылей и подпорок» ради совместимости с Intel 8086, но замечу, что сейчас увеличение параметров процессоров происходит с большим трудом. Тактовая частота уже не увеличивается, растет лишь количество процессорных ядер на одном кристалле. Боюсь, что привычные нам «пни» уже достигли предела в своем развитии. Вполне возможно, что уже в недалеком будущем появятся первые «реконфигурируемые» вычислительные модули.

Кстати, на ПЛИС можно эмулировать и «обычные» процессоры. Например, уже существует несколько Open Source (!) реализаций все того же Z80. Интересно, чем будут мериться школьники на форумах, когда «апгрейд» процессора превратится в простое «скачивание» новой прошивки из Интернета?