GameDev Forge – Кузница игростроя

Юрий "yurembo" Язев

независимый игродел


Мы живем в интересное время. Нас окружает масса различных устройств. Тому особенно поспособствовала, созданная в начале 21-го века концепция интернета вещей. Именно ради них создаются новые стандарты сотовой связи, такие как 5G. Чтобы кофемолка включилась в тот момент, когда ты с пульта дистанционного управления открыл двери гаража, чтобы умный холодильник заказал молоко в супермаркете, или робот-пылесос начал уборку в тот момент, когда в твоем онлайновом ежедневнике, появилась запись: «вечером придут гости». Но сегодняшний разговор не об этом.


Концепции проектирования процессоров CISC и RISC


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

Но самое любопытное, в настоящее время мы наблюдаем разрушение монополии микропроцессорной архитектуры x86. Примерно 10 — 15 лет назад x86 буквально стала единственной вычислительной платформой. С той оговоркой, что я не беру во внимание разрастающийся в то время мобильный рынок. Intel осознанно признает, что они по недоразумению упустили мобильный рынок в пользу ARM, Qualcomm, Apple, Samsung и ряда других компаний, выпускающих процессоры по лицензии от ARM.


Учитывая, что на ARM-процессорах выпускаются не только смартфоны, но и микрокомпьютеры, способные работать под Linux, и даже специально заточенной Windows 10 IoT, то можно признать в лице ARM прямого конкурента Intel. Между тем, как широко известно, ARM не производит процессоры, а только создает их проекты.

В последней четверти 20-го века было много процессорных архитектур. Однако, в начале 80-х был изобретен новый подход к созданию процессоров, и, в итоге, выделились две концепции проектирования процессоров: CISC и RISC.
CISC — это компьютер со сложным набором команд, а RISC — компьютер с уменьшенным набором команд. Их основное отличие отражается в их названии и состоит в размере набора команд. 


В начале компьютерной эры оптимизирующих компиляторов еще не было. Программисты писали программы на ассемблере или в машинных кодах. Следовательно, инженеры из Intel в соответствии с прогрессом своих процессоров расширяли низкоуровневый язык сборки. От такого подхода в ассемблере для x86, как в снежном коме, накапливались разные полезные и бесполезные команды.


Впоследствии, инженеры увидели, что программы, использующие более простые команды, даже с учетом того, что их общее количество превышает набор сложных команд, выполняются быстрее. Таким образом и родилась концепция RISC.

К концепции CISC относятся ранние мейнфреймы от IBM, мини-компьютеры от DEC: серия PDP и крайне успешная VAX, так же сюда попадает знаменитая серия микропроцессоров 68k от Motorola, чипы от компании Zilog и, конечно, наша любимая микропроцессорная архитектура Intel x86. Вышеперечисленные вычислительные устройства спроектированы до предпоследнего десятилетия 20-го века.

К концепции проектирования процессоров RISC относятся зарожденные в 80-е годы архитектуры: ARM, MIPS, SPARC, Power и PowerPC от IBM и прочие. Современные процессоры на архитектуре x86 тоже можно за уши притянуть к RISC-концепции, поскольку, начиная с архитектуры P6, впервые реализованной в Pentium Pro, Intel создает процессоры, которые принимают CISC-команды, динамически преобразует их в RISC-микро-операции, осуществляет их анализ, переупорядочивание для возможности параллельного исполнения независящих от результата команд за один такт и выполняет на RISC-ядре.


Почему же Intel не изобрела микропроцессорную архитектуру, основанную на чистой RISC-концепции? На Intel лежал огромный груз ответственности перед клиентами за совместимость с предыдущими моделями процессоров и софтом, написанным за все годы существования архитектуры. Первый процессор которой был создан в 1978-м году. А после того, как в начале 80-х Intel с этой архитектурой вступила в совместную и весьма успешную с Microsoft игру под название IBM PC, эти процессоры буквально стали стандартом де-факто для персональных компьютеров.


После того, как компьютеры VAX отслужили свое, компания DEC в 1992-м году тоже представила процессор, построенный в соответствии с концепцией RISC. На момент своего появления это был самый мощный процессор. 


Все вышесказанное предназначено для того, чтобы подчеркнуть многообразие процессорных архитектур в конце 20-го века. С другой стороны в начале 21-го века дела обстояли так, что большинство архитектур перестало существовать. Это произошло по разным причинам, но чаще всего продукт, технология, компания его производящая проигрывала конкурентную борьбу, после чего ее патенты выкупали другие производители полупроводников. Intel шла по головам, скупая побежденных. В итоге, она подгребла под себя весь рынок микропроцессоров для персональных компьютеров. Под ПК я имею в виду не только IBM PC, а так же компьютеры ZX Spectrum, Commodore, Amiga и Atari. Между тем, Intel упустила мобильный рынок, где балом стала править компания ARM. А, теперь, вдобавок к смартфонам Apple собирается перевести свои маки на ARM-процессоры, о чем было объявлено на летней конференции разработчиков. Тем самым монополии x86 на ПК рынке придет конец. После этого мероприятия мне особенно стали интересны ARM-процессоры.

В момент, когда я готовил этот текст стало известно, что NVIDIA за 40 миллиардов долларов купила проектировщика процессор ARM — британскую фирму ARM Holdings у прошлого владельца — японской компании SoftBank.


Процессорная архитектура ARM и микрокомпьютер Raspberry Pi


Что же такого интересного в процессорах на архитектуре ARM, и, чем эта архитектура отличается от всеми любимой x86? Следуя концепции RISC, ARM-процессоры имеют сокращенный набор быстро выполняемых инструкций. Благодаря этому, данные микропроцессоры состоят из меньшего числа транзисторов, а следовательно потребляют меньше электроэнергии и выделяют меньше теплоты.
Тем не менее, главный минус состоит в отсутствии софта для них. Другая архитектура, другой набор команд, и, чтобы портировать программу с x86 недостаточно простой перекомпиляции. Операционные системы, драйвера, системные компоненты, различные библиотеки, заточенные под определенную архитектуру и зависящие от платформы — все это приходится учитывать при портировании программного обеспечения.


ARM-процессоры служат нам повсюду, находясь внутри окружающих нас девайсов. Самое главное их приспособление — это, конечно же, смартфоны и другое мобильное барахло: планшеты, мобильники, часть фотоаппаратов, видеокамер, часть встроенной техники, встроенные компьютеры в автомобилях, автосигнализации, приборы, отчасти коммуникационное оборудование и многое-многое другое. Почему я говорю отчасти? На многих пользовательских рынках архитектура ARM соперничает с MIPS – другой интересной микропроцессорной архитектурой. На заре сотовой техники последняя равно, как и первая использовалась в телефонах и смартфонах, однако была напрочь вытеснена из этого сегмента рынка, по банальной причине отсутствия софта.


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


К слову, не так давно — лет 30-40 назад микрокомпьютерами называли устройства, занимающими поверхность письменного стола: Apple I, II, Macintosh, Commodore, Amiga, IBM PC в противовес мейнфреймам, занимавшим целые комнаты. Однако сейчас так называют компьютеры размером со стопку банковских карт. Да и мейнфреймы стали размером максимум с холодильник.


В настоящее время рынок наполнен микрокомпьютерами разных марок и от разных производителей: Raspberry Pi, Banana Pi, Orange Pi, FireFly, Odroid, Khadas и многие другие, мало чем отличающиеся. Raspberry Pi считается первопроходцем в области микрокомпьютеров, поэтому по праву является самым популярным. В 2019-м году вышла 4-я версия устройства с артикулом B.


Малиновый компьютер последней версии получил чип BCM2711 производства Broadcom. BCM2711 является однокристальной системой, то есть помимо четырех-ядерного 64-х битного процессора Cortex-A72, построенного по архитектуре ARM v8, с частотой 1,5 ГГц на каждое ядро, он содержит встроенную видео подсистему VideoCore VI произведенную подконтрольной Broadcom компанией Alphamosaic. Видео ядро в противовес центральному процессору является 32-х битным и работает на чистоте 500 МГц. Новый чип поддерживает более быструю подсистему ввода/вывода, построенную на шине PCI Express, поддерживающую USB версий 2 и 3, плюс нативный гигабитный Ethernet. Новый блок управления памятью, включенный внутри чипа, поддерживает до 8 гигабайт оперативки. Таким образом, существует 3 модели Raspberry Pi 4B: с 2-я, 4-я и 8-ю гигабайтами памяти. Видео подсистема поддерживает OpenGL ES 3.0, следовательно имеется большой запас для видеоигр, аппаратное декодирование видео из форматов H.264 и H.265, подключение до 2-х мониторов по HDMI с разрешением 1080, для этого на микрокомпьютере присутствуют 2 порта micro-HDMI. В случае подключения одного монитора можно установить разрешение 4K. Чип BCM2711 использует особую технологию распределения выделяемой теплоты. Это позволяет лучше управлять тепловыделением. На системной плате присутствуют DSI Display Port, CSI Camera Port и расширенный 40-пиновый интерфейс ввода/вывода общего назначения. Имеются так же стандартный аудио выход и порт для карты памяти Micro SD, на которую, собственно, устанавливается операционная система. Но малинку можно так же загрузить с USB. Из беспроводных средств связи Raspberry Pi поддерживает Wi-Fi и Bluetooth. Для запитывания прибора электроэнергией используется блок питания на 5 вольт, его подключение осуществляется через порт USB-C. В итоге, новая модель микрокомпьютера стала примерно на 50% производительнее предыдущей.


Видео №1: Концепции проектирования процессоров CISC и RISC


Видео №2: Процессорная архитектура ARM и микрокомпьютер Raspberry Pi


Видео №3: Сборка и запуск микрокомпьютера Raspberry Pi 4B