Нужна ли компьютеру материнка?

Чего-то в последнее время пошли посты про производство отечественных процессоров. И многие задают вопрос, а кто будет делать для них материнские платы. Давайте я сделаю маленький пост, в котором поясню, что привычная нам материнская плата вовсе не является неотъемлемым атрибутом компьютера.

Текст будет максимально упрощён, так что специалисты — не ругайтесь сильно.

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

На фото — ненужные части компьютера выбрасываются на свалку истории…



Сначала было… Нет, про компьютерных динозавров мы говорить не будем. Давайте сразу поговорим про те компьютеры, которые относятся к микро ЭВМ. Какая у них была (да и есть) структура?



И исконно производители старались лепить всё на одну плату. Разве что для понятия «прочие контроллеры» делали слоты расширения. Но если ты купил компьютер в такой-то конфигурации, то привет, пользуйся им. В целом, это давало преимущества, от тайги до британских морей конфигурация была единой, проблем совместимости не было. Но с другой — для абгрейда, надо было покупать всё новое. И вот тут-то кто-то гениальный, наверное, в фирме IBM (может, и не там — в ДВК тоже было что-то подобное, но кто у кого спёр — я не знаю) решил, что неплохо бы сделать открытую архитектуру. Подавляющее большинство устройств было решено не паять на плату. Вместо этого, они выпускались на маленьких платках (дочках) и вставлялись в материнскую плату, которая выполняла по большей части, объединительные функции. Дома подберу картинку на Гугле, которая поясняет это.



Эта идеология, применённая в IBM PC, сломала существовавший мировой порядок. Сначала, конечно, был полный бардак и несовместимость. Но потом появилась спецификация PnP, появились хорошие шины, и всё стало просто замечательно. Если нам надо что-то заменить — мы просто изымаем соответствующую дешёвую плату (хоть процессор, хоть память, хоть контроллер) из материнки и меняем её на другую, оставляя всю систему в целости и сохранности, поэтому можем расширять компьютер постепенно (особенно — в те времена, когда не было такой гонки новых сокетов и шин).

Компьютеры, сделанные по этой архитектуре, вошли в наш быт и в офисы. Соответственно, мы их видим чаще всего, и возникает ощущение, что по-другому и быть не может. Однако, а кто сказал, что не может? В конце 70-х, ради космических кораблей, фирма Intel создала удивительную микросхему. По тогдашней отечественной терминологии, она называлась, ни много ни мало, однокристалльная микро-ЭВМ. Дело в том, что инженеры Intel взяли все те части компьютера, о которых я говорил выше, но по чуть-чуть. ОЗУ они взяли несколько сотен байт, ПЗУ — несколько килобайт, процессор — простенький, четырёхбитный, дисплея не было, зато были последовательный и параллельный порты. Так как всё было простенькое — оно прекрасно уместилось на одном кристалле. То есть, поместилось в одной микросхеме. Я сейчас вставлю картинку не с той микросхемой, но с похожей по размеру на ту (40 ножку). На фото контроллер поновее, но суть-то не в буквах, а в размерах.



4 битный контроллер не прижился. Но пришедший ему на смену 8-битный MCS-51 прижился ещё как! Нет, его точную копию давно не выпускают, но вот программно полностью совместимый улучшенный вариант (например, 4 такта на команду вместо 16-ти в оригинале) делают до сих пор многие фирмы (а уж более тридцати лет прошло). Давайте посмотрим на структурную схему этого контроллера в реализации от Atmel. Правда похоже на то, что я показывал в начале? Только все эти элементы размещены не на плате, а на кристалле, который живёт внутри микросхемы!



Вы скажете: «А почему у меня на столе стоит PC, а не эта малышка?». Отвечу — они не для того делались. Давайте оглядимся вокруг. Вот стоит светофор. Им можно управлять простейшим автоматом, но скажем, если мы захотим менять режим в зависимости от времени суток (а лучше — от дорожной обстановки), разве не проще сделать это с помощью компьютера? Но не тащить же ради этого PC! Программка будет простейшая, порт вывода должен быть по числу лампочек на всех светофорах плюс ввод от датчиков обстановки. Получается, что микроконтроллер тут будет очень кстати. Вы ездили на старых лифтах? У которых надо было до посинения пальца держать кнопку вызова, чтобы первым захватить его, как только он освободится. Это потому, что им простейшая логика управляла. Современными управляет компьютер. И снова, зачем там мощность PC? Всё простейшее, подойдёт и микроконтроллер. В автомобиле любом сейчас этих контроллеров — как семечек в подсолнухе. В общем, есть много применений, где можно поставить этого маленького друга, вместо огромной дуры, которая чувствительна к климату (иначе контакты разъёмов окислятся), прожорлива, огромна, не любит вибрацию (винчестер осыплется) и так далее. Вставлю фото современного мелкого контроллера, стоящего на нашей плате. Масштаб определите по 10 пиновым разъёмам. Или, скажем, между винтиками на клеммнике 5 миллиметров. Плата принимает данные с шины цифровых весов (которые не предназначены для этого) и передаёт их в эфир через цифровое радио.



Или вот ещё случай. Автомат открывания-закрывания крышки чана вертолёта (был у меня такой пост, кто хочет — найдёт). Исходно там стояла вот такая не дура, а лошадь с дороженными релюшками с детский кулак размером, которые периодически окисляются, а замена — страшных денег стоит. Логика была реализована тоже на реле. Токи там, конечно — в броске 25 ампер. Но всё же…



Мы предложили заменить на транзисторы. Заказчик согласился. Мы быстренько сделали плату, на которой реализовали логику, как в реле. Проверили — всё работает. Поставили на недельный тест — отработал. Подключаем к вертолёту — сгорает через 3 секунды. Что такое? А длинный кабель дребезжит, да ещё и источник — реле, оно тоже дребезг даёт. И во время дребезга срабатывает то плечо «Открыть», то «Закрыть». Реле — тормозные, им всё равно, транзисторы — шустрее, вот короткое замыкание и возникает. Пытались добавить фильтры, пытались — линии задержки на конденсаторах — получили что-то ужасное: глючит и сложное по своей структуре выходит. Тогда взяли и заменили блок логики на контроллер. Попутно туда добавили логику плавного старта двигателя, снизив бросок стартового тока, а значит — уменьшив помехи в бортсети. А ещё выяснилось, что реле стартуют двигатель, стоящий на тормозе, не потому ли они часто горят? Мы сделали задержку от снятия с тормоза до начала старта. Во сколько полезностей контроллер дал. И, как видим, материнка тут нафиг не сдалась. Контроллер — в самой гуще событий, между входами и выходами. И он задаёт логику.



Итак, мы выяснили, что существуют такие звери, как микроконтроллеры, что они — сами себе материнки, так как содержат всего понемножку, поэтому в СССР их назвали однокристалльными микроЭВМ. Мы выяснили, что они предназначены для нужд управления какой-либо техникой от космического корабля до домофонов (включая распознавание «таблеток»), поэтому за рубежом их назвали микроконтроллерами. И мы уже познакомились с первым поколением — 8 разрядными MCS-51, которому не нужна материнская плата, так как все блоки у него вытравлены на основном кристалле (про возможные внешние ОЗУ и ПЗУ я умолчу, чтобы никого не запутать). Почти сразу после этого, Intel выпустила чумовые 16 разрядные контроллеры MCS-96 (развитие — MCS-196). У них была намного более удачная архитектура, говорю не на пустом месте, мне посчастливилось с ними поработать, но в широкие массы они как-то не пошли.

Ну, а дальше начался контроллерный бум. Все фирмы считали своим долгом выпустить какие-либо контроллеры со своей уникальной архитектурой. У каждой фирмы этих архитектур было по несколько штук. Шли эксперименты с разрядностью процессорного ядра, ведь технологии не стояли на месте, и уже в кристалл можно было поместить ядро помощнее. Были 8, 16, 32 битные ядра. Ох мне тогда пришлось поизучать разные ассемблеры! В разные контроллеры пихали разную периферию, кто во что горазд.

Само собой разумеется, пошли и исключения из идеологии. 32 битное ядро — это явно большая память, поэтому из контроллеров стали выводить линии для подключения ОЗУ, которое снова стали паять снаружи. Также стали выводить системную шину, как слот расширения. Так что в принципе, материнскую плату-то уже стало возможно и подключить, кабы не одно но. Всё-таки они предназначены для нужд управления. Давайте я разбавлю текст картинкой, где на нашей плате контроллер подключён через шину к ПЛИС, в которую мы программно затолкали те блоки, которых в самом контроллере нет.



И вдруг вся вакханалия архитектур пошла на нет. А виной всему фирма ARM, которая придумала чумовую RISC архитектуру (добавлено — они не придумали сам RISC, они придумали свою архитектуру на базе RISC) и теперь постепенно развивает её. Архитектура — плавающая. Можно включить режим послабее, но поэкономичнее (команды кодируются 16 битными словами), а можно — порасточительнее, но попроизводительнее (кодируются 32 битными словами). Обраюатываемые данные — всегда 32 битные (а в новых версиях уже и 64 битные зачатки появились).

Своих процессоров они не производят, они только делают архитектуры и продают их. А уже производители — покупают идеи и реализуют в кристаллах. Все, кто раньше клепали свои решения, либо сворачивают их от греха подальше и переходят на ARM, либо продолжают делать своё, но и ARM — тоже выпускают. Давайте откроем мой домашний компьютер и посмотрим в него (дома открою и сфоткаю). Вот винчестер. В нём управляет всеми делами ARM. ARM занимается трансляцией логики в физику, поддерживает скорость вращения, удерживает головки на дорожке… Нет, оконечные дела делают спец чипы, но если вы посмотрите на «прошивку», то увидите, что вся логика всё-таки лежит на контроллере.



Вот оптический привод. В них ARM пока не так господствует, но всё-таки потихоньку вытесняет все остальные архитектуры. В моём он стоит. Разумеется, производитель разместил на этом кристалле кучу периферии, специфичной для оптических приводов. Это — спецверсия контроллера, для других задач она непригодна. И в этом прелесть своего производства — можно заказать что-то особенное, и нам не откажут. Но в простых магазинах продаются контроллеры со среднестатистической периферией на борту. Чё-то мне лень ещё раз открывать, а старые фото не очень фотогеничные. Найду-ка я такую же плату на Гугле.



Короче, мы выяснили, что микроконтроллер — это такой компьютер, у которого подавляющее большинство устройств вытравлены на основном кристалле. Его задача — интеллектуальное управление разными устройствами. Поэтому к его ножкам подключаются уже оконечные устройства (возможно — через согласователи интерфейсов). Поэтому не факт, что ему нужна видеокарта, это — не компьютер в привычном нам виде. И ему не нужна материнская плата. Его припаивают непосредственно на ту плату, где расположены управляемые изделия (ну, или плата с ним к той плате подключается, как показано на рисунке ниже — сверху контроллерная плата, а снизу — опторазвязка, которую не видно, она попала под процессорную плату, и переходники на брутальные 24-вольтовые уровни). А коли в процессоре Baykal заявлена архитектура ARM, то и он должен быть чем-то подобным.

Ой, поезд прибывает! Заболтался я, у меня всё.

P.S. Добавлено перед публикацией: Всё про вытеснение — это про навёрнутые архитектуры. «Большая тройка» восьмибитного мира — MCS-51, PIC и AVR. Мне нравятся последние. Они были, есть и не планируют исчезать, ибо дёшевы до безумия. ARMы на нынешнем этапе технологий не могут быть настолько дёшевы.