Last Updated: 4 December 1997
Important note: all this doc was based upon the Flint/DKS's Doc
68030 Instrution Times
Calculate Effective Address
Calculate Immediate Effective Address
Fetch Effective Address
Fetch Immediate Effective Address
Jump Effective Address
68030 Instruction Times
A
AB
AD
AN
AS
BC
BF
BK
BS
BT
BU
CA
CH
CL
CM
DB
DI
EO
EX
F
IL
IN
JS
LE
LI
LS
MO
MU
NB
NE
NO
OR
PA
PE
PR
RE
RO
RT
SB
SU
SC
ST
SW
TA
TR
TS
UN
# - Add Calculate Effective Address time
% - Add Calculate Immediate Effective Address time
* - Add Fetch Effective Address time
! - Add Fetch Immediate Effective Address time
j - Add Jump Effective Address Time
(r/p/w) r - Read Cycles
p - Prefetch Cycles
w - Write Cycles
Head Tail I-Cache No-Cache
A-Line trap 0 0 18(1/0/5) 20(1/2/4)
abcd Dn,Dn 0 0 4(0/0/0) 4(0/1/0)
abcd -(An),-(An) 2 1 13(2/0/1) 14(2/1/1)
add Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
add EA,Dn 0 0 2(0/0/0) 2(0/1/0) *
add Dn,EA 0 1 3(0/0/1) 4(0/1/1) *
adda.w Rn,An 4 0 4(0/0/0) 4(0/1/0)
adda.w EA,An 0 0 4(0/0/0) 4(0/1/0) *
adda.l Rn,An 2 0 2(0/0/0) 2(0/1/0)
adda.l EA,An 0 0 2(0/0/0) 2(0/1/0) *
addi #(data),Dn 2 0 2(0/0/0) 2(0/1/0) !
addi #(data),Mem 0 1 3(0/0/1) 4(0/1/1) !
addq #(data),Rn 2 0 2(0/0/0) 2(0/1/0)
addq #(data),Mem 0 1 3(0/0/1) 4(0/1/1) *
addx Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
addx -(An),-(An) 2 1 9(2/0/1) 10(2/1/1)
and Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
and EA,Dn 0 0 2(0/0/0) 2(0/1/0) *
and Dn,EA 0 1 3(0/0/1) 4(0/1/1) *
andi #(data),Dn 2 0 2(0/0/0) 2(0/1/0) !
andi #(data),Mem 0 1 3(0/0/1) 4(0/1/1) !
andi to ccr 4 0 12(0/0/0) 14(0/2/0)
andi to sr 4 0 12(0/0/0) 14(0/2/0)
asl #(data),Dy 2 0 6(0/0/0) 6(0/1/0)
asl Dx,Dy 4 0 8(0/0/0) 8(0/1/0)
asl Mem (by one) 0 0 6(0/0/0) 6(0/1/0)
asr #(data),Dy 4 0 4(0/0/0) 4(0/1/0)
asr Dx,Dy (shift<>size) 10 0 10(0/0/0) 10(0/1/0)
asr Mem (by one) 0 0 4(0/0/0) 4(0/1/0) *
bcc (taken) 6 0 6(0/0/0) 8(0/2/0)
bcc.b (not taken) 4 0 4(0/0/0) 4(0/1/0)
bcc.w (not taken) 6 0 6(0/0/0) 6(0/1/0)
bcc.l (not taken) 6 0 6(0/0/0) 8(0/2/0)
bchg #(data),Dn 6 0 6(0/0/0) 6(0/1/0)
bchg Dn,Dn 6 0 6(0/0/0) 6(0/1/0)
bchg #(data),Mem 0 0 6(0/0/1) 6(0/1/1) !
bchg Dn,Mem 0 0 6(0/0/1) 6(0/1/1) *
bclr #(data),Dn 6 0 6(0/0/0) 6(0/1/0)
bclr Dn,Dn 6 0 6(0/0/0) 6(0/1/0)
bclr #(data),Mem 0 0 6(0/0/1) 6(0/1/1) !
bclr Dn,Mem 0 0 6(0/0/1) 6(0/1/1) *
bfchg Dn 14 0 14(0/0/0) 14(0/1/0)
bfchg Mem (< 5 bytes) 6 0 14(1/0/1) 14(1/1/1) %
bfchg Mem (> 5 bytes) 6 0 22(2/0/2) 22(2/1/2) %
bfclr Dn 14 0 14(0/0/0) 14(0/1/0)
bfclr Mem (< 5 bytes) 6 0 14(1/0/1) 14(1/1/1) %
bfclr Mem (> 5 bytes) 6 0 22(2/0/2) 22(2/1/2) %
bfexts Dn 10 0 10(0/0/0) 10(0/1/0)
bfexts Mem (< 5 bytes) 6 0 12(1/0/0) 12(1/1/0) %
bfexts Mem (> 5 bytes) 6 0 18(2/0/0) 18(2/1/0) %
bfextu Dn 10 0 10(0/0/0) 10(0/1/0)
bfextu Mem (< 5 bytes) 6 0 12(1/0/0) 12(1/1/0) %
bfextu Mem (> 5 bytes) 6 0 18(2/0/0) 18(2/1/0) %
bfffo Dn 20 0 20(0/0/0) 20(0/1/0)
bfffo Mem (< 5 bytes) 6 0 22(1/0/0) 22(1/1/0) %
bfffo Mem (> 5 bytes) 6 0 28(2/0/0) 28(2/1/0) %
bfins Dn 12 0 12(0/0/0) 12(0/1/0)
bfins Mem (< 5 bytes) 6 0 12(1/0/1) 12(1/1/1) %
bfins Mem (> 5 bytes) 6 0 18(2/0/2) 18(2/1/2) %
bfset Dn 14 0 14(0/0/0) 14(0/1/0)
bfset Mem (< 5 bytes) 6 0 14(1/0/1) 14(1/1/1) %
bfset Mem (> 5 bytes) 6 0 22(2/0/2) 22(2/1/2) %
bftst Dn 8 0 8(0/0/0) 8(0/1/0)
bftst Mem (< 5 bytes) 6 0 10(1/0/0) 10(1/1/0) %
bftst Mem (> 5 bytes) 6 0 14(2/0/0) 14(2/1/0) %
bkpt 1 0 9(1/0/0) 9(1/0/0)
bset #(data),Dn 6 0 6(0/0/0) 6(0/1/0)
bset Dn,Dn 6 0 6(0/0/0) 6(0/1/0)
bset #(data),Mem 0 0 6(0/0/1) 6(0/1/1) !
bset Dn,Mem 0 0 6(0/0/1) 6(0/1/1) %
bsr 2 0 6(0/0/1) 9(0/2/1)
btst #(data),Dn 4 0 4(0/0/0) 4(0/1/0)
btst Dn,Dn 4 0 4(0/0/0) 4(0/1/0)
btst #(data),Mem 0 0 4(0/0/0) 4(0/1/0) !
btst Dn,Mem 0 0 4(0/0/0) 4(0/1/0) *
Bus Cycle Fault (Short) 0 0 36(1/0/10) 38(1/2/10)
Bus Cycle Fault (Long) 0 0 62(1/0/24) 64(1/2/24)
cas (succesful cmp) 1 0 13(1/0/1) 13(1/1/1) %
cas (unsuccesful cmp) 1 0 11(1/0/0) 11(1/1/0) %
cas2 (succesful cmp) (max) 2 0 24(2/0/2) 26(2/2/2)
cas2 (unsuccesful cmp)(max) 2 0 24(2/0/0) 24(2/2/0)
chk Dn,Dn (no Exception) 8 0 8(0/0/0) 8(0/1/0)
chk Dn,Dn (Exception taken) 4 0 28(1/0/4) 30(1/3/4)
chk EA,Dn (no Exception) 0 0 8(0/0/0) 8(0/1/0)
chk EA,Dn (Exception taken)max 0 0 28(1/0/4) 30(1/3/4)
chk2 Mem,Rn (no Exception)max 2 0 18(1/0/0) 18(1/1/0) !
chk2 Mem,Rn (Exception taken)mx2 0 40(2/0/4) 42(2/3/4) !
clr Dn 2 0 2(0/0/0) 2(0/1/0)
clr Mem 0 1 3(0/0/1) 4(0/1/1) *
cmp Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
cmp EA,Dn 0 0 2(0/0/0) 2(0/1/0) *
cmp2 EA,Rn (max) 2 0 20(1/0/0) 20(1/1/0) !
cmpa Rn,An 4 0 4(0/0/0) 4(0/1/0)
cmpa EA,An 0 0 4(0/0/0) 4(0/1/0) *
cmpi #(data),Dn 2 0 2(0/0/0) 2(0/1/0) !
cmpi #(data),Mem 0 0 3(0/0/1) 2(0/1/0) !
cmpm (An)+,(An)+ 0 0 8(2/0/0) 8(2/1/0)
dbcc (false,cnt not expired) 6 0 6(0/0/0) 8(0/2/0)
dbcc (false,but cnt expired) 10 0 10(0/0/0) 13(0/3/0)
dbcc (true) 6 0 6(0/0/0) 8(0/1/0)
divs.w Dn,Dn (max) 2 0 56(0/0/0) 56(0/1/0)
divs.w EA,Dn (max) 0 0 56(0/0/0) 56(0/1/0) *
divs.l Dn,Dn (max) 6 0 90(0/0/0) 90(0/1/0) !
divs.l EA,Dn (max) 0 0 90(0/0/0) 90(0/1/0) !
divu.w Dn,Dn (max) 2 0 44(0/0/0) 44(0/1/0)
divu.w EA,Dn (max) 0 0 44(0/0/0) 44(0/1/0) *
divu.l Dn,Dn (max) 6 0 78(0/0/0) 78(0/1/0) !
divu.l EA,Dn (max) 0 0 78(0/0/0) 78(0/1/0) !
eor Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
eor Dn,EA 0 1 3(0/0/1) 4(0/1/1) *
eori #(data),Dn 2 0 2(0/0/0) 2(0/1/0) !
eori #(data),Mem 0 1 3(0/0/1) 4(0/1/1) !
eori to sr 4 0 12(0/0/0) 14(0/2/0)
eori to ccr 4 0 12(0/0/0) 14(0/2/0)
exg Ry,Rx 4 0 4(0/0/0) 4(0/1/0)
ext Dn 4 0 4(0/0/0) 4(0/1/0)
F-Line trap 0 0 18(1/0/5) 20(1/2/4)
Illegal Instruction 0 0 18(1/0/5) 20(1/2/4)
Interrupt (I-Stack) 0 0 23(2/0/4) 24(2/2/4)
Interrupt (M-Stack) 0 0 33(2/0/8) 34(2/2/8)
jmp 4 0 4(0/0/0) 6(0/2/0) j
jsr 0 0 4(0/0/1) 7(0/2/1) j
lea 2 0 2(0/0/0) 2(0/1/0) *
link.w 0 0 4(0/0/1) 5(0/1/1)
link.l 2 0 6(0/0/1) 7(0/2/1)
ls? #(data),Dy 4 0 4(0/0/0) 4(0/1/0)
ls? Dx,Dy (shift<>size) 8 0 8(0/0/0) 8(0/1/0)
ls? Mem (by one) 0 0 4(0/0/1) 4(0/1/1) *
move Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
move Rn,An 2 0 2(0/0/0) 2(0/1/0)
move EA,An 0 0 2(0/0/0) 2(0/1/0) *
move EA,Dn 0 0 2(0/0/0) 2(0/1/0) *
move Rn,(An) 0 1 3(0/0/1) 4(0/1/1)
move SOURCE,(An) 2 0 4(0/0/1) 5(0/1/1) *
move Rn,(An)+ 0 1 3(0/0/1) 4(0/1/1)
move SOURCE,(An)+ 2 0 4(0/0/1) 5(0/1/1) *
move Rn,-(An) 0 2 4(0/0/1) 4(0/1/1)
move SOURCE,-(An) 2 0 4(0/0/1) 5(0/1/1) *
move EA,(d16,An) 2 0 4(0/0/1) 5(0/1/1) *
move EA,xxx.W 2 0 4(0/0/1) 5(0/1/1) *
move EA,xxx.L 0 0 6(0/0/1) 7(0/2/1) *
move EA,(d8,An,Xn) 4 0 6(0/0/1) 7(0/1/1) *
move EA,(d16,An) 2 0 8(0/0/1) 9(0/2/1) *
move EA,(d16,PC) 2 0 8(0/0/1) 9(0/2/1) *
move EA,(d16,An,Xn) 2 0 8(0/0/1) 9(0/2/1) *
move EA,(d16,PC,Xn) 2 0 8(0/0/1) 9(0/2/1) *
move EA,([d16,An],Xn) 2 0 10(1/0/1) 11(1/2/1) *
move EA,([d16,PC],Xn) 2 0 10(1/0/1) 11(1/2/1) *
move EA,([d16,An],d16) 2 0 12(1/0/1) 14(1/2/1) *
move EA,([d16,PC],d16) 2 0 12(1/0/1) 14(1/2/1) *
move EA,([d16,An],d32) 2 0 14(1/0/1) 16(1/3/1) *
move EA,([d16,PC],d32) 2 0 14(1/0/1) 16(1/3/1) *
move EA,([d16,An],Xn,d32) 2 0 14(1/0/1) 16(1/3/1) *
move EA,([d16,PC],Xn,d32) 2 0 14(1/0/1) 16(1/3/1) *
move EA,(B) 4 0 8(0/0/1) 9(0/1/1) *
move EA,(d16,B) 4 0 10(0/0/1) 12(0/2/1) *
move EA,(d32,B) 4 0 14(0/0/1) 16(0/2/1) *
move EA,([B]) 4 0 10(1/0/1) 11(1/1/1) *
move EA,([B].l) 4 0 10(1/0/1) 11(1/1/1) *
move EA,([B],d16) 4 0 12(1/0/1) 14(1/2/1) *
move EA,([B].l,d16) 4 0 12(1/0/1) 14(1/2/1) *
move EA,([B],d32) 4 0 14(1/0/1) 16(1/2/1) *
move EA,([B].l,d32) 4 0 14(1/0/1) 16(1/2/1) *
move EA,([d16,B]) 4 0 12(1/0/1) 14(1/2/1) *
move EA,([d16,B].l) 4 0 12(1/0/1) 14(1/2/1) *
move EA,([d16,B],d16) 4 0 14(1/0/1) 17(1/2/1) *
move EA,([d16,B].l,d16) 4 0 14(1/0/1) 17(1/2/1) *
move EA,([d16,B],d32) 4 0 16(1/0/1) 19(1/3/1) *
move EA,([d16,B].l,d32) 4 0 16(1/0/1) 19(1/3/1) *
move EA,([d32,B]) 4 0 16(1/0/1) 18(1/2/1) *
move EA,([d32,B].l) 4 0 16(1/0/1) 18(1/2/1) *
move EA,([d32,B],d16) 4 0 18(1/0/1) 21(1/3/1) *
move EA,([d32,B].l,d16) 4 0 18(1/0/1) 21(1/3/1) *
move EA,([d32,B],d32) 4 0 18(1/0/1) 23(1/3/1) *
move EA,([d32,B].l,d32) 4 0 18(1/0/1) 23(1/3/1) *
move ccr,Dn 2 0 4(0/0/0) 4(0/1/0)
move ccr,mem 2 0 4(0/0/1) 5(0/1/1) *
move Dn,ccr 4 0 4(0/0/1) 4(0/1/1)
move EA,ccr 0 0 4(0/0/1) 4(0/1/1) *
move sr,Dn 2 0 4(0/0/1) 4(0/1/1)
move sr,mem 2 0 4(0/0/1) 4(0/1/1) *
move EA,sr 0 0 8(0/0/0) 10(0/1/0) *
move usp,An 4 0 4(0/0/0) 4(0/1/1)
move An,usp 4 0 4(0/0/0) 4(0/1/0)
movec Cr,Rn 6 0 6(0/0/0) 6(0/1/0)
movec Rn,usp 6 0 6(0/0/0) 6(0/1/0)
movec Rn,vbr 6 0 6(0/0/0) 6(0/1/0)
movec Rn,caar 6 0 6(0/0/0) 6(0/1/0)
movec Rn,msp 6 0 6(0/0/0) 6(0/1/0)
movec Rn,isp 6 0 6(0/0/0) 6(0/1/0)
movec Rn,sfc dfc cacr 4 0 12(0/0/0) 12(0/1/0)
movem EA,rl (+) 2 0 8+4n(n/0/0) 8+4n(n/1/0) %
movem rl,EA (+) 2 0 4+2n(0/0/n) 4+2n(0/1/n) %
movep.w Dn,(d16,An) 4 0 10(0/0/2) 10(0/1/2)
movep.w (d16,An),Dn 2 0 10(2/0/0) 10(2/1/0)
movep.l Dn,(d16,An) 4 0 14(0/0/4) 14(0/1/4)
movep.l (d16,An),Dn 2 0 14(4/0/0) 14(4/1/0)
moveq #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
moves EA,Rn 3 0 7(1/0/0) 7(1/1/0) %
moves Rn,EA 2 1 5(0/0/1) 6(0/1/1) %
muls.w EA,Dn (max) 2 0 28(0/0/0) 28(0/1/0) *
muls.l EA,Dn (max) 2 0 44(0/0/0) 44(0/1/0) !
mulu.w EA,Dn (max) 2 0 28(0/0/0) 28(0/1/0) *
mulu.l EA,Dn (max) 2 0 44(0/0/0) 44(0/1/0) !
nbcd Dn 0 0 6(0/0/0) 6(0/1/0)
neg Dn 2 0 2(0/0/0) 2(0/1/0)
neg Mem 0 1 3(0/0/1) 4(0/1/1) *
negx Dn 2 0 2(0/0/0) 2(0/1/0)
negx Mem 0 1 3(0/0/1) 4(0/1/1) *
nop 0 0 2(0/0/0) 2(0/1/0)
not Dn 2 0 2(0/0/0) 2(0/1/0)
not Mem 0 1 3(0/0/1) 4(0/1/1) *
or Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
or EA,Dn 0 0 2(0/0/0) 2(0/1/0)
or Dn,EA 0 1 3(0/0/1) 4(0/1/1)
ori #(data),Dn 2 0 2(0/0/0) 2(0/1/0) !
ori #(data),Mem 0 1 3(0/0/1) 4(0/1/1) !
ori to sr 4 0 12(0/0/0) 14(0/2/0)
ori to ccr 4 0 12(0/0/0) 14(0/2/0)
pack Dn,Dn,#(data) 6 0 6(0/0/0) 6(0/1/0)
pack -(An),-(An),#(data) 2 1 11(1/0/1) 11(1/1/1)
pea 0 2 4(0/0/1) 4(0/1/1) *
Priviledge Violation 0 0 18(1/0/5) 20(1/2/4)
reset 0 0 518(0/0/0) 518(0/1/0)
ro? #(data),Dy 4 0 6(0/0/0) 6(0/1/0)
ro? Dx,Dy 6 0 8(0/0/0) 8(0/1/0)
ro? Mem (by one) 0 0 6(0/0/1) 6(0/1/1) *
rox? Dn 10 0 12(0/0/0) 12(0/1/0)
rox? Mem (by one) 0 0 4(0/0/0) 4(0/1/0) *
rtd 2 0 10(1/0/0) 12(1/2/0)
rte (Normal Four Word) 1 0 18(4/0/0) 20(4/2/0)
rte (Six Word) 1 0 18(4/0/0) 20(4/2/0)
rte (Throwaway) 1 0 12(4/0/0) 12(4/0/0)
rte (Coprocessor) 1 0 26(7/0/0) 26(7/2/0)
rte (Short Fault) 1 0 36(10/0/0) 26(10/2/0)
rte (Long Fault) 1 0 76(25/0/0) 76(25/2/0)
rtr 1 0 12(2/0/0) 14(2/2/0)
rts 1 0 9(1/0/0) 11(1/2/0)
sbcd Dn,Dn 0 0 4(0/0/0) 4(0/1/0)
sbcd -(An),-(An) 2 1 13(2/0/1) 14(2/1/1)
sub Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
sub EA,Dn 0 0 2(0/0/0) 2(0/1/0) *
sub Dn,EA 0 1 3(0/0/1) 4(0/1/1) *
suba.w Rn,An 4 0 4(0/0/0) 4(0/1/0)
suba.l Rn,An 2 0 2(0/0/0) 2(0/1/0)
suba.w EA,An 0 0 4(0/0/0) 4(0/1/0) *
suba.l EA,An 0 0 2(0/0/0) 2(0/1/0) *
subi #(data),Dn 2 0 2(0/0/0) 2(0/1/0) !
subi #(data),Mem 0 1 3(0/0/1) 4(0/1/1) !
subq #(data),Rn 2 0 2(0/0/0) 2(0/1/0)
subq #(data),Mem 0 1 3(0/0/1) 4(0/1/1) *
subx Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
subx -(An),-(An) 2 1 9(2/0/1) 10(2/1/1)
scc Dn 4 0 4(0/0/0) 4(0/1/0)
scc Mem 0 1 5(0/0/1) 5(0/1/1) *
stop 0 0 8(0/0/0) 8(0/2/0)
swap Dn 4 0 4(0/0/0) 4(0/1/0)
tas Dn 4 0 4(0/0/0) 4(0/1/0)
tas Mem 3 0 12(1/0/1) 12(1/1/1) *
trace 0 0 22(1/0/5) 24(1/2/5)
trap #n 0 0 18(1/0/5) 20(1/2/4)
trapcc (Trap) 2 0 22(1/0/5) 24(1/2/5)
trapcc (No trap) 4 0 4(0/0/0) 4(0/1/0)
trapcc.w (Trap) 5 0 24(1/0/5) 26(1/3/5)
trapcc.w (No trap) 6 0 6(0/0/0) 6(0/1/0)
trapcc.l (Trap) 6 0 26(1/0/5) 28(1/3/5)
trapcc.l (No trap) 8 0 8(0/0/0) 8(0/2/0)
trapv (Trap) 2 0 22(1/0/5) 24(1/2/5)
trapv (No trap) 4 0 4(0/0/0) 4(0/1/0)
tst Dn 0 0 2(0/0/0) 2(0/1/0)
tst Mem 0 0 2(0/0/0) 2(0/1/0) *
unpk Dn,Dn,#(data) 8 0 8(0/0/0) 8(0/1/0)
unpk -(An),-(An),#(data) 2 1 11(1/0/1) 11(1/1/1)
unlk 0 0 5(1/0/0) 5(1/1/0)