
Комментарии 8
Фото из начала статьи весит 604 КБ, примерно в 4,7 раза больше, чем весь объём памяти этой машины 1984 года.
Как мне это развидеть?
то, что здесь описано как "Тайминги CPU", или не совсем верно, или совсем неточно: процессор не тратил треть своего времени на обновление экрана, он этим обновлением вообще не занимался, для того и существовал фрейм графической памяти, чтобы графическая подсистема брала данные оттуда. Видеопотоков в то время еще не существовало, картинка была с точки зрения графической подсистемы достаточно статичной, как минимум покадровое обновление не ожидалось.
На производительность графической подсистемы в первую очередь влияла скорость доступа к микросхемам DRAM: для монохромного режима требовалась частота серизлизации видеопотока порядка 6MHz, доступные DRAM в основном эту частоту не вытягивали, или на пределе. Но эта проблема решалась достаточно просто - сериализацию делали сдвиговым регистром с параллельной записью, сразу 8 бит, соответственно 8x раз падала необходимая частота выборки из DRAM.
На общую производительность тогдашних машинок в первую очередь влияла организация взаимного доступа CPU и графической подсистемы к графической памяти, и вот тут были возможны варианты: с одной стороны, разработчикам приходилось идти на определённые компромисы между производительностью и стоимостью; с другой, не все факторы удавалось учесть и не все архитектурные решения оказывались удачными, у некоторых производительность сильно проседала в сравнении с задуманной. Но, надо думать, в Apple в то время разработкой занимались достаточно опытные люди, чтобы уже учитывать все эти факторы, да и не первый уже продукт они разрабатывали.
так и есть, и я об точно об этом: для графики отводился участок памяти на полный кадр (позже его стали называть framebuffer), и графическая подсистема брала оттуда данные для каждого пикселя, а CPU туда обращался только по мере надобности. Просто из статьи можно было было понять что именно CPU занимался отрисовкой и тратил на это треть времени, что в корне не верно.
Вопервых, производительность самой графической подсистемы от CPU никак не зависила, хотя простые реализации работали синхронно, использовали общий clock и не могли легко перестраиваться на режимы с различным разрешением или частотой кадра.
Асинхронные системы уже имели свой clock, но требовали более хитрой блокировки доступа CPU в определённые моменты, чтобы не создавать артефакты кадра. От того, на сколько удачно эта синхронизация решалась, и зависела производительность CPU на конкретных операциях работы с графической памятью, хотя и не влияла на него в остальное время.
Более простые синхронные системы могли использовать свободные такты процессора для обновления видеопамяти, если они там были, от архитектуры зависило, у 8080 например они были всегда, у Z80 вроде бы не обязательно, (про 6502 к сожалению не знаю). Поэтому и графика там и там по разному реализовывалась: более примитивные реализации у всяких домостроевских архитектур реально могли подтормаживать CPU на каждый третий такт без всякой пользы, более умные уже умели этого не делать. Но очень сомнительно что Apple стал бы применять такой домострой для нового продукта.
Статическая картинка рисовалась сама. CPU ничего для этого не делал. Речь тут идет о том, что всю отрисовку - шрифты, окна, итп - делал проц. В других компах того времени, чтобы это ускорить, бывало специализированное железо - спрайты, аппаратный скроллинг, блочные/текстовые режимы. В маке все это не стали делать, в пользу простоты и понятности - комп не про игры, а для интерфейсов плюс-минус хватало.
По поводу таймингов тут возможно имелось ввиду прерывания для опроса перифирии как на ZX Spectrum. И грамотное управление прерыванием действительно давало плавную картинку. Но это предположение.
Почему у первого Macintosh разрешение экрана было 512×342, а не 512×384