throbber
ARM610
`
`Data Sheet
`
`Document Number: ARM DDI 0004D
`Issued: Aug 1993
`Copyright Advanced RISC Machines Ltd (ARM) 1993
`All rights reserved
`
`Proprietary Notice
`ARM and the ARM Powered logo are trademarks of Advanced RISC Machines Ltd.
`
`Neither the whole nor any part of the information contained in, or the product described in, this
`datasheet may be adapted or reproduced in any material form except with the prior written
`permission of the copyright holder.
`
`The product described in this datasheet is subject to continuous developments and
`improvements. All particulars of the product and its use contained in this datasheet are given by
`ARM in good faith. However, all warranties implied or expressed, including but not limited to
`implied warranties or merchantability, or fitness for purpose, are excluded.
`
`This datasheet is intended only to assist the reader in the use of the product. ARM Ltd shall not
`be liable for any loss or damage arising from the use of any information in this datasheet, or any
`error or omission in such information, or any incorrect use of the product.
`
`Change Log
`Issue
`Date
`
`D
`
`Aug 93
`
`By
`
`TP
`
`Change
`
`Unified FrameMaker version created.
`
`Advanced RISC MachinesARM
`
`SCEA Ex. 1052 Page 1
`
`

`
`Preface
`
`The ARM610 is a general purpose 32-bit microprocessor with 4kByte cache, write buffer and Memory
`Management Unit (MMU) combined in a single chip. The ARM610 offers high level RISC performance yet
`its fully static design ensures minimal power consumption, making it ideal for portable, low-cost systems.
`
`The innovative MMU supports a conventional two-level page-table structure and a number of extensions
`which make it ideal for embedded control, UNIX and Object Oriented systems. This results in a high
`instruction throughput and impressive real-time interrupt response from a small and cost-effective chip.
`
`Applications
`The ARM610 is ideally suited to those applications requiring RISC performance from a compact, power
`efficient processor. These include:
`n Personal computer devices e.g.PDAs
`n High-performance real-time control systems
`n Portable telecommunications
`n Data communications equipment
`n Consumer products
`n Automotive
`
`Feature Summary
`n High performance RISC
`15 MIPS sustained @ 20 MHz (20 MIPS peak)
`n Fast sub microsecond interrupt response
`for real-time applications
`n Memory Management Unit (MMU)
`support for virtual memory systems
`n Excellent high-level language support
`n 4kByte of instruction & data cache
`n Big and Little Endian operating modes
`n Write Buffer
`enhancing performance
`IEEE 1149.1 Boundary Scan
`n
`n Fully static operation, low power consumption
`ideal for power sensitive applications
`n 144 Thin Quad Flat Pack (TQFP) package
`
`Address
`Bus
`
`MMU
`
`Write
`Buffer
`
`JTAG
`
`ARM6
`CPU
`
`4Kbyte
`Cache
`
`Control
`
`ii
`
`ARM610 Data Sheet
`
`SCEA Ex. 1052 Page 2
`
`

`
`Introduction
`
`1.0 Introduction
`
`ARM610, is a general purpose 32-bit microprocessor with 4kByte cache, write buffer and Memory
`Management Unit (MMU) combined in a single chip. The CPU within ARM610 is the ARM6. The ARM610
`is software compatible with the ARM processor family and can be used with ARM support chips, eg IO,
`memory and video.
`
`The ARM610 architecture is based on 'Reduced Instruction Set Computer' (RISC) principles, and the
`instruction set and related decode mechanism are greatly simplified compared with microprogrammed
`'Complex Instruction Set Computers' (CISC).
`
`The on-chip mixed data and instruction cache together with the write buffer substantially raise the average
`execution speed and reduce the average amount of memory bandwidth required by the processor. This
`allows the external memory to support additional processors or Direct Memory Access (DMA) channels
`with minimal performance loss.
`
`The MMU supports a conventional two-level page-table structure and a number of extensions which make
`it ideal for embedded control, UNIX and Object Oriented systems.
`
`•
`
`The instruction set comprises ten basic instruction types:
`•
`Two of these make use of the on-chip arithmetic logic unit, barrel shifter and multiplier to perform
`high-speed operations on the data in a bank of 31 registers, each 32 bits wide;
`Three classes of instruction control data transfer between memory and the registers, one optimised
`for flexibility of addressing, another for rapid context switching and the third for swapping data;
`Two instructions control the flow and privilege level of execution; and
`Three types are dedicated to the control of external coprocessors which allow the functionality of
`the instruction set to be extended off-chip in an open and uniform way.
`
`•
`•
`
`The ARM instruction set is a good target for compilers of many different high-level languages. Where
`required for critical code segments, assembly code programming is also straightforward, unlike some RISC
`processors which depend on sophisticated compiler technology to manage complicated instruction
`interdependencies.
`
`The memory interface has been designed to allow the performance potential to be realised without
`incurring high costs in the memory system. Speed-critical control signals are pipelined to allow system
`control functions to be implemented in standard low-power logic, and these control signals permit the
`exploitation of paged mode access offered by industry standard DRAMs.
`
`ARM610 is a fully static part and has been designed to minimise its power requirements. This makes it ideal
`for portable applications where both these features are essential.
`
`Datasheet Notation:
`
`0x
`BOLD
`binary
`
`- marks a Hexadecimal quantity
`- external signals are shown in bold capital letters
`- where it is not clear that a quantity is binary it is followed by the word binary
`
`3
`
`SCEA Ex. 1052 Page 3
`
`

`
`ARM610 Data Sheet
`
`ARM610 is a variant of the ARM600, differing from that device in the following respects:
`
`•
`•
`•
`•
`•
`
`No external coprocessor bus interface
`Internal Address latches controlled by ALE added
`nRW, nBW, LOCK also latched by ALE, and tristated by ABE. (CBE therefore removed)
`Dedicated chip test port added
`Device packaging
`
`4
`
`SCEA Ex. 1052 Page 4
`
`

`
`1.1 Block Diagram
`
`Introduction
`
`ABE
`
`A[31:0] nR/W nB/W LOCK
`
`ALE
`
`TCK TDI TMS nTRST TDO
`
`nWAIT MCLK SnA FCLK
`
`nRESET
`
`MSE
`
`nMREQ
`
`SEQ
`
`ABORT
`
`nIRQ
`
`nFIQ
`
`TESTOUT[2:0]
`
`TESTIN[16:0]
`
`Control
`
`COPROC
` #15
`
`Address Buffer
`
`JTAG Test
`
`Clock
`
`Internal Address Bus
`
`MMU
`
`4 kByte
` Cache
`
`ARM6
` CPU
`
`Internal Data Bus
`
`Write
`Buffer
`
`DBE
`
`D[31:0]
`
` Figure 1: ARM610 Block Diagram
`
`5
`
`SCEA Ex. 1052 Page 5
`
`

`
`ARM610 Data Sheet
`
`1.2 Functional Diagram
`
`SnA
`
`FCLK
`
`MCLK
`
`nWAIT
`
`nIRQ
`
`nFIQ
`
`nRESET
`
`ABE
`
`DBE
`
`ALE
`
`MSE
`
`VDD
`
`VSS
`
`TCK
`
`TDI
`
`TDO
`
`TMS
`
`nTRST
`
`ARM610
`
`A[31:0]
`
`Address
`Bus
`
`D[31:0]
`
`nRW
`
`nBW
`
`LOCK
`
`nMREQ
`
`SEQ
`
`ABORT
`
`TESTOUT[2:0]
`
`TESTIN[16:0]
`
`Data
`Bus
`
`Control
`Bus
`
`Memory
`Interface
`
`Chip
`Test
`
` Figure 2: Functional Diagram
`
`Clocks
`
`Interrupts
`
`Bus
`Controls
`
`Power
`
`JTAG
`Test
`
`6
`
`SCEA Ex. 1052 Page 6
`
`

`
`Signal Description
`
`2.0 Signal Description
`
`Name
`
`Type
`
`A[31:0]
`
`OCZ
`
`ABE
`
`ABORT
`
`ALE
`
`IT
`
`IT
`
`IT
`
`D[31:0]
`
`ITOTZ
`
`DBE
`
`IT
`
`Description
`
`Address Bus. This bus signals the address requested for memory accesses. Normally it
`changes during MCLK HIGH.
`
`Address bus enable. When this input is LOW, the address bus A[31:0], nRW, nBW and
`LOCK are put into a high impedance state (Note 1).
`
`External abort. Allows the memory system to tell the processor that a requested access has
`failed. Only monitored when ARM610 is accessing external memory.
`
`Address latch enable. This input is used to control transparent latches on the address bus
`A[31:0], nBW, nRW & LOCK. Normally these signals change during MCLK HIGH, but
`they may be held by driving ALE LOW. See section 13.2.2 on page 124.
`
`Data bus. These are bi-directional signal paths used for data transfers between the proces-
`sor and external memory. For read operations (when nRW is LOW), the input data must
`be valid before the falling edge of MCLK. For write operations (when nRW is HIGH), the
`output data will become valid while MCLK is LOW. At high clock frequencies the data
`may not become valid until just after the MCLK rising edge (see section 13.3 on page 125).
`
`Data bus enable. When this input is LOW, the data bus, D[31:0] is put into a high imped-
`ance state (Note 1). The drivers will always be high impedance except during write opera-
`tions, and DBE must be driven HIGH in systems which do not require the data bus for
`DMA or similar activities.
`
`FCLK
`
`ICK
`
`Fast clock input. When the ARM610 CPU is accessing the cache or performing an inter-
`nal cycle, it is clocked with the Fast Clock, FCLK.
`
`LOCK
`
`OCZ
`
`MCLK
`
`ICK
`
`MSE
`
`nBW
`
`IT
`
`OCZ
`
`Locked operation. LOCK is driven HIGH, to signal a “locked” memory access sequence,
`and the memory manager should wait until LOCK goes LOW before allowing another
`device to access the memory. LOCK changes while MCLK is HIGH and remains HIGH
`during the locked memory sequence. LOCK is latched by ALE.
`
`Memory clock input. This clock times all ARM610 memory accesses. The LOW or HIGH
`period of MCLK may be stretched for slow peripherals; alternatively, the nWAIT input
`may be used with a free-running MCLK to achieve similar effects.
`
`Memory request/sequential enable. When this input is LOW, the nMREQ and SEQ out-
`puts are put into a high impedance state (Note 1).
`
`Not byte / word. An output signal used by the processor to indicate to the external mem-
`ory system when a data transfer of a byte length is required. nBW is HIGH for word
`transfers and LOW for byte transfers, and is valid for both read and write operations. The
`signal changes while MCLK is HIGH. nBW is latched by ALE.
`
`nFIQ
`
`IT
`
`Not fast interrupt request. If FIQs are enabled, the processor will respond to a LOW level
`on this input by taking the FIQ interrupt exception. This is an asynchronous, level-sensi-
`tive input, and must be held LOW until a suitable response is received from the processor.
`
`Table 1: Signal Descriptions
`
`7
`
`SCEA Ex. 1052 Page 7
`
`

`
`ARM610 Data Sheet
`
`Name
`
`Type
`
`nIRQ
`
`IT
`
`nMREQ
`
`OCZ
`
`nRESET
`
`IT
`
`Description
`
`Not interrupt request. As nFIQ, but with lower priority. May be taken LOW asynchro-
`nously to interrupt the processor when the IRQ enable is active.
`
`Not memory request. A pipelined signal that changes while MCLK is LOW to indicate
`whether or not in the following cycle, the processor will be accessing external memory.
`When nMREQ is LOW, the processor will be accessing external memory
`
`Not reset. This is a level sensitive input which is used to start the processor from a known
`address. A LOW level will cause the current instruction to terminate abnormally, and the
`on-chip cache, MMU, and write buffer to be disabled. When nRESET is driven HIGH, the
`processor will re-start from address 0. nRESET must remain LOW for at least 2 full FCLK
`cycles or 5 full MCLK cycles which ever is greater. While nRESET is LOW the processor
`will perform idle cycles with incrementing addresses and nWAIT must be HIGH.
`
`nRW
`
`OCZ
`
`Not read/write. When HIGH this signal indicates a processor write operation; when
`LOW, a read. The signal changes while MCLK is HIGH. nRW is latched by ALE.
`
`IT
`
`IT
`
`OCZ
`
`IT
`
`IT
`
`OCZ
`
`IT
`
`IT
`
`Test interface reset. Note this pin does NOT have an internal pullup resistor. This pin
`must be pulsed or driven LOW to achieve normal device operation, in addition to the nor-
`mal device reset (nRESET).
`
`Not wait. When LOW this allows extra MCLK cycles to be inserted in memory accesses. It
`must change during the LOW phase of the MCLK cycle to be extended.
`
`Sequential address. This signal is the inverse of nMREQ, and is provided for compatibil-
`ity with existing ARM memory systems.
`
`This pin should be hard wired HIGH.
`
`Test bus input. This bus is used for off-board testing of the device. When the device is fit-
`ted to a circuit all these pins must be tied LOW.
`
`Test bus output. This bus is used for off-board testing of the device. When the device is fit-
`ted to a circuit and all the TESTIN[16:0] pins are driven LOW, these three outputs will be
`driven LOW. Note that these pins may not be tristated, except via the JTAG test port.
`
`Test interface reference Clock. This times all the transfers on the JTAG test interface.
`
`Test interface data input. Note this pin does NOT have an internal pullup resistor.
`
`OCZ
`
`Test interface data output. Note this pin does NOT have an internal pullup resistor.
`
`IT
`
`Test interface mode select. Note this pin does NOT have an internal pullup resistor.
`
`Positive supply. 16 pins are allocated to VDD in the 160 PQFP package.
`
`Ground supply. 16 pins are allocated to VSS in the 160 PQFP package.
`
`Table 1: Signal Descriptions
`
`nTRST
`
`nWAIT
`
`SEQ
`
`SnA
`
`TEST
`IN[16:0]
`
`TEST
`OUT[2:0]
`
`TCK
`
`TDI
`
`TDO
`
`TMS
`
`VDD
`
`VSS
`
`8
`
`SCEA Ex. 1052 Page 8
`
`

`
`Signal Description
`
`Notes:
`
`1.
`
`2.
`
`When output pads are placed in the high impedance state for long periods, care must be taken to
`ensure that they do not float to an undefined logic level, as this can dissipate power, especially in
`the pads.
`Although the input pads have TTL thresholds, and will correctly interpret a TTL level input, it must
`be noted that unless all inputs are driven to the voltage rails, the input circuits will consume power.
`
`Key to Signal Types:
`
`IT - Input, TTL threshold
`OCZ - Output, CMOS levels, tri-stateable
`ITOTZ - Input/output tri-stateable, TTL thresholds
`ICK - Input, clock levels
`
`9
`
`SCEA Ex. 1052 Page 9
`
`

`
`ARM610 Data Sheet
`
`10
`
`SCEA Ex. 1052 Page 10
`
`

`
`4.0
`
`5.0
`
`6.0
`
`1.0
`
`2.0
`3.0
`
`Introduction
`1.1
`Block Diagram
`1.2
`Functional Diagram
`Signal Description
`Programmer's Model
`3.1
`Register Configuration
`3.2
`Operating Mode Selection
`3.3
`Registers
`3.4
`Exceptions
`3.5
`Reset
`Instruction Set
`4.1
`Instruction Set Summary
`4.2
`The Condition Field
`4.3
`Branch and Branch with link (B, BL)
`4.4
`Data processing
`4.5
`PSR Transfer (MRS, MSR)
`4.6
`Multiply and Multiply-Accumulate (MUL, MLA)
`4.7
`Single data transfer (LDR, STR)
`4.8
`Block data transfer (LDM, STM)
`4.9
`Single data swap (SWP)
`4.10
`Software interrupt (SWI)
`4.11
`Coprocessor Instructions on ARM610
`4.12
`Coprocessor data operations (CDP)
`4.13
`Coprocessor data transfers (LDC, STC)
`4.14
`Coprocessor register transfers (MRC, MCR)
`4.15
`Undefined instruction
`4.16
`Instruction Set Examples
`Configuration
`5.1
`Internal Coprocessor Instructions
`5.2
`Registers
`Instruction and Data Cache (IDC)
`6.1
`Cacheable Bit - C
`6.2
`Updateable Bit - U
`6.3
`IDC Operation
`6.4
`IDC validity
`6.5
`Read-Lock-Write
`6.6
`IDC Enable/Disable and Reset
`7.0 Write Buffer (WB)
`7.1
`Bufferable bit
`7.2
`Write Buffer Operation
`Coprocessors
`8.0
`9.0 Memory Management Unit (MMU)
`9.1
`MMU Program Accessible Registers
`9.2
`Address Translation
`
` Table of Contents
`
`3
`5
`6
`7
`17
`17
`17
`18
`21
`25
`27
`27
`28
`29
`31
`38
`42
`44
`49
`56
`58
`60
`60
`62
`65
`67
`68
`73
`73
`73
`77
`77
`77
`77
`78
`78
`78
`81
`81
`81
`83
`85
`85
`86
`
`xi
`
`SCEA Ex. 1052 Page 11
`
`

`
`Translation Process
`9.3
`Level One Descriptor
`9.4
`Page Table Descriptor
`9.5
`Section Descriptor
`9.6
`Translating Section References
`9.7
`Level Two Descriptor
`9.8
`Translating Small Page References
`9.9
`Translating Large Page References
`9.10
`9.11 MMU Faults and CPU Aborts
`9.12
`Fault Address & Fault Status Registers (FAR & FSR)
`9.13
`Domain Access Control
`9.14
`Fault Checking Sequence
`9.15
`External Aborts
`9.16
`Interaction of the MMU, IDC and Write Buffer
`9.17
`Effect of Reset
`10.0 Bus Interface
`10.1
`ARM610 Cycle Speed
`10.2
`Cycle Types
`10.3 Memory Access
`10.4
`Read/Write
`10.5
`Byte/Word
`10.6 Maximum Sequential Length
`10.7 Memory Access Types
`10.8
`Unbuffered Writes / Uncacheable Reads
`10.9
`Buffered Write
`10.10
`Linefetch
`10.11
`Translation fetches
`10.12
`Read - lock -write
`10.13 ARM610 Cycle Type Summary
`11.0 Boundary Scan Test Interface
`11.1
`Overview
`11.2
`Reset
`11.3
`Pullup Resistors
`11.4
`Instruction Register
`11.5
`Public Instructions
`11.6
`Test Data Registers
`11.7
`Boundary Scan Interface Signals
`12.0 DC Parameters
`12.1
`Absolute Maximum Ratings
`12.2
`DC Operating Conditions
`12.3
`DC Characteristics
`13.0 AC Parameters
`13.1
`Test Conditions
`13.2
`Relationship between FCLK & MCLK
`13.3 Main Bus Signals
`Physical Details
`
`14.0
`
` Table of Contents
`
`87
`88
`88
`89
`90
`91
`92
`93
`94
`94
`96
`97
`99
`99
`100
`101
`101
`101
`101
`102
`102
`102
`104
`104
`104
`104
`105
`106
`107
`109
`109
`110
`110
`110
`110
`114
`117
`121
`121
`121
`122
`123
`123
`123
`125
`127
`
`xii
`
`SCEA Ex. 1052 Page 12
`
`

`
` Table of Contents
`
`Pinout
`15.0
`16.0 Appendix - Backward Compatibility
`
`129
`131
`
`xiii
`
`SCEA Ex. 1052 Page 13
`
`

`
` Table of Contents
`
`xiv
`
`SCEA Ex. 1052 Page 14
`
`

`
` Table of Contents
`
`xv
`
`SCEA Ex. 1052 Page 15
`
`

`
`ARM710 Data Sheet
`
`xvi
`
`SCEA Ex. 1052 Page 16
`
`

`
`Programmer's Model
`
`3.0 Programmer's Model
`
`ARM610 supports a variety of operating configurations. Some are controlled by register bits and are known
`as the register configurations. Others may be controlled by software and these are known as operating modes.
`
`3.1 Register Configuration
`
`The ARM610 processor provides 4 register configurations which may be changed while the processor is
`running and which are detailed in Chapter 4.0 Instruction Set.
`
`The bigend bit, in the Control Register, sets whether the ARM610 treats words in memory as being stored
`in Big Endian or Little Endian format, see Chapter 5.0 Configuration. Memory is viewed as a linear collection
`of bytes numbered upwards from zero. Bytes 0 to 3 hold the first stored word, bytes 4 to 7 the second and
`so on.
`
`In the Little Endian scheme the lowest numbered byte in a word is considered to be the least significant byte
`of the word and the highest numbered byte is the most significant. Byte 0 of the memory system should be
`connected to data lines 7 through 0 (D[7:0]) in this scheme.
`
`In the Big Endian scheme the most significant byte of a word is stored at the lowest numbered byte and the
`least significant byte is stored at the highest numbered byte. Byte 0 of the memory system should therefore
`be connected to data lines 31 through 24 (D[31:24]).
`
`The lateabt bit in the Control Register, see Chapter 5.0 Configuration, sets the processor's behaviour when a
`data abort exception occurs. It only affects the behaviour of load/store register instructions and is discussed
`more fully in Chapter 3.0 Programmer's Model and Chapter 4.0 Instruction Set.
`
`The other two configuration bits, prog32 and data32 are used for backward compatibility with earlier ARM
`processors (see 16.0 Appendix - Backward Compatibility) but should normally be set to 1. This configuration
`extends the address space to 32 bits, introduces major changes in the programmer's model as described
`below and provides support for running existing 26 bit programs in the 32 bit environment. This mode is
`recommended for compatibility with future ARM processors and all new code should be written to use
`only the 32 bit operating modes.
`
`Because the original ARM instruction set has been modified to accommodate 32 bit operation there are
`certain additional restrictions which programmers must be aware of. These are indicated in the text by the
`words shall and shall not. Reference should also be made to the ARM Application Notes “Rules for ARM Code
`Writers” and “Notes for ARM Code Writers” available from your supplier.
`
`3.2 Operating Mode Selection
`
`ARM610 has a 32 bit data bus and a 32 bit address bus. The data types the processor supports are Bytes (8
`bits) and Words (32 bits), where words must be aligned to four byte boundaries. Instructions are exactly
`one word, and data operations (e.g. ADD) are only performed on word quantities. Load and store
`operations can transfer either bytes or words.
`
`17
`
`SCEA Ex. 1052 Page 17
`
`

`
`ARM610 Data Sheet
`
`ARM610 supports six modes of operation:
`(1)
`User mode (usr): the normal program execution state
`(2)
`FIQ mode (fiq): designed to support a data transfer or channel process
`(3)
`IRQ mode (irq): used for general purpose interrupt handling
`(4)
`Supervisor mode (svc): a protected mode for the operating system
`(5)
`Abort mode (abt): entered after a data or instruction prefetch abort
`(6)
`Undefined mode (und): entered when an undefined instruction is executed
`
`Mode changes may be made under software control or may be brought about by external interrupts or
`exception processing. Most application programs will execute in User mode. The other modes, known as
`privileged modes, will be entered to service interrupts or exceptions or to access protected resources.
`
`3.3 Registers
`
` The processor has a total of 37 registers made up of 31 general 32 bit registers and 6 status registers. At any
`one time 16 general registers (R0 to R15) and one or two status registers are visible to the programmer. The
`visible registers depend on the processor mode and the other registers (the banked registers) are switched in
`to support IRQ, FIQ, Supervisor, Abort and Undefined mode processing. The register bank organisation is
`shown in Figure 3: Register Organisation. The banked registers are shaded in the diagram.
`
` In all modes 16 registers, R0 to R15, are directly accessible. All registers except R15 are general purpose and
`may be used to hold data or address values. Register R15 holds the Program Counter (PC). When R15 is
`read, bits [1:0] are zero and bits [31:2] contain the PC. A seventeenth register (the CPSR - Current Program
`Status Register) is also accessible. It contains condition code flags and the current mode bits and may be
`thought of as an extension to the PC.
`
`R14 is used as the subroutine link register and receives a copy of R15 when a Branch and Link instruction
`is executed. It may be treated as a general purpose register at all other times. R14_svc, R14_irq, R14_fiq,
`R14_abt and R14_und are used similarly to hold the return values of R15 when interrupts and exceptions
`arise, or when Branch and Link instructions are executed within interrupt or exception routines.
`
`18
`
`SCEA Ex. 1052 Page 18
`
`

`
`Programmer's Model
`
`General Registers and Program Counter Modes
`
`User32
`
`FIQ32
`
`Supervisor32
`
`Abort32
`
`IRQ32
`
`Undefined32
`
`R0
`
`R1
`
`R2
`
`R3
`
`R4
`
`R5
`
`R6
`
`R7
`
`R0
`
`R1
`
`R2
`
`R3
`
`R4
`
`R5
`
`R6
`
`R7
`
`R0
`
`R1
`
`R2
`
`R3
`
`R4
`
`R5
`
`R6
`
`R7
`
`R8
`
`R0
`
`R1
`
`R2
`
`R3
`
`R4
`
`R5
`
`R6
`
`R7
`
`R8
`
`R0
`
`R1
`
`R2
`
`R3
`
`R4
`
`R5
`
`R6
`
`R7
`
`R8
`
`R0
`
`R1
`
`R2
`
`R3
`
`R4
`
`R5
`
`R6
`
`R7
`
`R8
`
`R8
`
`R9
`
`R10
`
`R11
`
`R12
`
`R13
`
`R14
`
`R8_fiq
`
`R9_fiq
`
`R10_fiq
`
`R11_fiq
`
`R12_fiq
`
`R13_fiq
`
`R14_fiq
`
`R15 (PC)
`
`R15 (PC)
`
`R9
`
`R10
`
`R11
`
`R12
`
`R13_svc
`
`R14_svc
`
`R15 (PC)
`
`R9
`
`R10
`
`R11
`
`R12
`
`R13_abt
`
`R14_abt
`
`R15 (PC)
`
`R9
`
`R10
`
`R11
`
`R12
`
`R13_irq
`
`R14_irq
`
`R15 (PC)
`
`R9
`
`R10
`
`R11
`
`R12
`
`R13_und
`
`R14_und
`
`R15 (PC)
`
`Program Status Registers
`
`CPSR
`
`CPSR
`
`CPSR
`
`CPSR
`
`CPSR
`
`CPSR
`
`SPSR_fiq
`
`SPSR_svc
`
`SPSR_abt
`
`SPSR_irq
`
`SPSR_und
`
` Figure 3: Register Organisation
`
`FIQ mode has seven banked registers mapped to R8-14 (R8_fiq-R14_fiq). Many FIQ programs will not need
`to save any registers. User mode, IRQ mode, Supervisor mode, Abort mode and Undefined mode each have
`two banked registers mapped to R13 and R14. The two banked registers allow these modes to each have a
`private stack pointer and link register. Supervisor, IRQ, Abort and Undefined mode programs which
`require more than these two banked registers are expected to save some or all of the caller's registers (R0 to
`R12) on their respective stacks. They are then free to use these registers which they will restore before
`returning to the caller. In addition there are also five SPSRs (Saved Program Status Registers) which are
`loaded with the CPSR when an exception occurs. There is one SPSR for each privileged mode.
`
`19
`
`SCEA Ex. 1052 Page 19
`
`

`
`ARM610 Data Sheet
`
`flags
`
`control
`
`31
`
`N
`
`30
`
`Z
`
`29
`
`C
`
`28
`
`V
`
`27
`
`.
`
`8
`
`.
`
`7
`
`I
`
`6
`
`F
`
`5
`
`.
`
`.
`
`4
`
`3
`
`2
`
`1
`
`0
`
`M4
`
`M3
`
`M2
`
`M1
`
`M0
`
`Overflow
`Carry / Borrow / Extend
`Zero
`Negative / Less Than
`
`Mode bits
`FIQ disable
`IRQ disable
`
` Figure 4: Format of the Program Status Registers (PSRs)
`
`The format of the Program Status Registers is shown in Figure 4: Format of the Program Status Registers
`(PSRs). The N, Z, C and V bits are the condition code flags. The condition code flags in the CPSR may be
`changed as a result of arithmetic and logical operations in the processor and may be tested by all
`instructions to determine if the instruction is to be executed.
`
`The I and F bits are the interrupt disable bits. The I bit disables IRQ interrupts when it is set and the F bit
`disables FIQ interrupts when it is set. The M0, M1, M2, M3 and M4 bits (M[4:0]) are the mode bits, and these
`determine the mode in which the processor operates. The interpretation of the mode bits is shown in Table
`2: The Mode Bits. Not all combinations of the mode bits define a valid processor mode. Only those explicitly
`described shall be used.
`
`The bottom 28 bits of a PSR (incorporating I, F and M[4:0]) are known collectively as the control bits. The
`control bits will change when an exception arises and in addition can be manipulated by software when the
`processor is in a privileged mode. Unused bits in the PSRs are reserved and their state shall be preserved
`when changing the flag or control bits. Programs shall not rely on specific values from the reserved bits
`when checking the PSR status, since they may read as one or zero in future processors.
`
`M[4:0]
`
` 10000
`
` 10001
`
` 10010
`
` 10011
`
` 10111
`
` 11011
`
`Mode
`
` Accessible register set
`
` usr
`
`fiq
`
`irq
`
`svc
`
`abt
`
`und
`
`PC, R14..R0
`
` CPSR
`
`PC, R14_fiq..R8_fiq, R7..R0
`
`CPSR, SPSR_fiq
`
`PC, R14_irq..R13_irq, R12..R0
`
`CPSR, SPSR_irq
`
`PC, R14_svc..R13_svc, R12..R0
`
` CPSR, SPSR_svc
`
`PC, R14_abt..R13_abt, R12..R0
`
`CPSR, SPSR_abt
`
`PC, R14_und..R13_und, R12..R0
`
` CPSR, SPSR_und
`
`Table 2: The Mode Bits
`
`20
`
`SCEA Ex. 1052 Page 20
`
`

`
`Programmer's Model
`
`3.4 Exceptions
`
`Exceptions arise whenever there is a need for the normal flow of program execution to be broken, so that
`(for example) the processor can be diverted to handle an interrupt from a peripheral. The processor state
`just prior to handling the exception must be preserved so that the original program can be resumed when
`the exception routine has completed. Many exceptions may arise at the same time.
`
`ARM610 handles exceptions by making use of the banked registers to save state. The old PC and CPSR
`contents are copied into the appropriate R14 and SPSR and the PC and mode bits in the CPSR bits are forced
`to a value which depends on the exception. Interrupt disable flags are set where required to prevent
`otherwise unmanageable nestings of exceptions. In the case of a re-entrant interrupt handler, R14 and the
`SPSR should be saved onto a stack in main memory before re-enabling the interrupt; when transferring the
`SPSR register to and from a stack, it is important to transfer the whole 32 bit value, and not just the flag or
`control fields. When multiple exceptions arise simultaneously, a fixed priority determines the order in
`which they are handled. The priorities are listed later in this chapter.
`
`3.4.1 FIQ
`
`The FIQ (Fast Interrupt reQuest) exception is externally generated by taking the nFIQ input LOW. This
`input can accept asynchronous transitions, and is delayed by one clock cycle for synchronisation before it
`can affect the processor execution flow. It is designed to support a data transfer or channel process, and has
`sufficient private registers to remove the need for register saving in such applications (thus minimising the
`overhead of context switching). The FIQ exception may be disabled by setting the F flag in the CPSR (but
`note that this is not possible from User mode). If the F flag is clear, ARM610 checks for a LOW level on the
`output of the FIQ synchroniser at the end of each instruction.
`
`When a FIQ is detected, ARM610 performs the following:
`(1)
`Saves the address of the next instruction to be executed plus 4 in R14_fiq; saves CPSR in SPSR_fiq
`(2)
`Forces M[4:0]=10001 (FIQ mode) and sets the F and I bits in the CPSR
`(3)
`Forces the PC to fetch the next instruction from address 0x1C
`
`To return normally from FIQ, use SUBS PC, R14_fiq,#4 which will restore both the PC (from R14) and the
`CPSR (from SPSR_fiq) and resume execution of the interrupted code.
`
`3.4.2 IRQ
`
`The IRQ (Interrupt ReQuest) exception is a normal interrupt caused by a LOW level on the nIRQ input. It
`has a lower priority than FIQ, and is masked out when a FIQ sequence is entered. Its effect may be masked
`out at any time by setting the I bit in the CPSR (but note that this is not possible from User mode). If the I
`flag is clear, ARM610 checks for a LOW level on the output of the IRQ synchroniser at the end of each
`instruction. When an IRQ is detected, ARM610 performs the following:
`(1)
`Saves the address of the next instruction to be executed plus 4 in R14_irq; saves CPSR in SPSR_irq
`(2)
`Forces M[4:0]=10010 (IRQ mode) and sets the I bit in the CPSR
`(3)
`Forces the PC to fetch the next instruction from address 0x18
`
`21
`
`SCEA Ex. 1052 Page 21
`
`

`
`ARM610 Data Sheet
`
`To return normally from IRQ, use SUBS PC,R14_irq,#4 which will restore both the PC and the CPSR and
`resume execution of the interrupted code.
`
`3.4.3 Abort
`
`An ABORT can be signalled by either the internal Memory Management Unit or from the external ABORT
`input. ABORT indicates that the current memory access cannot be completed. For instance, in a virtual
`memory system the data corresponding to the current address may have been moved out of memory onto
`a disc, and considerable processor activity may be required to recover the data before the access can be
`performed successfully. ARM610 checks for ABORT during memory access cycles. When successfully
`aborted ARM610 will respond in one of two ways:
`(1)
`If the abort occurred during an instruction prefetch (a Prefetch Abort), the prefetched instruction is
`marked as invalid but the abort exception does not occur immediately. If the instruction is not
`executed, for example as a result of a branch being taken while it is in the pipeline, no abort will
`occur. An abort will take place if the instruction reaches the head of the pipeline and is about to be
`executed.
` If the abort occurred during a data access (a Data Abort), the action depends on the instruction type.
` Single data transfer instructions (LDR, STR) are aborted as though the instruction had not executed
`if the processor is configured for Early Abort. When configured for Late Abort, these instructions
`are able to write back modified base registers and the Abort handler must be aware of this.
`(b) The swap instruction (SWP) is aborted as though it had not executed, though externally the read
`access may take place.
`(c) Block data transfer instructions (LDM, STM) complete, and if write-back is set, the base is updated.
`If the instruction would normally have overwritten the base with data (i.e. LDM with the base in
`the transfer list), this overwriting is prevented. All register overwriting is prevented after the Abort
`is indicated, which means in particular that R15 (which is always last to be transferred) is preserved
`in an aborted LDM instruction.
`
`(2)
`
`(a)
`
`Note that on Data Aborts the ARM610 fault address and fault status registers are updated.
`
`When either a prefetch or data abort occurs, ARM610 performs the following:
`
`(1)
`
`(2)
`(3)
`
`Saves the address of the aborted instruction plus 4 (for prefetch aborts) or 8 (for data aborts) in
`R14_abt; saves CPSR in SPSR_abt.
`Forces M[4:0]=10111 (Abort mode) and sets the I bit in the CPSR.
`Forces the PC to fetch the next instruction from either address 0x0C (prefetch abort) or address 0x10
`(data abort).
`
`To return after fixing the reason for the abort, use SUBS PC,R14_abt,#4 (for a prefetch abort) or SUBS
`PC,R14_abt,#8 (for a data abort). This will restore both the PC and the CPSR and retry the aborted
`instruction.
`
`The abort mechanism allows a demand paged virtual memory system to be implemented when suitable
`memory management software is available. The processor is allowed to generate arbitrary addresses, and
`when the data at an address is unavailable the MMU signals an abort. The processor traps into system
`
`22
`
`SCEA Ex. 1052 Page 22
`
`

`
`Programmer's Model
`
`software which must work out the cause of the abort, make the requested data available, and retry the
`aborted instruction. The application program needs no knowledge of the amount of memory available to
`it, nor is its state in any way affected by the abort.
`
`Note that there are restrictions on the use of the external abort pin. See Chapter 9.0 Memory Management Unit
`(MMU).
`
`3.4.4 Software interrupt
`
`The software interrupt instruction (SWI) is used for getting into Supervisor mode, usually to request a
`particular supervisor function. When a SWI is executed, ARM610 performs the following:
`(1)
`Saves the address of the SWI instruction plus 4 in R14_svc; saves CPSR in SPSR_svc
`(2)
`Forces M[4:0]=10011 (Supervisor mode) and sets the I bit in the CPSR
`(3)
`Forces the PC to fetch the next instruction from address 0x08
`
`To return from a SWI, use MOVS PC,R14_svc. This will restore the PC and CPSR and return to the
`instruction following the SWI.
`
`3.4.5 Undefined instruction trap
`
`When the ARM610 comes across an instruction which it cannot handle (see Chapter 4

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket