All streams
Search
Write a publication
Pull to refresh
69
0.8
Иван Савватеев @SIISII

Микроконтроллеры, цифровая электроника, ОС…

Send message

Компиляторы такое генерят постоянно при выключенной оптимизации, да и при включённой иногда бывает :) Понятно, что в Вашем случае портирование какого-нить там гцц не грозит, но если брать в общем и целом...

Я вот несколько дней осваивал сопрограммы (coroutines которые) на це++ на арме в кейле -- дык приходилось отлаживаться на уровне ассемблера: во-первых, понять, что там компиль генерит для поддержки всей этой фигни, а во-вторых, из-за того, что кейловскому отладчику сопрограммы начисто срывают крышу (во всяком случае, при выключенной оптимизации). Ну, оно понятно, на микроконтроллерах вообще 3/4 убеждены, что писать надо на чистых сях :)

Помогает писать на HDL эффективный код, хорошо понимая, во что он превращается на выходе.

Сейчас, похоже, есть некий базовый курс, где галопом-по-европам насчёт логических элементов и т.п., а потом сразу HDL

Лично у меня сложилось убеждение, что большинство тех, кто с рассыпухой не игрался, плохо себе представляет, во что выливается результат синтеза его HDL-кода -- а отсюда, как минимум, неэффективное расходование ресурсов ПЛИС или, что ещё хуже, заказной микросхемы (ASIC). Ну и, кроме того, если ты сам проектируешь логику на рассыпухе, мозги вскипают, но тренируются, а вот если ты описал требуемое поведение на HDL, а думал за тебя синтезатор, то с этой самой тренировкой всё плохо :)

дык на программируемых микрокалькуляторах советских была :)

Это ТЭЗы типа 1 -- они применялись в процах ЕС-1020 и ЕС-1030 (насчёт ЕС-1022 и ЕС-1033 не помню, а искать вот прям сейчас лениво :) ), построенных на ТТЛ, а также во всякой ТТЛ-периферии типа перфораторов и т.п. На них были навесные шины питания, да, а на них паялись конденсаторы. На СМках, кажется, использовались уже только печатные проводники, но голову на отсечение не дам :) В любом случае, индуктивность подобных линий питания выше, чем у полноценных полигонов, как на многослойных платах, что и создаёт проблемы.

В более мощных машинах, построенных на ЭСЛ (ЕС-1050/1052, ЕС-1035 и т.д.) применялись исключительно многослойки -- как для обеспечения нормального питания, так и чтобы импедансы выдерживать (ЭСЛ на длинных линиях это требуется). Там конденсаторов уже намного меньше, особенно с учётом в три раза большего количества микросхем на той же площади.

В ЕС-1033 вовсю использовали счётчики в качестве 4-битных регистров :)

Насчёт 537-й серии и других на МОП-транзисторах в качестве входов всё понятно: у них логическое состояние определяется зарядом затвора, и этот заряд надо то закачивать, то откачивать -- соответственно, нужно подключать то к питанию, то к земле. С ТТЛ это не требуется, поскольку нуль -- это стекание тока на землю, а вот единица -- это отсутствие тока, поэтому и без подтягивающих резисторов может работать -- но это зависит, в частности, от требуемой частоты переключения (паразитные ёмкости никто не отменял; в ЕС-1033 для быстрого переключения её магистралей даже специальные схемы соорудили).

Конденсаторы, опять-таки, полезны и даже, бывает, необходимы на высоких частотах и при "тощем" подводе питания, сопряжённом с большими бросками при переключении. Скажем, у процов ЕС ЭВМ на микросхемах ЭСЛ использовались многослойные платы, где и земля, и питание -- целые полигоны, и конденсаторов там было мало. А вот у СМ ЭВМ на микросхемах ТТЛ, где всё делалось на двухсторонних платах с питанием, разведённым обычными дорожками, конденсаторов было намного больше.

Мне 200+ микросхем 155 и иже с ней серий удалось с достаточно грубыми (по современным меркам) нормами развести в 4 сигнальных слоях, плюс два слоя чисто под землю и питание. У наших ЕСок было больше слоёв, а вот СМки (и две первые модели ЕСок -- 1020 и 1030) делали на двухсторонних платах, и там микросхемы стояли очччень неплотно. Скажем, на ТЭЗе типа 1 (из 1020 и 1030) вмещалось до 24 микросхем (14-ногие, других тогда ещё не выпускали), а на точно таком же по размерам ТЭЗе от ЕС-1066 -- до 62 16-ногих. Надо полагать, у буржуев было плюс-минус то же самое на аналогичном технологическом уровне.

Ну, ДВК-1 и БК-0010 на одном и том же микропроцессоре слеплены, если правильно помню, -- на К1801ВМ1. ДВК-2 уже на ВМ2.

А учитывая, что само название Bethesda -- библейское... (Вифезда в церковнославянском переводе)

Если брать современные САПР, то они западные и на советское/российское оформление не рассчитаны; соответственно, надо править либо ручками, либо неким скриптом -- в общем, вполне возможно, но определённую степень геморроя составляет. Ну а если брать советскую документацию, она очень часто рисовалась вообще от руки, и перерисовывать десятки листов ради нумерации...

Ну, в 15-16 лет я справлялся с поиском неисправностей сначала в процах СМ ЭВМ, а затем и ЕС ЭВМ -- в первых несколько сотен, во вторых -- несколько тысяч микросхем... Так что вполне верю, что школьник сможет осилить примитивный микропроцессор

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

Ну, да, про 16-разрядные операции я как-то не подумал. 8-разрядные -- два такта, вполне параллелятся с доступами к памяти (в теории, во всяком случае, как там на практике -- без понятия, ибо на Z80 не писал; даже сидя на Роботроне-1715, применял его для написания программ для 8080, ибо в контроллерах использовались они).

В Агатах и, надо полагать, Эпле-2 6502 работал на 1 МГц. Но у меня, по ненадёжным воспоминаниям 35-летней давности, впечатления, что, скажем, умножение-деление он выполнял уже быстрей, чем 8080 на 2,5 МГц -- но главу на отсечение не дам :)

Вообще, можно сравнивать скорость конкретных моделей, а можно -- "микроархитектурную", т.е. насколько эффективно команды реализованы и сколько времени жрут в тактах: частота ж от техпроцесса и много чего ещё зависит, а такты -- только от "логического" устройства.

А вот стек в 256 байт -- маловато, конечно, тут без вопросов :)

От применения зависит. Если настоящей обработки прерываний нет (в каком-нибудь бытовом компе их вообще может не быть, в принципе; на Агате, который кривой клон Элпа-2 на 6502, прерывания только от таймера, например). Ну а использовать много где можно, если знать и уметь

Надо писать целые программы, а не отдельные команды демонстрировать, а я этим занимался 35 лет назад :) Если интересно, можете попробовать поискать какие-нибудь математические подпрограммы в тырнетах -- вдруг выложены, можно хотя б на них посмотреть. Помню, что многие мелочи, что тогда писал, на 6502 у меня выходили короче, чем на 8080, да ещё и работали быстрее нередко, хотя сам проц на 1 МГц, а 8080 (ну, точней, КР580ВМ80А, но не суть) -- на 2,5 МГц. Но за давностью лет без подробностей, сами понимаете :)

Конкретно с Вашим примером -- конечно, 8080 короче, ведь у 6502 все операции выполняются в единственном регистре-аккумуляторе, два других регистра (X и Y) -- только для адресации. Поэтому любые вычисления -- с памятью, а там уже нужны адреса. Но, как Вы понимаете, сложение двух пар регистров -- это не программа, это крошечный кусочек программы, а в реальных программах, в конечном итоге, данные будут лежать в памяти.

Вот пишу и думаю: а может, мне себе нью-Агат собрать?.. :)))

У FIQ, да; сколько регистров -- не помню. Но особого толку от этого нет; как по мне, все эти многочисленные режимы ARMа -- просчёт архитекторов, и реально нужны только два: система и пользователь.

Information

Rating
1,836-th
Location
Солнечногорск, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead