MOS Technology 6502 (обычно произносится как «шестьдесят пять-ноль-два» или «шесть-пять-но-два») [3] представляет собой 8-битный микропроцессор , разработанный небольшой командой под руководством Чака Педдла для MOS Technology. . Команда дизайнеров ранее работала в Motorola над проектом Motorola 6800 ; 6502, по сути, представляет собой упрощенную, менее дорогую и более быструю версию этой конструкции.
Когда он был представлен в 1975 году, 6502 был самым дешевым микропроцессором на рынке со значительным отрывом. Первоначально он продавался менее чем за одну шестую стоимости конкурирующих разработок более крупных компаний, таких как 6800 или Intel 8080 . Его внедрение вызвало быстрое снижение цен на всем рынке процессоров. Вместе с Zilog Z80 он положил начало серии проектов, которые привели к революции домашних компьютеров начала 1980-х годов.
Популярные игровые консоли и домашние компьютеры 1980-х и начала 1990-х годов, такие как Atari 2600 , семейство 8-битных систем Atari , Apple II , Nintendo Entertainment System , Commodore 64 , Atari Lynx , BBC Micro и другие, используют 6502 или варианты базовый дизайн. Вскоре после появления 6502 компания MOS Technology была полностью куплена Commodore International , которая продолжала продавать микропроцессор и лицензии другим производителям. На заре существования модели 6502 ее производили компании Rockwell и Synertek , а позже лицензия на нее была передана другим компаниям.
В 1981 году Западный центр дизайна начал разработку версии КМОП 65C02 . Это по-прежнему широко используется во встроенных системах , объемы производства которых оцениваются в сотни миллионов. [4]
6502 был разработан многими из тех же инженеров, которые разработали семейство микропроцессоров Motorola 6800 . [5] Компания Motorola начала проект микропроцессора 6800 в 1971 году под руководством Тома Беннета в качестве главного архитектора. Разработка чипа началась в конце 1972 года, первые чипы 6800 были изготовлены в феврале 1974 года, а полное семейство было официально выпущено в ноябре 1974 года. [6] [7] Джон Бьюкенен был разработчиком чипа 6800 [8] [9] и Род Оргилл, который позже разработал 6501, помогал Бьюкенену с анализом схем и разводкой микросхем. [10] Билл Менш присоединился к Motorola в июне 1971 года после окончания Университета Аризоны (в возрасте 26 лет). [11] Его первым заданием было помочь определить периферийные микросхемы для семейства 6800, а позже он стал главным разработчиком адаптера периферийного интерфейса 6820 (PIA). [12] Инженеры Motorola могли проводить аналоговое и цифровое моделирование на мейнфрейме IBM 370-165 . [13] Беннетт нанял Чака Педдла в 1973 году для выполнения работ по архитектурной поддержке продуктов семейства 6800, которые уже ведутся. [14] Он внес свой вклад во многие области, включая разработку 6850 ACIA (последовательный интерфейс). [15]
Целевыми клиентами Motorola были признанные компании-производители электроники, такие как Hewlett-Packard , Tektronix , TRW и Chrysler . [16] В мае 1972 года инженеры Motorola начали посещать избранных клиентов и делиться подробностями предлагаемой ими 8-битной микропроцессорной системы с ПЗУ, ОЗУ, параллельными и последовательными интерфейсами. [17] В начале 1974 года они предоставили технические образцы чипов, чтобы клиенты могли создавать прототипы своих проектов. Стратегия Motorola «всего семейства продуктов» фокусировалась не на цене микропроцессора, а на снижении общей стоимости разработки для клиента. Они предложили программное обеспечение для разработки на компьютере с таймшером, систему отладки EXORcisionr, обучение на месте и поддержку инженеров по эксплуатации. [18] [19] И Intel, и Motorola первоначально объявили цену в 360 долларов за один микропроцессор. [20] [21] Фактическая цена за объемы производства была намного меньше. Motorola предложила комплект для разработки, содержащий 6800 с шестью вспомогательными микросхемами, за 300 долларов. [22]
Педдл, который сопровождал продавцов при визитах к клиентам, обнаружил, что клиентов отпугивала высокая стоимость микропроцессорных чипов. [23] В то же время эти визиты неизменно приводили к тому, что инженеры, которых он представлял, составляли списки необходимых инструкций, которые были намного меньше, чем «все эти причудливые инструкции», которые были включены в 6800. [24] Педдл и другие члены команды начал обрисовывать дизайн улучшенного микропроцессора уменьшенного размера. В то время новое предприятие Motorola по производству полупроводников в Остине, штат Техас, испытывало трудности с производством МОП-чипов, и середина 1974 года стала началом годичной рецессии в полупроводниковой промышленности. Кроме того, многие сотрудники Месы, штат Аризона, были недовольны предстоящим переездом в Остин, штат Техас . [25]
Руководство подразделения полупроводниковой продукции Motorola было перегружено проблемами и не проявило никакого интереса к предложению Педдла по недорогому микропроцессору. В конце концов Педдлу дали официальное письмо, в котором ему предлагалось прекратить работу над системой. [26] В ответ на приказ Педдл сообщил Мотороле, что письмо представляет собой официальное заявление об «отказе от проекта», и поэтому интеллектуальная собственность, которую он разработал к этому моменту, теперь принадлежит ему. [27] В интервью в ноябре 1975 года председатель Motorola Роберт Гэлвин в конечном итоге согласился, что концепция Педдла была хорошей и что подразделение упустило возможность: «Мы выбрали неправильных лидеров в подразделении полупроводниковой продукции». Дивизия была реорганизована и сменилось руководство. Новый вице-президент группы Джон Уэлти заявил: «Организация продаж полупроводников потеряла чувствительность к потребностям клиентов и не может принимать быстрые решения». [28]
Педдл начал искать источник финансирования для этого нового проекта за пределами Motorola. Сначала он обратился к генеральному директору «Мостэк» Эл. Дж. Севину , но тот отказался. Позже Севин признался, что это произошло потому, что он боялся, что Motorola подаст на них в суд. [29]
Когда Педдл посетил Ford Motor Company во время одной из своих торговых поездок, Боб Джонсон, впоследствии возглавивший подразделение автоматизации двигателей Ford, упомянул, что их бывший коллега Джон Пайвинен перешел в General Instrument и начал изучать полупроводниковый дизайн. [30] Затем Пайвинен основал MOS Technology в Вэлли-Фордж, штат Пенсильвания, в 1969 году вместе с двумя другими руководителями General Instrument, Мортом Джаффе и Доном Маклафлином. Allen-Bradley , поставщик электронных компонентов и средств промышленного контроля, приобрел контрольный пакет акций в 1970 году. [31] Компания проектировала и производила индивидуальные микросхемы для клиентов, а также разработала линейку микросхем для калькуляторов. [32]
После того, как усилия Мостека провалились, Педдл обратился к Пайвинену, который «сразу понял это». [33] 19 августа 1974 года Чак Педдл, Билл Менш, Род Оргилл, Гарри Бауком, Рэй Хирт, Терри Холдт и Уил Мэтис покинули Motorola и присоединились к MOS. Майк Джейнс присоединился позже. Из семнадцати разработчиков микросхем и специалистов по макетированию команды 6800 осталось восемь. Целью команды было разработать и произвести недорогой микропроцессор для встраиваемых приложений и охватить как можно более широкую клиентскую базу. Это было бы возможно только в том случае, если бы микропроцессор был дешевым, а команда установила целевую цену на уровне 5 долларов за объем. [34] Позже Менш заявил, что целью была не сама цена процессора, а создание набора микросхем, которые можно было бы продавать по цене 20 долларов , чтобы конкурировать с недавно представленным Intel 4040 , который продавался за 29 долларов в аналогичном полном наборе микросхем. [35]
Чипы производятся путем печати нескольких копий дизайна чипа на поверхности «подложки» — тонкого диска из очень чистого кремния. Чипы меньшего размера можно напечатать в большем количестве на одной и той же пластине, что снижает их относительную цену. Кроме того, пластины всегда содержат некоторое количество крошечных физических дефектов, разбросанных по поверхности. Любой чип, напечатанный в этом месте, выйдет из строя, и его придется выбросить. Меньшие чипы означают, что любая единственная копия с меньшей вероятностью будет напечатана с дефектом. По обеим этим причинам стоимость конечного продукта сильно зависит от размера конструкции микросхемы. [36]
Оригинальные чипы 6800 предназначались для180 мил × 180 мил [а] (4,6 мм × 4,6 мм) , но макет был завершен на212 мил × 212 мил (5,4 мм × 5,4 мм) или площадью 29,0 мм 2 . [37] Для нового дизайна цель по стоимости требовала целевого размера в размере153 мил × 168 мил (3,9 мм × 4,3 мм) или площадь16,6 мм 2 . [38] Для достижения этой цели потребуется несколько новых методов.
Одновременно с разработкой модели 6502 на рынке появилось два значительных усовершенствования, которые обеспечили значительное снижение затрат. Первым был переход на NMOS с истощающей нагрузкой . В 6800 использовался ранний процесс NMOS, который требовал трех напряжений питания, но одной из особенностей чипа был встроенный удвоитель напряжения , который позволял использовать один источник +5 В для внутренних +5, −5 и +12 В, в отличие от других чипы той эпохи, такие как Intel 8080 , для которых требовалось три отдельных контакта питания. [39] Хотя эта функция уменьшила сложность источника питания и расположения выводов, она по-прежнему требовала отдельных шин питания для различных затворов на кристалле, что увеличивало сложность и размер. При переходе на новую конструкцию с истощающей нагрузкой все, что требовалось, — это один источник питания +5 В, что устраняло всю эту сложность. [40]
Еще одним практическим преимуществом было то, что тактовый сигнал для более ранних процессоров должен был быть достаточно сильным, чтобы выдерживать все потери при прохождении через схемы, что почти всегда требовало отдельного внешнего чипа, который мог бы подавать мощный сигнал. Благодаря уменьшению требований к питанию NMOS часы можно было перенести на чип, что упростило общую конструкцию компьютера. Эти изменения значительно снизили сложность и стоимость внедрения полной системы. [40]
Еще одним изменением стало введение маскировки проекции . Раньше чипы наносились на поверхность пластины путем размещения маски на поверхности пластины и последующего освещения ее ярким светом. Маски часто собирали крошечные кусочки грязи или фоторезиста , когда их снимали с чипа, что приводило к появлению дефектов в этих местах при любом последующем маскировании. В сложных конструкциях, таких как процессоры, необходимо было использовать 5 или 6 таких шагов маскировки, и вероятность того, что хотя бы один из этих шагов приведет к появлению дефекта, была очень высока. В большинстве случаев 90% таких конструкций были ошибочными, в результате чего доходность составляла 10%. Цена рабочих образцов должна была покрыть себестоимость 90% выброшенных экземпляров. [41]
В 1973 году компания Perkin-Elmer представила систему Micralign , которая проецировала изображение маски на пластину вместо необходимости прямого контакта. Маски больше не собирали грязь с пластин и прослужили порядка 100 000 использований, а не 10. Это устранило пошаговые сбои и высокий уровень дефектов, который раньше наблюдался в сложных конструкциях. Доходность процессоров сразу подскочила с 10% до 60 или 70%. Это означало, что цена ЦП снизилась примерно на такую же величину, и микропроцессор внезапно стал массовым устройством. [41]
Существующие производственные линии MOS Technology были основаны на более старой технологии PMOS; к моменту прибытия команды они еще не начали работать с NMOS. Пайвинен пообещал подготовить и запустить линейку NMOS вовремя, чтобы начать производство нового процессора. Он выполнил обещание: новая линия была готова к июню 1975 года. [42]
Чак Педдл, Род Оргилл и Уил Мэтис разработали первоначальную архитектуру новых процессоров. Статья в журнале EDN за сентябрь 1975 года дает следующее краткое описание конструкции: [43]
Семейство MOS Technology 650X представляет собой сознательную попытку восьми бывших сотрудников Motorola, которые работали над разработкой системы 6800, создать деталь, которая заменит и превзойдет 6800, но при этом будет продаваться дешевле. Опираясь на опыт работы над проектом 6800, команда MOS Technology под руководством Чака Педдла внесла следующие архитектурные изменения в процессор Motorola:
Основным изменением с точки зрения размера микросхемы стало исключение драйверов с тремя состояниями из выходов адресной шины. Шина с тремя состояниями имеет состояния «1», «0» и «высокое сопротивление». Последнее состояние используется, чтобы разрешить другим устройствам доступ к шине, и обычно используется для многопроцессорной обработки или, что чаще в этих ролях, для прямого доступа к памяти (DMA). Несмотря на свою полезность, эта функция очень дорога с точки зрения встроенной схемы. В 6502 эта функция просто удалена, что соответствует конструкции недорогого контроллера, используемого для решения конкретных задач и взаимодействующего с простыми устройствами. Педдл предположил, что любой, кому действительно нужен этот стиль доступа, может реализовать его с помощью одного 74158 . [44] [б]
Следующим важным отличием было упрощение регистров. Для начала был снят один из двух аккумуляторов . Регистры общего назначения, такие как аккумуляторы, должны быть доступны многим частям декодера команд и, следовательно, требуют значительного количества проводов для перемещения данных в их хранилище и из него. Два аккумулятора облегчают многие задачи кодирования, но существенно усложняют конструкцию самой микросхемы. [43] Дополнительная экономия была достигнута за счет уменьшения регистра стека с 16 до 8 бит, а это означает, что стек мог иметь длину только 256 байт, что было достаточно для его предполагаемой роли в качестве микроконтроллера. [43] [ не удалось проверить ]
16-битный индексный регистр IX был разделен на две части, превратившись в X и Y. Что еще более важно, изменился стиль доступа; в 6800 IX содержал 16-битный адрес, который был смещен 8-битным числом, поставляемым с инструкцией, эти два были добавлены для получения окончательного адреса. В 6502 (и большинстве других современных разработок) 16-битный базовый адрес сохранялся в инструкции, и к нему добавлялись X или Y. [44]
Наконец, набор команд был упрощен, что освободило место в декодере и логике управления. Из исходных 72 инструкций в 6800 было реализовано 56. Среди удаленных были инструкции, которые работали между двумя аккумуляторами 6800, а также несколько инструкций ветвления, вдохновленных PDP-11 . [44]
Высокоуровневый проект чипа пришлось превратить в чертежи транзисторов и межсоединений. В MOS Technology «макет» представлял собой ручной процесс, выполняемый с помощью цветных карандашей и пергаментной бумаги . Макет состоял из тысяч многоугольников на шести разных рисунках; по одному на каждый уровень производственного процесса. Учитывая ограничения по размерам, приходилось постоянно продумывать всю конструкцию чипа. Менш и Пайвинен работали над декодером команд [46] , а Менш, Педдл и Оргилл работали над АЛУ и регистрами. Еще одним достижением, разработанным на вечеринке, стал способ разделить часть внутренней проводки, чтобы уменьшить размер ALU. [47]
Несмотря на все усилия, окончательная конструкция оказалась на 5 милов шире. [48] Первые чипы 6502 имели размеры 168 × 183 мил (4,3 × 4,7 мм) и площадь 19,8 мм 2 . Исходная версия процессора не имела возможности вращения вправо (ROR), поэтому инструкция была исключена из исходной документации. В следующей итерации конструкции чип был уменьшен и добавлена возможность поворота вправо, а ROR был включен в пересмотренную документацию. [49] [с]
MOS представит два микропроцессора, основанных на одной и той же базовой конструкции: 6501 будет подключаться к тому же разъему, что и Motorola 6800, а у 6502 будет изменена распиновка для поддержки встроенного тактового генератора. Оба будут работать с другими микросхемами поддержки, разработанными для 6800. Они не будут запускать программное обеспечение 6800, потому что у них будет другой набор команд, другие регистры и, в основном, разные режимы адресации. [3] Род Оргилл отвечал за дизайн 6501; он ассистировал Джону Бьюкенену в Motorola на 6800. Билл Менш работал на 6502; он был разработчиком адаптера периферийного интерфейса 6820 (PIA) в Motorola. Гарри Бауком, Майк Джейнс и Сидни-Энн Холт помогли с макетом.
Презентация микропроцессора MOS Technology отличалась от традиционного запуска продукта, длившегося несколько месяцев. Первый запуск новой интегральной схемы обычно используется для внутреннего тестирования и передается избранным клиентам в качестве «технических образцов». Эти чипы часто имеют один или два незначительных конструктивных дефекта, которые будут исправлены до начала производства. Целью Чака Педдла было продать первую партию чипов 6501 и 6502 участникам торговой выставки WESCON в Сан-Франциско, начавшейся 16 сентября 1975 года. Педдл был очень эффективным представителем, и микропроцессоры MOS Technology широко освещались в отраслевой прессе. Одним из первых был полностраничный рассказ о микропроцессорах MCS6501 и MCS6502 в номере журнала Electronics от 24 июля 1975 года . [53] Истории также публиковались в EE Times (24 августа 1975 г.), [54] EDN (20 сентября 1975 г.), Electronic News (3 ноября 1975 г.), Byte (ноябрь 1975 г.) [55] и Microcomputer Digest (ноябрь 1975 г. ). ). [56] Реклама 6501 появилась в нескольких публикациях в первую неделю августа 1975 года. 6501 будет продаваться в Wescon по 20 долларов за штуку. [57] В сентябре 1975 года реклама включала микропроцессоры 6501 и 6502. Модель 6502 будет стоить всего 25 долларов (что эквивалентно 136 долларам в 2022 году). [58]
Когда MOS Technology прибыла на Вескон, они обнаружили, что экспонентам не разрешается ничего продавать в выставочном зале. Они арендовали номер «МакАртур» в отеле «Сент-Фрэнсис» и направляли туда клиентов покупать процессоры. В комплексе процессоры хранились в больших банках, что означало, что чипы находятся в производстве и легко доступны. Покупатели не знали, что нижняя половина каждой банки содержит нефункциональные чипы. [59] Чипы стоили 20 и 25 долларов , а пакет документации стоил еще 10 долларов . Пользователям было предложено сделать фотокопии документов — это недорогой способ распространения информации о продуктах для MOS Technology. В предварительных технических характеристиках было указано всего 55 инструкций, не считая инструкции Rotate Right (ROR), которая не поддерживалась этими ранними чипами. В обзорах в Byte и EDN отмечено отсутствие инструкции ROR. Следующая версия схемы устранила эту проблему, и в таблице данных за май 1976 года было указано 56 инструкций. Педдл хотел, чтобы каждый заинтересованный инженер и любитель имел доступ к чипам и документации; другие полупроводниковые компании хотели иметь дело только с «серьезными» клиентами. Например, компания Signetics представляла микропроцессор 2650 , и в ее рекламе читателям предлагалось писать информацию на фирменном бланке их компании. [60]
Представление модели 6501/6502 в печати и на выставке Wescon имело огромный успех. Обратной стороной было то, что широкое освещение в прессе привлекло внимание Motorola. В октябре 1975 года Motorola снизила цену на один микропроцессор 6800 со 175 до 69 долларов . Стоимость комплекта для проектирования системы стоимостью 300 долларов была уменьшена до 150 долларов , и теперь в него входила печатная плата. [61] 3 ноября 1975 года Motorola обратилась в Федеральный суд с требованием запретить MOS Technology производить и продавать микропроцессорную продукцию. Они также подали иск о нарушении патентных прав и незаконном присвоении коммерческой тайны. Motorola заявила, что семь бывших сотрудников присоединились к MOS Technology для создания микропроцессорной продукции этой компании. [62]
Motorola была компанией с оборотом в миллиард долларов, с правдоподобным делом и дорогими юристами. 30 октября 1974 года компания Motorola подала множество патентных заявок на семейство микропроцессоров и получила двадцать пять патентов. Первый был в июне 1976 года, а второй — Биллу Меншу 6 июля 1976 года по поводу компоновки микросхемы 6820 PIA. Эти патенты касались шины 6800 и того, как периферийные чипы взаимодействуют с микропроцессором. [63] Motorola начала производить транзисторы в 1950 году и имела портфель патентов на полупроводники. Аллен-Брэдли решил не бороться с этим делом и продал свою долю в MOS Technology обратно основателям. В иске фигурируют четверо бывших инженеров Motorola: Чак Педдл, Уилл Мэтис, Билл Менш и Род Оргилл. Все они были названы изобретателями в 6800 патентных заявках. В ходе расследования Motorola обнаружила, что один инженер, Майк Джейнс, проигнорировал инструкции Педдла и передал свои 6800 проектных документов в MOS Technology. [64] В марте 1976 года у теперь уже независимой компании MOS Technology закончились деньги, и ей пришлось урегулировать дело. Они согласились отказаться от процессора 6501, заплатить Motorola 200 000 долларов и вернуть документы, которые, по утверждению Motorola, были конфиденциальными. Обе компании согласились перекрестно лицензировать патенты на микропроцессоры. [65] В мае того же года Motorola снизила цену на один микропроцессор 6800 до 35 долларов . К ноябрю Commodore приобрела MOS Technology. [66] [67]
Несмотря на проблемы с законом, перед MOS все еще стояла проблема заставить разработчиков опробовать свой процессор, что побудило Чака Педдла разработать одноплатный компьютер MDT-650 («терминал разработки микрокомпьютеров») . Другая группа внутри компании разработала KIM-1 , который продавался полукомплектным и мог быть превращен в пригодную для использования систему с добавлением компьютерного терминала стороннего производителя и компактного кассетного привода. Хотя KIM-1 хорошо продавался на предполагаемом рынке, компания обнаружила, что KIM-1 также хорошо продается любителям и мастерам. Соответствующая система управления, обучения и развития Rockwell AIM-65 также показала хорошие результаты. Программное обеспечение AIM 65 было основано на программном обеспечении MDT. Еще одним примерно похожим продуктом был Synertek SYM-1 .
Одним из первых «публичных» применений этого дизайна был микрокомпьютер Apple I , представленный в 1976 году. Затем 6502 использовался в Commodore PET и Apple II , [68] оба выпущенные в 1977 году. Позже он использовался в Atari . 8-битные семейные и домашние компьютеры Acorn Atom , BBC Micro , [68] VIC-20 и другие разработки как для домашних компьютеров, так и для бизнеса, такие как Ohio Scientific и Oric . 6510 , прямой преемник 6502 с цифровым портом ввода-вывода и адресной шиной с тремя состояниями , использовался в самом продаваемом [69] [ 70 ] домашнем компьютере Commodore 64 .
Еще одним важным применением семейства 6500 были видеоигры. Первым, кто использовал эту конструкцию процессора, была Atari VCS 1977 года, позже переименованная в Atari 2600 . В VCS использовался вариант 6502 под названием 6507 , у которого было меньше контактов, поэтому он мог адресовать только 8 КБ памяти. Будут проданы миллионы консолей Atari, каждая из которых будет оснащена MOS-процессором. Еще одним значительным применением стали Nintendo Entertainment System и Famicom. 6502, использованная в NES, была второй исходной версией Ricoh , частичной системой на кристалле , в которой отсутствовал двоично-десятичный режим, но были добавлены 22 отображаемых в память регистра и встроенное оборудование для генерации звука, чтения с помощью джойстика и создания спрайтов . список DMA . Этот процессор , получивший название 2A03 в консолях NTSC и 2A07 в консолях PAL (разница заключалась в коэффициенте делителя тактовой частоты и справочной таблице частот дискретизации звука), производился исключительно для Nintendo .
6502 или его варианты использовались во всех дисководах Commodore для всех их 8-битных компьютеров, от линейки PET до Commodore 128D, включая Commodore 64. 8-дюймовые дисководы PET имели два процессора 6502 . Atari использовала тот же 6507, который использовался в Atari VCS для своих дисководов 810 и 1050 , используемых во всей линейке 8-битных компьютеров, от 400/800 до XEGS.
В 1980-х годах популярный журнал по электронике Elektor/Elektuur использовал этот процессор в своей плате для разработки микропроцессора Junior Computer .
Преемник CMOS 6502, WDC 65C02 , также нашел применение в домашних компьютерах и игровых консолях. Apple использовала его в линейке Apple II, начиная с Apple IIc и более поздних вариантов Apple IIe , а также предложила комплект для обновления старых систем IIe новым процессором. [71] Чип Hudson Soft HuC6280 , использованный в TurboGrafx-16, был основан на ядре 65C02. В Atari Lynx использовался специальный чип под названием «Mikey» [72], разработанный Epyx , который включал в себя лицензированную ячейку VLSI VL65NC02. Вариант G65SC12 от GTE Microcircuits (переименованный в California Micro Devices) использовался в BBC Master . Некоторые модели BBC Master также включали дополнительный сопроцессор G65SC102.
6502 — это 8-битный процессор с прямым порядком байтов и 16-битной адресной шиной . Первоначальные версии были изготовлены с использованием техпроцесса 8 мкм [73] с размером кристалла 3,9 мм × 4,3 мм (рекламируемый как 153 мил × 168 мил) и общей площадью 16,6 мм 2 . [38]
Внутренняя логика работает с той же скоростью, что и внешняя тактовая частота, но, несмотря на низкую тактовую частоту (обычно от 1 до2 МГц ), производительность 6502 была конкурентоспособной по сравнению с другими современными процессорами, использующими значительно более высокие тактовые частоты. Частично это связано с простым конечным автоматом, реализованным с помощью комбинационной (безтактовой) логики в большей степени, чем во многих других конструкциях; двухфазные часы (обеспечивающие две синхронизации за цикл) могли, таким образом, напрямую управлять машинным циклом. Для выполнения типичных инструкций на 6502 может потребоваться вдвое меньше циклов, чем на современных конструкциях. Как и большинство простых процессоров той эпохи, динамический чип NMOS 6502 не секвенируется ПЗУ микрокода [ необходимы пояснения ] , а использует PLA (который занимал около 15% площади чипа) для декодирования и упорядочивания инструкций. Как и в большинстве 8-битных микропроцессоров, чип выполняет ограниченное перекрытие операций выборки и выполнения.
Низкая тактовая частота снизила требования к скорости памяти и периферийных устройств, подключенных к ЦП, поскольку для доступа к памяти было доступно только около 50% тактового цикла (из-за асинхронной конструкции эта доля сильно различалась в зависимости от версии чипа). Это было критически важно в то время, когда доступная память имела время доступа в диапазоне 250–450 нс .
Поскольку чип обращался к памяти только в течение определенных частей тактового цикла, а эти циклы обозначались выводом тактового выхода PHI2-low, другие чипы в системе могли обращаться к памяти в те моменты, когда 6502 был отключен от шины. Иногда это называлось «скрытым доступом». Этот метод широко использовался компьютерными системами; они будут использовать память с частотой доступа 2 МГц, а затем запускать ЦП на частоте 1 МГц. Это гарантировало, что процессор и видеооборудование смогут чередовать доступ с общей производительностью, соответствующей производительности устройства памяти. [74] Когда в 1980-х годах стала доступна более быстрая память, новые машины могли работать на более высоких тактовых частотах, например, процессор с частотой 2 МГц в BBC Micro , и по-прежнему использовать методы совместного использования шины.
Как и его предшественник 6800, 6502 имеет очень мало регистров . Регистры 6502 включают в себя один 8-битный регистр аккумулятора (A), два 8-битных индексных регистра (X и Y), 7 бит флага состояния процессора (P; от бита 7 до бита 0 это отрицательный сигнал (N), переполнение ( V), зарезервированный , разрыв (B), десятичный (D), запрет прерывания (I), ноль (Z) и флаг переноса (C), 8-битный указатель стека (S) и 16-битный счетчик программ. (ПК). [75] Это можно сравнить с типичной конструкцией той же эпохи Z80 , которая имела восемь 8-битных регистров общего назначения, которые можно объединить в четыре 16-битных. Z80 также имел полный набор альтернативных регистров, всего шестнадцать регистров общего назначения.
Чтобы компенсировать недостаток регистров, 6502 включает в себя режим адресации с нулевой страницей , при котором в инструкции используется один адресный байт вместо двух, необходимых для адресации всего адреса.64 КБ памяти. Это обеспечивает быстрый доступ к первому256 байт ОЗУ при использовании более коротких инструкций. Чак Педдл сказал в интервью, что конкретным намерением было позволить этим первым256 байт ОЗУ будут использоваться как регистры. [ нужна цитата ]
Адресное пространство стека жестко привязано к странице памяти $01
, т.е. к диапазону адресов $0100
– $01FF
( 256
– 511
). Программный доступ к стеку осуществляется с помощью четырех инструкций режима неявной адресации, функции которых заключаются в перемещении или извлечении (вытягивании) аккумулятора или регистра состояния процессора. Тот же стек также используется для вызовов подпрограмм с помощью инструкций JSR (переход к подпрограмме) и RTS (возврат из подпрограммы), а также для обработки прерываний .
Чип эффективно использует индексные и стековые регистры в нескольких режимах адресации , включая быстрый режим «прямой страницы» или «нулевой страницы», аналогичный тому, который используется в PDP-8 , который обеспечивает доступ к ячейкам памяти с адресами от 0 до 255 с помощью одного 8-битный адрес (сохранение цикла, обычно необходимого для выборки старшего байта адреса) — код для 6502 использует нулевую страницу так же, как код для других процессоров использует регистры. На некоторых микрокомпьютерах на базе процессора 6502 с операционной системой операционная система использует большую часть нулевой страницы, оставляя пользователю лишь несколько мест.
Режимы адресации также включают подразумеваемые (1-байтовые инструкции); абсолютный (3 байта); индексированный абсолютный (3 байта); индексированная нулевая страница (2 байта); относительный (2 байта); аккумулятор (1); косвенный,x и косвенный,y (2); и немедленный (2). Абсолютный режим — это режим общего назначения. В инструкциях ветвления используется 8-битное смещение со знаком относительно инструкции после ветвления; Таким образом, числовой диапазон -128..127 преобразуется в 128 байтов назад и 127 байтов вперед от инструкции, следующей за ветвью (что составляет 126 байтов назад и 129 байтов вперед от начала инструкции ветвления). Режим аккумулятора использует аккумулятор в качестве эффективного адреса и не требует никаких данных операнда . Непосредственный режим использует 8-битный литеральный операнд.
Косвенные режимы полезны для обработки массивов и других циклов. В режиме 5/6 циклов «(косвенный),y» 8-битный регистр Y добавляется к 16-битному базовому адресу, считываемому с нулевой страницы, который расположен в одном байте после кода операции. Таким образом, регистр Y является индексным регистром в том смысле, что он используется для хранения фактического индекса (в отличие от регистра X в 6800, где базовый адрес хранился напрямую и к которому можно было немедленно добавить смещение). Увеличение индексного регистра для побайтового обхода массива занимает всего два дополнительных цикла. В менее часто используемом режиме «(косвенный, x)» эффективный адрес для операции находится по адресу нулевой страницы, образованному добавлением второго байта инструкции к содержимому регистра X. При использовании индексированных режимов нулевая страница фактически действует как набор из 128 дополнительных (хотя и очень медленных) адресных регистров.
Модель 6502 способна выполнять сложение и вычитание в двоичном или десятичном формате . Перевод ЦП в режим BCD с помощью SED
инструкции (установить флаг D) приводит к десятичной арифметике, в результате чего $99 + $01
будет установлен $00 и флаг переноса (C). В двоичном режиме ( CLD
, очистка флага D) та же операция приведет к очистке $9A и флага переноса. За исключением Atari BASIC , режим BCD редко использовался в приложениях для домашних компьютеров.
Смотрите Привет, мир! статья на простом, но характерном примере языка ассемблера 6502 .
Коды операций инструкций 6502 ( коды операций ) имеют длину 8 бит и имеют общий вид AAABBBCC, где AAA и CC определяют код операции, а BBB определяет режим адресации. [76]
Например, рассмотрим ORA
инструкцию, которая выполняет поразрядное ИЛИ над битами аккумулятора с другим значением. Код операции инструкции имеет вид 000bbb01, где bbb может быть 010 для значения немедленного режима (константы), 001 для фиксированного адреса нулевой страницы, 011 для абсолютного адреса и т. д. [76]
Эта закономерность не является абсолютной, и существует ряд исключений. Однако там, где это действительно применимо, это позволяет легко деконструировать значения кода операции обратно в ассемблерную мнемонику для большинства инструкций, обрабатывая крайние случаи с помощью специального кода. [76]
Из 256 возможных кодов операций, доступных с использованием 8-битного шаблона, исходный 6502 использует 151 из них, организованных в 56 инструкций с (возможно) несколькими режимами адресации . В зависимости от инструкции и режима адресации код операции может потребовать ноль, один или два дополнительных байта для операндов. Следовательно, длина машинных инструкций 6502 варьируется от одного до трех байтов. [77] [78] Операнд хранится в обычном для 6502 формате с прямым порядком байтов .
65C816 , 16-битный потомок 6502 , также поддерживает 24-битную адресацию, в результате чего инструкции собираются с трехбайтовыми операндами, также организованными в формате с прямым порядком байтов.
Остальные 105 опкодов не определены. В исходной конструкции инструкции, в которых младшие 4 бита ( полубайта ) были 3, 7, B или F, не использовались, оставляя место для будущего расширения. Аналогично, в столбце $2x была только одна запись: . Оставшиеся 25 пустых мест были розданы. Некоторые из пустых слотов использовались в 65C02 для предоставления как новых инструкций, так и вариаций существующих с новыми режимами адресации. Инструкции $Fx изначально были оставлены свободными, чтобы позволить сторонним поставщикам добавлять свои собственные инструкции, но более поздние версии 65C02 стандартизировали набор инструкций по манипуляции битами , разработанный Rockwell Semiconductor .LDX #constant
Оператор языка ассемблера 6502 состоит из трехсимвольной мнемоники инструкции , за которой следуют любые операнды . Инструкции, которые не принимают отдельный операнд, а нацелены на один регистр в зависимости от режима адресации, объединяют целевой регистр в мнемонике инструкции, поэтому ассемблер использует вместо INX
увеличения INC X
регистр X.
Следующий исходный код языка ассемблера 6502 предназначен для подпрограммы с именем , которая копирует строку символов с нулевым завершением из одного места в другое, преобразуя символы прописных букв в буквы нижнего регистра. Копируемая строка является «источником», а строка, в которой сохраняется преобразованный источник, — «назначением».TOLOWER
Вход немаскируемого прерывания (NMI) процессора чувствителен к фронту , что означает, что прерывание запускается по заднему фронту сигнала, а не по его уровню. Следствием этой функции является то, что схема прерывания по принципу «проводное ИЛИ» не поддерживается. Однако это также предотвращает возникновение вложенных прерываний NMI до тех пор, пока аппаратное обеспечение снова не сделает вход NMI неактивным, часто под контролем обработчика прерываний NMI .
Одновременное установление линий аппаратного прерывания NMI и IRQ (маскируемых) приводит к игнорированию IRQ. Однако, если линия IRQ остается активной после обслуживания NMI, процессор немедленно ответит на IRQ, поскольку IRQ чувствителен к уровню . Таким образом, в конструкции 6502 был установлен своего рода встроенный приоритет прерываний.
Флаг B устанавливается устройством 6502, периодически производящим выборку выходного сигнала детектора фронта NMI и входа IRQ. Сигнал IRQ, имеющий низкий уровень, распознается только в том случае, если IRQ разрешены флагом I. Если таким образом обнаруживается запрос NMI или (маскируемое) IRQ, флаг B устанавливается в ноль и заставляет процессор выполнять следующую инструкцию BRK вместо выполнения следующей инструкции на основе счетчика программ. [79] [80]
Затем команда BRK помещает состояние процессора в стек, при этом бит флага B устанавливается в ноль. В конце своего выполнения инструкция BRK сбрасывает значение флага B на единицу. Это единственный способ изменить флаг B. Если инструкция, отличная от инструкции BRK, помещает флаг B в стек как часть состояния процессора [81], флаг B всегда имеет значение единица.
Переход от высокого к низкому уровню на входном контакте SO установит бит состояния переполнения процессора. Это можно использовать для быстрого реагирования на внешнее оборудование. Например, драйвер высокоскоростного устройства опроса может опрашивать аппаратное обеспечение только один раз всего за три цикла, используя BVC
инструкцию Branch-on-oVerflow-Clear ( ), которая разветвляется до самого себя до тех пор, пока переполнение не будет установлено падающим переходом SO. Commodore 1541 и другие дисководы Commodore используют этот метод, чтобы определить, когда сериализатор готов передать еще один байт дисковых данных. Проектирование аппаратного и программного обеспечения системы должно гарантировать, что во время арифметической обработки не возникнет SO и не будет нарушено выполнение вычислений.
6502 был наиболее производительным вариантом семейства 65xx от MOS Technology .
Модели 6501 и 6502 имеют 40-контактный DIP- корпус; 6503, 6504, 6505 и 6507 представляют собой 28-контактные версии DIP, позволяющие снизить стоимость микросхем и печатных плат. Во всех 28-контактных версиях количество контактов уменьшено за счет исключения некоторых адресных контактов старшего порядка и различных комбинаций функциональных контактов, что делает эти функции недоступными.
Обычно для уменьшения количества контактов с 40 до 28 опускаются 12 контактов: три неподключенных контакта (NC), один из двух контактов Vss, один из тактовых контактов, контакт SYNC, контакт установки переполнения (SO), либо маскируемое прерывание, либо немаскируемое прерывание (NMI), а также четыре наиболее значимые адресные строки (A12–A15). Отсутствие четырех адресных контактов уменьшает внешнюю адресацию до 4 КБ (с 64 КБ у 6502), хотя внутренний регистр ПК и все эффективные вычисления адреса остаются 16-битными .
В 6507 отсутствуют оба контакта прерывания, чтобы включить адресную линию A12, что обеспечивает 8 КБ внешней адресации, но не имеет возможности прерывания. 6507 использовался в популярной игровой консоли Atari 2600 , конструкция которой делит пространство памяти размером 8 КБ пополам, отводя нижнюю половину внутренней оперативной памяти и периферийным устройствам консоли, а верхнюю половину - игровому картриджу, поэтому Atari 2600 картриджи имеют ограничение адреса в 4 КБ (и такое же ограничение емкости, если картридж не содержит схемы переключения банков ).
Один популярный компьютер на базе 6502, Commodore 64 , использовал модифицированный процессор 6502, 6510 . В отличие от 6503–6505 и 6507, 6510 представляет собой 40-контактный чип, который добавляет внутреннее оборудование: 6-битный параллельный порт ввода-вывода, сопоставленный с адресами 0000 и 0001. 6508 — это еще один чип, который, как и 6510, добавляет внутренние аппаратное обеспечение: 256 байт SRAM и 8-битный порт ввода-вывода, аналогичный тем, что есть в 6510. Хотя эти микросхемы не имеют уменьшенного количества контактов по сравнению с 6502, им нужны новые контакты для добавленного параллельного порта ввода-вывода. В этом случае среди удаленных контактов нет адресных линий.
Западный центр дизайна разработал и в настоящее время производит процессор WDC 65C816 S, 16-разрядный процессор со статическим ядром, преемник 65C02 . W65C816S — это новый вариант 65C816, который является ядром компьютера Apple IIGS и основой процессора Ricoh 5A22 , который используется в Super Nintendo Entertainment System . W65C816S включает в себя незначительные улучшения по сравнению с 65C816, которые делают новый чип не точной аппаратно-совместимой заменой предыдущего. Среди этих улучшений был переход на статическое ядро, которое позволяет останавливать тактовую частоту на любой фазе без потери данных в регистрах. W65C816S, доступный через дистрибьюторов электроники, с марта 2020 года официально рассчитан на работу на частоте 14 МГц.
Западный центр дизайна также разработал и произвел 65C802 , который представлял собой ядро 65C816 с адресным пространством 64 килобайта в корпусе, совместимом по выводам 65(C)02. 65C802 можно было установить на плату 6502, и при включении питания он работал бы как 65C02, работая в «режиме эмуляции». Как и в случае с 65C816, последовательность из двух инструкций переключит 65C802 в «собственный режим», открывая доступ к его 16-битному аккумулятору и индексным регистрам , а также к другим функциям 65C816. 65С802 не получил широкого распространения, и производство было прекращено.
У 6502 было несколько ошибок и особенностей, которые необходимо было учитывать при его программировании:
JMP (<address>)
частично повреждена. Если <адрес> имеет шестнадцатеричное значение xxFF (т. е. любое слово, оканчивающееся на FF ), процессор не перейдет по адресу, хранящемуся в xxFF , как xxFF+1
ожидалось, а скорее по адресу, определенному xxFF и xx00 (например, JMP ($10FF)
перейдет по адресу хранится в 10FF и 1000, а не в 10FF и 1100). Этот дефект сохранялся во всей линейке NMOS, но был исправлен в производных CMOS.Первый 6502 был изготовлен по 8-микронной технологии, работал на частоте 1 мегагерц и имел максимальную память 64 КБ.
Поступление любого прерывания отражается на флаге B, выход которого (B_OUT) заставляет процессор выполнить инструкцию BRK...
Б_ВЫХ;
ВНУТРЕННЯЯ ШИНА ДАННЫХ (DB)
Инженеры Atari назвали его САЛЛИ, но [в сопроводительных документах оно называется] «6502 (Модифицированный)», «6502 Модифицированный», «Пользовательский 6502» или «6502C».
[..] Чипы SALLY 6502 никогда не имеют маркировки «6502C», но, за исключением UMC UM6502I, всегда [маркируются] C014806.
[..] [Другие] чипы с маркировкой «6502C» [..] НЕ являются Atari «6502C», а [стандарт 6502], сертифицированный для 4 МГц