Моторола 68000
Дизайнер | Моторола |
---|---|
Биты | 16/32-бит |
Представлено | 1979 год |
Дизайн | ЦИСК |
Ветвление | Код состояния |
Порядок байтов | Большой |
Регистры | |
|
Общая информация | |
---|---|
Запущен | 1979 |
Снято с производства | 1 июня 1996 г |
Разработано | Моторола |
Производительность | |
Макс. процессора Тактовая частота | от 4 МГц до 16,67 МГц |
Ширина данных | 16 бит |
Ширина адреса | 24 бита |
Архитектура и классификация | |
Набор инструкций | Моторола серии 68000 |
Физические характеристики | |
Транзисторы |
|
Упаковка |
|
История | |
Преемник | Моторола 68010 |
Motorola 68000 (иногда сокращается до Motorola 68k или m68k и обычно произносится как «шестьдесят восемь тысяч») [2] [3] — 16/32-битный со сложным набором команд (CISC) компьютерный микропроцессор , представленный в 1979 году компанией Motorola Semiconductor Products Sector.
В конструкции реализован 32-битный набор команд с 32-битными регистрами и 16-битной внутренней шиной данных . [4] Адресная шина имеет разрядность 24 бита и не использует сегментацию памяти , что упрощает программирование. Внутри он использует 16-битное данных арифметико-логическое устройство (АЛУ) и еще два 16-битных АЛУ, используемые в основном для адресов. [4] и имеет 16-битную внешнюю шину данных . [5] По этой причине Motorola назвала его 16/32-битным процессором.
Будучи одним из первых широко доступных процессоров с 32-битным набором команд, большим несегментированным адресным пространством и относительно высокой для того времени скоростью, 68k был популярной конструкцией в 1980-х годах. Он широко использовался в новом поколении персональных компьютеров с графическим пользовательским интерфейсом , включая Macintosh 128K , Amiga , Atari ST и X68000 . 1988 года Консоль Genesis/Mega Drive оснащена процессором 68000.
Более поздние процессоры серии Motorola 68000 , начиная с Motorola 68020 , используют полные 32-битные ALU и имеют полные 32-битные шины адреса и данных, что ускоряет 32-битные операции и обеспечивает 32-битную адресацию вместо 24-битной. адресация 68000 и 68010 или 31-битная адресация Motorola 68012 . Исходный 68k, как правило, программно совместим с остальной частью линейки, несмотря на то, что он ограничен внешней шиной шириной 16 бит. [4]
После 45 лет производства 68000 архитектура все еще используется. [6] [7]
Разработка
[ редактировать ]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 .
Вторичный источник
[ редактировать ]Несколько других компаний были второстепенными производителями 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]
версии КМОП
[ редактировать ]68HC000, первая КМОП- версия 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]
Приложения
[ редактировать ]IBM рассматривала 68000 для IBM PC, но выбрала Intel 8088 ; на базе 68000 однако IBM Instruments на короткое время продала лабораторные компьютерные системы IBM System 9000 . Набор инструкций 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 ; однопользовательские рабочие станции , такие как Hewlett-Packard Series 200 от системы HP 9000 , первые системы Apollo/Domain , Sun Microsystems от Sun-1 и Corvus Concept ; и графические терминалы , такие как Digital Equipment Corporation 100 от VAXstation и от Silicon Graphics. IRIS 1000 и 1200 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 легла в основу IBM XT/370 аппаратного эмулятора процессора System 370 .
Видеоигры
[ редактировать ]Производители видеоигр использовали 68000 в качестве основы многих аркадных игр и домашних игровых консолей : Food Fight от Atari , вышедшая в 1982 году, была одной из первых аркадных игр на базе 68000. Другие включали Sega от System 16 , Capcom от CP System и CPS-2 и SNK от Neo Geo . К концу 1980-х годов 68000 была достаточно недорогой для питания домашних игровых консолей, таких как консоль Sega Genesis , а также приставка 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 , или может быть частью периферийного чипа очень большой интеграции (VLSI), такого как многофункциональное периферийное устройство MC68901 (используется в Atari ST линейке компьютеров и 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».
Подробности набора инструкций
[ редактировать ]Стандартные режимы адресации :
- Зарегистрируйтесь напрямую
- регистр данных, например «D0»
- адресный регистр, например "A0"
- Регистрация косвенная
- Простой адрес, например (A0)
- Адрес с пост-инкрементом, например (A0)+
- Адрес с предварительным декрементом, например −(A0)
- Адрес с 16-битным смещением со знаком, например 16(A0).
- Косвенная регистрация с индексным регистром и 8-битным смещением со знаком, например 8(A0,D0) или 8(A0,A1)
- Обратите внимание, что для (A0)+ и -(A0) фактическое значение увеличения или уменьшения зависит от размера операнда: доступ к байту корректирует регистр адреса на 1, к слову - на 2, а к длинному - на 4.
- ПК (счетчик программ) относительно смещения
- Относительное 16-битное смещение со знаком, например 16(PC). Этот режим был очень полезен для позиционно-независимого кода.
- Относительное с 8-битным смещением со знаком и индексом, например 8(PC,D2)
- Абсолютная ячейка памяти
- Либо число, например «$4000», либо символическое имя, переведенное ассемблером.
- Большинство ассемблеров 68000 использовали символ «$» для шестнадцатеричного числа вместо «0x» или завершающего H.
- Существуют 16- и 32-битные версии этого режима адресации.
- Немедленный режим
- Данные, хранящиеся в инструкции, например, «#400».
- Быстрый немедленный режим
- 3-битное беззнаковое (или 8-битное со знаком с помощью moveq) со значением, хранящимся в коде операции
- В addq и subq 0 эквивалентно 8
- например, moveq #0,d0 был быстрее, чем clr.l d0 (хотя оба сделали D0 равным 0)
Плюс: доступ к регистру состояния , а в более поздних моделях и другим специальным регистрам.
Большинство инструкций имеют варианты, которые работают с 8-битными байтами, 16-битными словами и 32-битными длинными словами; Языки ассемблера используют суффиксы из точечных букв «.b», «.w» и «.l» после мнемоники инструкции для обозначения варианта.
Как и во многих процессорах того времени, время цикла некоторых инструкций варьировалось в зависимости от исходного операнда (ов). Например, для выполнения команды умножения без знака требуется (38+2n) тактов, где n равно количеству битов, установленных в операнде. [50] Чтобы создать функцию, выполняющую фиксированное количество циклов, потребовалось добавить дополнительный код после инструкции умножения. Обычно это требует дополнительных циклов для каждого бита, который не был установлен в исходном операнде умножения.
Большинство инструкций являются диадными , то есть операция имеет источник и пункт назначения, а пункт назначения изменяется. Известные инструкции:
- Арифметика: ADD, SUB, MULU (беззнаковое умножение), MULS (знаковое умножение), DIVU (беззнаковое деление), DIVS (знаковое деление), NEG (аддитивное отрицание) и CMP (сравнение, выполняемое путем вычитания аргументов и установки статуса). бит без сохранения результата)
- Двоично-десятичная арифметика: ABCD, NBCD и SBCD.
- Логика: EOR (исключающее или), AND, NOT (логическое нет), OR (включающее или).
- Сдвиг: (логический, т. е. сдвиг вправо ставит ноль в самый старший бит) LSL, LSR, ( арифметические сдвиги , т. е. расширение знака самого старшего бита) ASR, ASL, (поворот через eXtend, а не через eXtend) ROXL, ROXR, РОЛ, РОР
- Проверка битов и манипуляции в памяти или регистре данных: BSET (установлен в 1), BCLR (сброшен в 0), BCHG (инвертирован) и BTST (без изменений). Все эти инструкции сначала проверяют бит назначения и устанавливают (очищают) бит CCR Z, если бит назначения равен 0 (1) соответственно.
- Многопроцессорное управление: TAS, test-and-set , выполнял неделимую операцию шины, позволяя семафоры для синхронизации нескольких процессоров, совместно использующих одну память. использовать
- Поток управления: JMP (переход), JSR (переход к подпрограмме), BSR (переход к подпрограмме по относительному адресу), RTS (возврат из подпрограммы ), RTE (возврат из исключения , т.е. прерывания), TRAP (вызов программного исключения, аналогичного к программному прерыванию), CHK (условное программное исключение)
- Ветвь: Bcc (где «cc» указывает один из 14 тестов кодов условий в регистре состояния: равно, больше, меньше, перенос, а также большинство комбинаций и логических инверсий, доступных из регистра состояния). Остальные два возможных условия (всегда истинно и всегда ложно) имеют отдельные мнемоники команд: BRA (всегда переходить) и BSR (переход к подпрограмме).
- Декремент и переход: DBcc (где «cc» обозначало инструкции ветвления), который, при условии, что условие было ложным , уменьшал младшее слово D-регистра и, если результат не был -1 ($FFFF) , разветвленный до пункта назначения. Такое использование -1 вместо 0 в качестве завершающего значения позволило легко кодировать циклы, которые ничего не должны были делать, если счетчик изначально был равен 0, без необходимости еще одной проверки перед входом в цикл. Это также облегчило вложение DBcc.
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 и в качестве контроллера для HP JetDirect плат контроллера Ethernet середины 1990-х годов для принтеров HP LaserJet .
Пример кода
[ редактировать ] код 68000 Приведенный ниже ассемблерный предназначен для подпрограммы с именем strtolower
, который копирует строку из 8-битных символов с нулевым завершением в строку назначения, преобразуя все буквенные символы в нижний регистр.
00100000
00100000 4E56 0000
00100004 306E 0008
00100008 326E 000C
0010000C 1018
0010000E 0C40 0041
00100012 6500 000E
00100016 0C40 005A
0010001A 6200 0006
0010001E 0640 0020
00100022 12C0
00100024 66E6
00100026 4E5E
00100028 4E75
0010002A
|
; strtolower:
; Copy a null-terminated ASCII string, converting
; all alphabetic characters to lower case.
;
; Entry parameters:
; (SP+0): Source string address
; (SP+4): Target string address
org $00100000 ;Start at 00100000
strtolower public
link a6,#0 ;Set up stack frame
movea 8(a6),a0 ;A0 = src, from stack
movea 12(a6),a1 ;A1 = dst, from stack
loop move.b (a0)+,d0 ;Load D0 from (src), incr src
cmpi #'A',d0 ;If D0 < 'A',
blo copy ;skip
cmpi #'Z',d0 ;If D0 > 'Z',
bhi copy ;skip
addi #'a'-'A',d0 ;D0 = lowercase(D0)
copy move.b d0,(a1)+ ;Store D0 to (dst), incr dst
bne loop ;Repeat while D0 <> NUL
unlk a6 ;Restore stack frame
rts ;Return
end
|
Подпрограмма устанавливает кадр вызова, используя регистр A6 в качестве указателя кадра. Такое соглашение о вызовах поддерживает реентерабельный и рекурсивный код и обычно используется в таких языках, как C и C++ . Затем подпрограмма извлекает переданные ей параметры ( src
и dst
) из стека. Затем он зацикливается, считывая символ ASCII (один байт) из src
строку, проверяя, является ли это заглавным буквенным символом, и если да, то преобразуя его в символ нижнего регистра, в противном случае оставляя все как есть, а затем записывая символ в строку dst
нить. Наконец, он проверяет, был ли символ нулевым ; если нет, цикл повторяется, в противном случае восстанавливается предыдущий кадр стека (и регистр A6) и выполняется возврат. Обратите внимание, что указатели строк (регистры A0 и A1) автоматически увеличиваются на каждой итерации цикла.
Напротив, приведенный ниже код предназначен для автономной функции, даже в самой строгой версии AMS для калькуляторов серии TI-89 , он не зависит от ядра и не требует поиска значений в таблицах, файлах или библиотеках при выполнении. никаких системных вызовов, никакой обработки исключений, минимального количества используемых регистров и необходимости их сохранения. Это справедливо для исторических дат по юлианскому календарю с 1 марта по 1 год нашей эры или для григорианских дат. Менее чем за два десятка операций он вычисляет номер дня, совместимый с ISO 8601, при вызове с тремя входными данными, хранящимися в соответствующих местах:
; ; WDN, an address - for storing result d0 ; FLAG, 0 or 2 - to choose between Julian or Gregorian, respectively ; DATE, year0mda - date stamp as binary word&byte&byte in basic ISO-format ;(YEAR, year ~ YEAR=DATE due to big-endianness) ;move.l DATE,d0
move.l d0,d1
; ; Apply step 1 - Lachman's congruenceandi.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)
; ; Apply step 2 - Finding spqr as the year of the Julian leap day preceding DATEswap 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
; ; (Apply step 0 - Gregorian adjustment)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
; ; Days of the week correspond to day numbers of the week as: ; Sun=0 Mon=1 Tue=2 Wed=3 Thu=4 Fri=5 Sat=6 ;
Примечания
[ редактировать ]- ^ Гибридные конструкции такого типа уже были распространены в области миникомпьютеров. Data General Nova представляла собой 16-битную конструкцию, реализованную с использованием 4-битных ALU.
См. также
[ редактировать ]- Motorola 6800 – 8-битный предшественник
- DTACK Grounded – ранний информационный бюллетень 68000
Ссылки
[ редактировать ]- ^ Хит, Стив (1995). Микропроцессорные архитектуры и системы: RISC, CISC и DSP (второе изд.). Эльзевир. п. 13. ISBN 0-7506-2303-9 . Архивировано из оригинала 16 апреля 2021 года . Проверено 12 октября 2019 г.
- ^ Гранлунд, Торбьёрн (14 ноября 2020 г.). Библиотека арифметики множественной точности GNU (PDF) (изд. 6.2.1). Проект ГНУ . п. 13. Архивировано (PDF) из оригинала 28 июля 2022 г. Проверено 29 июля 2022 г.
- ^ Хайд, Джим; Нортон, Питер (1989). Внутри Apple Macintosh . Саймон и Шустер . п. 530. ИСБН 0-13-467622-Х . Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ Jump up to: а б с д и Старнс, Томас В. (апрель 1983 г.). «Философия дизайна Motorola MC68000» . Байт . Том. 8, нет. 4. Архивировано из оригинала 24 июля 2018 года . Проверено 19 июня 2018 г.
- ^ Справочное руководство программатора семейства Motorola M68000 (PDF) . Финикс, Аризона: Motorola . 1992. с. 1-1. ISBN 0-13-723289-6 . Архивировано (PDF) из оригинала 24 сентября 2015 г. Проверено 12 августа 2005 г.
- ^ «MC68000: недорогой 32-битный микропроцессор (включая HC000, HC001, EC000 и SEC000)» . НХП Полупроводник . Архивировано из оригинала 14 апреля 2021 года . Проверено 24 марта 2021 г.
- ^ Терли, Джим (10 августа 2020 г.). «Погружение в ностальгию по 68K. Хотите собрать новый компьютер 40-летней давности?» . Электронный инженерный журнал . Архивировано из оригинала 11 апреля 2021 года . Проверено 24 марта 2021 г.
- ^ «Motorola присоединяется к гонке микропроцессоров с 8-битной записью». Электроника . 47 (5). Нью-Йорк: МакГроу-Хилл: 29–30. 7 марта 1974 года.
- ^ Тули, Майкл (1988). Обслуживание персональных компьютеров (Второе изд.). Хайнеманн . п. 8. ISBN 0-434-91975-6 . Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ Орал 2007 , с. 4.
- ^ Кент, Аллен ; Уильямс, Джеймс Г. (1991). Энциклопедия микрокомпьютеров - эволюция компьютеризированного управления техническим обслуживанием к генерации случайных чисел . Том. 7. Марсель Деккер . п. 336. ИСБН 0-8247-2706-1 . Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ Jump up to: а б с Орал 2007 , с. 5.
- ^ Jump up to: а б Орал 2007 , с. 9.
- ^ Jump up to: а б с Орал 2007 , с. 6.
- ^ Орал 2007 , с. 8.
- ^ Орал 2007 , с. 7.
- ^ Jump up to: а б Андерссон, Свен (24 марта 2014 г.). «Микропроцессорная (Р)эволюция» . ЭЭ Таймс . п. 2. Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ Тули, Майкл (1992). Обслуживание персональных компьютеров (Третье изд.). Ньюнес . стр. 264–265. ISBN 0-7506-0374-7 . Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ Орал 2007 , с. 10.
- ^ Устный 2007 , стр. 9–11.
- ^ «Данные проектирования микрокомпьютерной системы M6800» (PDF) . Моторола . 1976. с. 21. Архивировано (PDF) из оригинала 18 апреля 2023 г. Проверено 17 апреля 2023 г.
- ^ Стритер и Гюнтер (1979). «Микросистемы — микропроцессорная архитектура для меняющегося мира: Motorola 68000» . Компьютер . 12 (2): 43–52. дои : 10.1109/MC.1979.1658617 . S2CID 15893310 . Проверено 17 апреля 2023 г.
- ^ Орал 2007 , с. 11.
- ^ Кен Полссон. «Хронология микропроцессоров» . Processortimeline.info. Архивировано из оригинала 19 августа 2012 года . Проверено 27 сентября 2013 г.
- ^ Jump up to: а б с DTACK GROUNDED, Журнал простых систем 68000/16081 , март 1984 г., стр. 9, заархивировано из оригинала 10 марта 2016 года , получено 31 октября 2011 года .
- ^ «Motorola была соперником, которого нужно было победить, и ее 68000 — ее самый большой успех» . текдипс . Архивировано из оригинала 13 сентября 2022 года . Проверено 13 сентября 2022 г.
- ^ Jump up to: а б Орал 2007 , с. 12.
- ^ Файнберг Игорь; Лу, Хуэй-Лань; Скулер, Дор (2016). Облачные вычисления: бизнес-тенденции и технологии . Уайли . п. 53. ИСБН 978-1-118-50121-4 . Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ «FD1094 — Sega Retro» . segaretro.org . 19 октября 2017. Архивировано из оригинала 28 сентября 2013 года . Проверено 27 октября 2015 г.
- ^ «Информация о компании». Архивировано 14 ноября 2007 г. в Wayback Machine , The New York Times, 21 сентября 1985 г., доступно на TimesSelect (подписка).
- ^ «68HC001 устарел 68008». Отчет микропроцессора . 20 июня 1990 года.
- ^ «Motorola модернизирует семейство 68000; версии EC 68000, '020, '030 и '040, а также младшие чипы 68300» . Отчет о микропроцессоре . 17 апреля 1991 г.
- ^ «Motorola представляет процессор MC68SEC000 для встраиваемых приложений с низким энергопотреблением» (пресс-релиз). Моторола. 18 ноября 1996 г. Архивировано из оригинала 28 марта 1997 г.
- ^ «БЕГЕМ Q495» (PDF) . Обзор портфеля высокопроизводительных внутренних продуктов (10). Моторола . Четвертый квартал 1995 года. Архивировано из оригинала 14 сентября 2022 года . Проверено 29 июля 2022 г.
- ^ comp.sys.m68k Публикация в Usenet. Архивировано 14 ноября 2007 г., в Wayback Machine , 16 мая 1995 г.; также смотрите другие сообщения в теме. Объявление об окончании срока службы было сделано в конце 1994 года; Согласно стандартной практике Motorola по окончании срока службы, окончательные заказы должны были быть сделаны в 1995 году, а окончательные поставки - в 1996 году.
- ^ «Закрытие Freescale 150 мм Sendai Fab — общее прекращение производства продукции» . 24 ноября 2010 года. Архивировано из оригинала 9 марта 2014 года . Проверено 9 марта 2014 г.
- ^ «Многопротокольный процессор сочетает в себе 68000 и RISC» . ESD: Журнал проектирования электронных систем . 1 ноября 1989 г. - через AccessMyLibrary.
- ^ Руд, Эндрю Л.; Клайн, Роберт С.; Брюстер, Джон А. (сентябрь 1986 г.). «UNIX и MC68000» . Байт . п. 179.
- ^ Микроконтроллер Atmel AVR: MEGA и XMEGA в ассемблере и C. Хан-Вэй Хуан. 14 января 2013 г. ISBN. 978-1285500089 . Архивировано из оригинала 10 апреля 2022 года . Проверено 18 ноября 2021 г.
- ^ «музей ~ WICAT 150» . Old-computers.com. Архивировано из оригинала 12 октября 2012 года . Проверено 27 сентября 2013 г.
- ^ Руководство по техническому обслуживанию двухканального цифрового запоминающего осциллографа Philips PM3320, 250 MS/s, раздел 8.6, код заказа 4822 872 05315.
- ^ Руководство по обслуживанию цифрового осциллографа LeCroy 9400/9400A, раздел 1.1.1.3 Микропроцессор, август 1990 г.
- ^ Хант, Стюарт (6 октября 2009 г.). «Ретроосмотр: Sega Nomad». Ретро-геймер . № 69. с. 47.
- ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com . Архивировано из оригинала 14 сентября 2022 года . Проверено 15 января 2016 г.
- ^ «openlase-mame/segaybd.c at master — jv4779/openlase-mame» . Гитхаб . Архивировано из оригинала 9 декабря 2021 года . Проверено 15 января 2016 г.
- ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com . Архивировано из оригинала 14 сентября 2022 года . Проверено 15 января 2016 г.
- ^ «исторический-беспорядок/cischheat.c на мастере — mamedev/исторический-беспорядок» . Гитхаб . Архивировано из оригинала 25 января 2022 года . Проверено 15 января 2016 г.
- ^ Форд, Уильям; Топп, Уильям Р. (1997). Язык ассемблера и системное программирование для семейства M68000 (второе изд.). Издательство Джонс и Бартлетт . стр. 149–151. ISBN 0-7637-0357-5 . Архивировано из оригинала 29 июля 2022 года . Проверено 29 июля 2022 г.
- ^ Jump up to: а б Руководство пользователя 8-/16-/32-битных микропроцессоров M68000, девятое издание (PDF) . Моторола. 1993. с. 6-2. Архивировано (PDF) из оригинала 14 апреля 2022 г. Проверено 28 февраля 2022 г.
- ^ «Стандартное время выполнения инструкций» . старыйwww.nvg.ntnu.no . Архивировано из оригинала 9 сентября 2016 года . Проверено 4 августа 2017 г.
- ^ Мальчики, Роберт (6 января 1996 г.). «Часто задаваемые вопросы по M68k», comp.sys.m68k» . Архивировано из оригинала 16 июля 2012 года . Проверено 3 мая 2010 г.
- ^ Характеристики Soundscape Elite. из факса, архивированного 30 января 2010 г. в Wayback Machine , Группы Google, 25 апреля 1995 г.
Библиография
[ редактировать ]- «Группа устной истории разработки и продвижения Motorola 68000» (PDF) (интервью). Беседовал Дэйв Хаус. 23 июля 2007 г.
Дальнейшее чтение
[ редактировать ]- Таблицы данных и руководства
- Руководство пользователя микропроцессора M68000 (ред. 8) ; Моторола (Freescale); 224 страницы; 1994.
- Руководство пользователя микропроцессоров M68000 (9-е издание) ; НХП; 189 страниц; 1993.
- Дополнение к руководству пользователя M68000 (ред. 0) ; Моторола (Freescale); 26 страниц; 1997.
- Справочное руководство программатора семейства M68000 ; Моторола (Freescale); 646 страниц; 1991 год; ISBN 978-0137232895 .
- Книги
- 68000, 68010, 68020 Праймер ; 1-е изд; Стэн Келли-Бутл и Боб Фаулер; Говард Сэмс и компания; 370 страниц; 1985 год; ISBN 978-0672224058 . (архив)
- 68000 Программирование на языке ассемблера/включает 68010 и 68020 ; 2-е изд.; Лэнс А. Левенталь, Дуг Хокинс, Джерри Кейн, Уильям Д. Крамер; Осборн/МакГроу-Хилл; 484 страницы; 1986 год; ISBN 978-0078812323 .
- Освоение микропроцессора 68000 ; 1-е изд; Филипп Робинсон; Вкладки «Книги»; 244 страницы; 1985 год; ISBN 978-0830608867 . (архив)
- Карманное руководство по языку ассемблера для серии 68000 ; 1-е изд; Роберт Эрскин; Питман Паблишинг; 70 страниц; 1984 год; ISBN 978-0273021520 . (архив)
- Программирование машинного кода 68000 (процессоры 68000, 68008, 68010 и 68020); 1-е изд; Дэвид Барроу; Профессиональные и технические книги Коллинза; 234 страницы; 1985 год; ISBN 0-00-383163-9 .
- Изображения
Внешние ссылки
[ редактировать ]- Часто задаваемые вопросы о comp.sys.m68k
- Описания инструкций ассемблера
- 68000 изображений и описаний на cpu-collection.de
- EASy68K , ассемблер 68k с открытым исходным кодом для Windows.
- Ресурс 68k и m88k - с информацией о платах 68k на базе VME от Motorola.