MC68000

アメリカのモトローラが開発・販売した16ビットCPU

MC6800068000NXPMPUMPU使68KMPU680x0LSIM68000MCXCM68000Apple Macintosh  Apollo/DomainNeXTcubeHP 9000Sun-3NEWSNEC EWS4800X68000DCL U[1][2]Mac OSDomain/OSNeXTSTEPHP-UXSunOSCP/M-68KOS-9/68000NetBSD
MC68000
MC68000P10
生産時期 1980年から1996年まで
生産者 モトローラ
CPU周波数 4 MHz から 20 MHz
命令セット M68000(32ビット
パッケージ 64ピンDIP
テンプレートを表示

歴史

編集

68000 1976 MACSS (Motorola Advanced Computer System on Silicon) 6800680068000CPU322416[3]MACSSPDP-11VAX

"68000" 680068,00070,000

816 19731975IMP-16PACE使TMS9900使197780866800016680008086290006800070000

6800048MHz680001MIPS

68000808680808086680002416MB80868080: 16#x861642064K32x86198680386

680008086使

MC680003.5μmHMOS197919804, 6, 8MHz10MHz198112.5MHz1982HMOS16.67MHz (12F) 1980

1982 MC68008  MC68000 82448DIP2052PLCC22MC68012 31

68HC0001985HCMOS MC68HC000HD68HC00068HC0008MHz20MHzCMOS251.35MC68HC0008MHz0.1320MHz0.38CMOSHMOS

1990MC68HC001[4]68HC0001682680088使
 
HD68000P8

HMOS68000 (HD68000)Mostek (MK68000) (R68000) (SCN68000)Thomson/SGS-Thomson (EF68000, TS68000) (1988TMP68000TLCS-68000) CMOS68HC000 (TMP68HC000)SCC68070 SCC68070

680001989MC6830268000CPU使CMOS68HC000868001991MC68EC000[5]

68EC000使MC68306MC68307MC68322 "Bandit" MC68356MC68328 DragonBall683XXCPU32使

68EC000683XX68EC000使1996MC68SEC000[6]

1996HMOSMC68000MC68008[7]199419951996MC68HC000MC68HC001MC68EC000MC68SEC000MC68302MC68306DragonBall68000680x0CPU32ColdFire

MC680203232CPUMC68000MC68020MC68030

RISCPowerPCMacintoshMC68LC040

RISCColdFire68000使

利用例

編集
 
Block-II型スペースシャトルメインエンジンのコントローラーに使用されている68000。

680001980使

 : WICAT 150 TRS-80 Model 16Fortune 32:16

 :  HP 9000 Series 200 Sun-1

 : DEC VAXstation 100 IRIS 1000  1200

UNIXMMU68000使1980 UNIX使DECPDP-11VAXC

198368000 (PC)使Apple ComputerLisaMacintosh使 Amiga Atari ST X68000 PalmTop1990使68008使QLMB-S168008

680001981ImagenImprint-1068000CPUHP LaserJet8MHz68000使198468000使使AppleLaserWriter680001980使1990使

6800068000CPU (PLC) 寿20使2168000使

68000使1983Food Fight68000使使 19801990CPU68000使16CPS-1CPS-2SNK680002使3使[8]1990CPU使68000使

68000CPU使CD[8]68EC000使Atari Jaguar使

Wave BLASTERENSONIQENSONIQ SoundScape DBPCMIDI680001990

68000使使68000TI-89TI-92使68EC000使MC68SEC000使

CPU32ColdFire使 使 DragonBallPalm PilotHandspring VisorPDA使ARM68302683603ComAscendMarconi使

アーキテクチャ

編集
M68000ファミリ
開発者 モトローラ
ビット数 32ビット
デザイン CISC
エンコード 可変多倍長
エンディアン Big
拡張 F系列命令
オープン プロプライエタリ
レジスタ
汎用 D0-D7=32、D0-D8[要出典]=32
汎用(データ8本、
アドレス8本)、
ステータスレジスタ

概要

編集

328328CISC8MC6800

MC68000DECVAX

24164 - 16MHz68,000N-MOS64DIPPGA

816M68000M68008

MC6800016CPU3232

324GB4GB使824使16MB

32

x86I/OI/OMC68000I/OI/O

ファンクションコード

編集
ファンクションコードと参照の分類[9]
FC2 FC1 FC0 参照の分類
0 0 0 未定義
0 0 1 ユーザ・データ
0 1 0 ユーザ・プログラム
0 1 1 未定義
1 0 0 未定義
1 0 1 スーパーバイザ・データ
1 1 0 スーパーバイザ・プログラム
1 1 1 割り込み応答

MC68000[9]MC68000FC0 - FC2432bitFC132[10]

MC68000[] (OS) 

スタック

編集

スタックがOS用とアプリケーション用に二つあり[11]、特権モード(スーパバイザモード)と、ユーザモードの2つの特権レベルを持つなど、当初よりUNIXに代表される高度なメモリ管理機能やマルチタスク機能を備えたOSを搭載することを前提に設計されている。

ユーザーモードで動作するプログラムの互換性はMC68000からMC68060までバイナリレベルでほぼ完全に保たれているが、スーパバイザモードでの動作についてはこのモードで動作するOSが差異を吸収することを前提として、世代ごとに改良や変更が加えられている。

このため特にスタックポインタの実装とその挙動には世代間での相違が多く、アプリケーションがハードウェアリソースへ直接アクセスするためにスーパーバイザモードをアプリケーションに解放した原始的な実装のOSではMC68000用に書かれたこの種の動作を行うアプリケーションプログラムが後継各プロセッサで正常動作しないケースが存在する。

メモリアドレッシング

編集

MC6800016ALU323216ALU2

808620#x8616[1]

MC68000216ALU3ALU16

32ADD.W (An)+,Dn

16CPU6800032MC6802032ALU326800032

680003224System/360使8使LISPSystem/360System/370-XAMSB31[12]

Macintosh8MBRAM


内部レジスタ

編集
 
内部レジスタのビット構成図

8本の汎用データレジスタ (D0 - D7)と8本のアドレスレジスタ (A0 - A7) を持つ。 アドレスレジスタ (A7) はスタックポインタ (SP) であり、スタック上位のオブジェクトをアクセスする事が容易となった。

68000ファミリでの多バイトデータのメモリ上での配置はビッグ・エンディアンである。

ステータスレジスタ

編集

68000の比較命令、算術演算命令、論理演算命令は実行結果をステータスレジスタに反映させ、後で条件ジャンプ命令でそれを使えるようになっている。 ステータスレジスタのビットには、"Z"ero(ゼロ)、"C"arry(キャリー)、o"V"erflow(オーバーフロー)、eXtend、そして"N"egative(ネガティブ)がある。 eXtendビットはCarryビットと分離されている。 eXtendとCarryは、シフト/算術演算/論理演算命令の桁上がり結果を保持するが、eXtendビットはより多バイトの演算を実現するために使い、Carryビットは処理の流れを制御するのに用いる。

命令セット

編集

68000使

便CPU

16

MC68000MC68000CPU寿ARMThumb68000CPU

特権レベル

編集

CPU

割り込み

編集

68000807 7NMI: Non-Maskable Interrupt[13]00[14]

3CPU3IC74148VLSIMC68901UARTI/O

0102325632315CHK/CHK2line 1010line 1111241715TRAP

ROM0ROMROMRAM0ROMRAM

68000PopekGoldberg: virtualization requirements for full processor virtualization"MOVE from SR" MC68010"MOVE from SR"  "MOVE from CCR"  "MOVE from SR" 使OS

MC68000 でのデマンドページングの実現

編集

680x0MC68000



MC68000MC68000MMU

MC68000MC68000re-runrerun cycle

CPUMC68000MC68000使

MC68000Domain

MC68010MC68010

命令セットの詳細

編集




 "D0"

 "A6"


 (A0)

 (A0)+

 -(A0)

16 16(A0)

1162324


8 8(A0, D0)  8(A0, A1)


16 16(PC). 便

8 8(PC, D2)


"$4000"

6800016 "0x"  "$" 使


 "#400".



8 (".b")16 (".w")32 (".l") 


  • 算術演算:ADD, SUB, MULU(符号なし掛け算), MULS(符号あり掛け算), DIVU, DIVS, NEG(否定加算), CMP(減算の一種だが、ステータスビットにのみ結果を反映し、実際の減算結果は格納しない)
  • 二進化十進演算:ABCD, SBCD
  • 論理演算EOR(排他的論理和), AND, NOT(論理否定)
  • シフト演算:
    • 論理シフト、つまり右シフトで最上位ビットをゼロにする: LSL, LSR
    • 算術シフト、つまり最上位ビットを符号拡張する: ASR, ASL
    • ローテート、eXtendを使う命令と使わない命令: ROXL, ROXR, ROL, ROR
  • メモリ内のビット操作:BSET(1にする), BCLR(0にする), and BTST(SRのZeroビットをセット)
  • マルチプロセッサ制御:TAS(テストアンドセット、1命令でビットテストのためのリードとその結果のライトの2つのメモリアクセスを割り込みなどで中断されない不可分なバスサイクルで行うことによりメモリ共有型マルチプロセッサでのセマフォを実現)
  • フロー制御:JMP(ジャンプ), JSRサブルーチンコール), BSR(相対アドレスでのサブルーチンコール), RTS(サブルーチンからの復帰), RTE(例外や割り込みからの復帰), TRAP(ソフトウェア割り込みに似たソフトウェア例外を発生), CHK(条件付きソフトウェア割り込み)
  • 分岐:Bcc("cc"は分岐条件として16種類のステータスレジスタのチェック方法を記述:equal(等しい), greater than(大きい), less-than(小さい), carry, これらの組み合わせや論理否定)
  • デクリメント付き分岐:DBcc("cc"は分岐命令と同じ意味)指定したデータレジスタをデクリメントした後、指定された条件が真で、デクリメント結果が-1でないなら分岐する。0ではなく-1でチェックするのは、ループを記述する場合にコードを単純化するためである。ループカウンタとして最初から0が指定された場合、デクリメントされて-1になるので分岐しない。したがって0かどうかをループに入る前にチェックする必要がない。

M68000ファミリ

編集

メインプロセッサ

編集
 
MC68020RC12E
 
MC68030RC50C

MC68000 - UNIXSun-1Macintosh X68000SEGA SNK 
MC68EC000 - 8使MPU使MPU

MC68008 - 8204868000MPU

MC68010 - MC680003MC68000DBccUNIXSun-2 2050

MC68012 - 31

MC68020 - 323232256 Sun-3Macintosh IIAmiga 1200 2050/32

MC68030 - MC68851MMU256Sun3/80 NEWSNext CubeMacintosh IIxAmiga 3000 2050/32E
MC68EC030 - MMU  X68030

MC68040 - MMUMC68882FPU4KNeXTcubeMacintosh QuadraCentrisAmiga 400068040XC68040MC68040
MC68LC040 - FPUMacintosh LC475575Apple

MC68EC040 - FPUMMU

MC68040V -  (3.3V) 

MC68060 - 680402SPARCMacintoshPowerPCMIPSPCAmigaX680x0使
MC68EC060

MC68LC060

SCC68070 - CD-iMPU
 
MC68MH360FE33E

MC68MH360FE - MC68360CPU32++SCC (Serial Communications controllers)

周辺LSI

編集
 
HD68450Y8
  • MC68120 - IPC (Intelligent Peripheral Controller with mask ROM)
  • MC68121 - IPC (Intelligent Peripheral Controller w/o mask ROM)
  • MC68122 - CTC(クラスタ ターミナル コントローラ)[3]
  • MC68150 - DBS (Dynamic Bus Sizer)
  • MC68153 - Bus Interrupter
  • MC68160 - EEST (Ethernet Driver)
  • MC68184 - BIC (Broadband Interface Controller)
  • MC68185 - Twisted Pair Modem
  • MC68194 - Carrier band Modem for IEEE 802.4
  • MC68195 - Local Talk Adapter
  • MC68230 - PI/T (Parallel Interface & Timer) パラレルインターフェイス&タイマ
  • MC68338 - MAC (Media Access Controller)
  • MC68339 - FSI (FDDI System Interface)
  • MC68341 - 浮動小数点ROM[3]
  • MC68356 - SPCE (Signal Processing Communication Engine)
  • MC68360 - QUICC ( Quad Integrated Communication Controller)
  • SCC68430 - DMAC (1ch Direct Memory Access Controller)
  • MC68440 - DMAC (2ch Direct Memory Access Controller)
  • HD68450 - DMAC (4ch Direct Memory Access Controller)
  • MC68451 - MMU (Memory Management Unit)[3]
  • MC68452 - Bus Arbiter
  • MC68453 - Bubble Memory Controller バブルメモリコントローラ[3]
  • HD63463 - HDC (Hard Disk Controller) ハードディスクコントローラ
  • HD63484 - ACRTC (Advanced Cathode Ray Tube Controller)
  • MC68488 - GPIBA (GP-IB Adapter)
  • R68C552 - DACIA (Dual Asynchronous Communication Interface Adapter)
  • R68560 - MPCC ( Multi Protocol Communication Controller)
  • HD68562 - DUSCC (Dual Universal Serial Communication Controller)
  • MK68564 - UART
  • MC68605 - X.25 Protocol Controller
  • MC68606 - X.25 Multi-Link LAPD Protocol
  • SCN68652 - MPCC (Multi-protocol Communication Controller)
  • MC68661 - UART
  • MC68681 - DUART (Dual Universal Asynchronous Receiver/Transmitter)
  • SCC68692 - 68681 Compatible CMOS
  • R68802 - LNET (Local Network Controller)
  • MC68824 - TBC (Token Bus Controller)
  • MC68834 - Stream Cipher Chip
  • MC68836 - FCG (FDDI Clock Generator)
  • MC68837 - ELM (Elasticity Buffer and Link management)
  • MC68838 - MAC (Media Access Controller)
  • MC68839 - FSI (FDDI System Interface)
  • MC68840 - Integrated FDDI
  • MC68847 - quad ELM
  • MC68848 - CAMEL
  • MC68851 - PMMU (32bit Page Memeoy Management Unit)
  • MC68881 - FPU (Floating-Point Unit) 浮動小数点演算ユニット
  • MC68882 - FPU (Floating-Point Unit) 浮動小数点演算ユニット(改良版)
  • MC68901 - MFP (Multi Function Peripheral) 多機能周辺コントローラ

後継製品

編集

CPU16
TMP68301 - 68HC000 + UART etc

TMP68303 - 68HC000 + UART + PI/T

MC68302 - 68EC000 + SCCDMATimerISDN使

MC68306 - 68EC000 + DUART

MC68307 - 68EC000 + UART

MC68322 (BANDIT) - 68EC000 +

MC68328 (DragonBall) - 68EC000 + LCDUARTSPIPWMTimerRTCPalm (PDA) 使

CPU32 MCU
MC68330 - CPU32

MC68331 - CPU32 + GPT (Timer),QSM

MC68332 - CPU32 + TPU/,QSM,SIM

MC68334 -  - CPU32 + TPU,SIM, 8/10AD(88ms109ms[15]), 132PQFP, 16.78MHz()[15]

MC68340 - CPU32 + DMA,DUART,Timer

MC68341 - CPU32 + ,2DMA,2SIOIO,SIM41CD-I1632

MC68356 - MC68302 - 68EC000 + RISCCP: + DSP56002, SIB(), PCMCIA, 16550UART

MC68360 (QUICC) - CPU32+CPU32 + CPM,DMA,Timer

ColdFire - M68KRISC68000
MCF52xx - ColdFire V2

MCF53xx - ColdFire V3

MCF54xx - ColdFire V4/V4e

エミュレータ

編集
  • BUFFEE Accelerator - MC68000と差替えて使えるよう、AM335x ARM Cortex-A8を搭載しMC68040 400MHz相当のアクセラレータとして、2021年3月現在、開発途上[16]

参考文献

編集

Motlora, Inc.M680004th edition9CQ1990510ISBN 978-4-7898-4091-0M68000UMJ/AD4 

  1668000DMACACRTCHDC1987ISBN 978-4-501-51240-8 NCID BN02581340 

68000211987ISBN 978-4-7856-3062-1 NCID BN01471063 

MC68030CQ1990: MC 68030 enhanced 32-bit microprocessor user's manualNCID BN06695647

MOTOROLA (1994). M68000 8-/16-/32-Bit Microprocessors User's Manual, Ninth Edition (PDF). MOTOROLA. 2015120

禿161981630 

19951CQ19951 
  • 「ASCII 1983年5月号」第7巻第5号、株式会社アスキー出版、1983年5月1日。 

脚注

編集


(一)^ ASCII 19835, p. 88.

(二)^ . 20231018

(三)^ abcde禿161981630158-161 

(四)^ "68HC001 obsoletes 68008."[], Microprocessor Report, 1990620; available from HighBeam Research (subscription).

(五)^ "Motorola streamlines 68000 family; "EC" versions of 68000, '020, '030, and '040, plus low-end 68300 chip."[], Microprocessor Report, 1991417; available from HighBeam Research (subscription).

(六)^ "Motorola reveals MC68SEC000 processor for low power embedded applications", Motorola press release, 19961118; archived by Internet Archive on 1997328.

(七)^ comp.sys.m68k Usenet posting, 1995516; 

(八)^ ab 316  20171027

(九)^ abMotlora, Inc.M680004th edition9CQ1990510ISBN 978-4-7898-4091-0M68000UMJ/AD4 

(十)^  1987.

(11)^ MOTOROLA 1994, p. 2-2.

(12)^ x64644847

(13)^ 16-bit_microprocessors 1983, p. 202.

(14)^ 16-bit_microprocessors 1983, p. 163.

(15)^ ab 19951, p. 233.

(16)^  (202128). 68000使CPUBuffy Acellerator. PC Watch. 2021325

注記

編集
  1. ^ 640×400ドット程度の解像度でRGB各プレーンについてそれぞれ32KB程度のVRAMを必要とする多色ビットマップグラフィック環境においては、実メモリ空間が最大1MBの8086ではプログラムエリアを圧迫しないためにVRAM各プレーンをバンク切り換えするなどの回避策を講じる必要があった。このため、CPUから直接VRAMにアクセスするのにセグメント操作やバンク切り替えを併用する必要のある8086は、基本的にはVRAMをリニアにメモリ空間上に配置でき、しかもメモリ操作命令で直接必要なアドレスを指定できる68000と比較してプログラミングがどうしても煩雑になった。