nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 14 Nov 2019 16:05



Reply to topic  [ 9 posts ] 
«Специалист» и КНГМД 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
В одном из топиков форума прозвучало следующее утверждение:
Quote:
Даже если в 1989 кто-то имел CP/M на Специалисте, это никуда не ушло, не стало известным и не распространилось. А если бы это было, то хотя бы идея, которая позволила преодолеть нехватку скорости Специалиста стала бы известна.

Между тем идея, которая позволила преодолеть нехватку скорости не только "Специалиста", но и всех
других ПК, которым критически не хватало скорости для общения с КНГМД, известна очень давно
еще до создания всех этих "РК-86", "Микрош", "Специалистов" и иже с ними.

В то далёкое время, когда не было Интернета (хотя было ФИДО), люди, интересующиеся электроникой
крупицы полезной информации собирали из разных источников: срисовывали у друзей, копировали
из журналов, покупали распечатки на радиолюбительских барахолках.

Поэтому о проблеме "преодолеть нехватку скорости Специалиста" я и не знал, поскольку для меня её
просто не было, так как мне было известно, что решается это программно-аппаратным путём.
Естественно, что авторы оригинального решения мне не были известны в то время, но судя по доступным
публикациям в Интернет это мог быть кто-то из авторов еще "Микро-80":
Сергей Попов wrote:
Контроллер одинарной плотности выдает/принимает 1 байт за 32 мкс. А на процессоре с тактовой 1,77 МГц мне не хватало для приема и записи в буфер с индексацией указателя (ПДП-то не было!) буквально двух-трех микросекунд. Удалось найти нестандартное решение: по команде IN PORT процессор переходил в режим ожидания, а сигнал готовности байта формируемый I8271, сбрасывал триггер и осталось только считать байт. А так надо –

М: IN PORT
ANI MASK
JNZ М


Убрав 2 команды из цикла уложился в 32 мкс... С "-1" дорожкой удалось справиться - при появлении сигнала "Траск0" я формировал импульс на "Step+1" и получал 0 дорожку. Вместе с CP/M появилась возможность нормальной разработки, куча компиляторов, всяких экзотических в то время пакетов.

То есть программно-аппаратное решение позволяет убрать опрос готовности в цикле.
IN PORT - тормозит триггером процессор на этой инструкции по входу RDY.
сигнал готовности байта, формируемый контроллером НГМД, "отпускает" процессор из цикла ожидания,
и следующей инструкцией процессор сразу считывает байт из КНГМД.
Решение очень красивое и было известно многим, кто был увлечен электроникой в те годы.

Я думаю, это решение было известно и Леониду Афанасьеву из Магнитогорска, когда он создавал схему
своего варианта контроллера НГМД для "Специалиста-МХ".
Единственное, что изменил Афанасьев, он приостанавливал процессор по входу HOLD, а не по входу RDY.
Где-то на страницах форума было обсуждение преимуществ и недостатков этих двух вариантов, если
это не снёс, уходя, один наш бывший коллега.
Я могу ошибаться, но торможение по входу HOLD имеет преимущество в том, что процессор ждёт,
удерживая шины в высокоимпедансном состоянии.

_________________
iLavr


10 Nov 2019 09:11
Profile
Doomed

Joined: 06 Oct 2006 04:17
Posts: 589
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Я общался с Леонидом Афанасьевым и он хвастался, что его идея с HOLD принесла хорошие результаты. У меня контроллер дисковода на Специалисте МХ2 так и не запустился, хотя один из моих знакомых с параллельного форума добился положительных результатов. Далее у нас не совпало свободное время/желание и усовершенствование ПО в части лучшего чтения дискет не продвинулось. На сегодняшний момент я полностью открестился от дисковода и переключился на SD карту.

_________________
:arrow: Сайт о ПК "Специалист" и его клонах


10 Nov 2019 10:00
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
На сегодняшний момент я полностью открестился от дисковода и переключился на SD карту.
Это ретроспективный рассказ об интересном программно-аппаратном решении,
которое, как оказалось к моему глубокому удивлению, не всем широко известно.

Что касается наших железных монстриков из прошлого, то к моему некоторому огорчению, мне еще
Шевцов, который очень помог, сказал, что ему не совсем понятен интерес к этим железкам, отжившим своё.
Выяснилось позже, что и наш "кумир" А.Ф.Волков относится к этому весьма прохладно... :osad:

_________________
iLavr


10 Nov 2019 10:32
Profile
Maniac
User avatar

Joined: 19 Feb 2017 04:46
Posts: 308
Location: С-Петербург
Reply with quote
Сергей Попов wrote:
Контроллер одинарной плотности выдает/принимает 1 байт за 32 мкс. А на процессоре с тактовой 1,77 МГц мне не хватало для приема и записи в буфер с индексацией указателя (ПДП-то не было!) буквально двух-трех микросекунд
Вижу некоторую нестыковку. Он это делал на Микро-80, а там клок КР580 2 МГЦ (потому и ПДП не было). А клока 1.77 МГЦ и с хитростями не хватит.

В этих цифрах я вижу странности, т.к на одинарную плотность такта CPU в 2 МГЦ должно хватать без хитростей с WAIT-ом с чисто программным обменом. Ведь в Специалисте с тем же тактом в 2 МГЦ с подобными аппаратными трюками достигали двойную плотность.


Last edited by barsik on 10 Nov 2019 17:03, edited 6 times in total.



10 Nov 2019 11:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
barsik wrote:
Сергей Попов wrote:
Контроллер одинарной плотности выдает/принимает 1 байт за 32 мкс. А на процессоре с тактовой 1,77 МГц мне не хватало для приема и записи в буфер с индексацией указателя (ПДП-то не было!) буквально двух-трех микросекунд
Вижу некоторую нестыковку. Он это делал на Микро-80, а там клок КР580 2 МГЦ (потому и ПДП не было). А клока 1.77 МГЦ и с хитростями не хватит.

Я дал ссылку на оригинальную статью Попова: http://zxbyte.ru/history.htm
И цитирую его дословно, причём Попов приводит конкретные временные интервалы, их можно при желании проверить.
Фраза "А клока 1.77 МГЦ и с хитростями не хватит." опять же никаких конкретных оценок не содержит,
поэтому может рассматриваться как ничем не подтверждённое личное ошибочное мнение.

И это никак не опровергает сути, что проблема "преодолеть нехватку скорости" в значительной мере
надумана теми, кто с подобным весьма древним программно-аппаратным решением не был знаком.

_________________
iLavr


10 Nov 2019 11:20
Profile
Maniac
User avatar

Joined: 19 Feb 2017 04:46
Posts: 308
Location: С-Петербург
Reply with quote
Lavr wrote:
Фраза "А клока 1.77 МГЦ и с хитростями не хватит." опять же никаких конкретных оценок не содержит, поэтому может рассматриваться как ничем не подтверждённое личное ошибочное мнение.
Понятно, что это оценочное суждение исходящее из логики, - если 2 МГЦ хватает лишь на пределе, то 1.77 не хватит. Ведь ещё колебания скорости шпинделя +/- 5-10% надо учесть. Кстати, я уже давно предлагал самый простой вариант, - не ускорять компьютер, а тормозить дисковод. Настраиваем скорость колеса ниже и кварц в КНГМД меняем в той же пропорции, скорость потока данных падает и процессор успевает.


10 Nov 2019 11:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
barsik wrote:
Lavr wrote:
Фраза "А клока 1.77 МГЦ и с хитростями не хватит." опять же никаких конкретных оценок не содержит, поэтому может рассматриваться как ничем не подтверждённое личное ошибочное мнение.
Понятно, что это оценочное суждение исходящее из логики, - если 2 МГЦ хватает лишь на пределе, то 1.77 не хватит.
Я не вижу здесь ни логики не расчета. И частота в этот момент не играет особой роли.
Процессор остановлен в момент чтения, в момент, когда его "отпустили", ему остаётся лишь взять то,
что извне выставили ему на шину.

barsik wrote:
...а про идею С.Попова все узнали всего несколько лет назад. Так что ничего никому не было известно. Но украинцы из КООП Колед и makbar в 1992 как-то выкрутились.

Последний раз редактировалось barsik 10 ноя 2019 13:36, всего редактировалось 4 раз(а).
А вот про "никому", пожалуй, дописывать не следует, честнее было бы дописать про себя лично.
На Попова я сослался, чтобы было понятно, что идея известна до публикации РК-86 и Специалиста
по меньшей мере, когда прочитал, сам был удивлён - а Попов это знал? :o Но потом понял, что всё - наоборот,
это благодаря Попову и таким же людям, как он, это стало известно мне и другим людям из поколения, что моложе их.

_________________
iLavr


10 Nov 2019 11:42
Profile
Maniac
User avatar

Joined: 19 Feb 2017 04:46
Posts: 308
Location: С-Петербург
Reply with quote
Post 
Lavr wrote:
Попов приводит конкретные временные интервалы, их можно при желании проверить
Вот я и хочу сказать, что цифры не стыкуются. Конечно, я за десятки лет многое позабыл и могу что-то упускать.
Сергей Попов wrote:
Контроллер одинарной плотности выдает/принимает 1 байт за 32 мкс. А на процессоре с тактовой 1,77 МГц мне не хватало для приема и записи в буфер с индексацией указателя (ПДП-то не было!) буквально двух-трех микросекунд
Тут надо подумать, посчитать и сравнить. Тут явная нестыковка с цифрами.

Потому что одинарную плотность, т.е FM с тем же кварцем 8 МГЦ, Е.Седов получил на РК86, даже с работающим ПДП и процессором на клоке 1.77 МГЦ без особых проблем (там даже остался ещё некоторый запас, потому что мне удавалось форматировать трек не только на 5 секторов, но и на 6 секторов по 512 байт, немного подняв кварц КНГМД и сократив межсекторный GAP, выигрывая этим на каждом секторе несколько десятков байтов). А ПДП в РК-КНГМД работает в момент чтения сектора, т.к пауза между запросами ПДП намного короче, чем время чтения одного сектора.

Считайте сами, колесо крутится 300 об/мин, т.е 5 оборотов в секунду. Трек целиком проворачивается за 200 МСЕК. Значит на каждый из 5 секторов трека приходится 200:5= 40 МСЕК. ПДП пересылает 80 байтов за время в 3.5 периода строчной развёртки, т.е 3.5*0.064=0.224 МСЕК (затем в запросах ПДП перерыв, в лучшем случае на 6.5 строчных периодов). За 40 МСЕК, пока идёт поток данных одного сектора проходят многие сотни циклов ПДП.

ПДП делает пересылку пачками по 8 байтов, на что уходит 32 маш.такта (плюс ещё несколько тактов на вхождение и выход из режима HOLD), что при клоке 1.77 длится ~18 МКСЕК. Т.е у РК86 время остающееся на считывание байта резко падает. В худшем случае из 32 МКСЕК ПДП забирает все 18 МКСЕК. Это равноценно тому, что средняя скорость CPU 1.77 на время считывания байта падает более, чем вдвое. Т.е реальная скорость CPU, не равна пиковой скорости в 1.77 МГЦ, и даже не равна средней скорости в ~1.3 МГЦ, а еще ниже.

И этой скорости хватает на одинарную плотность, что согласуется и с работой ВГ93 в форматах DD/SD. Там для формата DD - минимальная скорость CPU, как упоминал выше, это 2.4 МГЦ, а для SD (single Density), хватает и 1.2 МГЦ. Но там просто обычное (без аппаратных извратов) считывание готовности в регистре статуса, ещё и потеря на маскирование для выделения нужных битов. В РК есть и программные хитрости, перед чтением/записью сектора ВГ75 перепрограммируется (в него кидается байт 25H, что увеличивает паузу между запросами ПДП). Благодаря этому, даже сильно тормозясь ПДП, РК успевает обслужить очередной байт из КНГМД.

С.Попов применял i8271, а не WD1793/MB8876A (это иностранные прототипы ВГ93), про него я ничего не знаю, но думаю, что требования к скорости CPU там д.быть примерно те же. А он пишет именно про одинарную плотность и что речь об этом, указанный объём диска в 160 кб это чётко подтверждает. Для такой скорости потока данных даже не нужна БИС контроллера. В дисководе Apple-II форматная ёмкость 140 кб (это потому, что там программная упаковка битов, 6 битов в байте), в комодоровских КНГМД 170 кб читаются 6502 с клоком 1 МГЦ, что эквивалентно КР580 на клоке 2 МГЦ.

Это я всё к тому, что для одинарной плотности проблемы нехватки скорости при клоке в 2 МГЦ не должны быть столь остры. Сами подумайте, Л.Афанасьев и makbar при том же клоке в 2 МГЦ сумели читать/писать не одинарную, а даже двойную плотность. А для одинарной плотности скоростные проблемы в 2 раза меньше.

Правда и РК-КНГМД, и makbar используют чуть более эффективные способы проверки готовности, чем подвеска CPU в WAIT. Например, в РК-КНГМД для оценки флага используется команда INC (HL), когда HL указывает на порт, где готовность в 7-м бите, у makbar-а, если мнип - XOR (HL) (не помню точно, искать исходник долго). Почему-то Л.Афанасьев считал, что подвеска CPU в HOLD выгоднее, чем его подвеска в WAIT. Может быть С.Попов забыл и у него был такт КР580 всего 1 МГЦ. Но нет полной подпрограммы С.Попова, как проверить? Похоже он потерял скорость на командах IN/OUT, команда LD A,(HL) намного быстрее. Потому, например, если в ОРИОН КНГМД подключить не в область памяти, а в область портов IN/OUT, то для работы КНГМД требуется реальный такт CPU не 2.4 МГЦ, а 2.8 МГЦ.
Lavr wrote:
А вот про "никому", пожалуй, дописывать не следует, честнее было бы дописать про себя лично
Ну хорошо, именно Я не знал (а также многие десятки компетентных инженеров разрабатывающих микроконтроллеры с разных городов страны, с которыми я имел дело на работе, это тоже не знали и десятки местных радиолюбителей с которыми я общался, это тоже не знали). Вы хотите сказать, что вы знали? Откуда же?
Lavr wrote:
благодаря Попову и таким же людям, как он, это стало известно мне и другим людям
Покажите хоть одного, кому это стало известно (не в 2016-м, а в 80-тые годы) и хоть, чем-то помогло. На самом деле, когда в 1989-92 годах любители озадачились дисководом, С.Попов давно уже отошёл от Микро-80, а к РК86, и тем более к Специалисту, дисковод не подключал и свои идеи не опубликовал. Так что вы снова все эти намёки на нерадивость в поиске информации написали мимо.

Об опытах С.Попова ничего нигде нельзя было прочитать до 2016 года. Как же можно упрекать людей, что они этого не знали, они же не телепаты? С.Попову может БИС контроллера привёз знакомый дипломат, но другим это было недоступно. До конца 80-тых нЕгде было взять ВГ93, даже в Корвет их отпускали по спискам министерств, считая поштучно.

А дописываю посты, точнее доредактирую, потому что я малограмотный и очень быстро печатаю и отчего возникает огромное число ошибок и опечаток. И я вынужден после перечитывать и исправлять их. А если, кто-то сразу делает коммент, то все последующие исправления фиксируются в счётчике исправлений. Правильнее было бы включать счётчик час спустя или на другой день.


10 Nov 2019 16:59
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post Re:
barsik wrote:
Lavr wrote:
А вот про "никому", пожалуй, дописывать не следует, честнее было бы дописать про себя лично
Ну хорошо, именно Я не знал (а также многие десятки компетентных инженеров разрабатывающих микроконтроллеры с разных городов страны, с которыми я имел дело на работе, это тоже не знали и десятки местных радиолюбителей с которыми я общался, это тоже не знали). Вы хотите сказать, что вы знали? Откуда же?

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

_________________
iLavr


11 Nov 2019 17:36
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 9 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.