Введение
32-битный микропроцессор
Motorola 68020 — это 32-битный микропроцессор компании Motorola, выпущенный в 1984 году. Также была выпущена более доступная версия, известная как 68EC020. В соответствии с принятой в Motorola практикой наименования, 68020 обычно называют "020", произнося как "о два ноль" или "о двадцать". 020 оставался на рынке относительно недолго. Motorola 68030 был анонсирован в сентябре 1986 года, а поставки начались летом 1987 года. По цене сопоставимый с 020 того времени, 030 был значительно быстрее и быстро заменил 020 практически во всех областях применения.
68000 и 68010
В то время, когда разрабатывался Motorola 68000, производственные и технологические возможности Motorola устарели. Даже небольшие компании, такие как MOS Technology и Zilog, уже перешли на логику NMOS с силиконовыми затворами и технологию обеднения на всё более крупных кремниевых пластинах, в то время как Motorola всё ещё использовала металлические затворы и технологию обогащения, а их крупнейшее производство работало с 4-дюймовыми пластинами, даже когда большинство перешли на 5-дюймовые. Хотя 68000 и достиг цели стать самым быстрым процессором на момент выхода, его потенциал был значительно выше, если бы он был разработан с использованием более современных технологий. В период разработки 68000 компания сотрудничала с Hitachi в области производственных технологий и в рамках этого сотрудничества открыла новое производство, MOS 8, использующее 5-дюймовые пластины и новейший процесс HMOS, лицензированный у Intel. Эта линия была способна осваивать все новые технологии, но для 68000 решили использовать старую конструкцию, будучи уверенными в её работоспособности. Переход к новым методам проектирования был отложен до выхода продукта на рынок. Внедрение новых методов проектирования произошло при разработке Motorola 68010 – относительно незначительного обновления оригинальной конструкции, добавившего базовую поддержку виртуальной памяти для развивающегося рынка Unix-рабочих станций.
020 концепция появляется
В то время как эти усилия продолжались, Motorola опрашивала своих клиентов относительно их пожеланий в отношении будущих разработок в этой линейке. Все это указывало на полноценную 32-битную реализацию. Те, кто использовал 68k в системах Unix, также заявили, что приобретут блок операций с плавающей запятой для каждой машины, если бы он был доступен. Оригинальный 68000 был разработан как гибридная 16/32-битная система, во многом потому, что максимальное количество выводов, доступных в корпусах DIP (двойные встроенные корпуса), составляло 64, и даже при таком размере упаковка была весьма проблематичной. Уменьшив количество адресных выводов до 24, а выводов данных – всего до 16, удалось получить достаточно свободных выводов для реализации всех остальных необходимых линий, таких как прерывания и источники питания. 24-битная адресная шина означала, что общий объем памяти мог составлять всего 16 МБ, что к тому моменту становилось ограничением. 16-битная шина данных означала, что для чтения 32-битного слова из этой памяти требовалось два цикла обращения к шине. Конструкция с 32 выводами для адресной и шины данных обеспечила бы вдвое более высокую скорость доступа к данным, что сделало бы машину значительно быстрее даже без каких-либо других изменений. Переход к 32-битной адресации также упростил бы реализацию виртуальной памяти и позволил использовать более 16 МБ оперативной памяти. Однако это потребовало бы значительно большего общего количества выводов. К началу 1980-х годов подобные ограничения во всех современных конструкциях процессоров привели к появлению корпусов с контактной решеткой (PGA), которые заменили DIP. Для нового проекта Motorola выбрала 169-выводный корпус, предоставив достаточно места для работы. В конечном итоге в конструкции было использовано только 114 выводов. Разгорелись острые дебаты о том, как описывать базовую конструкцию нового чипа в маркетинговых материалах. Технически, 020 переходил от давно устоявшейся логики NMOS к схеме CMOS, требующей двух транзисторов на логический элемент. Распространенное мнение того времени гласило, что CMOS стоит в четыре раза дороже, чем NMOS, и значительная часть рынка считала, что «CMOS – это плохо».
Проблемы с запуском и производством
Проект был завершен летом 1983 года и объявлен в июне 1984 года. Этот "суперчип" стал значимой новостью, и New York Times опубликовала о нем статью на первой полосе в разделе бизнеса. Цена запуска составляла 487 долларов за штуку, примерно как у 68000 при его выпуске в 1980 году, хотя 68000 к тому времени стоил около 15 долларов. Однако было понятно, что пройдет некоторое время, прежде чем появятся компьютеры, использующие новый чип, поскольку существующие разработки требовали бы серьезной модификации для использования его производительности. После объявления клиенты Motorola начали активно требовать поставки. В этот момент стали очевидны серьезные проблемы с обеспечением производства. Чип был спроектирован для изготовления на том же заводе MOS 8, что и 68000, хотя для его поддержки было введено несколько единиц нового оборудования. К моменту публичного релиза выход годных чипов был равен нулю – то есть, из каждой пластины, прошедшей многоступенчатый процесс, не получалось ни одного рабочего экземпляра. Гэри Джонсон пришел к выводу, что проблема в менеджере цеха MOS 8, Томе Фелеси, и решил заменить его Биллом Уокером, который в то время руководил старым заводом MOS 2. 5 июля 1985 года Уокер прибыл на завод и обнаружил, что Джонсон даже не потрудился сообщить Фелеси об отставке, что привело к спорам. В конце концов Джонсон сообщил Фелеси о произошедшем. Уокер осмотрел завод и обнаружил, что он превратился, по сути, в научно-исследовательскую лабораторию, а не в производственную линию, с множеством оборудования, которое больше нигде не использовалось. Одной из серьезных проблем была новая установка от нового поставщика, Genius, предназначенная для производства силицида. Машина просто не работала. Уокер вылетел в Калифорнию на встречу с генеральным директором Genius, который ограничивался лишь оправданиями. В конце концов Уокер ударил кулаком по столу, сломав ремешок часов, и заявил: "Хватит оправданий! Я хочу, чтобы это исправили прямо сейчас, сегодня!" Genius воспринял требование всерьез и устранил неисправность. Позже генеральный директор прислал Уокеру новый ремешок для часов в память об этом событии. Тем временем Уокер внедрил новую политику на MOS 8 для улучшения работы завода. Обычно он проводил совещания в 6:30 утра. Если дела шли плохо, он переносил их на 5:30, а иногда и на 4:30. Это создавало сильный стимул для запуска производства. Проблемы с производством вскоре были решены, и массовые поставки начались в конце того же года. К этому моменту их клиенты, производители рабочих станций, уже разработали полные системы, готовые к использованию 020 и нового сопроцессора с плавающей запятой Motorola 68881. Системы появились на рынке всего через пять-шесть месяцев после объявления о 020.
Замена
Проектирование последующих моделей 020 началось почти немедленно. В рамках их продолжающегося сотрудничества с Hitachi, производственная система Motorola наконец-то догоняла конкурентов, как и их внутренний процесс разработки. Это дало им значительно больше возможностей, позволяя добавить более крупные кэши процессора, встроенный блок управления памятью (MMU) и другие функции. Motorola 68030 был анонсирован в сентябре 1986 года, а поставки должны были начаться следующим летом. Благодаря изменениям в производственных линиях, новый 030 имел более низкую стартовую цену, чем 020. Существовали значительные различия между 68000 и 020, особенно из-за 32-битного интерфейса памяти. Это требовало, чтобы конструкции компьютеров, использующих его, значительно отличались от предыдущих моделей. В отличие от этого, между 020 и 030 было немного изменений, и последний мог использоваться как прямая замена во многих случаях. По этой причине, разработки с использованием 030 появились гораздо быстрее после его выпуска, чем разработки для 020. Первым Macintosh с 020 был Macintosh II, выпущенный в марте 1987 года, через два года после того, как 020 стал широко доступен, с небольшими первоначальными поставками, начавшимися через два месяца. Всего через восемнадцать месяцев Macintosh IIx заменил его, используя 030. Хотя он работал на той же тактовой частоте 16 МГц, IIx обеспечивал производительность 3,9 МИПС по сравнению с 2,6 МИПС у II.
Описание
68020 имеет 32-битные внутренние и внешние шины данных и адреса, в отличие от ранних моделей 680x0 с 16-битными шинами данных и 24-битными шинами адреса. АЛУ 68020 также изначально 32-битное, что позволяет выполнять 32-битные операции за один тактовый цикл, в то время как 68000 требовало минимум два тактовых цикла из-за своего 16-битного АЛУ. Новые методы корпусирования позволили '020 иметь больше внешних выводов без значительного увеличения размера, который был необходим при использовании более раннего метода двойного встроенного корпуса. 68EC020 снизил стоимость за счет использования 24-битной шины адреса. 68020 выпускался с тактовой частотой от 12 МГц до 33 МГц.
Улучшения по сравнению с 68010
68020 имеет 32-разрядное арифметико-логическое устройство (ALU), 32-разрядные внешние шины данных и адреса. Он добавляет новые инструкции и дополнительные режимы адресации. 68020 (и 68030) имеет полноценный трехступенчатый конвейер. Хотя 68010 имел "режим цикла", который ускорял выполнение циклов за счет фактически крошечного кэша инструкций, он вмещал всего две короткие инструкции и поэтому мало использовался. 68020 заменил его полноценным кэшем инструкций объемом 256 байт, став первым процессором серии 68k с настоящей кэш-памятью на кристалле. Предыдущие процессоры 68000 и 68010 могли обращаться к данным в памяти в виде слов (16 бит) и длинных слов (32 бит) только если они были выровнены по границе слова (располагались по четному адресу). У 68020 нет ограничений на выравнивание при доступе к данным. Естественно, доступ к невыровненным данным медленнее, чем к выровненным, поскольку требует дополнительного обращения к памяти. 68020 имеет небольшой 256-байтный кэш инструкций с прямой адресацией, организованный в виде 64 четырехбайтовых ячеек. Несмотря на небольшой размер, он существенно повысил производительность многих приложений. Уменьшение трафика на шине было особенно важно в системах, активно использующих DMA.
Поддержка сопроцессора
68020 имеет интерфейс сопроцессора, поддерживающий до восьми сопроцессоров. Основной процессор распознает инструкции "F-линии" (с четырьмя старшими битами кода операции, установленными в единицу), и использует специальные циклы шины для взаимодействия с сопроцессором с целью выполнения этих инструкций. Было определено два типа сопроцессоров: блоки вычислений с плавающей точкой (MC68881 или MC68882 FPU) и блочный менеджер памяти с постраничной организацией (MC68851 PMMU). С одним процессором может использоваться только один PMMU. В принципе, с процессором можно было использовать несколько FPU, но это не было распространено. Интерфейс сопроцессора асинхронный, поэтому сопроцессоры можно запускать с другой частотой тактирования, чем процессор.
Многопроцессорные функции
Поддержка многопроцессорности реализуется аппаратно с помощью пина RMC для индикации выполняющегося неделимого цикла чтения-модификации-записи. Все остальные процессоры должны приостанавливать доступ к памяти до завершения этого цикла. Программная поддержка многопроцессорности включает инструкции TAS, CAS и CAS2. В многопроцессорной системе сопроцессоры не могут совместно использоваться между центральными процессорами. Чтобы избежать проблем с возвратами из сопроцессоров, ошибок шины и исключений ошибок адреса, в многопроцессорной системе обычно требовалось, чтобы все процессоры были одной модели, а все FPU – одной и той же модели.
Набор инструкций
Новые инструкции включают в себя незначительные улучшения и расширения состояния супервизора, несколько инструкций для программного управления многопроцессорной системой (которые были удалены в 68060), некоторую поддержку языков высокого уровня, которая не получила широкого распространения (и была удалена из последующих процессоров 680x0), расширенные инструкции умножения (32×32→64 бита) и деления (64÷32→32-битное частное и 32-битный остаток), а также операции с битовыми полями. Новые режимы адресации добавляют масштабируемую индексацию и дополнительный уровень косвенности ко многим из существующих режимов.
Архитектура
Motorola 68020 Регистры 31 23 15 07 00 (позиция бита) Регистры данных D0 Данные 0 D1 Данные 1 D2 Данные 2 D3 Данные 3 D4 Данные 4 D5 Данные 5 D6 Данные 6 D7 Данные 7 Адресные регистры A0 Адрес 0 A1 Адрес 1 A2 Адрес 2 A3 Адрес 3 A4 Адрес 4 A5 Адрес 5 A6 Адрес 6 Указатели стека A7 / USP Указатель стека (пользовательский) A7' / SSP Указатель стека (супервизорский) Счетчик программ PC Счетчик программ Регистр кодов состояния 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (позиция бита) T S M 0 I 0 0 0 X N Z V C CCR
Благодаря полной 32-битной внутренней и внешней шинам адреса, адресные регистры (A0–A7) могли использовать всю свою 32-битную ширину и были способны адресовать всё 4-ГБ адресное пространство. Большая эффективная ширина адресных регистров создавала проблемы для старого программного обеспечения, которое не было разработано с учетом 32-битной архитектуры ("не было "чистым" 32-битным"). Некоторые программы использовали старшие 8 бит (биты 24–31) адресов для хранения различных флагов, предполагая, что более ранние процессоры 680x0 будут безопасно игнорировать эти старшие биты. Такое программное обеспечение пришлось переписать для адаптации к большему физическому адресуемому пространству, доступному в процессорах 68020 и более поздних версиях.
Использование
68020 использовался в персональных компьютерах Apple Macintosh II и Macintosh LC, рабочих станциях Sun 3, Amiga 1200 (в варианте 68EC020), сетевых анализаторах Hewlett Packard 8711 Series, рабочих станциях HP 9000/320, HP 9000/330, рабочих станциях Apollo Computer DN3000 и DN4000, и Alpha Microsystems AM 2000. 68020 был альтернативным обновлением для 68008 в Sinclair QL через интерфейс Super Gold Card от Miracle Systems. Amiga 2500 и A2500UX опционально комплектовались ускорителем A2620, использующим 68020, сопроцессор 68881 FPU и MMU 68851. 2500UX поставлялся с Amiga Unix, требуя процессор '020 или '030. Ряд цифровых осциллоскопов с середины 80-х до конца 90-х годов использовали 68020, включая серию LeCroy 9300 (более продвинутые модели, включая модели с суффиксом "C", использовали более мощный 68EC030; модели 9300 с процессором 68020 могут быть модернизированы до 68EC030 путем замены платы CPU) и более раннюю серию LeCroy 9400 (все модели, кроме 9400/9400A, которая использовала 68000), а также некоторые модели серии Tektronix TDS. HP 54520, 54522, 54540 и 54542 также используют 68020 вместе с 68882 FPU. Он также используется в процессорах поездов TGV для декодирования сигнальной информации, передаваемой по рельсам. Он применяется в системах управления полетом и радиолокационных системах истребителей Eurofighter Typhoon. В телефонной станции Nortel Networks DMS 100 68020 также использовался в качестве первого микропроцессора вычислительного ядра SuperNode.
Вариант
68EC020 является более доступной версией Motorola 68020. Главное отличие заключается в том, что 68EC020 имеет 24-битную адресную шину вместо 32-битной адресной шины полной версии 68020, и поэтому способен адресовать только 16 МБ памяти. Компьютер Amiga 1200 и игровая консоль Amiga CD32 используют урезанную версию 68EC020; этот процессор также применялся в аркадных платах Namco System 22, Taito F3 и Konami GX. В прототипе Atari Jaguar II он использовался для замены 68000 в оригинальной консоли Atari Jaguar. Он также находил применение в лазерных принтерах. Apple использовала его в LaserWriter IIɴᴛx. Kodak использовала его в Ektaplus 7016PS, а Dataproducts – в LZR 1260. В 2014 году компания Rochester Electronics возобновила производство микропроцессора 68020, и он до сих пор доступен.