Как стать автором
Обновить

Комментарии 29

Будет ли полный цикл статей по сборке процессора на дискретных компонентах?
Если roelh за него возьмётся.
Будет (от меня). Как раз с нового года делаю процессор на логике. :)
Я уже себе представил проц на куске текстолита размером с лист А4 :)
Какая длина слова? Сколько регистров? Защищённый режим будет? Отдельная шина для UART и SPI?
Если всё так, то Ваш проект действительно интересный, во всяком случае получше стопятисотого способа реализовать быдлоспектрум. Конечно, есть BMOW, но там не совсем то, что хотелось бы видеть — он реализован на готовых АЛУшках.
Не хотел заранее, но проговорился :)
Расчитываю на 3-4 статьи про процессор, и еще пару про сам компьютер на таком процессоре. Процессор 8-бит, система команд похожая (но не идентичная) кр580вм80а.
Планирую выжать 2 MOPS.
Про A4, Вы не ошиблись, но я собираю на макетных платах, этажеркой 3 штуки, разделенные стойками. И еще 2 такие-же на сам компьютер, где 1я это видеосистема, а 2я все остальное. Регистров общего назначения 6 (восьмибитные). Шина адреса 16-бит. Защищенного режима (конечно) нет. UART — пока не знаю, SPI — врядли. Из периферии таймер для звука, клавиатура, дисплей (несложная графика), накопитель на SD.
Делаю на спор, об этом напишу. Из условий: процессор не должен включать в себя ПЛИС (хоть устаревшие, хоть современные), не должен включать в себя микропроцессоры и микроконтроллеры (также хоть устаревшие, хоть современные), все корпуса микросхем должны быть DIP со стандартным шагом 2.54, использование «SOиков» по согласованию и рассмотрению и в сверхмалых дозах (в идеале без них).
Использование микросхем в tqfp, mlf, bga и т.д. — запрещается. Единственная современная деталь, разрешенная в таком компьютере SD карта (в качестве накопителя).
Однако, использование AVR, STM32 или ПЛИС разрешено только на этапе отладки отдельных узлов процессора, таких как эмуляция внешней периферии, пошаговый прогон команд, эмуляция ПЗУ и ОЗУ, но они должны быть удалены по окончанию проекта. Здесь они не являются частью процессора, а лишь инструментами в разработке, также как, например, осциллограф.

а вы знаете толк в извращениях ;)
респектую и теперь моя жизнь наполнилась смыслом, буду ждать что получится )))

но проговорился :)
Да уж, спойлеры вредят доходам кинотеатров. Думаешь, что тебе покажут приключенческий боевик, а там мелодрама в фэнтезийной обёртке :)
компьютер на таком процессоре.
… Называется «калькулятор», потому что: ...
Защищенного режима (конечно) нет.
После этого дальше читать уже не особо интересно. Тем не менее, некоторые моменты наводят на риторические вопросы. Почему-то планируются во-первых
дисплей (несложная графика), накопитель на SD
..., и при этом
SPI — врядли
, хотя он достаточно прост для реализации на рассыпухе, чуточку сложнее UART'а. И он сразу снимает вопросы как с графикой, так и с интерфейсом для SD-карты, которая штатно умеет работать в SPI mode. Буква «Ц» — целесообразность.
А сакральный смысл
система команд похожая (но не идентичная) кр580вм80а
мне и вовсе непонятен. КМК, описанный Вами калькулятор имеет смысл проектировать и изготовить разве что...
на спор
… Называется «калькулятор», потому что: ...

По Вашему, так калькулятор от компьютера отличается наличием защищенного режима? А как же IBM PC до 286го? Это тоже калькуляторы? Компьютеры-самоделки, такие как «РАДИО-86РК», «МИКРОША», «СПЕЦИАЛИСТ»,«АПОГЕЙ» и прочие, назывались «ПЭВМ» — Персональная Электронно Вычислительная Машина. Полагаю, что мой проект заслуживает именно такого названия.
После этого дальше читать уже не особо интересно.

Дело Ваше. :)
… хотя он достаточно прост для реализации на рассыпухе, чуточку сложнее UART'а. И он сразу снимает вопросы как с графикой, так и с интерфейсом для SD-карты, которая штатно умеет работать в SPI mode…

Я имел ввиду, что аппаратного SPI не будет. Для общения с SD будет программный SPI. Как раз нецелесообразно делать аппаратный SPI, вполне достаточно написать программный.
А сакральный смысл… мне и вовсе непонятен. КМК, описанный Вами калькулятор имеет смысл проектировать и изготовить разве что...

Система команд зависит от применяемости процессора, на одних процессорах легче и быстрее решаются одни задачи, на других другие. Принципиально другие. Где-то задачи выгоднее распараллеливать, и там нужны многоядерные системы, а где-то решать наоборот в один поток, но быстро.
Попытка сделать «суперуниверсальную» систему команд «для всех времен и народов» родила такого монстра как x86. Мне она кажется некрасивой, хотя в 90е я на ассемблере не один мегабайт написал.
разве что… на спор

Скажите, а если устранить все Ваши замечания и реализовать предложения, то какой еще смысл делать подобный проект Вам видится, кроме того, что на спор?
По Вашему, так калькулятор от компьютера отличается наличием защищенного режима?
Да.
А как же IBM PC до 286го? Это тоже калькуляторы?
Вобщем-то да, потому что и создавались изначально для вычислений, построения диаграмм и графиков, и расчитанные на бизнес-, а не на домашних пользователей, никто ж поначалу не думал, что на них будут ещё и играть. И не до 286, а до 386, потому что «двойка» не имела виртуализации памяти, из-за чего её защищённый режим по назначению использовать было нельзя.
Компьютеры-самоделки,… назывались «ПЭВМ» — Персональная Электронно Вычислительная Машина.
Калькулятор — это машина? — Да, потому что выполняет определённые действия вместо человека.
Электронная? — Разумеется, это же не механический «Феликс».
Вычислительная — По определению.
Персональная — Да, потому как не расчитан на одновременное использование более чем одним пользователем.
Так что с утверждением...
Полагаю, что мой проект заслуживает именно такого названия.
… следует согласиться.
Дело Ваше.
Есть же целый ресурс, где участники специально этим занимаются — собирают и пересобирают машинки 1980-х. Всё, что с ними в принципе интересного можно было сделать, уже к настоящему моменту сделали.
Для общения с SD будет программный SPI.
Ну, для перекалькулятора-недокомпьютера — самое оно, если собирается на спор из относительно доступных в те годы элементов, чтобы продемонстрировать саму возможность создания работающего устройства, которое потенциально может выполнять кое-какие задачи.
Система команд зависит от применяемости процессора, на одних процессорах легче и быстрее решаются одни задачи, на других другие.
Мне Капитан Очевидность уже доложил, спасибо. Вопрос был не в этом, а в том, почему вообще систему команд надо делать с чем-то совместимым, ведь Вас же не держит никакое легаси? Почему бы не сделать её максимально нативной, как можно сильнее упростив блок интерпретатора инструкций? Ведь всё равно первое время придётся всё пилить непосредствеено в кодах, а со временем добавить Вашу архитектуру в binutils либо приспособить более простой компилятор с ассемблера AXASM. А потом уже заняться добавлением Вашей архитектуры в gcc либо использовать для портирования C-компилятор попроще. А дальше libc, загрузчик ПЗУ на основе RTOS, простейший шелл… ну Вы и сами знаете.
Попытка сделать «суперуниверсальную» систему команд «для всех времен и народов» родила такого монстра как x86.
Система команд — это всегда компромисс между сложностью реализации и эффективностью. Можно в АЛУ вообще реализовать только одну функцию, например штрих Шеффера или стрелку Пирса — через них представима любая другая двоичная операция. Вопрос только в том, каковы будут размеры исполняемого файла и насколько быстро оно будет вычислять элементарные вещи.
какой еще смысл делать подобный проект Вам видится
Примерно аналогичный авиа- и гидромоделизму. Также любопытная тема — «попаданческий компьютер», но для него ещё нужно научиться изготавливать самодельные транзисторы (что требует смертельно опасных развлечений со сверхчистым кремнием и плавиковой кислотой).
1) отдельный вид внешкольного образования (вопрос о нынешнем уровне нашего образования давайте оставим за скобками);
2) созидающая субкультура с высоким порогом вхождения, что обусловит здоровую социальную микросреду;
3) ещё одна интересная дисциплина олимпиад и соревнований, кроме алгоритмики можно ещё соревноваться в бенчмарках, в энергоэффективности;
4) применение в некоторых случаях, где не критична вычислительная мощность и важна информационная безопасность — невозможность создания вирусов под ключевую архитектуру в силу её абсолютной уникальности;
5) кузница потенциальных кадров не только по системному программированию, но и по встраиваемым системам и IoT.

Разумеется, в кружке авиамоделирования детей должны учить проектировать модель самолёта, а не воздушных змеев. То есть процессор, на котором потенциально способна работать современная ОС, а не электронные игрушки из 80-х.
Мне кажется, что наличием защищённого режима отличается компьютер, аппаратно приспособленный для многозадачности, от компьютера, аппаратно для многозадачности не приспособленного. Но это не значит, что на втором многозадачность невозможна. Minix говорит об обратном.
Вобщем-то да, потому что и создавались изначально для вычислений, построения диаграмм и графиков, и расчитанные на бизнес-, а не на домашних пользователей, никто ж поначалу не думал, что на них будут ещё и играть.

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

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

Согласен, меня ничего не держит. Но опираться на что-то надо. И надо с чем то сравнивать производительность. Я рассматривал СК от UMC6502, i8080 (кр580вм80а) и Z80. И в качестве базы выбрал вторую. Это не означает что опкоды будут совпадать, совсем нет.
Совпадать будет большинство основных инструкций, но не опкодов, код не будет совместим. Но код будет весьма легко переносить методом трансляции. Если Вы посмотрите на СК i8080, то Вы увидите много ненужного, например опкод $40 это MOV B,B. То есть переписать регистр в себя, то есть NOP. И такая команда есть для всех РОН!.. Каждый РОН можно записать в себя. То есть 8 опкодов заняты NOPами. В этих опкодах можно поместить команды поинтереснее.
И я как раз делаю так, как Вы написали выше.
Ведь всё равно первое время придётся всё пилить непосредствеено в кодах, а со временем добавить Вашу архитектуру в binutils либо приспособить более простой компилятор с ассемблера AXASM. А потом уже заняться добавлением Вашей архитектуры в gcc либо использовать для портирования C-компилятор попроще.

Но это Вы загнули. :) Я прекрасно осознаю, что проект не получит какого либо широкого распространения. И дело ограничится простейшим сборочным транслятором. Ну, а с OS — да, запуск на ПЗУ, загрузка в ОЗУ и шелл.
Также любопытная тема — «попаданческий компьютер»
Что это? :O
1) отдельный вид внешкольного образования

К сожалению или к счастью, я не педагог. :)
2) созидающая субкультура с высоким порогом вхождения, что обусловит здоровую социальную микросреду

Вот это и правда интересно, но не на этом проекте. Может на следующем, когда я отважусь сделать что-нибудь подобное Raspberry PI, на FPGA и ARM.
3) ещё одна интересная дисциплина олимпиад и соревнований, кроме алгоритмики можно ещё соревноваться в бенчмарках, в энергоэффективности;

То-же, что и первый пункт.
4) применение в некоторых случаях, где не критична вычислительная мощность и важна информационная безопасность — невозможность создания вирусов под ключевую архитектуру в силу её абсолютной уникальности;

Уникальность не может являться базой для ИБ. Любая криптография базируется на том, что злоумышленник все знает о системе, но сделать ничего не может. А не на том, что злоумышленник ничего не знает о системе, которую пытается взломать. ;)
5) кузница потенциальных кадров не только по системному программированию, но и по встраиваемым системам и IoT.

И тоже, не на таком проекте.
Разумеется, в кружке авиамоделирования детей должны учить проектировать модель самолёта, а не воздушных змеев. То есть процессор, на котором потенциально способна работать современная ОС, а не электронные игрушки из 80-х.

Если стоит образовательная цель, то да, соглашусь.
Теперь получается, что по Вашему компьютер от калькулятора отличается наличием возможности играть?
Для x86 это почти правда :) Развитие аппаратного обеспечения на платформе Intel обусловили именно игры. Предпечатной подготовкой и макетированием, фоторетушью, САПРами занимались на совсем других машинах класса «рабочая станция». Скажем, режим VGA 640×480×8b сделан как раз с прицелом на игры. Для диаграмм, графиков и прочей бизнес-графики он избыточен, а для профессионального применения недостаточен.
зачем Вы пытаетесь выдумать свое определение
Ну хотя бы чтобы самому ориентироваться в том, что является (являлось) компьютером на самом деле, а что им называли из коммерческих целей. Компьютер — это такая ЭВМ, где непосредственным управлением приложениями пользователя (запуском, прерыванием, завершением) занимается ОС. Если это делает сам пользователь, то такая ЭВМ — программируемый калькулятор. Выводится ли информация на ЖК-дисплей или телевизор, вводит ли пользователь исполняемый код вручную или загружает посредством установки картриджа или воспроизведения записи на магнитной ленте — ИМХО роли не играет.
Но опираться на что-то надо.
Ну если в этом смысле, то да. Но КМК, лучше на БК-0010/PDP-11 ;)
Интересно, каковы с Вашей профессиональной точки зрения причины более низкой популярности «Букашки» по сравнению со «Спеками»?
Что это?
Есть такие ребята, которым романы Жюля Верна покоя не дают. Вроде бы всё у них сыто и благополучно, а они мучаются вопросами теоретического обустройства быта в случае гипотетического попадания на необитаемый остров или куда-нибудь назад во времени. «Можно ли построить параплан по технологиям Поздней Античности?» «Можно ли научить современников Наполеона конструировать радио?» «Из каких подручных материалов можно нагнать топлива для калильного двухтактника?» «Как придётся изготавливать транзисторы в случае гибели современной цивилизации?» Этими и подобными вопросами задаются попаданцеведы. Даже тематические ресурсы есть на попаданчекую тему, например. Правда, ценность статей там невысока, ребятки страдают дефицитом практического опыта, знания черпают из поисковиков, приводимые ими источники информации не всегда вызывают доверие. Фантасты в общем.
Любая криптография базируется на том, что злоумышленник все знает о системе, но сделать ничего не может.
А как же чипы для пластиковых карт, RFID-меток?
Если стоит образовательная цель, то да, соглашусь.
Образовательная — само собой, но моделизм ей не исчерпывается. Моделизм — это скорее семейство неких техно-культов, продукты которых на сегодня не имеют сколь-нибудь значимого практического применения, но в процессе их проектирования и изготовления нарабатывается ценнейший практический опыт, который определённо поможет в профессиональной карьере и жизни.
Сейчас не объяснить практическую пользу разработки и конструирования радиостанции — купить на АлиЭкспрессе дешевле и качество будет выше.
Сейчас не объяснить практическую пользу изготовления фанерной модели самолёта — можно купить дрон и это выйдет в итоге дешевле.
Сейчас не объяснить практическую пользу создания компьютера на рассыпухе — одноплатник с гигагерцовым процессором обойдётся примерно в 10$.
Тут нужна особая иррациональная любовь к подобным занятиям, временами доходящая до религиозного/спортивного фанатизма.
Но при этом стоит помнить, что моделизм — это не создание уменьшенных копий «взрослых» прототипов, но и не театральная бутафория. Это прежде всего копирование принципов, по которым функционируют «взрослые» прототипы. Поэтому в подобных компьютерах-поделках должен быть и настоящий защищённый режим, и аппаратные интерфейсы и шины для подключения периферийных устройств (с какими вообще позволит работать полученная вычислительная мощность), и адекватный БУП(MMU), и контроллер прерываний. А в качестве ОС можно портировать Fuzix.
Интересно, каковы с Вашей профессиональной точки зрения причины более низкой популярности «Букашки» по сравнению со «Спеками»?

Почему с профессиональной? Как раз в этой области я любитель. Профессионалом я себя считаю (как и тружусь) в области телекоммуникаций. ВЧ и СВЧ.
По делу: Возможно БК просто был создан не в то время, скудное ПО, странный язык «фокал». Но это просто ИМХО.
А как же чипы для пластиковых карт, RFID-меток?
А что с ними не так?
Тут нужна особая иррациональная любовь к подобным занятиям, временами доходящая до религиозного/спортивного фанатизма.

Отлично понимаю это утверждение. У меня есть еще одна компонента — закрытие пункта мечты. Как, наверное, знаете, каждый программист мечтает создать свою ОС, каждый железячник мечтает создать свой ПК.
Большинство того, о чем я мечтал в детстве сбылось, несбывшееся я закрываю, потихоньку, подобным вот образом. В ретрокомпьютерах я уже реализовал все то, чего мне в них не хватало тогда… Наверное, это и есть фанатизм.
Поэтому в подобных компьютерах-поделках должен быть и настоящий защищённый режим...
В принципе с технической точки зрения реализовать ЗР не сложно, но не стояло задачи. Но теперь…
А как бы Вам виделся ЗР в подобной системе?
и контроллер прерываний

А вот контроллер прерываний я как раз сейчас продумываю.
Если Вы посмотрите на СК i8080, то Вы увидите много ненужного, например опкод $40 это MOV B,B. То есть переписать регистр в себя, то есть NOP. И такая команда есть для всех РОН!.. Каждый РОН можно записать в себя. То есть 8 опкодов заняты NOPами. В этих опкодах можно поместить команды поинтереснее.

Да, можно. А зачем? Так реализовано исключительно для упрощения конструкции декодера инструкций в условиях высокой цены элементов схемы. (Цена здесь не в общем смысле слова, а не только о денежных знаках.) Кажется, это именно ваш случай?


Проще конструкция — меньше транзисторов (n-MOS, CMOS). Меньше транзисторов — меньше площадь кристалла — больше выход годных — меньше себестоимость. Либо меньше транзисторов — больше свободных транзисторов — можно их использовать в других частях изделия для улучшения характеристик оного.

Тема очень интересная, буду ждать. И сходу вопрос — компоненты SMD? Я бы рискнул собрать простой проц + остальную обвязку, чтобы в итоге дергать RTC чип и выводить время на 7-ми сегментный индикатор. Просто по фану, но увы мозгов не хватает все с нуля спроектировать.
Как раз компоненты не SMD, я хочу, что бы наоборот было винтажнее. Есть цель доказать, что «в те времена» когда народ собирал «РАДИО-86РК», то, что я делаю сейчас тоже было возможно. :)
Про ограничения проекта написал чуть выше.

А за статью автору огромное спасибо! Прочитал с удовольствием.
Ну смотрите, у SMD масса плюсов для этой затеи. Плотнее монтаж — позволяет создать итоговый проект небольшого размера. Отсутствует необходимость в массовом сверлении отверстий. Компактность позволит реально устройству быть в работе, а не пылиться потом на полке.
Не рассматривали SMD компоненты готовой логики в SOT-23 корпусе? Я рассматривал и считаю неплохой вариант.
Я знаю, что у SMD масса плюсов. И использую их постоянно в проектах на работе и в самоделках. Но здесь другой случай, я собираю на макетных платах. Во первых, это позволяет не разводить конкретную плату под проект, а во вторых, есть возможность менять схему по мере продвижения разработки. Миниатюрность здесь не требуется, наоборот я хочу наглядности. В такой процессор будет приятно тыкнуться осциллографом. По поводу пыли, я планирую корпус и скорее всего прозрачный из оргстекла, но это потом…
SOT-23 не годится по условиям и ограничениям.
Может в каком-то следующем проекте я рассмотрю подобную логику.
Ваше желание мне понятно. Во всей этой ситуации мне больше интересно каким образом такой пк станет понимать инструкции и инициализирует сам себя — в современном пк это делает bios. А тут что будет? ПЗУ в котором программа, где будут инструкции или что, как? Просто случилась подача питания, линия Reset делает аппаратный сброс чтобы перевести логику в состояние готовности, далее должно что-то загрузиться… но как?
Конечно ПЗУ! :) Все как обычно, и как везде. После сброса макропроцессор (я называю это так) начинает выполнять код с адреса 0000h, а там будет ПЗУ 2кб.
Обычно, ПЗУ распологают вверху адресного пространства, и даже в «РАДИО-86РК» есть хитрая система запуска, которая временно подставляет ПЗУ в нулевые адреса, но потом случается переход на верхние адреса и ПЗУ синхронно меняет свое расположение.
Но я решил иначе, я решил расположить ПЗУ в самом начале, 2кб должно хватить, что-бы проинициализировать всю периферию, найти SD карту и прочитать несколько секторов в ОЗУ, далее передать туда управление, и на этом функция ПЗУ заканчивается.
И написание ОС сведется к программированию на обычном ПК с последующей заливкой на SD. Как то так.
На ZX Spectrum ПЗУ внизу адресного пространства как раз.
Ну стало чуточку понятнее, в принципе примерно так и думал. Я какое-то время назад систематически стал собирать инфу про что как что делал чтобы собрать на дискретных компонентах ПК или процессор. Тема интересная, быть может вы соберете на дискретных компонентах, а я попробую пересобрать на SOT-23-5 gate логике.
Есть такая игрушка MHRD. Цель игры — разработать ЦП (жаль только, что ТЗ строго задано)
store.steampowered.com/app/576030/MHRD

Есть вариант попроще:
построить процессор, начиная с элементов NAND

А ещё есть похожий учебный курс: www.nand2tetris.org
MHRD тоже, собственно надо с NAND начинать, но это и не удивительно — все же самая популярная базовая функция.

А вы пробовали его проходить? Там же явная ошибка: в ALU нет управления входным переносом, как следствие на следующем этапе почти половина операций нереализуема. (UPD: Нет ошибки)

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории