Создание примитивного компьютера с нуля
Компьютер — это просто. Или нет?
Любой человек, интересующийся сферой информационных технологий, хоть раз задумывался о том, как на самом деле работает компьютер. А и действительно, с помощью компьютера можно сделать столько всего удивительного, что невозможно поверить, что всё, что происходит внутри него, — сложение чисел. Почему бы тогда не сделать свой самому?
Эта мысль явно прослеживается в книге Чарльза Петцольда «Код» — хорошее чтиво для тех, кто хочет разобраться в устройстве компьютера на пальцах не тратя особо времени. Эта книга произвела сильное впечатление на меня, да так, что я решил, что компьютер и вовсе банально простой агрегат и ничего сложного в нём нет.
Но это не так. После прочтения у меня всё-таки поселилось ощущение того, что от меня что-то сокрыто, что какие-то аспекты архитектуры вовсе не затрагивались. За бо́льшими объёмами информации я обратился к следующей книге — «Архитектура Компьютера» Эндрю Таненбаума. Информация в этой книге оказалась гораздо обширнее, однако я получил не совсем то, чего хотел.
На этом мой путь в мире архитектуры ЭВМ приостановился, началась учёба, я отвлёкся на другие, более интересные для меня на тот момент проекты. Но, к сожалению, я из тех людей, которые не могут без угрызений совести пользоваться чем-либо, не зная хотя бы примерно механизма работы этого инструмента. Это заставляло меня искать материал буквально обо всём.
Череда разочарований наступила после прочтения нескольких глав книг об игровых движках, компиляторах, операционных системах и пр. Я просто растерялся: мир, который казался мне логичным и в меру простым в миг стал огромным и запутанным, требующим внушительных объёмов знаний.
Начало великого пути
То, что спасло меня, был ответ одного пользователя на каком-то форуме на пост человека, страдавшего похожим «расстройством», мир IT казался ему таким огромным, что его точно нельзя постичь. Я помню те слова, и они меня выручают каждый раз, когда я сталкиваюсь с чем-то новым. «Do not let yourself get overwhelmed» — то, что стоит говорить каждому новичку в IT.
И тогда я начал с новыми силами бороздить просторы интернета в поисках литературы. Мне очень повезло, что я наткнулся на замечательную книгу «The Elements of Computing Systems. Building a Modern Computer from First Principles» by Noam Nisan and Shimon Schocken(нет русского издания). В ней именно для таких, как я показывают создание реально работающего компьютера с нуля, то есть из логических вентилей.
Я загорелся идеей и приступил к работе. Начал с того, что когда-то уже делал после прочтения Петцольда, — сумматоры, регистры, мультиплексоры. Это одни из самых простых устройств, работу которых вовсе не сложно понять (если не думать об эффективности), а сделать такие можно за 10 минут в удобном приложении на вашем смартфоне.
Каждую следующую главу я начинал с жаждой знаний. Сконструировал АЛУ, руководясь заданиями в книге. Не могу сказать, что что-то в нём придумал я, скорее мне дали готовые детальки, а я их собрал в красивую машину. Зато какое удовольствие я получил, когда понял, что я своими руками собрал полностью работающее АЛУ.
Первые плоды
За ним последовал полностью работающий 16-битный процессор, который я доделал сегодня. Моему счастью нет предела, но я не собираюсь останавливаться. К моему сожалению, хоть в книге весь процессор и был собран полностью с нуля, но ассемблер для него был абстракцией в следующей главе(что логично, книга расчитана на более-мение краткое, хоть и детальное изложение). Немного погрустив, я понял, что Ассембли — тоже язык программирования, и создание полноценного Ассемблера с нуля займёт много времени.
Написать свой Ассемблер — амбициозная цель, но это не единственная сложность. Путь, который я выбрал, обещает быть непростым. Регистры и в целом память в программе BOOLR можно реализовать только используя логические вентили. Почему это проблема? Всё просто: ничтожные 1024 байт RAM десятки раз рекурсивно пытаются поселить в оперативной памяти моего компьютера свои составные 16-битные регистры. Вот, что из этого получается:
В общем говоря, иногда проект просто не открывается из-за нехватки оперативной памяти. Выглядит как тупик, но я не намерен останавливаться на этом.
Источник
Строим декоративный транзисторный компьютер — шаг 1
Похожая задача интересовала и меня последние 3 года — но от изначальной идеи строить на транзисторах я не отказался, и сейчас могу рассказать свои соображения и показать текущие наработки, а также — хочу спросить вашего мнения о том, каким на ваш взгляд должен быть _серийный_ транзисторный декоративный компьютер. Но сразу нужно заметить, что работы впереди еще на пару лет 🙂
Главный вопрос — зачем все это нужно, если есть FPGA и всякие Raspberry Pi?
Ответ простой:
1) Мне интересно этим заниматься в свободное время и
2) Декоративный компьютер (декоративный — это вопрос отношения к компьютеру, а не его внешности) — он как декоративные домашние животные: мопс не отгрызет ногу грабителю, а персидский котик не победит в бою метрокрысу. Но с ними интересно играть и показывать гостям — даже если в области вычислений, охраны и охоты они сильно уступают «боевым» аналогам.
Подстановка задачи и архитектура
Какие будут у нас требования к декоративному компьютеру?
- Разработка под автоматизированную сборку. Руками паять по 5000 деталей на компьютер — поседеть можно.
- Производительность — не существенна, главное чтобы 100тыс+ операций в секунду было (на уровне Радио-86РК). Даже 100тыс оп/с позволит решать очень многие задачи.
- Практика показывает, что 64 КиБ памяти — реалистичный минимальный объем памяти. В 1-4 КиБ многое не влезет, потому уменьшать шину адреса меньше 16 бит не стоит.
- Программирование — на C. Нельзя заставлять людей тратить своё свободное время на ассемблер (но если желание есть — то все карты в руки).
- В базовой модели — из транзисторов сделан только сам процессор. Память и обвязка — может быть из микросхем. Полностью транзисторный вариант возможен в будущем, но это уже будет дальнейшее развитие (со своими ограничениями — более 1-2 КиБ памяти иметь будет затруднительно)
- В процессоре — отключаемые светодиоды показывают состояние внутренних регистров (IP, аккумулятор, запись/чтение из памяти. )
- Не слишком высокая цена. Себестоимость одного транзистора с обвязкой и автоматическим монтажом — около 2 рублей, соответственно, использовать больше 1000 транзисторов не желательно для серийного продукта. Это означает, что схема должна быть проще, чем i8080 (4500 транзисторов), i4004 (2300 транзисторов), и MT15 (
3000 транзисторов), не смотря на требование 16-и битной шины адреса.
Взаимодействие с пользователем: Классическая реализация — это клавиатура + вывод на телевизор или VGA-монитор. Сделать удобную «свою» клавиатуру слишком сложно — нужно использовать стандартные PS/2 или USB. PS/2 клавиатуры уже редкость — а USB в транзисторном компьютере поддержать — будет затруднительно, без использования грязных хаков (вроде микроконтроллера).
Вероятно, оптимальным и простым решением может быть терминальный интерфейс — когда компьютер общается с внешним миром через последовательный порт (RS232), таким же образом можно загружать программы. Т.е. в простейшем случае транзисторный компьютер подключается к настольному компьютеру (или специализированному терминалу) через USB<>COM адаптер, и в любой программе-терминале (например Putty) можно с ним работать.
Также, нужна и возможность подключать внешние устройства через GPIO-пины.
Последовательный или параллельный ALU? 8 или 16 бит?: Поскольку количество транзисторов очень ограничено (
Схему для симуляции в LTspice IV можно скачать тут.
Принцип работы следующий: т.к. порядок слагаемых не имеет значения, мы их просто аналогово смешиваем, и точно подбирая пороговое напряжение сдвоенного инвертора — сразу получаем перенос. Затем вычитая на транзисторе Q3 из аналоговой суммы перенос — получаем сумму. Конечно, все это требует точного подбора уровней срабатывания, и симуляции с учетом температуры. Диоды Шоттки — для предотвращения входа транзисторов в глубокое насыщение, что резко снижает скорость работы.
Использование полевых транзисторов возможно, и обеспечивает лучшую температурную стабильность, главное чтобы у них было достаточно низкое пороговое напряжение.
Сдвиговой регистр — самая ответственная часть этого транзисторного компьютера. Классическая реализация на синхронных D-триггерах — требует чудовищного количества транзисторов на бит.
У меня получилось уместиться в 2 транзистора на бит, со следующими особенностями:
1) Регистры — основаны на конденсаторах, и если их «не двигать» — то со временем данные пропадут. Но с полевым транзистором время хранения достаточно большое.
2) Передача данных на следующую ступень — биполярным транзистором. В половине случаев он работает в обратном, нестандартном режиме — пробивное напряжение намного меньше (но 3.3В должно держать), и коэффициент усиления намного ниже прямого включения (но я надеюсь будет достаточно).
3) Каждая следующая ступень — инвертирует сигнал, это не проблема когда нужен только последовательный доступ (например в случае регистров процессора). Если же будет нужен не инвертированный параллельный выход — нужно будет добавить 8 инверторов (т.е. 16-и битный сдвиговой регистр потребует 40 транзисторов, а не 32).
4) Остается проблема с насыщением биполярного транзистора.
График работы:
С этими компактными реализациями цифровых схем — уложиться в 1000 транзисторов думаю будет вполне реально.
На этом пока все — меня же ждет впереди чудовищно много работы
А теперь — несколько вопросов к читателям: Какие варианты кажутся вам приемлемыми?
Источник
«Умный» компьютер своими руками
Просмотр ТВ, создание системы резервного копирования, веб-сервера и организация доступа к виртуальному «облаку»: советы CHIP помогут вам собрать компьютер, который может все — даже понимать речь.
Просмотр ТВ, создание системы резервного копирования, веб-сервера и организация доступа к виртуальному «облаку»: советы CHIP помогут вам собрать компьютер, который может все — даже понимать речь.
Гибкость вместо производительности
В отличие от стандартного компьютера, где ставка сделана на быстрый процессор и мощную видеоплату, мы постараемся достичь приличной производительности при низком энергопотреблении. Выбранный нами двуядерный процессор начального уровня AMD Athlon II X2 270 способен, например, в процессе потокового вещания конвертировать видео в стандарте Full HD в совместимый с мобильным телефоном и планшетом формат. Классические задачи, такие как работа с пакетом офисных программ, сортировка цифровых фотографий или заполнение налоговой декларации, для нашего компьютера также не проблема.
Для игр данный ПК не подходит ввиду отсутствия дискретного видео. Но вы можете исправить ситуацию, установив подходящую графическую карту, равно как и другие необходимые компоненты.
Сборка базового ПК
Наш компьютер должен обладать широкими возможностями, при этом быть вполне доступным по цене и потреблять немного электроэнергии. Barebone-система на базе процессора AMD отвечает данным требованиям.
1 ВЫБОР BAREBONE-СИСТЕМЫ Наиболее доступным вариантом при сборке домашнего компьютера, обладающего необходимой для наших целей производительностью, является система Barebone. Barebone — это небольшой корпус, в котором системная плата и блок питания уже предустановлены. Бюджетным решением с проверенной «начинкой» является ASUS V7-M4a3000e (около 5000 руб.). Мы установим в нее двуядерный процессор AMD Athlon II X2 270, который при своей невысокой стоимости (около 2000 руб.) обеспечивает довольно приличную производительность. Таким образом, если оснастить нашу систему 4 Гбайт оперативной памяти, жестким диском емкостью 1 Тбайт и полноценной «Windows 7 Домашней», компьютер обойдется примерно в 15 000 рублей.
Настройка ОС и роутера
1 СОЗДАНИЕ ОБЩИХ РЕСУРСОВ Чтобы установить операционную систему с USB-накопителя, воспользуйтесь утилитой Windows 7 USB/DVD Download Tool — соответствующее руководство вы найдете в Интернете по короткой ссылке http://tinyurl.com/c6rzjxe. Если вы подключаете систему к домашней сети впервые, то в качестве местоположения выберите пункт «Домашняя сеть». Затем сделайте общедоступными папки, к которым вы хотели бы получать доступ. Кликните в Проводнике Windows правой кнопкой мыши по соответствующей директории, выберите «Свойства | Доступ», а затем щелкните по кнопке «Общий доступ». В раскрывающемся списке выберите «Все» и «Добавить».
1 УСТАНОВКА MEDIAPORTAL Пакет программ Mediaportal способен превратить ваш компьютер в самый настоящий медиацентр. Однако, если вы хотите также установить пакет XAMPP (веб-сервер), при инсталляции Mediaportal обращайте внимание на информацию в первом шаге из раздела «Настройка серверных служб». В противном случае выполните автоматическую установку.
Управление компьютером с помощью голосовых команд
Клавиатура и мышь не всегда оказываются лучшими средствами для управления ПК. Удобно расположившись на диване, вы можете отдавать компьютеру голосовые или жестовые команды.
1 УСТАНОВКА ПРОГРАММЫ С помощью приложения Win-Remote и соответствующей серверной утилиты вы сможете управлять своим ПК по беспроводной сети. Преимущество этого варианта состоит в том, что для ввода данных вы можете пользоваться функцией распознавания речи в своем телефоне на базе Андроид. Найдите и установите на смартфон бесплатную утилиту Win-Remote от Banamalon, которая доступна в интернет-магазине Google Play. Также скачайте серверную программу, которая в дальнейшем будет стартовать вместе с Windows, и инсталлируйте ее на свой ПК. После запуска откройте на стройки утилиты Win-Remote с помощью кнопки «Свойства» и выберите «Настройки сервера». Введите IP-адрес вашего компьютера в пункте «IP-адрес», после чего удаленное управление ПК будет готово к использованию.
Используя свой ПК в качестве веб-сервера, вы сможете организовать хостинг собственных сайтов. Помимо всего прочего, компьютер может выполнять функции сервера резервного копирования данных.
1 НАСТРОЙКА XAMPP Пакет программ XAMPP является готовым веб-сервером. Обязательно инсталлируйте вначале XAMPP, а затем Mediaportal, чтобы избежать конфликтов между XAMPP и SQL-сервером в Mediaportal. При установке отметьте в инсталляторе флажками все варианты. Запустите контрольную панель и введите в адресной строке браузера «https://localhost/phpmyadmin». В пункте «Привилегии» щелкните по «Добавить нового пользователя». В качестве имени укажите «Mediaportal» и задайте пароль. В пункте «База данных для пользователя» выберите «Создать пользователя» и щелкните в пункте «Глобальные привилегии» по «Отметить все». При установке Mediaportal выберите «Расширенная установка», а также опцию «Локальная установка», которая предусматривает использование имеющейся базы данных MySQL. В следующем диалоговом окне выберите «My SQL 5», в пункте «Hostname» укажите IP-адрес вашего ПК, в качестве «User ID» — имя «Mediaportal», а также назначьте пароль.
Источник