Professional Documents
Culture Documents
2:68000Architecture
MuhammadMunimAhmadZabidi(munim@utm.my)
68000Architecture
Aims
Toreviewthethearchitectureofthe68000microprocessor.
IntendedLearningOutcomes
Attheendofthismodule,studentsshouldbeableto:
Brieyexplainthehistoryofmicroprocessorandthe68000family Describethetermprogrammingmodel Describetheprogrammervisibleregistersinthe68000 Describehowthememoryisaccessedinthe68000 Describeandusethethreesimplestaddressingmodesofthe68000:direct, absoluteandimmediate BeabletoaccessandunderstandtheinformaQonpresentedinthe68000 Programmer sReferenceManual
22
68000/ColdFireBackground
MC68000introducedbyMotorolain1979. NotablesighQngs:
UsedintheSun,thersteverworkstaQon UsedintheMacintosh,rsteverGUIpersonalcomputer UsedinearlyversionsofPalmPilotPDA
Why68000forlearningmicroprocessors?
Powerful&simpleinstrucQonset SophisQcatedinterfacingcapabiliQes AbletosupporthighlevellanguageandoperaQngsystems Flatmemorymap(versussegmentedmemoryusedinIntel80x86) ThemostpopularPinacademia
Internally,MC68000has32bitdatapathsand32bitinstrucQons
interfaceswithexternalcomponentsusinga16bitdatabus.Soaprogrammer considersit32bitchipwhileasystemdesignerconsidersita16bitchip. Hencethe 16/32bitchip designaQon.
Theoriginal68000wasavailablein64bitDIPor68pinPLCC.
23
68000/ColdFireVersions
68000familyhasmanyversions.
680x0means68000,68008,68010,68020,68030,68040and68060. Newerversionsare upwardcompaQble witholderversions. ThefamilyisalsoaecQonatelycalled68korMC68k. Mostcommonlyfoundmembersare68000,68020,CPU32andColdFire.
Thefamilyincludes16bitperipheralschips.
The68000canuse68000typeperipheralschipsforhigherperformanceorolder 6800typeperipheralsforlowercost.
ColdFireisthecurrentversion
RISC ied68000processorcore. Smaller,lesspowerusedthannormal68020. AColdFirechipisanembeddedprocessorwithintegratedperipherals YoucannditinsomeHPlaserjetprinters
Today,the68kfamilyismadebyFreescaleSemiconductors.
24
68kProcessorFamily
48-pin 68008 * Data bus (bits) Address Bus (bits) Data cache (bytes) Instruction cache (bytes) Memory Management Unit Floating-Point Unit Max Speed (MHz) Performance (MIPS) 8 20 52-pin 68008 * 8 22 68000 8/16 ** 24 20 2 68010 * 16 24 68020 32 32 256 Off-chip 33 10 68030 32 32 256 256 On-chip Off-chip 50 18 68040 32 32 4096 4096 On-chip On-chip 40 44 68060 32 32 8192 8192 On-chip On-chip 75 110
* 68008 and 68010 are end-of-lifed (EOL) meaning no longer in production. ** Original 68000 has 16-bit bus. Current 68000 has selectable 8- or 16-bit bus.
25
68000Hardware
SpecicaQons
32bitdataandaddressregisters 16bitdatabus 24bitaddressbus 14addressingmodes Memorymappedinputoutput Programcounter 56instrucQons 5maindatatypes 7interruptlevels Clockspeeds:4MHzto12.5MHz Synchronousandasynchronousdatatransfers
26
27
68000ProgrammingModel
28
68000Registers
Name Data registers Address registers Stack pointer Program counter Status Register Label D0-D7 A0-A6 Number 8 7 Size 32 bit 32 bit 32 bit 32 bit 16 bit Function Stores 8-/16-/32-bit data Stores 16-/32-bit pointers (addresses of data) Store a pointer to a group of data known as the stack. Also known as A7. Theres two stack pointers: USP and SSP. Contains the address of the NEXT instruction to fetch and execute Contains information on the results of the last instruction. Consists of the system byte and the condition codes register (CCR)
29
SP
PC
SR
StatusRegisterGeneralIdea
Register Register
ALU
X N Z V C
F L A G S
Register
Status register stores an analysis of the last operation involving the ALU
210
SystemByte
Control/StatusRegister
Bit C V Z N X Meaning Set if a carry or borrow is generated. Cleared otherwise. Set if a signed overflow occurs. Cleared otherwise. Set if the result is zero. Cleared otherwise. Set if the result is negative. Cleared otherwise. Retains the carry bit for multi-precision arithmetic Systems responds to interrupts with a level higher than I 1 means CPU in supervisor mode, 0 means user mode 0 for normal operation, 1 to stop the CPU after EVERY instruction for runtime debugging
Onlymodiableissupervisormode Detailsinlatermodules
UserByte:CCR
Foruserlevelprograms BehaviordependsoninstrucQon
Byte Sistem
15 14 13 12 11 10 9 8 7
Byte Pengguna
6 5 4 3 2 1 0
I2 I1 I0
X N Z V C
CCR Carry oVerflow Zero Negative eXtend Interrupt Mask Supervisor Trace
S T
211
68000DataSizes
Bit( binarydigit )
Smallestamountofdata 1bitstoreseitherbinary0orbinary1.
BCD( binarycodeddecimal )
4bitsthatrepresentsdecimal0to9 Usedbyonly3instrucQons
Byte
8bitsthatisprocessedasoneunit
Word
16bitsthatisprocessedasoneuni
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Longword
32bitsthatisprocessedasoneunit
Bait atas (MSB) 9 8 7 6 Bait bawah (LSB) 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
Kata atas
Kata bawah
212
ByteAddressing
BytescanbestoredinanyevenoroddlocaQon
Alamat 0 2 4 6 Alamat 1 3 5 7
10101010 00011001
11000101 11110010
11001000 00011010
11111111 01010111
WordAddressing
Wordmuststoredateven addresses Alempttostorewordat oddaddressresultina trap Trap:recoverablecrash
Alamat 15 0 2 4 kata 0 kata 1 kata 2 0 Alamat 1 3 5
214
LongwordAddressing
Longwordcanbestoredat evenaddress Longwordrequirestwo memoryaccesses(tworowsin memorymap)
Alamat 15 0 2 4 6 8 kata panjang 0 kata panjang 1 0 Alamat 1 3 5 7 9
00000016 1010 1011 1100 1101 0000001 16 00000216 0001 0010 0011 0100 0000003 16
215
RegisterTransferLanguage(RTL)
AsimplenotaQontodescribetheoperaQonscarriedoutbyCPU clearlyandunambiguously
WewilluseittodescribethefuncQonofinstrucQon
means #100 or the number 100 means contents stored in memory location 4 means memory location 4 contains #100 means load number 25 into memory location 4 means load number 4 into PC means add #100 to contents of location 4 and save (This slide falls in the good to know category.)
216
InstrucQonSet
ThecompletelistofinstrucQonsisknownastheinstrucQonset InstrucQonsarecategorizedaccordingtobasicoperaQon performed:
Datatransfer ArithmeQc Logic Shiks&rotates BitmanipulaQon BCD ProgramControl SystemControl
217
BasicInstrucQonSet
Mnemonic ABCD ADD AND ASL ASR Bcc BCHG BCLR BRA BSET BSR BTST CHK CLR CMP DBcc DIVS DIVU EOR EXG EXT JMP JSR LEA LINK LSL LSR Meaning Add decimal with extend Add binary Logical AND Arithmetic shift left Arithmetic shift right Branch conditionally Bit test and change Bit test and clear Branch always Bit test and set Branch to subroutine Bit test Check register with bounds Clear operand Compare Decrement and branch conditionally Exclusive OR Unsigned divide Jump to subroutine Exchange registers Sign extend Jump to effective address Logical shift left Load effective address Link stack Signed divide Logical shift right Mnemonic MOVE MULS MULU NBCD NEG NOP NOT OR PEA RESET ROL ROR ROXL ROXR RTE RTR RTS SBCD Scc STOP SUB SWAP TAS TRAP TRAPV TST UNLK Meaning Move source to destination Sign multiply Unsigned multiply Negate decimal with extend Negate No operation One's complement Logical OR Push effective address Reset external devices Rotate left Rotate right Rotate left through extend Rotate right through extend Return from exception Return and restore Return from subroutine Subtract decimal with extend Set conditionally Stop processor Subtract binary Swap data register halves Test and set operand Trap Trap on overflow Test Unlink stack
218
GenericinstrucQonformat
InstrucQonFormat
pointer to the instructions memory location operation code (MOVE, ADD, etc) size/width of operand (B,W,L) data used in the operation for program documentation
RTL [D0] 100 [D0] [M($100)] [D0] [D0] + [D1] [M(100)] D0 [DATA] 20 [PC] label
219
Instruction MOVE.W MOVE.W ADD.W MOVE.W DATA DC.B BRA #100,D0 $100,D0 D1,D0 D1,100 20 LABEL
Operands
Operandscanbe
Registers Constants Memoryaddresses
Operandsspecifyaddressingmodessuchas
Dn:dataregisterdirect An:addressregisterindirect #n:immediate N:absolute Decimal:default Hexadecimal:prexedby$ Octal:prexedby@ Binary:prexedby% ASCII:withinsinglequotes ABC
220
Operandscanbespeciedinseveralformats
AddressingModes
Addressingmode:themechanismusedtocomputetheoperandaddress 68000hassophisQcatedaddressingmodes
Simpliesassemblerprogrammingbecauseitreducesthenumberstepsrequiredto specifyanaddress
68000has14addressingmodesbutreallyfallsinto6majorcategories.
Registerdirect Immediate Absolute ProgramcounterrelaQve Registerindirect Inherent
We ll cover the first three in this module. The rest will be covered later.
Eec2veaddress:theactualaddressusedbytheinstrucQon
Examples:
DataregisterD1intheprocessor Address$10000inmemory
221
AsimpleinstrucQon
Format: CLR.s Example: CLR.W Eect:
D1 FE ED BE EF D1 FE ED 00 00
<ea>
D1
222
AnothersimpleinstrucQon
Format: MOVE.s Example: MOVE.W Eect:
D0 D1
12 78 34 56 56 34 78 12
<ea>,<ea>
D0 D1
12 78
34 56
56 56
78 berubah 78
223
RegisterDirectAddressing
EecQveaddress:oneofthe8dataregister(D0D7) Thesimplestaddressingmode SourceordesQnaQonofanoperandisadataregisteroranaddress register.
Thecontentsofthespeciedsourceregisterprovidethesourceoperand. Similarly,ifaregisterisadesQnaQonoperand,itisloadedwiththevalue speciedbytheinstrucQon.
Examples:
MOVE.B SUB.L CMP.W ADD D0,D3 A0,D3 D2,D0 D3,D4 Copy the source operand in register D0 to register D3 Subtract the source operand in register A0 from register D3 Compare the source operand in register D2 with register D0 Add the source operand in register D3 to register D4
224
RegisterDirectAddressing
The instruction indicates the data register MOVE.B D0,D1
25
D0 D1
The MOVE.B D0,D1 instruction uses data registers for both source and destination operands
225
RegisterDirectAddressing
MOVE.B D0,D1
The effect of this instruction is to copy the contents of data register D0 in to data register D1
25 25 D0 D1
ShortinstrucQons(needonly3bitstospecifyoneof8dataregisters) Fastbecausetheexternalmemorydoesnothavetobeaccessed.
226
ImmediateAddressingMode
EecQveaddress:thememoryaddressimmediatelyfollowingtheinstrucQon word Indicatedbya#symbolinfrontofthesourceoperand. Canbeusedonlytospecifyasourceoperand. TheactualoperandformspartoftheinstrucQon. Animmediateoperandisalsocalledaliteraloperand. Canonlybeusedasasourceaddressingmode.ThedesQnaQonofthedatamust alsobespeciedbythedesQnaQonaddressingmode. TIP: Veryusefultoloadconstants(valuesthatneverchange).
227
ImmediateAddressingMode
TheinstrucQonMOVE.B#4,D0usesaliteralsourceoperandandaregister directdesQnaQonoperand The literal source operand, 4, is part of the instruction
MOVE.B #4,D0
4
The
D0
D0
AbsoluteAddressingMode
EecQveaddress:thememorylocaQonspeciedbytheinstrucQon Indirectorabsoluteaddressing,theinstrucQonprovidestheaddressoftheoperandin memory. Directaddressingrequirestwomemoryaccesses.TherstistoaccesstheinstrucQonand thesecondistoaccesstheactualoperand.
229
AbsoluteAddressingMode
M em ory
MOVE.B 20,D0
20
42
42
D0
The effect of MOVE.B 20,D0 is to read the contents of memory location 20 and copy them to D0
230
Bytes,Words,andLongwords
D3
MOVE.B $1234,D3
[D3(0:7)] [M($1234)]
MOVE.W $1234,D3
[D3(0:15)] [M($1234)]
MOVE.L $1234,D3
[D3] [M($1234)]
231
AddressRegisterIndirectAddressing
EecQveaddress:thememoryaddressspeciedbytheaddress registercontainedintheinstrucQon TheinstrucQonspeciesoneofthe68000 saddressregisters;for example,MOVE.B(A0),D0. Thespeciedaddressregistercontainstheaddressoftheoperand. Theprocessorthenaccessestheoperandpointedatbytheaddress register. Example:
CLR.W
232
RegisterIndirectAddressing(ARI) Mode
ThisinstrucQonmeansloadD0withthecontentsofthelocaQon pointedatbyaddressregisterA0
Memo r y
A0 10 00 1000
MOVE.B (A0),D0
57
D0
RelaQveAddressingMode
EecQveaddress:calculatedbyaddingadisplacementtothePC Format:XXXXorXXXX(PC) Contoh:
BRA
*+2
234
InherentAddressingMode
EecQveaddress:inprocessorregister(CCR,SR,SP,USP,SSPor PC)ormemorybutnotindicatedintheinstrucQon Format:usuallynooperand Example:
RTS
235
MachineinstrucQon
EachinstrucQonisatleast1word,atmost5words. Therstwordisknownastheopera6onword,whichdetermines:
OperaQonrequired Datasize:byte,wordorlongword LengthofthecompleteinstrucQon Wheretonddata(eecQveaddress)
ThemethodofinstrucQonencoding(howainstrucQoniswrilenin binary)iscomplex!
236
VariableLengthInstrucQons
Notonlyisthe68000instrucQonformatcomplex,thenumberof bytesinaninstrucQonalsovaries.
Address $4000 $4002 $4004 $4006 $4008 $400A $400C $400E $4010 $4012 $4014 $4016
Op-word operands
Operand1
1234
Operand2
0054 3210
$33FC $1234 $0054 $3210 $D082 $0003 $0005 $4EF9 $0030 $0008 $4E70
RESET
4E70
237
AddressingModeEncoding
Addressingmodeisencodedusing6bitswithinaninstrucQon. ForasingleeecQveaddressinstrucQon,theaddressingmodeislocatedinbits 05.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Kata operasi
Mod
Daftar
Mod ! 000 ! 001 ! 010 ! 011 ! 100 ! 101 ! 110 ! 111 ! 111 ! 111 ! 111 ! 111 !
!Daftar !rrr ! !rrr ! !rrr ! !rrr ! !rrr ! !rrr ! !rrr ! !000 ! !001 ! !010 ! !011 ! !100 !
!Mod alamat ! ! ! ! ! !Daftar data langsung ! ! ! !Daftar alamat langsung ! ! !Daftar alamat tak langsung (ARI) !ARI dgn pascatokok ! ! ! !ARI dgn prasusut ! ! ! !ARI dgn ofset ! ! ! ! !ARI dgn ofset dan indeks ! ! !Mutlak pendek ! ! ! ! !Mutlak panjang ! ! ! ! !PC relatif dgn ofset ! ! ! !PC relatif dgn ofset dan indeks ! !Terdekat ! ! ! ! !
!Sintaksis !Dn !An !(An) !(An)+ !-(An) !N(An) !N(An,Xm) !$XXXX !$XXXXXXXX !N(PC) !N(PC,Xm) !#$XXXX
238
MachineFormatforMOVEInstrucQon
TheMOVEinstrucQonismostheavilyused.
Generally,themostcommonlyused68000instrucQonsareencodedinfewerbits. MOVEisencodedbyonlytwobits(bit15:14=00)
MOVE.W D7,D0
0011 opkod
000000 kendalian2
000111
[D0(0:15)] [D7]
kendalian1
RTL 239
15
14
13
12
11
10
Opcodes
9 8 7 6 5
Bit 15, 14, 13, 12 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Operation MOVE Byte MOVE Long MOVE Word Miscellaneous ADDQ / SUBQ / Scc / DBcc Bcc MOVEQ OR / DIV / SBCD SUB / SUBX (Unassigned) CMP / EOR AND / MUL / ABCD / EXG ADD / ADDX Shift / Rotate (Unassiggned) 240
Summary
Registerdirectaddressingisusedforvariablesthatcanbeheldinregisters Literal(immediate)addressingisusedforconstantsthatdonotchange Direct(absolute)addressingisusedforvariablesthatresideinmemory Theonlydierencebetweenregisterdirectaddressinganddirectaddressingis thattheformerusesregisterstostoreoperandsandthelalerusesmemory ForFurtherInfo:
Motorola68000FromWikipedia,thefreeencyclopedia:
hlp://en.wikipedia.org/wiki/68000
CPUWorldMotorola68000microprocessorfamily:
hlp://www.cpuworld.com/CPUs/68000
68000Programmer sReferenceManual
hlp://www.freescale.com/les/archives/doc/ref_manual/M68000PRM.pdf
241