Зачем все это создавалось? Автор проекта, инженер-электронщик из Великобритании Джеймс Ньюман хотел понять, как работает современный процессор. Он решил, что лучшим способом получить максимальное количество информации о принципах работы транзисторов и процессора будет создание процессора своими силами. По его словам, процесс изучения вышел из-под контроля, и превратился в ежедневную работу.
«Компьютеры непрозрачны. Смотря на них, нельзя понять, как они работают. Что я хотел сделать — это забраться внутрь и понять, что происходит. Проблема в том, что это невозможно осуществить с процессорами обычного размера. Но мы можем построить большой процессор своими руками — и тогда будет понятно, что происходит внутри. Для отображения потоков данных стоит добавить еще и светодиоды — что и было сделано», — говорит Джеймс Ньюман. Теперь за работой Megaprocessor можно наблюдать в режиме реального времени, и любой человек может понять, из каких элементов состоит процессор и как работает каждый блок.
Megaprocessor занимает значительную часть гостиной в доме инженера, причиняя ему известные неудобства.
Для демонстрации вычислительных возможностей процессора инженер решил выбрать игру тетрис. Элементы игры отображаются на большом светодиодном табло с разрешением 32*64 светодиода. Во время игры в режиме реального времени видно все, что происходит внутри процессора.
«Ваш компьютер может быть в миллион раз быстрее той системы, что я построил, но она намного привлекательнее… Я не думаю, что смогу когда-нибудь продать свой проект, но мне хочется, чтобы Megaprocessor был представлен в качестве экспоната в музее или образовательном учреждении», — говорит Ньюман.
Сборка системы
Megaprocessor состоит из большого числа элементов, которые собираются в блоки. Отдельные блоки размещаются на стендах. Высота стенда — 2 метра. Ширина — от 1,2 до 1,6 метров. На каждом стенде монтируется небольшое количество модулей — от 2 до 4. Стенд служит как местом для размещения модулей, так и их защитой. Каждый модуль выполняет определенный набор функций. Например, есть модуль АЛУ, декодер и другие. Модули составляются из отдельных плат.
Стенды
Рамы создавались из экструдированного алюминия. На всех стендах есть подробное описание функций, выполняемых определенным вычислительным блоком. Вот блок регистров специального назначения:
В каркасе есть каналы для проводов питания. Элементы питания закрываются металлической защитой, чтобы ничего не двигалось в случае передвижения стенда:
На боковых частях стенда монтируются соединительные блоки.
На каждом стенде есть сервисная плата, которая монтируется в нижней правой части.
У каждой сервисной платы две функции. Первая — соединение и мониторинг линий питания. Вторая — обеспечение доступа к зажимам питания. Всего в системе 7 стендов.
Модули
Megaprocessor разделен на ряд модулей. Вот модуль машины состояний:
Здесь видны наборы плат, которые реализуют логику для конкретной подсистемы. Платы собраны в схему, показывающую, что с чем и каким образом связано. Схема отпечатана на картоне, приклеенном к фанере для обеспечения жесткости всей конструкции. Все соединительные провода выведены назад, чтобы не портить внешний вид модуля. Изначально провода были спереди, но это выглядело не слишком красиво.
Чтобы ничего не перепутать, позади тоже есть распечатка всей схемы.
Соединение всех элементов проводами занимает очень много времени.
Платы
C самого начала я решил, что в проекте будут использоваться печатные платы. Без них создать нечто сложное было бы невозможно, ведь только соединений в системе свыше 100 000. Большинство средств проекта ушло на платы. Изначально мне хотелось сделать большие платы, но это оказалось безумно сложно, поэтому позже я решил разделить все на мелкие платы, что и было сделано. Для проектирования я использовал CadSoft Eagle.
Другие платы можно увидеть по ссылке здесь.
Проверка
Проверки выполнялись постоянно, на каждом этапе проекта:
- Каждая плата тестировалась перед установкой в модуль;
- Каждый модуль тестировался по завершению работы над ним;
- Каждый стенд тестировался после окончания работ по установке модулей;
- После подключения каждого нового стенда тестировалась вся система.
Для проведения проверки функционирования плат, модулей и стендов использовалось оборудование от BlueChip Technologies.
Финансовая составляющая
Всего Ньюман потратил около 40000 фунтов стерлингов. По текущему курсу (после референдума о выходе из ЕС курс фунта упал на 30% по отношению к доллару) это $53071.
Стоимость различных элементов конструкции:
Электроника | £19,000 |
Платы | £14,000 |
Алюминий | £3,500 |
Инструменты | £2,000 |
Гравировка | £900 |
Окраска и печать | £900 |
Крепежи, фанера и т.п. | £500 |
Затраты на электронные компоненты:
Транзисторы | £2000 |
Кабели | £1800 |
Коннекторы | £5000 |
Чипы (для отладки) | £850 |
Резисторы | £370 |
Питание | £800 |
светодиоды | £1300 |
Припой | £370 |
«Остальное железо» | £1100 |
Общая статистика
Some stats:
Транзисторы | 42,400 |
Резисторы | 50,500 |
Светодиоды | 10,500 |
Соединители | 770 |
Контактные терминалы | 7,700 |
Контакты с пайкой | 272,300 |
Вес припоя | 4.25 кг |
Вес свинца | 2.5 кг |
Одножильный провод | 1,500 м |
20-контактный шлейф | 420 м |
Общая длина проводников | 9.9 км |
Основные проблемы
Транзисторы, установленные неправильно
Для того, чтобы облегчить свою задачу, Ньюман создал небольшие платы с максимумом обозначений для элементов. На каждой плате указывалось значение резистора и способ установки тразистора.
Все просто. Но в процессе работы были ошибки — около дюжины тразисторов Джеймс установил неправильно. И найти их было непростой задачей, учитывая общее число этих элементов в проекте. Попробуйте сделать это сами. На фото ниже — плата, где один из транзисторов установлен некорректно.
Автор проекта потратил часы на обнаружение проблемы. Часто один и тот же неправильно установленный транзистор он осматривал несколько раз, не замечая его.
Коннекторы
Подключение при помощи коннекторов — простая задача. Но если таких соединений около 500, есть высокая вероятность ошибки. И Джеймс ошибался несколько раз.
Перекошеный кабель
На фото проблему можно увидеть сразу — кабель перекосился, и несколько контактов оказались незадействованными. Но обнаружить такую ошибку в массе проводов и соединений очень непросто. Ньюман думал, что проблема в одном из модулей, и потратил огромное количество времени на проверку модулей. А надо было проверить кабель.
Изогнутые зубья
Есть и такой тип соединения, как IDC (Insulation Displacement Connector). Между острыми зубьями продевается кабель, чья изоляция прорезается при вставке, и кабель соединяется с зубьями. Все просто. В одном из случаев «зуб» контакта изогнулся и касался соседнего, замкнув схему. Найти проблему было очень непросто.
И еще одна проблема схожего характера. Только в этом случае гнутый «зуб» не обеспечивал должного контакта с проводом.
Кабели
Неправильная установка соединительных кабелей — еще одна проблема. Причем обнаруживалась она чаще всего уже после подключения такими кабелями отдельных модулей или стендов. Джеймс иногда ошибался в позиционировании коннектора на кабелях. Естественно, схема не работала. И снова шли часы поисков, прозвонки схем, проверки элементов. На фотографии показан правильно обжатый кабель с коннектором и проблемный кабель (вверху).
А вот еще одна частая причина неработающей схемы — недовставлнный кабель, не обеспечивающий должного контакта.
Замыкание контактов
Замыкание на корпус
Здесь две платы, одна из которых работала не так, как нужно. Как оказалось, причина была в том, что Джеймс отверткой повредил плату и её замкнуло на крепеж, а тот — на весь стенд. Заметить такое невооруженным глазом практически невозможно.
Припой
Иногда при пайке возникали характерные проблемы — замыкание контактов мостиком из припоя. На фотографии увеличенное в несколько раз изображение. Заметить такое сходу очень сложно — нужно детально осматривать все элементы на плате.
Джеймс по профессии схемотехник, и пайкой занимается он с малых лет. На фото выше причина — случайное падение капли олова на схему. Это был единичный случай за все время, но возни с ним было много — найти неправильную пайку оказалось непросто. Джеймс изначально начал проверять все соединения платы и только затем решил осмотреть место пайки.
Еще одна схожая проблема, найти ее удалось только при помощи увеличительного стекла — мостик, образовавшийся при пайке имеет толщину человеческого волоса.
И еще пайка
А здесь Джеймс по какой-то причине просто забыл припаять контакты. Целый ряд ножек транзисторов оказался «голым», ни к чему не присоединенным. Эту проблему удалось быстро обнаружить и решить.
Дефект транзистора
Это была одна из наиболее серьезных проблем. Тразисторов в схеме много тысяч. И выход только одного транзистора из строя означает нерабочий Megaprocessor. Во избежание проблемы Джеймс проверял каждый транзистор до пайки. Потом — после пайки. Потом — все транзисторы на схеме. И все равно оказывалось, что какие-то платы не работают, и виной тому — дефектный транзистор. Причиной повреждения обычно становился электростатический разряд. Транзисторы типа 2N7000 очень чувствительны к такому типу воздействия.
Причем если плата вчера работала, то сегодня она могла уже не работать. Почему? Причина оказалась необычной. Это… пылесос по имени Генри.
Джеймс Ньюман думал, что транзисторы повреждаются при включении питания некоторых схем. После проверки оказалось, что это не так. И только после многих часов бесплодных попыток найти источник статики он вспомнил, что получал небольшой удар током, касаясь пылесоса. А этим пылесосом он чистил некоторые стенды после их готовности, совершенно забыв о том, какой проблемой может быть пылесос (в частности, чистить платы компьютеров или ноутбуков пылесосом нелья — об этом предупреждают многие производители ПК). В итоге Генри отправился на чистку ковров, стенды очищались уже вручную. И транзисторы прекратили выходить из строя.
Другие проблемы
Их было огромное количество. Ньюман работал над проектом пять лет, и конечно, почти каждый день что-то случалось. Ошибки, технические неисправности, короткие замыкания, некорректное моделирование и многое другое — это только малая толика проблем. Описать все это в рамках одной статьи не представляется возможным. Лучше почитать то, что пишет сам Джеймс о проблемах в ходе реализации проекта.
Интервью с Джеймсом Ньюманом
Я не мог просто написать об этом грандиозном проекте, не задав несколько вопросов автору. Джеймс сразу согласился рассказать немного о своем проекте для читателей Geektimes.
Как вам пришла в голову идея создать этот проект?
Это случилось пять лет назад. Идея возникла под влиянием двух факторов. Я проводил эксперименты с транзисторами, для того, чтобы понять в деталях, как они работают. Кроме того, на моей работе коллеги стали обсуждать возможность построения компьютерной системы из дискретных логических схем. И мне захотелось создать компьютер не из отдельных микросхем, а из дискретных транзисторов. Мне захотелось создать систему, внутри которой мог бы уместиться человек, наблюдающий за тем, как все это работает. На что это могло бы быть похоже?
Сколько времени прошло между появлением идеи и началом реализации проекта?
Не слишком много. Я начал проводить подготовительную работу к реализации всего проекта создания компьютерной системы почти сразу же. Около года ушло на эту работу и эксперименты.
А насколько велико расхождение между начальным планом и фактическим сроком реализации проекта?
Мне казалось, что я смогу осуществить свою задумку за год. Но на проект ушло почти пять лет. Так случилось потому, что уже начав действовать, я решил построить нечто более грандиозное, чем планировал.
Какие вы можете назвать большие или мелкие проблемы, возникавшие во время работы? Какие из них были критичными?
Главная проблема, которая остановила работу на некоторое время — разработка мультиплексора. Я некоторое время работал над решением вопроса эффекта паразитного диода, который актуален для МОП-тразисторов (Подавляющее большинство приборов по МОП технологии выполняется так, что исток транзистора подключен к полупроводниковой «подложке» структуры. При этом образуется так называемый паразитный диод между истоком и стоком. Избавление от этого диода сопряжено со значительными технологическими трудностями, поэтому с ним научились мириться и даже использовать в схемотехнических решениях. — Прим. ред.). В результате я разработал платы, которые снимали проблему, но они были большего размера, чем я рассчитывал.
Еще одна проблема — сложность создания стоек, их конструкция оказалась слишком сложной. У меня не слишком хорошее пространственное воображение.
Ну и кроме этого постоянно приходилось решать мелкие вопросы, их было просто огромное количество как в ходе проектирования, так и в ходе реализации намеченного плана.
Если бы вы знали обо всех этих проблемах, стали бы вы работать над проектом?
Я подозревал, что примерно так все и будет. Это бы меня не остановило. Изначально я хотел просто знать, как все работает. Но если бы я знал, насколько большим получится процессор, и сколько денег уйдет на проект, я бы не стал этим заниматься. Megaprocessor слишком велик для моего дома, и я хочу найти для него другой дом.
У вас были мысли прекратить работу уже в ходе реализации проекта?
Было несколько случаев, когда мой энтузиазм иссякал, что означало замедление работы. В то же самое время я не позволял себе расслабляться полностью. Каждый день в таких случаях я заставлял себя что-нибудь сделать, неважно, насколько незначительной была эта задача. Я говорил себе: «Слона можно сьесть, нужно лишь откусывать кусочек за кусочком».
Ваш проект стал очень известным. Есть ли коммерческие предложения? Может быть вы уже приняли решение отдать Megaprocessor в какой-нибудь музей или университет?
Нет коммерческим предложениям! Я не думаю, что смог бы возместить затраченные средства, и это никогда не было целью. Я бы хотел отдать Megaprocessor в музей или другую схожую организацию. Переговоры уже ведутся.
Нужен ли системе какой-либо специальный уход?
Нет, ничего такого не требуется. Нужна лишь осторожность. Особенно это касается статического электричества — небольшой заряд может вывести что-то из строя.
Как вы вводите данные в систему?
Сейчас я использую модифицированную версию «Venom Arcade Stick». Сначала я планировал использовать последовательный интерфейс, позволивший бы использовать ПК. Интерфейс я разработал, изготовил, но еще не тестировал.
Какое энергопотребление у системы?
Я думаю, около 300 Вт. Большая часть уходит на светодиоды.
Ломалось ли что-нибудь в системе уже после готовности Megaprocessor?
Единственная проблема, с которой я столкнулся — это более медленная работа системы, чем изначально планировалось. Как оказаллось, причина в неправильно выбранном номинале подтягивающих резисторов. Нужно было выбрать резисторы номиналом не 10k, а всего 470. Еще одно — это не проблема, а скорее, мое желание. Я хотел бы обеспечить возможность настройки яркости дисплея. Но сейчас об этом уже поздно думать.
В системе Megaprocessor многие десятки тысяч деталей. Какова вероятность того, что все будет работать без поломок в течение долгого времени?
Очень хороший вопрос. И пугающий. Я думаю, что если не двигать и не трогать электронные компоненты всю систему — все будет хорошо. Но проблема в том, что Megaprocessor размещается в моей гостиной, и мне приходится двигать стенды. Каждый раз, когда я этим занимаюсь, есть вероятность повреждения соединения. Вероятность небольшая. Может быть, 10%. В прошлую субботу я обнаружил неисправность на одной из плат. Случались проблемы при перемещении стендов и раньше. Поэтому я посчитал, что один раз из десяти во время движения стендов возникает неисправность. Если я погружу все в машину и установлю систему в новом доме, уверен, получу несколько неисправностей. Порядка десяти.
У вас есть какие-то задумки по новым проектам?
Первое, что я должен сделать — привести в порядок дом и сад. Они были заброшены на несколько лет. После этого я посмотрю, чем бы еще заняться.
Что вы можете посоветовать людям, которые планируют сделать что-то подобное?
Практический совет: работая над проектом такого масштаба, вы должны иметь четкое представление о том, что вы делаете. Вы должны быть профессионалом в своей области и профессионально относиться к каждому этапу. Разрабатывая что-то, вы должны быть уверены, что все созданные элементы будут совместимы друг с другом на этапе сборки.
Абстрактный совет: начать работу легко, сложно закончить. Почему вы хотите этим заняться? Как только вы начнете что-то делать, вы позже поймете, что это можно сделать лучше, и вы снова начнете выполнять этот этап. И снова, и снова. Два года назад я понял, что если буду все время все переделывать, то ничего не закончу. И я решил останавливаться на этапе с оценкой «неплохо», поскольку этот этап в большинстве случаев соответствует планам. Я знаю, что в проекте много ошибок и много того, что можно было сделать лучше. Но я все же закончил свой проект, и я счастлив.