Seria Motorola 68000 - Motorola 68000 series

Seria Motorola 68000
Projektant Motorola
Bity 32-bitowy
Wprowadzono 1979 ; 42 lata temu ( 1979 )
Projekt CISC
Rozgałęzienia Kod stanu
Endianowość Duża
Rejestry

Seria Motorola 68000 (znana również jako 680x0 , m68000 , m68k lub 68k ) to rodzina 32-bitowych mikroprocesorów z zestawem instrukcji złożonych (CISC) . W 1980 i na początku 1990, były popularne w komputerach osobistych i stacji roboczych i były głównymi konkurentami Intel „s x86 mikroprocesorów. Były one najbardziej znane jako procesory używane we wczesnych Apple Macintosh , Sharp X68000 , Commodore Amiga , Sinclair QL , Atari ST , Sega Genesis (Mega Drive), Capcom System I (Arcade), AT&T UnixPC , Tandy Model 16/16B/6000 , Sun Microsystems Sun-1 , Sun-2 i Sun-3 , NeXT Computer , kalkulatory Texas Instruments TI-89 / TI-92 , Palm Pilot (wszystkie modele z systemem Palm OS 4 .x lub starszej) oraz prom kosmiczny . Chociaż żadne nowoczesne komputery stacjonarne nie są oparte na procesorach z serii 680x0, procesory pochodne są nadal szeroko stosowane w systemach wbudowanych .

Motorola zaprzestała opracowywania architektury serii 680x0 w 1994 roku, zastępując ją architekturą PowerPC RISC , która została opracowana we współpracy z IBM i Apple Computer w ramach sojuszu AIM .

Członkowie rodziny

Historia ulepszeń

68010 :

  • Obsługa pamięci wirtualnej (instrukcje dotyczące ponownego uruchomienia)
  • 'tryb pętli' dla szybszych prymitywów biblioteki łańcuchów i pamięci
  • instrukcja mnożenia używa 14 taktów mniej

68020 :

68030 :

68040 :

68060 :

  • Pamięć podręczna instrukcji i danych po 8 KB każda
  • 10-stopniowy rurociąg
  • Jednostka mnożenia liczby całkowitej w dwóch cyklach
  • Przewidywanie oddziałów
  • Podwójny potok instrukcji
  • Instrukcje w jednostce generowania adresu (AGU), a tym samym dostarczają wynik dwa cykle przed ALU
  • Niski koszt LC = brak FPU
  • Niski koszt EC = Brak FPU lub MMU

Mapa funkcji

Rok procesor Pakiet Częstotliwość (maks.) [w MHz] Bity magistrali adresowej MMU FPU
1979 68000 64-stykowa obudowa dual-in-line (DIP) , 68-stykowa LCC , 68- stykowa siatka (PGA) 8–20 24 - -
1982 68010 64-pinowe DIP , 68-pinowe PLCC , 68-pinowe PGA 8-16,67 24 68451 -
1984 68020 114-stykowe PGA 12,5–33,33 32 68851 68881
- 68 WE 020 100-stykowy poczwórny pakiet płaski (QFP) 16,7-25 24 - -
1987 68030 132-stykowe QFP (maks. 33 MHz ), 128-stykowe PGA 16-50 32 MMU 68881
68 WE 030 132-stykowe QFP , 128-stykowe PGA 25 32 - 68881
1991 68040 179-stykowy PGA , 184-stykowy QFP 20-40 32 MMU FPU
68 LC 040 PGA , 184-stykowe złącze QFP 20–33 32 MMU -
68 WE 040 20–33 32 - -
1994 68060 206-pinowe PGA 50–75 32 MMU FPU
68 LC 060 206-stykowy PGA , 208-stykowy QFP 50–75 32 MMU -
68 WE 060 206-pinowe PGA 50–75 32 - -

Główne zastosowania

SEGA Genesis stosowany 68000 taktowaniu 7,67 MHz jako głównego CPU.

Linia procesorów 680x0 była używana w różnych systemach, od nowoczesnych, wysokiej klasy kalkulatorów Texas Instruments ( linie TI-89 , TI-92 i Voyage 200 ) do wszystkich członków serii Palm Pilot, na których działa Palm OS 1.x do 4.x (OS 5.x jest oparty na ARM ), a nawet wersje odporne na promieniowanie w krytycznych systemach sterowania promu kosmicznego .

Jednak rodzina procesorów 680x0 stała się najbardziej znana jako procesory zasilające zaawansowane komputery stacjonarne i konsole do gier wideo, takie jak Apple Macintosh , Commodore Amiga , Sinclair QL , Atari ST , SNK NG AES / Neo Geo CD , Atari Jaguar , Commodore CDTV i kilka innych. 680x0 były również wybieranymi procesorami w latach 80. dla stacji roboczych i serwerów z systemem Unix , takich jak AT&T UNIX PC , Tandy's Model 16/16B/6000 , Sun-1 firmy Sun Microsystems , Sun-2 , Sun-3 , NeXT Computer , Silicon Graphics (SGI) i wiele innych. Istniała wersja 68000 CP/M o nazwie CP/M-68K, która początkowo miała być systemem operacyjnym Atari ST, ale Atari wybrało Atari TOS . Dostępnych było wiele portów CP/M-68K specyficznych dla danego systemu, na przykład firma TriSoft zaoferowała port CP/M-68K dla modelu Tandy 16/16B/6000.

Ponadto, a może przede wszystkim, kilka pierwszych wersji interpreterów PostScript firmy Adobe było opartych na 68000. 68000 w Apple LaserWriter i LaserWriter Plus był taktowany szybciej niż wersja używana wówczas w komputerach Macintosh. Szybki 68030 w późniejszych interpreterach PostScript, w tym w standardowej rozdzielczości LaserWriter IIntx, IIf i IIg (również 300 dpi), seria LaserWriter Pro 600 o wyższej rozdzielczości (zwykle 600 dpi, ale ograniczona do 300 dpi przy minimalnej zainstalowanej pamięci RAM) i bardzo wysoka rozdzielczość naświetlarek Linotronic , 200PS (1500+ dpi) i 300PS (2500+ dpi). Następnie Adobe generalnie preferował RISC dla swojego procesora, ponieważ jego konkurenci, ze swoimi klonami PostScript, już korzystali z RISC, często AMD z serii 29000. Wczesne interpretery Adobe PostScript oparte na 68000 i ich sprzęt zostały nazwane od amerykańskich rakiet i pocisków z czasów zimnej wojny : Atlas, Redstone itp.

Obecnie systemy te są albo typu end-of-line (w przypadku Atari), albo korzystają z różnych procesorów (w przypadku Macintosh, Amiga, Sun i SGI). Ponieważ platformy te miały swój szczytowy udział w rynku w latach 80., ich pierwotni producenci albo nie obsługują już systemu operacyjnego dla tego sprzętu, albo nie działają. Jednak systemy operacyjne Linux , NetBSD i OpenBSD wciąż obsługują procesory 68000.

Procesory 68000 były również używane w konsolach Sega Genesis (Mega Drive) i SNK Neo Geo jako główny procesor. Inne konsole, takie jak Sega Saturn, używały 68000 do przetwarzania dźwięku i innych zadań I/O, podczas gdy Atari Jaguar zawierał 68000, który był przeznaczony do podstawowego sterowania systemem i przetwarzania danych wejściowych, ale ze względu na niezwykły asortyment heterogenicznych procesorów Jaguara również często używany do uruchamiania logiki gry. Wiele płyt arkadowych używało również procesorów 68000, w tym płyt Capcom, SNK i Sega.

Mikrokontrolery wywodzące się z rodziny 68000 są wykorzystywane w ogromnej różnorodności zastosowań. Na przykład mikrokontrolery CPU32 i ColdFire zostały wyprodukowane w milionach jako sterowniki silników samochodowych.

Wiele zastrzeżonych systemów edycji wideo używało procesorów 68000. W tej kategorii możemy nazwać MacroSystem Casablanca, który był czarną skrzynką z łatwym w obsłudze interfejsem graficznym (1997). Przeznaczony był dla rynku amatorskich i hobbystycznych kamerzystów. Warto również zauważyć swoje wcześniejsze, większe i bardziej profesjonalny odpowiednika o nazwie „DraCo” (1995), przełomowy Quantel paintbox serie wcześnie opartej systemie 24-bitowym farb i efektów został pierwotnie wydany w 1981 roku i podczas jego trwania jest używany prawie cała gama procesorów z rodziny 68000, z jedynym wyjątkiem 68060, który nigdy nie został zaimplementowany w jego konstrukcji. Inny konkurent na arenie wideo, system Abekas 8150 DVE, używał 680EC30, a Trinity Play, później przemianowany na Globecaster, używa kilku 68030. Bosch FGS-4000/4500 Video Graphics System wyprodukowany przez Robert Bosch Corporation, później BTS (1983), wykorzystywał 68000 jako główny procesor; zmusiło to kilku innych do wykonania animacji 3D na komputerze, który mógł z łatwością zastosować cieniowanie Gouraud i Phong. Uruchomił zmodyfikowany system operacyjny Motorola Versados.

Architektura

Rejestry serii Motorola 68000
3 1 ... 2 3 ... 1 5 ... 0 7 ... 0 0 (pozycja bitowa)
Rejestry danych
D0 Dane 0
D1 Dane 1
D2 Dane 2
D3 Dane 3
D4 Dane 4
D5 Dane 5
D6 Dane 6
D7 Dane 7
Rejestry adresowe
A0 Adres 0
A1 Adres 1
A2 adres 2
A3 Adres 3
A4 Adres 4
A5 Adres 5
A6 Adres 6
Wskaźniki stosu
A7 / USP Wskaźnik stosu (użytkownik)
A7' / SSP Wskaźnik stosu (nadzorca)
Licznik programu
PC Licznik programu
Rejestr statusu
  1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (pozycja bitowa)
  T S m 0 i 0 0 0 x n Z V C SR

Osoby, które są zaznajomione z PDP-11 lub VAX, zwykle czują się komfortowo z serią 68000. Z wyjątkiem podziału rejestrów ogólnego przeznaczenia na wyspecjalizowane rejestry danych i adresów, architektura 68000 jest pod wieloma względami 32-bitowym PDP-11.

Miał on bardziej ortogonalny zestaw instrukcji niż w wielu procesorach, które pojawiły się przed (np. 8080) i później (np. x86). Oznacza to, że zazwyczaj można było swobodnie łączyć operacje z operandami, zamiast ograniczać się do używania pewnych trybów adresowania z określonymi instrukcjami. Ta właściwość sprawiała, że ​​programowanie było stosunkowo łatwe dla ludzi, a także ułatwiało pisanie generatorów kodu dla kompilatorów.

Seria 68000 ma osiem 32-bitowych rejestrów danych ogólnego przeznaczenia (D0-D7) i osiem rejestrów adresowych (A0-A7). Ostatnim rejestrem adresowym jest wskaźnik stosu , a asemblery akceptują etykietę SP jako równoważną A7.

Dodatkowo posiada 16-bitowy rejestr stanu. Górne 8 bitów to bajt systemowy, a jego modyfikacja jest uprzywilejowana. Mniejsze 8 bitów to bajt użytkownika, znany również jako rejestr kodu warunku (CCR), a jego modyfikacja nie jest uprzywilejowana. Operacje porównawcze, arytmetyczne i logiczne 68000 modyfikują kody warunków w celu zapisania ich wyników do wykorzystania w późniejszych skokach warunkowych. Bity kodu warunku to „zero” (Z), „carry” (C), „przepełnienie” (V), „extend” (X) i „ujemne” (N). Na szczególną uwagę zasługuje flaga „extend” (X), ponieważ jest oddzielona od flagi przeniesienia . Pozwala to na oddzielenie dodatkowego bitu z operacji arytmetycznych, logicznych i przesunięcia od przeniesienia w celu zapewnienia przepływu sterowania i łączenia.

Chociaż 68000 miał „tryb nadzorcy”, nie spełniał wymagań wirtualizacji Popka i Goldberga z powodu pojedynczej instrukcji „MOVE from SR”, która kopiuje rejestr statusu do innego rejestru, będąc nieuprzywilejowanym, ale wrażliwym. W Motoroli 68010 i nowszych stało się to uprzywilejowane, aby lepiej obsługiwać oprogramowanie do wirtualizacji.

Zestaw instrukcji serii 68000 można podzielić na następujące szerokie kategorie:

MC68020 dodano kilka nowych instrukcji, które zawierają pewne ulepszenia drobne i rozszerzenia do stanu przełożonego kilka wskazówek dla zarządzania oprogramowaniem systemu wieloprocesorowe (które zostały usunięte w 68060), niektóre wsparcie dla języków wysokiego poziomu, które nie przyzwyczaić się znacznie (i został usunięty z przyszłych procesorów 680x0), większe instrukcje mnożenia (32×32→64 bity) i dzielenia (64÷32→32 bity iloraz i 32 bity reszta) oraz manipulacje polami bitowymi.

Standardowe tryby adresowania to:

  • Zarejestruj się bezpośrednio
    • rejestr danych, np. „D0”
    • rejestr adresowy, np. „A0”
  • Zarejestruj się pośrednio
    • Prosty adres, np. (A0)
    • Adres z post-inkrementacją, np. (A0)+
    • Adres z pre-dekrementacją, np. −(A0)
    • Adres z 16-bitowym podpisanym offsetem, np. 16(A0)
    • Rejestr pośredni z rejestrem indeksowym i 8-bitowym przesunięciem ze znakiem np. 8(A0,D0) lub 8(A0,A1)
    Zauważ, że dla (A0)+ i -(A0) rzeczywista wartość przyrostu lub dekrementacji jest zależna od rozmiaru operandu: dostęp do bajtów dostosowuje rejestr adresu o 1, słowo o 2, a long o 4.
  • PC (licznik programu) w stosunku do przesunięcia
    • Względny 16-bitowy offset ze znakiem, np. 16(PC). Ten tryb był bardzo przydatny w przypadku kodu niezależnego od pozycji.
    • Względny z 8-bitowym przesunięciem ze znakiem z indeksem, np. 8(PC,D2)
  • Bezwzględna lokalizacja pamięci
    • Albo liczba, np. „$4000”, albo symboliczna nazwa przetłumaczona przez asembler
    • Większość asemblerów używa symbolu "$" dla szesnastkowego , zamiast "0x" lub końcowego H.
    • Istniały 16- i 32-bitowe wersje tego trybu adresowania
  • Tryb natychmiastowy
    • Dane zapisane w instrukcji, np. „#400”
  • Szybki tryb natychmiastowy
    • 3-bitowy bez znaku (lub 8-bitowy ze znakiem moveq) z wartością przechowywaną w kodzie opcode
    • W addq i subq 0 jest równoważne 8
    • np. moveq #0,d0 był szybszy niż clr.l d0 (chociaż oba uczyniły D0 równym 0)

Plus: dostęp do rejestru statusu , a w nowszych modelach do innych rejestrów specjalnych.

Motorola 68020 dodała tryb adresowania skalowanego indeksowania i dodała kolejny poziom niebezpośredniości do wielu istniejących wcześniej trybów.

Większość instrukcji ma przyrostki kropkowo-literowe, umożliwiające wykonywanie operacji na 8-bitowych bajtach („.b”), 16-bitowych słowach („w”) i 32-bitowych długościach („l”).

Większość instrukcji ma charakter dwudniowy , co oznacza, że ​​operacja ma źródło i cel, a cel jest zmieniany. Warte uwagi instrukcje to:

  • Arytmetyka: ADD, SUB, MULU (mnożenie bez znaku), MULS (mnożenie ze znakiem), DIVU, DIVS, NEG (negacja addytywna) i CMP (rodzaj porównania wykonywanego przez odjęcie argumentów i ustawienie bitów stanu, ale bez przechowywania wynik)
  • Arytmetyka dziesiętna kodowana binarnie: ABCD, NBCD i SBCD
  • Logika: EOR (wyłączne lub), AND, NOT (logiczne nie), OR (włącznie lub)
  • Przesunięcia: (logiczne, tj. przesunięcie w prawo ustawia zero w najbardziej znaczącym bicie) LSL, LSR, ( przesunięcia arytmetyczne , tj. przedłużenie znaku na najbardziej znaczący bit) ASR, ASL, (obraca się przez eXtend i nie) ROXL, ROXR, ROL, ROR
  • Test i manipulacja bitami w pamięci lub rejestrze danych: BSET (ustawiony na 1), BCLR (wyzerować), BCHG (odwrócony) i BTST (bez zmian). Wszystkie te instrukcje najpierw testują bit docelowy i ustawiają (czyszczą) bit CCR Z, jeśli bit docelowy wynosi odpowiednio 0 (1).
  • Sterowanie wieloprocesorowe : TAS, test-and-set , wykonuje niepodzielną operację magistrali, umożliwiając użycie semaforów do synchronizacji kilku procesorów współdzielących jedną pamięć
  • Przebieg sterowania: JMP (skok), JSR (skok do podprogramu), BSR (względny skok adresu do podprogramu), RTS (powrót z podprogramu ), RTE (powrót z wyjątku , czyli przerwania), TRAP (wyzwolenie wyjątku oprogramowania podobnego przerwania oprogramowania), CHK (warunkowy wyjątek oprogramowania)
  • Gałąź: Bcc (gdzie "cc" określa jeden z 14 testów kodów warunku w rejestrze statusu: równy, większy niż, mniejszy niż, carry oraz większość kombinacji i inwersji logicznych, dostępnych z rejestru statusu). Pozostałe dwa możliwe warunki (zawsze prawda i zawsze fałsz) mają oddzielne mnemoniki instrukcji, BRA (zawsze odgałęzienie) i BSR (odgałęzienie do podprogramu).
  • Dekrementacja i rozgałęzienie: DBcc (gdzie "cc" oznaczało instrukcje rozgałęzienia), które, pod warunkiem, że warunek był fałszywy , zmniejszało młodsze słowo rejestru D, a jeśli wynik nie był -1 ($FFFF) , rozgałęziony do miejsca docelowego. To użycie -1 zamiast 0 jako wartości końcowej pozwoliło na łatwe kodowanie pętli, które nie musiały nic robić, jeśli liczba wynosiła 0 na początku, bez potrzeby ponownego sprawdzania przed wejściem do pętli. Ułatwiło to również zagnieżdżanie DBcc.

68050 i 68070

Nie było 68050, choć w pewnym momencie był to projekt wewnątrz Motoroli. Publikacje o numerach nieparzystych zawsze były reakcjami na problemy poruszone w poprzedniej części parzystej; stąd ogólnie oczekiwano, że 68050 zmniejszyłby zużycie energii 68040 (a tym samym rozpraszanie ciepła), poprawił obsługę wyjątków w FPU, wykorzystał mniejszy rozmiar funkcji i zoptymalizował mikrokod zgodnie z użyciem instrukcji w programie. Wiele z tych optymalizacji zostało zawartych w 68060 i było częścią jego celów projektowych. Z wielu powodów, prawdopodobnie dlatego, że 68060 był w fazie rozwoju, że Intel 80486 nie rozwijał się tak szybko, jak zakładała Motorola, i że 68060 był wymagającym projektem, 68050 został anulowany na wczesnym etapie prac.

Nie ma również wersji 68060 , ponieważ Motorola była w trakcie odchodzenia od linii procesorów 68000 i 88k do nowego biznesu PowerPC , więc 68070 nigdy nie został opracowany. Gdyby tak było, byłby to poprawiony 68060, prawdopodobnie z lepszym FPU (potokowanie było szeroko spekulowane w Usenecie).

Motorola używała głównie liczb parzystych do głównych poprawek rdzenia procesora, takich jak 68000, 68020, 68040 i 68060. 68010 był poprawioną wersją 68000 z niewielkimi modyfikacjami rdzenia, podobnie 68030 był poprawionym 68020 z kilkoma mocniejszymi żadne z nich nie są na tyle znaczące, aby można je było zaklasyfikować jako poważne ulepszenie rdzenia.

Był procesor o oznaczeniu 68070 , który był licencjonowaną i nieco wolniejszą wersją 16/32-bitowego 68000 z podstawowym kontrolerem DMA, hostem I²C i wbudowanym portem szeregowym. Ten 68070 był używany jako główny procesor w Philips CD-i . Ten procesor został jednak wyprodukowany przez firmę Philips i oficjalnie nie wchodził w skład oferty 680x0 Motoroli.

Ostatnie pokolenie

68060 czwartej generacji zapewniał funkcjonalność równoważną (choć nie kompatybilność architektury zestawu instrukcji) z większością funkcji mikroarchitektury Intel P5 .

Inne warianty

Komputery typu Personal Computers XT/370 i AT/370 kompatybilne z IBM oparte na PC zawierały dwa zmodyfikowane procesory Motorola 68000 z niestandardowym mikrokodem do emulacji instrukcji mainframe S/370 .

Po upadku głównych procesorów 68000, rodzina 68000 była w pewnym stopniu wykorzystywana w wersjach mikrokontrolerów i wbudowanych mikroprocesorów. Te chipy obejmują te wymienione powyżej w sekcji "inne", tj. CPU32 (aka 68330 ), ColdFire , QUICC i DragonBall .

Wraz z pojawieniem się technologii FPGA międzynarodowy zespół projektantów sprzętu odtworzył 68000 z wieloma ulepszeniami jako rdzeń FPGA. Ich rdzeń znany jest jako 68080 i jest używany w akceleratorach amigowych marki Vampire.

Magnetic Scrolls używały podzbioru instrukcji z 68000 jako podstawy dla maszyny wirtualnej w swoich tekstowych przygodach .

Zawodnicy

Pulpit

W 1980 i na początku 1990, kiedy 68000 był powszechnie stosowany w komputerach stacjonarnych, to konkurowały głównie przeciwko Intel „s x86 architekturze stosowanej w kompatybilnych z IBM PC . Procesory 68000 pierwszej generacji konkurowały głównie z 16-bitowymi procesorami 8086 , 8088 i 80286 . Generacja 2 rywalizowała z 80386 (pierwszym 32-bitowym procesorem x86), a generacja 3 z 80486 . Czwarta generacja rywalizowała z linią P5 Pentium , ale nie była tak szeroko stosowana jak jej poprzednicy, ponieważ znaczna część starego rynku 68000 była albo nieistniejąca, albo prawie nieistniejąca (jak w przypadku Atari i NeXT) lub przeszła na nowszy architektury ( PowerPC dla Macintosh i Amigi , SPARC dla Sun i MIPS dla Silicon Graphics (SGI)).

Osadzony

Istnieją dziesiątki architektur procesorów, które sprawdzają się w systemach wbudowanych . Niektóre z nich to mikrokontrolery, które są znacznie prostsze, mniejsze i tańsze niż 68000, podczas gdy inne są stosunkowo wyrafinowane i mogą obsługiwać złożone oprogramowanie. Wersje wbudowane 68000 często konkurują z architekturami procesorów opartymi na PowerPC , ARM , MIPS , SuperH i innych.

Bibliografia

Bibliografia

  • Howe, Dennis, wyd. (1983). Darmowy słownik informatyki on-line . Imperial College w Londynie. http://foldoc.org . Pobrano 4 września 2007.

Zewnętrzne linki