+387.69
Рейтинг
1073.57
Сила
Где я могу об этом прочесть?
bitsavers.org/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf
Страница 7 глава Magnetic Core Storage:
A group of 36 constitutes one register in storage. Magnetic core storage units are available in capacities either 4096 or 32768 core storage registers.

При этом надо заметить, что в этой системе была еще память на магнитном барабане (magnetic drum storage) с заметно меньшей скоростью, может быть поэтому так выделено (потому что знаю несколько документаций тех лет других машин где термин регистра используется только в современном смысле), но в любом случае «программа исполняемая из регистров» в современном понимании — чушь, а исполнялась там программа из core storage. Имхо в те времена смысл был несколько размыт, а в случае с F8 такая память тоже была более быстродействующая несмотря на индексный многокомандный доступ чем большая внешняя.
  • avatar aa-dav
  • 1
Обожаю всё-таки романтику тех ранних лет.
Давно уже натыкался на статью от 20 сентября 1975 года про тестирование новенького и только что спущенного со стапелей микропроцессора 6502 (англ.): www.swtpc.com/mholley/Microprocessors/EDN_Sep_20_1975_6502.pdf

Текст под фото: «Рис. 2 — Изначальный макет (нашего) журнала для „оживления“ микропроцессора MOS Technology 6502 показывает насколько просты машины второго с половиной поколения в плане разводки проводов для пользователя. Эта макетная плата была разложена (в течении недели) чтобы приблизиться к топологии, которую журнал использует для общих замеров микропроцессоров. И хотя мы обнаружили немало шума (главным образом вместе с синхроимпульсами) на всех наших довольно длинных и разбросанных проводах, но 6502 отработал без ошибок.»
Так вот — эта разводка это они буквально тестировали как работает процессор подключив к нему просто щупы и анализируя активность на шине данных, т.к. даже толком RAM к нему подключить не могли. 10 байт программы в ППЗУ залили и смотрели как она ножками «шевелит». :)
Fairchild F8 там, кстати, тоже упомянут как «сильный соперник».
Так вот в начале статьи с восхищением рассказывается, что с появлением MOS 6502 на рынке становится возможным всего за 50 долларов (~240 долларов в сегодняшних ценах) становится возможным создать полностью рабочую мю-систему с 200 байтами ROM, 100 байтами RAM и даже, возможно (!) четырьмя портами ввода-вывода!
  • avatar aa-dav
  • 1
Но посмотрите на этой и с другой стороны — разве доступ к регистрам в точности как будто бы через порты ввода-вывода разве соответствует понятию регистра в современном смысле? По моему с памятью как раз проблем в этом смысле меньше, ведь доступ к VRAM ну у той же NES сделан как раз вот наподобие же — через порты ввода-вывода с выставлением адреса и даже тоже возможностью автоинкремента. Конечно тут такой древний мамонт, что напрямую на современные практики плохо натягивается, но всё-таки, имхо, как раз с RAM у такой организации доступа больше общего чем с регистрами. Ну по крайней мере, опять таки, в современном понимании. Так что я бы всё-таки сказал что в данном приборе не то чтобы нет RAM, но её прям мало и она прям «нетрадиционная». :) Но не вижу смысла до хрипоты об этом спорить.
Видео, кстати, с час назад досмотрел. Насчёт этих вот непоняток с адресациями я испытывал похоже такие же ощущения как и вы когда читал доки по Intel 4004 — прям реально вроде вот оно всё написано, но тоже доступ через пень-колоду, и даже 3 или 4 разных видов банков с разной адресацией и вырвиглазным страничным доступом который точно так же «вроде уже показалось что начал понимать», но снова натыкаешься на какую то хрень которую не можешь приладить к только что прочитанному и якобы «осмысленному». :) Дааа.
  • avatar aa-dav
  • 1
Отличная статья! Хотя я бы лично не согласился с тем, что регистры адресуемые через ISAR нельзя называть ОЗУ. Scratchpad memory в принципе популярна в микроконтроллерах и сейчас. И нужно еще помнить, что 50-е и 60-е термином «регистры» в принципе могли называть ячейки RAM, так, например называются ячейки памяти на ферритовых сердечниках в документации IBM-704 и поэтому вероятно в те годы ни у кого в принципе не вызывало претензий к терминологии даже если в документации к F8 что-то вот эдакое называется регистрами. Это уже потом понятия как то сильно разошлись и стали чуть ли не противопоставляться.
  • avatar aa-dav
  • 0
P.P.S.
Вопрос именно в том как получается всё плавно но за 2 инта и без разрывов.
  • avatar aa-dav
  • 0
Потому что за 1 int (1/50sec, 50fps) не успевает.
Т.е. он где то бэкбуферит чтобы потом за два инта проскочить и вылезти как по его документации писано «за два инта на 25 фпс»?
  • avatar aa-dav
  • 0
в данном случае я и не говорил про программиста.
  • avatar aa-dav
  • 0
Ну и относительно приема — если скроллить половину экрана в одном кадре, а ещё половину в другом — у нас получится сечение луча — стык между экранами будет хорошо виден.
Из-за чего у меня возник вопрос — в readme.txt Зинапса прямо написано что у него фпс в 25 кадров. Т.е. у него каким то образом кадр строится за 2 хода луча. Поэтому вопрос — как и зачем. Т.к. по геймплею чётко видно, что нижние и верхние препятствия на скроллящейся части экрана никогда не пересекаются лишь приближаясь ровно к центру, то и никакой стык между экранами такому подходу не страшен — в этом месте просто нет заднего фона.
Поэтому у меня и возник вопрос.
  • avatar aa-dav
  • 1
Интересно, из любопытства запустил Zynaps и едйствительно поразился очень качественному, более чем на 2/3 экрана и при этом плавному скроллу. Пока разбирался с клавишами набрёл на оф. инструкцию и там увидел надпись 25fps. Интересно — сразу же прошила догадка, что на четных кадрах он скроллит верхнюю половину изображения, а на нечётных — нижнюю для гладкости. Наверняка тут кто-то знает — так ли оно и есть ли такой приём в принципе?
  • avatar aa-dav
  • 0
У меня есть краткий обзор на «ветку» процессоров Motorola/MOS. Мне, если честно, их архитектура аккумулятор-память в принципе не нравится. Это такое что-то из 50/60-х и вот не моё. От MOS 6502 вообще плакать хочется. 6809 несомненно намного круче и богаче на сложные адресации, откуда и опкоды уже двухбайтные начинают вылазить ну и простым не назовёшь. Но много лучше конечно 6502.
  • avatar aa-dav
  • 0
Имхо такой проц гораздо удобнее и прямолинейнее в программировании чем тот же Z80 при том оставаясь всё-таки на уровне 8-биток своей скупостью команд и отсутствием сложных адресаций. Не забываем как звучит заголовок поста — это не попытка создать идеальный процессор вообще, но именно 8-битный по своим суммарным характеристикам и ощущениям. Взять 16-битный i8086 — это уже совсем другой зверь с огромным количеством удобных для ЯВУ адресаций и схем. Вот для меня это уже не то.
  • avatar aa-dav
  • 0
«Так вот я и спрашиваю поэтому — «комп мечты» КОГО ты хочешь изобрести?»

Всё это было написано — для всех и всях. Для программиста этот проц удобен тем что в нём довольно широкие команды, не надо ворочаться с аккумулятором, можно напрямую работать с ячейками памяти не загрязняя регистры, команды сразу совмещают и вычисление в АЛУ и пересылку данных откуда и куда угодно. Для аппаратчика — простая система команд когда есть одна команда в глобальном смысле — пересылка данных через АЛУ с лёгкими вариациями не влияющими на общую схему работы.
  • avatar aa-dav
  • 0
вы что не понимаете, что один заранее готовый бит на блюдечке это гораздо гораздо проще, чем микропрограммы с декодером по таблицам и так далее? что за бред?
  • avatar aa-dav
  • 0
да просто для простоты. нет тут никаких микропрограмм — вся логика прямолинейна и однообразна.
  • avatar aa-dav
  • 0
Бит TI это прямой флаг для декордера инструкции нужно подгатавливать для АЛУ аргумент Y или нет. Всего инструкций 32, половина из них с зажжённым битом TI — половина нет. Но действительно бит TI уходит в АЛУ вместе с INSTR выступая как полный 5-битовый код инструкцуии, т.к. двухоперандные и однооперандные инструкции с одинаковым полем INSTR могут делать совершенно разные вещи.
  • avatar aa-dav
  • 0
P.S.
Появился большой искус еще 1 бит поля INSTR откусить под «режим адресации immediate», когда поле SRC есть immediate-данное от 0 до 7, а TI — его знак. Тогда не нужны будут отдельные inc/dec 2/3/4/5/6/7, но надо подумать.
  • avatar aa-dav
  • 0
Так их и есть 32, бит TI просто для простоты определяет какие из них однооперандные, а какие — двухоперандные. Они не обязаны быть одинаковыми, это просто удобство для декодера.
  • avatar aa-dav
  • 0
а я пояснил, что тратить целый бит опкода на то не нужно
во всех случаях «существенного отличия» экономнее использовать другой instr
Эм… Так и есть. Просто по одному биту кода инструкции можно тут же понять нужен Y на входе или нет.
А в чём проблема то?
  • avatar aa-dav
  • 0
вроде как [DST] читать не нужно только для load
Я только что выше подробнее пояснил.
  • avatar aa-dav
  • 0
P.S.
Вообще однооперандные инструкции это такие в которых X пропускаясь через АЛУ перед записью в Y никак не зависит от Y.
Т.е. (используется синтаксис операторов похожий на синтаксис Си-подобных языков):
R0 = R1; move
R0 =+1 R1; inc1
R0 =<< R2; сдвиг влево на 1 бит
R0 =+2 R3; inc2
R0 ~= R4; побитовая инверсия
и так далее. т.е. над SRC производится операция и записывается в DST

Двухоперандные инструкции берут и SRC и DST и пропустив их оба через АЛУ записывают результат в DST:

R0 += R1; сумма R0 и R1 записывается в R0
R0 <<= R2; R0 сдвигается влево на R2 бит (существенное отличие с однооперандным аналогом!)
R0 cmp R3; R0 и R3 сравниваются — неизменность R0 достигается за счёт того, что АЛУ именно его (Y) выдаёт на выходе
и так далее.