stringtranslate.com

Моторола 68000

Motorola 68000 (иногда сокращается до Motorola 68k или m68k и обычно произносится как «шестьдесят восемь тысяч») [2] [3] — 16/32-битный компьютерный микропроцессор со сложным набором команд (CISC) , представленный в 1979 году компанией Motorola Semiconductor . Сектор продуктов.

В конструкции реализован 32-битный набор команд с 32-битными регистрами и 16-битной внутренней шиной данных . [4] Адресная шина имеет разрядность 24 бита и не использует сегментацию памяти , что упрощает программирование. Внутри он использует 16-битное арифметико-логическое устройство данных (АЛУ) и еще два 16-битных АЛУ, используемых в основном для адресов, [4] и имеет 16-битную внешнюю шину данных . [5] По этой причине Motorola назвала его 16/32-битным процессором.

Будучи одним из первых широко доступных процессоров с 32-битным набором команд, большим несегментированным адресным пространством и относительно высокой для того времени скоростью, 68k был популярной конструкцией в 1980-х годах. Он широко использовался в новом поколении персональных компьютеров с графическим пользовательским интерфейсом , включая Macintosh 128K , Commodore Amiga , Atari ST и Sharp X68000 . Консоль Sega Genesis/Mega Drive 1988 года оснащена процессором 68000.

Более поздние процессоры серии Motorola 68000 , начиная с Motorola 68020 , используют полные 32-битные ALU и имеют полные 32-битные шины адреса и данных, что ускоряет 32-битные операции и обеспечивает полную 32-битную адресацию вместо 24-битной. адресация 68000 и Motorola 68010 или 31-битная адресация Motorola 68012 . Исходный 68k, как правило, программно совместим с остальной частью линейки, несмотря на то, что он ограничен внешней шиной шириной 16 бит. [4]

Предварительная версия чипа XC68000 1979 года выпуска.
Кристалл Motorola 68000

После 45 лет производства архитектура 68000 все еще используется. [6] [7]

Разработка

Motorola MC68000 ( корпус безвыводного держателя микросхем (CLCC))
Motorola MC68000 ( пластмассовый держатель микросхемы с выводами (PLCC))

6800

Первым широко производимым микропроцессором Motorola был 6800 , представленный в начале 1974 года и поступивший в продажу в конце того же года. [8] Компания поставила перед собой цель продать 25 000 единиц к сентябрю 1976 года, и эта цель им удалось достичь. Несмотря на то, что это мощная конструкция, ее затмили более мощные конструкции, такие как Zilog Z80 , и менее дорогие конструкции, такие как MOS Technology 6502 . [9] К концу 1976 года портфель продаж практически не изменился, и подразделение спас только проект для General Motors , который превратился в огромную линейку продуктов для управления двигателем и других задач. [10]

Переход на 16-битную версию

К моменту появления 6800 на рынке появилось небольшое количество 16-битных моделей. Обычно они моделировались на миникомпьютерных платформах, таких как Data General Nova или PDP-8 . Основываясь на процессах производства полупроводников той эпохи, это часто были многочиповые решения, такие как National Semiconductor IMP-16 или однокристальный PACE, у которого были проблемы со скоростью. [11]

Поскольку перспективы продаж 6800 тускнели, но все еще были получены доходы от продаж систем управления двигателем, в конце 1976 года Колин Крук, операционный менеджер, начал обдумывать, как успешно добиться будущих продаж. Они знали, что Intel работает над 16-битным расширением своей серии 8080 , которое появится как Intel 8086 , и слышали слухи о 16-битном Zilog Z80 , который стал Z8000 . В них будут использоваться новые методы проектирования, которые устранят проблемы, наблюдавшиеся в более ранних 16-битных системах. [12]

Motorola знала, что если они выпустят продукт, аналогичный 8086, но с точностью до 10% его возможностей, Intel убьет их на рынке. Чтобы конкурировать, они поставили перед собой цель быть в два раза мощнее при той же цене или вполовину дешевле при той же производительности. Крук решил, что они будут атаковать рынок высокого класса с помощью самого мощного процессора на рынке. [12] Еще одна 16-битная версия не подошла бы, их дизайн должен был бы быть больше, а это означало наличие некоторых 32-битных функций. [13] Крук принял такой подход к концу 1976 года. [12]

МАКСС

Крук сформировал проект Motorola Advanced Computer System on Silicon (MACSS) для разработки проекта и нанял Тома Гюнтера в качестве его главного архитектора. Гюнтер начал формировать свою команду в январе 1977 года. [14] Цель по производительности была установлена ​​на уровне 1 миллиона инструкций в секунду (MIPS). Они хотели, чтобы этот дизайн привлек не только таких поставщиков микрокомпьютеров, как Apple Computer и Tandy , но и таких компаний, занимающихся миникомпьютерами, как NCR и AT&T . [14]

Команда решила отказаться от попыток обратной совместимости с 6800, поскольку считала, что 8-битные конструкции слишком ограничены, чтобы служить основой для новых разработок. На новую систему повлиял PDP-11 , самый популярный миникомпьютер той эпохи. [15] В то время ключевой концепцией minis была концепция ортогонального набора команд , в котором каждой операции разрешалось работать с любым типом данных. Для подачи правильных данных во внутренние блоки MACSS широко использовал микрокод , по сути, небольшие программы в постоянной памяти , которые собирали необходимые данные, выполняли операции и записывали результаты. MACSS был одним из первых, кто применил эту технику в микропроцессоре. [16] [17]

Для 6800 существовало большое количество вспомогательного оборудования, которое оставалось полезным, например, UART и аналогичные интерфейсные системы. По этой причине в новой конструкции сохранен режим совместимости протокола шины для существующих периферийных устройств 6800. [18] [17]

Чипу с 32 выводами данных и 32 адресными выводами потребуется 64 вывода, а также еще больше для питания и других функций. В то время 64-контактные двухрядные корпуса (DIP) были «большими, дорогостоящими» системами и «просто ужасными», что делало их самыми большими, которые они могли рассматривать. Чтобы сделать его подходящим, Крук выбрал гибридную конструкцию с 32-битной архитектурой набора команд (ISA) и 16-битными компонентами, реализующими ее, такими как арифметико-логическое устройство (АЛУ). [14] Внешний интерфейс был уменьшен до 16 контактов для передачи данных и 24 для адресов, что позволило разместить все это в 64-контактном корпусе. Это стало известно как «Техасский таракан». [13] [а]

К середине 1970-х годов методы проектирования MOS компании Motorola стали менее продвинутыми, чем у конкурентов, а их производственные линии временами имели низкую производительность. К концу 1970-х годов компания вступила в программу обмена технологиями с Hitachi , значительно улучшив свои производственные возможности. В рамках этого была построена новая фабрика MOS-8 с использованием новейших размеров 5-дюймовых пластин и технологии Intel HMOS с размером элемента 3,5  мкм . [19] Это была инвестиция, направленная на то, чтобы догнать конкурентов: даже начинающие полупроводниковые компании, такие как Zilog и MOS Technology , представили процессоры, изготовленные на основе логики NMOS с режимом истощения, раньше, чем это сделала Motorola. Фактически, Motorola, возможно, существенно отстала от современников в поэтапном отказе от режима улучшения и металлического затвора, причем директор по продуктам серии 68k Том Гюнтер вспоминал, что сама 68000 должна была добиться успеха, несмотря на то, что изначально была принята конструкция с металлическим затвором. [20] Хотя идея игры в догонялки ясна, это не могло быть полностью точным изложением, поскольку в технических описаниях Motorola 1976 года, предшествовавших началу проекта MACCS, большая часть семейства 6800 обозначена как кремниевый затвор. [21] Действительно, в собственной статье Гюнтера 1979 года, посвященной 68000, подчеркивалось, что это конструкция HMOS с кремниевым затвором в режиме истощения. [22] Какими бы ни были технологические и производственные недостатки Motorola в первые дни, команда не испугалась и не пошла на компромисс в поисках микропроцессора с лучшими в отрасли производительностью. [23]

Отбор проб и производство

Официально представленные в сентябре 1979 года, [24] первоначальные образцы были выпущены в феврале 1980 года, а серийные чипы стали доступны без рецепта в ноябре. [25] Начальные уровни скорости составляют 4, 6 и 8  МГц . Чипы с частотой 10 МГц стали доступны в 1981 году, [26] и чипы с частотой 12,5 МГц к июню 1982 года . [25] Версия MC68000 «12F» с частотой 16,67 МГц, самая быстрая версия оригинального чипа HMOS, не производилась до конца 1980-х годов.

К началу 1981 года 68k одержал множество побед в дизайне высшего класса, и Гюнтер начал обращаться к Apple с просьбой выиграть их бизнес. В то время 68k продавались по цене около 125 долларов. На встречах со Стивом Джобсом Джобс говорил об использовании 68k в Apple Lisa , но заявил, что «настоящее будущее за этим продуктом, которым я лично занимаюсь. Если вы хотите этот бизнес, вы должны взять на себя обязательство продать его». за 15 долларов». [27] Motorola в ответ предложила сначала продать его по 55 долларов, затем снизить до 35 долларов и так далее. Джобс согласился, и Macintosh перешел с 6809 на 68k. Средняя цена в итоге достигла $14,76. [27]

Варианты

В 1982 году 68000 получил незначительное обновление архитектуры набора команд (ISA) для поддержки виртуальной памяти и соответствия требованиям виртуализации Попека и Голдберга . Обновленный чип называется 68010 . [28] Он также добавляет новый «режим цикла», который ускоряет небольшие циклы и увеличивает общую производительность примерно на 10% при тех же тактовых частотах. Дальнейшая расширенная версия, которая предоставляет 31 бит адресной шины, также производилась в небольших количествах как 68012 .

Для поддержки недорогих систем и приложений управления с меньшими объемами памяти компания Motorola также в 1982 году представила 8-битный совместимый MC68008 . Это 68000 с 8-битной шиной данных и меньшей (20-битной) адресной шиной. После 1982 года Motorola уделяла больше внимания проектам 68020 и 88000 .

Вторичный источник

Хитачи HD68000
Томсон TS68000

Несколько других компаний были второстепенными производителями HMOS 68000. В их число входили Hitachi (HD68000), которая сократила размер элемента до 2,7 мкм для своей версии с частотой 12,5 МГц, [25] Mostek (MK68000), Rockwell (R68000), Signetics (SCN68000) . ), Thomson / SGS-Thomson (первоначально EF68000, а затем TS68000) и Toshiba (TMP68000). Toshiba также была сторонним производителем CMOS 68HC000 (TMP68HC000).

Зашифрованные варианты 68000, такие как Hitachi FD1089 и FD1094, хранят ключи дешифрования для кодов операций и данные кодов операций в памяти с батарейным питанием и использовались в некоторых аркадных системах Sega, включая System 16, для предотвращения пиратства и нелегальных контрафактных игр. [29]

версии КМОП

Моторола MC68HC000LC8

68HC000, первая версия CMOS 68000, была разработана Hitachi и совместно представлена ​​в 1985 году. [30] Версия Motorola называется MC68HC000, а версия Hitachi — HD68HC000. 68HC000 предлагает скорости 8–20 МГц. За исключением использования схемы CMOS, он вел себя идентично HMOS MC68000, но переход на CMOS значительно снизил его энергопотребление. Оригинальный HMOS MC68000 потреблял около 1,35  Вт при температуре окружающей среды 25  °C независимо от тактовой частоты, тогда как MC68HC000 потреблял всего 0,13 Вт на частоте 8 МГц и 0,38 Вт на частоте 20 МГц. (В отличие от схем CMOS, HMOS по-прежнему потребляет энергию в режиме ожидания, поэтому энергопотребление мало зависит от тактовой частоты.) Apple выбрала 68HC000 для использования в Macintosh Portable .

Motorola заменила MC68008 на MC68HC001 в 1990 году. [31] Этот чип во многом напоминает 68HC000, но его шина данных может работать как в 16-битном, так и в 8-битном режиме, в зависимости от значения входного контакта при сбросе. Таким образом, как и 68008, его можно использовать в системах с более дешевой 8-битной памятью.

Более поздняя эволюция 68000 была сосредоточена на более современных встроенных приложениях управления и встроенной периферии. Микросхема 68EC000 и ядро ​​SCM68000 удаляют периферийную шину M6800 и исключают инструкцию MOVE из SR из программ пользовательского режима, что делает 68EC000 и 68SEC000 единственными процессорами 68000, которые не на 100% совместимы с объектным кодом предыдущих процессоров 68000 при работе в пользовательском режиме. При запуске в режиме супервизора разницы нет. [32] В 1996 году Motorola обновила автономное ядро, сделав его полностью статической схемой, потребляя всего 2  мкВт в режиме пониженного энергопотребления, назвав его MC68SEC000. [33]

Motorola прекратила производство HMOS MC68000, а также MC68008, MC68010, MC68330 и MC68340 1 июня 1996 года, [34] [35] , но ее дочерняя компания Freescale Semiconductor все еще производила MC68HC000, MC68HC001, MC68EC000. и MC68SEC000, а также микроконтроллеры MC68302 и MC68306 и более поздние версии семейства DragonBall . Архитектурные потомки 68000, семейства 680x0 , CPU32 и Coldfire , также все еще находились в производстве. Совсем недавно, после закрытия завода в Сендае, все детали 68HC000, 68020, 68030 и 68882 были сняты с производства, в производстве осталась только 68SEC000. [36]

В качестве ядра микроконтроллера

С тех пор, как на смену ему пришли «настоящие» 32-битные микропроцессоры, 68000 используется в качестве ядра многих микроконтроллеров . В 1989 году Motorola представила коммуникационный процессор MC68302 . [37]

Приложения

Два процессора Hitachi 68HC000 используются на печатной плате аркадной игры.

IBM рассматривала 68000 для IBM PC, но выбрала Intel 8088 ; однако IBM Instruments на короткое время продала лабораторные компьютерные системы IBM System 9000 на базе 68000. Набор команд 68k особенно хорошо подходит для реализации Unix, [38] а 68000 и его преемники стали доминирующими процессорами для рабочих станций на базе Unix, включая рабочие станции Sun и рабочие станции Apollo/Domain .

В 1981 году Motorola представила образовательную компьютерную плату Motorola 68000 , одноплатный компьютер для образовательных и учебных целей, который, помимо самого 68000, содержал память, устройства ввода-вывода, программируемый таймер и область намотки проводов для индивидуальных схем. Доска использовалась в колледжах США как инструмент для изучения программирования на ассемблере до начала 1990-х годов. [39]

На момент своего появления 68000 впервые использовался в дорогих системах, включая многопользовательские микрокомпьютеры , такие как WICAT 150, [40] ранние компьютеры Alpha Microsystems , Sage II/IV , Tandy 6000/ TRS-80 Model 16 и Fortune 32:16. ; однопользовательские рабочие станции , такие как системы HP 9000 Series 200 от Hewlett-Packard , первые системы Apollo/Domain , Sun-1 от Sun Microsystems и Corvus Concept ; и графические терминалы, такие как VAXstation 100 от Digital Equipment Corporation и IRIS 1000 и 1200 от Silicon Graphics. Unix- системы быстро перешли на более производительные последующие поколения линейки 68k, которые оставались популярными на этом рынке на протяжении 1980-х годов.

К середине 1980-х годов падение производственных затрат сделало 68000 пригодным для использования в персональных компьютерах , начиная с Apple Lisa и Macintosh , а затем Amiga , Atari ST и X68000 .

Микрокомпьютер Sinclair QL вместе с его производными, такими как бизнес-терминал ICL One Per Desk , был наиболее коммерчески важным вариантом использования 68008. Компания Helix Systems (в Миссури, США) разработала расширение шины SWTPC SS-50 , SS-64 и производила системы, построенные на базе процессора 68008.

Хотя внедрение RISC и x86 вытеснило серию 68000 в качестве ЦП для настольных компьютеров и рабочих станций, этот процессор нашел широкое применение во встроенных приложениях. К началу 1990-х годов можно было приобрести 68 000 процессоров по цене менее 30  долларов США за деталь. [ нужна цитата ]

68000 также имел большой успех в качестве встроенного контроллера. Еще в 1981 году лазерные принтеры , такие как Imagen Imprint-10, управлялись внешними платами, оснащенными 68000. Первый HP LaserJet , представленный в 1984 году, поставлялся со встроенным 68000 с частотой 8 МГц. Другие производители принтеров приняли на вооружение 68000, включая Apple, представившую в 1985 году LaserWriter , первый лазерный принтер PostScript . Модель 68000 продолжала широко использоваться в принтерах до конца 1980-х годов, сохраняясь и в 1990-х годах в принтерах бюджетного класса.

Модель 68000 добилась успеха в области промышленных систем управления. Среди систем, получивших выгоду от использования микропроцессора 68000 или его производной, были семейства программируемых логических контроллеров (ПЛК), производимые компанией Allen-Bradley , Texas Instruments , а затем, после приобретения этого подразделения TI, компанией Siemens . Пользователи таких систем не воспринимают устаревание продукции с такой же скоростью, как домашние пользователи, и вполне вероятно, что, несмотря на то, что они были установлены более 20 лет назад, многие контроллеры на базе 68000 будут продолжать надежно работать и в 21 веке.

В ряде цифровых осциллографов 80-х годов [41] 68000 использовался в качестве процессора отображения сигналов; некоторые модели, включая LeCroy 9400/9400A [42], также используют 68000 в качестве математического процессора сигналов (включая сложение, вычитание, умножение и деление двух сигналов/опорных значений/памяти сигналов), а некоторые цифровые осциллографы используют 68000 (включая 9400/9400A) также может выполнять функции быстрого преобразования Фурье сигнала.

Микроконтроллеры 683ХХ , основанные на архитектуре 68000, используются в сетевом и телекоммуникационном оборудовании, телевизионных приставках, лабораторных и медицинских приборах и даже в портативных калькуляторах. MC68302 и его производные использовались во многих телекоммуникационных продуктах Cisco, 3com, Ascend, Marconi, Cyclades и других. Предыдущие модели КПК Palm и Handspring Visor использовали DragonBall , производную от 68000. AlphaSmart использовала семейство DragonBall в более поздних версиях своих портативных текстовых процессоров. Компания Texas Instruments использовала 68000 в своих высокопроизводительных графических калькуляторах серий TI-89 и TI-92, а также Voyage 200 .

Модифицированная версия 68000 легла в основу аппаратного эмулятора процессора System 370 IBM XT/370 .

Видеоигры

Производители видеоигр использовали 68000 в качестве основы для многих аркадных игр и домашних игровых консолей : Food Fight от Atari , вышедшая в 1982 году, была одной из первых аркадных игр на базе 68000. Другие включали System 16 от Sega , CP System и CPS-2 от Capcom и Neo Geo от SNK . К концу 1980-х годов 68000 была достаточно недорогой для питания домашних игровых консолей, таких как консоль Sega Genesis от Sega , а также приставка Sega CD к ней (система Sega CD имеет три процессора, два из них 68000). Многопроцессорная консоль Atari Jaguar 1993 года использовала 68000 в качестве вспомогательного чипа, хотя некоторые разработчики использовали его в качестве основного процессора из-за знакомства. Консоль Sega Saturn использовала 68000 в качестве звукового сопроцессора. В октябре 1995 года 68000 был использован в портативной игровой консоли Sega Genesis Nomad в качестве процессора. [43]

Некоторые аркадные игры (например, Steel Gunner и другие, основанные на Namco System 2 ) используют конфигурацию с двумя процессорами 68000, [44] также существуют системы с тройной конфигурацией процессоров 68000 (например, Galaxy Force и другие, основанные на Sega Y Board). , [45] вместе с конфигурацией с четырьмя процессорами 68000, которая использовалась Jaleco (один процессор 68000 для звука имеет более низкую тактовую частоту по сравнению с другими процессорами 68000) [46] для таких игр, как Big Run и Cisco Heat ; другой, пятый процессор 68000 (с тактовой частотой, отличной от других процессоров 68000) использовался в аркадной игре Jaleco Wild Pilot для обработки ввода-вывода (I/O). [47]

Архитектура

Адресная шина

68000 имеет 24-битную внешнюю адресную шину и два сигнала выбора байта, «заменившие» A0. Таким образом, эти 24 строки могут адресовать 16 МБ физической памяти с байтовым разрешением. Для хранения и вычисления адресов внутри используются 32 бита; однако 8 старших битов адреса игнорируются из-за физического отсутствия контактов устройства. Это позволяет ему запускать программное обеспечение, написанное для логически плоского 32-битного адресного пространства , имея доступ только к 24-битному физическому адресному пространству. Целью Motorola при создании внутреннего 32-битного адресного пространства была прямая совместимость, что позволило написать программное обеспечение 68000, которое в полной мере использовало бы преимущества более поздних 32-битных реализаций набора команд 68000. [4]

Однако это не мешало программистам писать несовместимое программное обеспечение. «24-битное» программное обеспечение, которое отбрасывало старший байт адреса или использовало его для целей, отличных от адресации, могло привести к сбою в 32-битных реализациях 68000. Например, ранние (до 7.0) версии Mac OS от Apple использовали старший байт главных указателей блоков памяти для хранения таких флагов, как заблокированный и очищаемый . В более поздних версиях ОС флаги были перенесены в соседнее место, и Apple начала поставлять компьютеры с « чистыми 32-битными » ПЗУ, начиная с выпуска Mac IIci 1989 года.

Семейство 68000 хранит в памяти многобайтовые целые числа в порядке старшего байта .

Внутренние регистры

ЦП имеет восемь 32-битных регистров данных общего назначения (D0–D7) и восемь адресных регистров (A0–A7) . Последний адресный регистр является указателем стека , и ассемблеры принимают метку SP как эквивалент A7. В то время это было хорошее количество регистров во многих отношениях. Он был достаточно мал, чтобы позволить 68000 быстро реагировать на прерывания (даже в худшем случае, когда нужно было сохранить все 8 регистров данных D0–D7 и 7 адресных регистров A0–A6, всего 15 регистров), и, тем не менее, достаточно большим, чтобы делают большинство вычислений быстрыми, поскольку их можно выполнить полностью внутри процессора, не сохраняя частичных результатов в памяти. (Обратите внимание, что процедура исключения в режиме супервизора также может сохранить указатель пользовательского стека A7, что в общей сложности составит 8 адресных регистров. Однако конструкция 68000 с двойным указателем стека (A7 и A7' режима супервизора) обычно делает это ненужным, за исключением при переключении задач в многозадачной системе.)

Наличие двух типов регистров позволяет одновременно выполнять один 32-битный адрес и одно 16-битное вычисление данных. Это приводит к сокращению времени выполнения инструкций, поскольку адреса и данные могут обрабатываться параллельно. [4]

Регистр состояния

68000 имеет 16-битный регистр состояния. Старшие 8 бит — это системный байт, и его изменение является привилегированным. Младшие 8 бит — это пользовательский байт, также известный как регистр кода состояния (CCR), и его изменение не имеет привилегий. Операции сравнения, арифметические и логические операции 68000 изменяют коды условий, записывая их результаты для использования в последующих условных переходах. Биты кода состояния: «перенос» (C), «переполнение» (V), «ноль» (Z), «отрицательный» (N) и «расширенный» (X). Флаг «расширения» (X) заслуживает особого упоминания, поскольку он отделен от флага переноса . Это позволяет отделить дополнительный бит от арифметических, логических операций и операций сдвига от арифметических операций переноса с высокой точностью . [48]

Набор инструкций

Дизайнеры попытались сделать язык ассемблера ортогональным . То есть инструкции делятся на операции и режимы адресации , и практически для всех инструкций доступны почти все режимы адресации. Имеется 56 инструкций и минимальный размер инструкции 16 бит. Многие инструкции и режимы адресации длиннее и включают больше битов адреса или режима.

Уровни привилегий

ЦП, а затем и все семейство реализуют два уровня привилегий. Пользовательский режим предоставляет доступ ко всему, кроме привилегированных инструкций, таких как управление уровнем прерываний. [49] Привилегия супервизора дает доступ ко всему. Прерывание всегда становится контролирующим. Бит супервизора хранится в регистре состояния и виден пользовательским программам. [49]

Преимущество этой системы в том, что уровень супервизора имеет отдельный указатель стека. Это позволяет многозадачной системе использовать для задач очень маленькие стеки, поскольку разработчикам не нужно выделять память, необходимую для хранения кадров стека максимального количества прерываний.

Прерывания

ЦП распознает семь уровней прерываний . Уровни с 1 по 5 имеют строгий приоритет. То есть прерывание с более высоким номером всегда может прервать прерывание с меньшим номером. В регистре состояния привилегированная инструкция позволяет установить текущий минимальный уровень прерывания, блокируя прерывания с более низким или равным приоритетом. Например, если уровень прерывания в регистре состояния установлен на 3, более высокие уровни от 4 до 7 могут вызвать исключение. Уровень 7 — это немаскируемое прерывание, запускаемое по уровню (NMI). Уровень 1 может быть прерван любым более высоким уровнем. Уровень 0 означает отсутствие прерывания. Уровень сохраняется в регистре состояния и виден программам пользовательского уровня.

Аппаратные прерывания передаются в ЦП с помощью трех входов, которые кодируют наивысший приоритет ожидающего прерывания. Для кодирования прерываний обычно требуется отдельный кодер, хотя для систем, которым не требуется более трех аппаратных прерываний, можно подключить сигналы прерываний непосредственно к закодированным входам за счет большей сложности программного обеспечения. Контроллер прерываний может быть таким же простым, как приоритетный кодер 74LS148 , или может быть частью периферийного чипа очень большой интеграции (СБИС), такого как многофункциональное периферийное устройство MC68901 (используется в линейке компьютеров Atari ST и Sharp X68000 ). , который также обеспечивает UART , таймер и параллельный ввод-вывод.

«Таблица исключений» ( адреса векторов прерываний таблицы векторов прерываний) имеет фиксированные адреса от 0 до 1023, что позволяет использовать 256 32-битных векторов. Первый вектор (RESET) состоит из двух векторов, а именно начального адреса стека и начального адреса кода. Векторы с 3 по 15 используются для сообщения о различных ошибках: ошибка шины , ошибка адреса, недопустимая инструкция , деление на ноль , вектор CHK и CHK2, нарушение привилегий (для блокировки повышения привилегий ) и некоторые зарезервированные векторы, которые стали эмулятором строки 1010, эмулятором строки 1111. и аппаратная точка останова . Вектор 24 запускает настоящие прерывания: ложное прерывание (без аппаратного подтверждения) и автовекторы уровней с 1 по 7, затем 16 векторов TRAP, затем еще несколько зарезервированных векторов, а затем векторы, определяемые пользователем.

Поскольку вектор адреса начального кода всегда должен быть действительным при сбросе, системы обычно включают в себя некоторую энергонезависимую память (например, ПЗУ ), начиная с нулевого адреса, для хранения векторов и кода начальной загрузки . Однако для системы общего назначения желательно, чтобы операционная система имела возможность изменять векторы во время выполнения. Это часто достигалось либо путем указания векторов в ПЗУ на таблицу переходов в ОЗУ , либо с помощью переключения банков , позволяющего заменять ПЗУ на ОЗУ во время выполнения.

68000 не отвечает требованиям виртуализации Попека и Голдберга для полной виртуализации процессора, поскольку он имеет одну непривилегированную команду «MOVE from SR», которая обеспечивает программному обеспечению пользовательского режима доступ только для чтения к небольшому количеству привилегированных состояний. 68EC000 и 68SEC000, которые являются более поздними производными от 68000, соответствуют требованиям, поскольку команда «MOVE from SR» является привилегированной. То же изменение было внесено в процессоры 68010 и более поздних версий.

68000 также не может легко поддерживать виртуальную память , что требует возможности перехвата и восстановления после сбоя доступа к памяти. 68000 действительно предоставляет исключение ошибки шины, которое можно использовать для перехвата, но он не сохраняет достаточно состояния процессора для возобновления ошибочной инструкции после того, как операционная система обработала исключение. Некоторым компаниям удалось создать рабочие станции Unix на базе 68000 с виртуальной памятью, которая работала за счет использования двух чипов 68000, работающих параллельно на разных фазированных тактовых частотах. Когда «ведущий» 68000 сталкивался с плохим доступом к памяти, дополнительное оборудование прерывало «основной» 68000, чтобы он также не столкнулся с плохим доступом к памяти. Эта процедура прерывания будет обрабатывать функции виртуальной памяти и перезапускать «ведущий» 68000 в правильном состоянии, чтобы продолжить правильно синхронизированную работу, когда «основной» 68000 вернется из прерывания.

Эти проблемы были исправлены в следующей крупной версии архитектуры 68k с выпуском MC68010. Исключения «Ошибка шины» и «Ошибка адреса» помещают большой объем внутреннего состояния в стек супервизора, чтобы облегчить восстановление, а инструкция «MOVE from SR» стала привилегированной. Новая непривилегированная инструкция «MOVE from CCR» предназначена для использования вместо нее программным обеспечением пользовательского режима; При желании операционная система может перехватывать и эмулировать инструкции пользовательского режима «MOVE from SR».

Подробности набора инструкций

Стандартные режимы адресации :

Плюс: доступ к регистру состояния , а в более поздних моделях и другим специальным регистрам.

Большинство инструкций имеют варианты, которые работают с 8-битными байтами, 16-битными словами и 32-битными длинными словами; В языках ассемблера после мнемоники инструкции для обозначения варианта используются точечно-буквенные суффиксы «.b», «.w» и «.l».

Как и во многих процессорах того времени, время цикла некоторых инструкций варьировалось в зависимости от исходного операнда (ов). Например, для выполнения команды умножения без знака требуется (38+2n) тактов, где n равно количеству битов, установленных в операнде. [50] Чтобы создать функцию, выполняющую фиксированное количество циклов, потребовалось добавить дополнительный код после инструкции умножения. Обычно это требует дополнительных циклов для каждого бита, который не был установлен в исходном операнде умножения.

Большинство инструкций являются диадными , то есть операция имеет источник и пункт назначения, а пункт назначения изменяется. Известные инструкции:

68EC000

Контроллер Моторола 68EC000

68EC000 — это недорогая версия 68000 с немного другой распиновкой, предназначенная для встроенных контроллеров. 68EC000 может иметь 8-битную или 16-битную шину данных , переключаемую при сбросе. [51]

Доступны процессоры с различными скоростями, включая конфигурации с частотой 8 и 16  МГц , производящие 2100 и 4376  Dhrystones каждый. Эти процессоры не имеют блока операций с плавающей запятой , и с ним сложно реализовать сопроцессор FPU ( MC68881/2 ), поскольку в серии EC отсутствуют необходимые инструкции сопроцессора.

68EC000 использовался в качестве контроллера во многих аудиоприложениях, включая музыкальные инструменты Ensoniq и звуковые карты, где он был частью MIDI- синтезатора. [52] На звуковых платах Ensoniq контроллер обеспечивал ряд преимуществ по сравнению с конкурентами без встроенного процессора. Процессор позволял настроить плату для выполнения различных аудиозадач, таких как синтез MIDI MPU-401 или эмуляция MT-32 , без использования резидентной программы завершения и пребывания . Это улучшило совместимость программного обеспечения, снизило использование ЦП и исключило использование памяти хост-системы.

Ядро Motorola 68EC000 позже использовалось в процессорах DragonBall на базе m68k от Motorola/ Freescale .

Он также использовался в качестве звукового контроллера в игровой консоли Sega Saturn и в качестве контроллера для плат контроллера Ethernet HP JetDirect для принтеров HP LaserJet середины 1990-х годов .

Пример кода

Приведенный ниже ассемблерный код 68000 предназначен для подпрограммы с именем strtolower, которая копирует строку из 8-битных символов с нулевым завершением в строку назначения, преобразуя все буквенные символы в нижний регистр.

Подпрограмма устанавливает кадр вызова , используя регистр A6 в качестве указателя кадра. Такое соглашение о вызовах поддерживает реентерабельный и рекурсивный код и обычно используется в таких языках, как C и C++ . Затем подпрограмма извлекает переданные ей параметры ( srcи dst) из стека. Затем он циклически считывает символ ASCII (один байт) из строки src, проверяет, является ли он заглавным буквенным символом, и если да, преобразует его в символ нижнего регистра, в противном случае оставляет его как есть, а затем записывает символ в Струна dst. Наконец, он проверяет, был ли символ нулевым ; если нет, цикл повторяется, в противном случае восстанавливается предыдущий кадр стека (и регистр A6) и выполняется возврат. Обратите внимание, что указатели строк (регистры A0 и A1) автоматически увеличиваются на каждой итерации цикла.

Напротив, приведенный ниже код предназначен для автономной функции, даже в самой строгой версии AMS для калькуляторов серии TI-89 , он не зависит от ядра, без поиска значений в таблицах, файлах или библиотеках при выполнении. никаких системных вызовов, никакой обработки исключений, минимального количества используемых регистров и необходимости их сохранения. Это справедливо для исторических дат по юлианскому календарю с 1 марта по 1 год нашей эры или для григорианских дат. Менее чем за два десятка операций он вычисляет номер дня, совместимый с ISO 8601 , при вызове с тремя входными данными, хранящимися в соответствующих местах:

;; WDN, адрес - для хранения результата d0; FLAG, 0 или 2 — выбрать между юлианским или григорианским календарем соответственно.; ДАТА, год0mda — отметка даты в виде двоичного слова, байта и байта в базовом формате ISO.;(ГОД, год ~ ГОД=ДАТА из-за прямого порядка байтов ); move.l DATE,d0 move.l d0,d1;; Примените шаг 1 — сравнение Лахмана. andi.l #$f00,d0 divu #100,d0 addi.w #193,d0 andi.l #$ff,d0 divu #100,d0 ; d0 has the month index i in the upper word (mod 100);; Примените шаг 2 – определение spqr как года високосного дня по юлианскому календарю, предшествующего DATE. swap d0 andi.l #$ffff,d0 add.b d1,d0 add.w YEAR,d0 subi.l #$300,d1 lsr #2,d1 swap d1 add.w d1,d0 ; spqr/4 + year + i + da;; (Примените шаг 0 — григорианскую корректировку) mulu FLAG,d1 divu #50,d1 mulu #25,d1 lsr #2,d1 add.w d1,d0 add.w FLAG,d0 ; (sp32div16) + spqr/4 + year + i + da; divu #7,d0 swap d0 ; d0.w becomes the day number; move.w d0,WDN ; returns the day number to address WDN rts;; Дни недели соответствуют номерам дней недели следующим образом:; Вс=0 Пн=1 Вт=2 Ср=3 Чт=4 Пт=5 Сб=6;

Примечания

  1. ^ Гибридные конструкции такого типа уже были распространены в области миникомпьютеров. Data General Nova представляла собой 16-битную конструкцию, реализованную с использованием 4-битных ALU.

Смотрите также

Рекомендации

  1. ^ Хит, Стив (1995). Микропроцессорные архитектуры и системы: RISC, CISC и DSP (второе изд.). Эльзевир. п. 13. ISBN 0-7506-2303-9. Архивировано из оригинала 16 апреля 2021 года . Проверено 12 октября 2019 г.
  2. Гранлунд, Торбьёрн (14 ноября 2020 г.). Библиотека арифметики множественной точности GNU (PDF) (изд. 6.2.1). Проект ГНУ . п. 13. Архивировано (PDF) из оригинала 28 июля 2022 года . Проверено 29 июля 2022 г.
  3. ^ Хайд, Джим; Нортон, Питер (1989). Внутри Apple Macintosh. Саймон и Шустер . п. 530. ИСБН 0-13-467622-Х. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  4. ^ abcde Starnes, Томас В. (апрель 1983 г.). «Философия дизайна Motorola MC68000». Байт . Том. 8, нет. 4. Архивировано из оригинала 24 июля 2018 года . Проверено 19 июня 2018 г.
  5. ^ Справочное руководство программатора семейства Motorola M68000 (PDF) . Финикс, Аризона: Motorola . 1992. с. 1-1. ISBN 0-13-723289-6. Архивировано (PDF) из оригинала 24 сентября 2015 г. Проверено 12 августа 2005 г.
  6. ^ «MC68000: недорогой 32-битный микропроцессор (включая HC000, HC001, EC000 и SEC000)» . НХП Полупроводник . Архивировано из оригинала 14 апреля 2021 года . Проверено 24 марта 2021 г.
  7. Терли, Джим (10 августа 2020 г.). «Погружение в ностальгию по 68K. Хотите построить новый компьютер 40-летней давности?». Электронный инженерный журнал . Архивировано из оригинала 11 апреля 2021 года . Проверено 24 марта 2021 г.
  8. ^ «Motorola присоединяется к гонке микропроцессоров с 8-битной записью» . Электроника . Нью-Йорк: МакГроу-Хилл. 47 (5): 29–30. 7 марта 1974 года.
  9. ^ Тули, Майкл (1988). Обслуживание персональных компьютеров (Второе изд.). Хайнеманн . п. 8. ISBN 0-434-91975-6. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  10. ^ Орал 2007, с. 4.
  11. ^ Кент, Аллен ; Уильямс, Джеймс Г. (1991). Энциклопедия микрокомпьютеров - эволюция компьютерного управления техническим обслуживанием к генерации случайных чисел. Том. 7. Марсель Деккер . п. 336. ИСБН 0-8247-2706-1. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  12. ^ abc Oral 2007, с. 5.
  13. ^ ab Орал 2007, с. 9.
  14. ^ abc Oral 2007, с. 6.
  15. ^ Орал 2007, с. 8.
  16. ^ Орал 2007, с. 7.
  17. ↑ Аб Андерссон, Свен (24 марта 2014 г.). «Микропроцессорная (R) эволюция». ЭЭ Таймс . п. 2. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  18. ^ Тули, Майкл (1992). Обслуживание персональных компьютеров (Третье изд.). Ньюнес . стр. 264–265. ISBN 0-7506-0374-7. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  19. ^ Орал 2007, с. 10.
  20. ^ Устный 2007, стр. 9–11.
  21. ^ «Данные проектирования микрокомпьютерной системы M6800» (PDF) . Моторола . 1976. с. 21. Архивировано (PDF) из оригинала 18 апреля 2023 г. Проверено 17 апреля 2023 г.
  22. ^ Стритер и Гюнтер (1979). «Микросистемы — микропроцессорная архитектура для меняющегося мира: Motorola 68000». Компьютер . 12 (2): 43–52. дои : 10.1109/MC.1979.1658617. S2CID  15893310 . Проверено 17 апреля 2023 г.
  23. ^ Орал 2007, с. 11.
  24. ^ Кен Полссон. «Хронология микропроцессоров». Processortimeline.info. Архивировано из оригинала 19 августа 2012 года . Проверено 27 сентября 2013 г.
  25. ^ abc DTACK GROUNDED, Журнал простых систем 68000/16081, март 1984 г., стр. 9, заархивировано из оригинала 10 марта 2016 г. , получено 31 октября 2011 г..
  26. ^ «Motorola была соперником, которого нужно было победить, и ее 68000 - ее самый большой успех» . текдипс . Архивировано из оригинала 13 сентября 2022 года . Проверено 13 сентября 2022 г.
  27. ^ ab Орал 2007, с. 12.
  28. ^ Файнберг, Игорь; Лу, Хуэй-Лань; Скулер, Дор (2016). Облачные вычисления: бизнес-тенденции и технологии. Уайли . п. 53. ИСБН 978-1-118-50121-4. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  29. ^ "FD1094 - Sega Retro" . segaretro.org . 19 октября 2017. Архивировано из оригинала 28 сентября 2013 года . Проверено 27 октября 2015 г.
  30. ^ «Информация о компании». Архивировано 14 ноября 2007 г. в Wayback Machine , The New York Times, 21 сентября 1985 г., доступно на TimesSelect (подписка).
  31. ^ «68HC001 устарел 68008» . Отчет микропроцессора . 20 июня 1990 года.
  32. ^ «Motorola оптимизирует семейство 68000; версии EC 68000, '020, '030 и '040, а также бюджетный чип 68300»". Отчет микропроцессора . 17 апреля 1991 года.
  33. ^ «Motorola представляет процессор MC68SEC000 для встраиваемых приложений с низким энергопотреблением» (пресс-релиз). Моторола. 18 ноября 1996 г. Архивировано из оригинала 28 марта 1997 г.
  34. ^ "БЕГЕМ Q495" (PDF) . Обзор портфеля высокопроизводительных внутренних продуктов . Моторола (10). Четвертый квартал 1995 года. Архивировано из оригинала 14 сентября 2022 года . Проверено 29 июля 2022 г.
  35. ^ comp.sys.m68k Публикация в Usenet. Архивировано 14 ноября 2007 г., в Wayback Machine , 16 мая 1995 г.; также смотрите другие сообщения в теме. Объявление об окончании срока службы было сделано в конце 1994 года; Согласно стандартной практике Motorola по окончании срока службы, окончательные заказы должны были быть сделаны в 1995 году, а окончательные поставки - в 1996 году.
  36. ^ «Общее прекращение производства застежки Freescale 150 мм на фабрике Сендай» . 24 ноября 2010 года. Архивировано из оригинала 9 марта 2014 года . Проверено 9 марта 2014 г.
  37. ^ «Многопротокольный процессор сочетает в себе 68000 и RISC» . ESD: Журнал проектирования электронных систем . 1 ноября 1989 г. - через AccessMyLibrary.
  38. ^ Руд, Эндрю Л.; Клайн, Роберт С.; Брюстер, Джон А. (сентябрь 1986 г.). «UNIX и MC68000». Байт . п. 179.
  39. ^ Микроконтроллер Atmel AVR: MEGA и XMEGA в сборке и К. Хан-Вэй Хуанг. 14 января 2013 г. ISBN. 978-1285500089. Архивировано из оригинала 10 апреля 2022 года . Проверено 18 ноября 2021 г.
  40. ^ "музей ~ WICAT 150" . Old-computers.com. Архивировано из оригинала 12 октября 2012 года . Проверено 27 сентября 2013 г.
  41. ^ Руководство по техническому обслуживанию двухканального цифрового запоминающего осциллографа Philips PM3320, 250 MS/s, раздел 8.6, код заказа 4822 872 05315.
  42. ^ Руководство по обслуживанию цифрового осциллографа LeCroy 9400/9400A, раздел 1.1.1.3 Микропроцессор, август 1990 г.
  43. Хант, Стюарт (6 октября 2009 г.). «Ретроосмотр: Sega Nomad». Ретро-геймер . № 69. с. 47.
  44. ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com . Архивировано из оригинала 14 сентября 2022 года . Проверено 15 января 2016 г.
  45. ^ "openlase-mame/segaybd.c у мастера - jv4779/openlase-mame" . Гитхаб . Архивировано из оригинала 9 декабря 2021 года . Проверено 15 января 2016 г.
  46. ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com . Архивировано из оригинала 14 сентября 2022 года . Проверено 15 января 2016 г.
  47. ^ "исторический-беспорядок/cischeat.c на мастере - mamedev/исторический-беспорядок" . Гитхаб . Архивировано из оригинала 25 января 2022 года . Проверено 15 января 2016 г.
  48. ^ Форд, Уильям; Топп, Уильям Р. (1997). Язык ассемблера и системное программирование для семейства M68000 (второе изд.). Издательство Джонс и Бартлетт . стр. 149–151. ISBN 0-7637-0357-5. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
  49. ^ ab Руководство пользователя 8-/16-/32-битных микропроцессоров M68000, девятое издание (PDF) . Моторола. 1993. с. 6-2. Архивировано (PDF) из оригинала 14 апреля 2022 г. Проверено 28 февраля 2022 г.
  50. ^ «Стандартное время выполнения инструкций». старыйwww.nvg.ntnu.no . Архивировано из оригинала 9 сентября 2016 года . Проверено 4 августа 2017 г.
  51. ^ Бойз, Роберт (6 января 1996 г.). «Часто задаваемые вопросы (FAQ) по M68k», comp.sys.m68k». Архивировано из оригинала 16 июля 2012 года . Проверено 3 мая 2010 г.
  52. ^ Характеристики Soundscape Elite. из факса, архивированного 30 января 2010 г. в Wayback Machine , Группы Google, 25 апреля 1995 г.

Библиография

дальнейшее чтение

Таблицы данных и руководства
Книги

Внешние ссылки