compiler development (cmpsc 401)the architecture for the digital world arm designs technology that...

49
Compiler Development (CMPSC 401) ARM Architecture Janyl Jumadinova April 4, 2019 Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 1 / 45

Upload: others

Post on 13-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Compiler Development (CMPSC 401)ARM Architecture

Janyl Jumadinova

April 4, 2019

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 1 / 45

Page 2: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

ARM Ltd

Founded in November 1990– Spun out of Acorn Computers

Designs the ARM range of RISC processor cores.

Licenses ARM core designs to semiconductor partners who fabricateand sell to their customers.– ARM does not fabricate silicon itself.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 2 / 45

Page 3: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

ARM Ltd

Founded in November 1990– Spun out of Acorn Computers

Designs the ARM range of RISC processor cores.

Licenses ARM core designs to semiconductor partners who fabricateand sell to their customers.– ARM does not fabricate silicon itself.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 2 / 45

Page 4: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

ARM Ltd

Also develop technologies to assist with the designing of the ARMarchitecture– Software tools, boards, debug hardware, application software,graphics, bus architectures, peripherals, cell libraries

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 3 / 45

Page 5: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

The Architecture for the Digital World

ARM designs technology that lies at the heart of advanced digital products

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 4 / 45

Page 6: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

ARM Business Today

Processor Shipped In Total: > 50 Billion

Processor Licenses: 500+

Semiconductor Partners: 200+

Process Technology: 16 − 250 nm

Connected Community Members: 700+

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 5 / 45

Page 7: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

ARM Processor Applications

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 6 / 45

Page 8: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

World’s Smallest ARM Computer?

Phoenix

Also, Kinetis KL02 (chip size: 1.9 x 2.0 millimeters)

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 7 / 45

Page 9: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

World’s Largest ARM Computer?

IceCube

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 8 / 45

Page 10: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

From 1mm3 to 1km3

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 9 / 45

Page 11: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

ARM

The ARM is a 32-bit architecture.

When used in relation to the ARM:

Byte means 8 bitsHalfword means 16 bits (two bytes)Word means 32 bits (four bytes)

Most ARM’s implement two instruction sets:– 32-bit ARM Instruction Set– 16-bit/32bit Thumb Instruction Set

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 10 / 45

Page 12: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

The Registers

ARM has 37 registers in total

All are 32-bit long

1 dedicated program counter (r15)1 dedicated current program status register5 dedicated saved program status registers30 general purpose registers

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 11 / 45

Page 13: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Register Allocation

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 12 / 45

Page 14: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Program Status Registers (CPSR and SPSR)

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 13 / 45

Page 15: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Condition Flags

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 14 / 45

Page 16: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Conditional Execution

Most instruction sets only allow branches to be executed conditionally.

However by reusing the condition evaluation hardware, ARMeffectively increases number of instructions.

All instructions contain a condition field which determines whetherthe CPU will execute them.

Allows very dense in line code, without branches.

The time penalty of not executing several conditional instructions isfrequently less than overhead of the branch or subroutine call thatwould otherwise be needed.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 15 / 45

Page 17: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Conditional Execution

Most instruction sets only allow branches to be executed conditionally.

However by reusing the condition evaluation hardware, ARMeffectively increases number of instructions.

All instructions contain a condition field which determines whetherthe CPU will execute them.

Allows very dense in line code, without branches.

The time penalty of not executing several conditional instructions isfrequently less than overhead of the branch or subroutine call thatwould otherwise be needed.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 15 / 45

Page 18: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Condition Flags

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 16 / 45

Page 19: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Condition Flags

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 17 / 45

Page 20: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Condition Flags

To execute an instruction conditionally, simply postfix it with theappropriate condition:

For example an add instruction takes the form:

ADD r0,r1,r2 ; r0 = r1 + r2 (ADDAL)

To execute this only if the zero flag is set:

ADDEQ r0,r1,r2 ; If zero flag set then...

; ...r0 = r1 + r2

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 18 / 45

Page 21: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Condition Flags

To execute an instruction conditionally, simply postfix it with theappropriate condition:

For example an add instruction takes the form:

ADD r0,r1,r2 ; r0 = r1 + r2 (ADDAL)

To execute this only if the zero flag is set:

ADDEQ r0,r1,r2 ; If zero flag set then...

; ...r0 = r1 + r2

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 18 / 45

Page 22: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Condition Flags

By default, data processing operations do not affect the conditionflags (apart from the comparisons where this is the only effect).

To cause the condition flags to be updated, the S bit of theinstruction needs to be set by postfixing the instruction (and anycondition code) with an “S”.

For example to add two numbers and set the condition flags:

ADDS r0,r1,r2 ; r0 = r1 + r2

;... and set flags

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 19 / 45

Page 23: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Instruction Classes

Branch instructions

Data processing instructions

Load and store instructions

Status register access instructions

Miscellaneous instructions

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 20 / 45

Page 24: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Branch Instructions

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 21 / 45

Page 25: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Branch Instructions

Branch : B{<cond>} label

Branch with Link : BL{<cond>} sub_routine_label

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 22 / 45

Page 26: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Conditional Branches

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 23 / 45

Page 27: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Data Processing Instructions

Largest family of ARM instructions, all sharing the same instructionformat.

Contains:

Arithmetic operationsComparisons (no results just set condition codes)Logical operationsData movement between registers

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 24 / 45

Page 28: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Data Processing Instructions

Remember, this is a load / store architecture

These instruction only work on registers, NOT memory.

They each perform a specific operation on one or two operands.

First operand always a register Rn

Second operand sent to the ALU via barrel shifter.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 25 / 45

Page 29: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Data processing instructions

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 26 / 45

Page 30: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Arithmetic Operations

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 27 / 45

Page 31: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Comparisons

The only effect of the comparisons is to update the condition flags.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 28 / 45

Page 32: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Logical Operations

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 29 / 45

Page 33: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Example

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 30 / 45

Page 34: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Example

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 31 / 45

Page 35: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Data Movement

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 32 / 45

Page 36: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Barrel Shifter

The ARM doesn’t have actual shift instructions.

Instead it has a barrel shifter which provides a mechanism to carryout shifts as part of other instructions.

So what operations does the barrel shifter support?

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 33 / 45

Page 37: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Barrel Shifter - Left Shift

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 34 / 45

Page 38: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Barrel Shifter - Right Shifts

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 35 / 45

Page 39: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Barrel Shifter - Rotations

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 36 / 45

Page 40: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Load and Store instructions

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 37 / 45

Page 41: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Example

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 38 / 45

Page 42: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code

We will test ARM programs on a bare metal emulated by Qemu.The assembly program source file consists of a sequence of statements,one per line. Each statement has the following format.

label: instruction @ comment

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 39 / 45

Page 43: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code: add.s

.text

start: @ Label

mov r0, #5 @ Load register r0 with value 5

mov r1, #4 @ Load register r1 with value 4

add r2, r1, r0 @ Add r0 and r1, store in r2

stop: b stop @ Infinite loop to stop

execution

The .text is an assembler directive, which says that the followinginstructions have to be assembled into the code section.

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 40 / 45

Page 44: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code: add.s

To assemble the program, we can invoke the GNU Toolchain’s assembleras:

arm-none-eabi-as -o add.o add.s

To generate the executable file, we can invoke the GNU Toolchain’s linkerld:

arm-none-eabi-ld -Ttext=0x0 -o add.elf add.o

-Ttext=0x0, specifies that addresses should be assigned to the labels, suchthat the instructions were starting from address 0x0. To view the addressassignment for various labels, use nm command: arm-none-eabi-nm

add.elf

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 41 / 45

Page 45: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code: add.s

To assemble the program, we can invoke the GNU Toolchain’s assembleras:

arm-none-eabi-as -o add.o add.s

To generate the executable file, we can invoke the GNU Toolchain’s linkerld:

arm-none-eabi-ld -Ttext=0x0 -o add.elf add.o

-Ttext=0x0, specifies that addresses should be assigned to the labels, suchthat the instructions were starting from address 0x0. To view the addressassignment for various labels, use nm command: arm-none-eabi-nm

add.elf

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 41 / 45

Page 46: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code

The ELF format works when you have an OS around, but to run theprogram on bare metal, we will have to convert it to a binary format.- Use GNU toolchain’s objcopy command can be used to convert betweendifferent object file formats:

objcopy -O <output-format> <in-file> <out-file>

arm-none-eabi-objcopy -O binary add.elf add.bin

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 42 / 45

Page 47: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code

We will run our program on the connex board.

On this board a 16MB Flash is located at address 0x0.

When qemu emulates the connex board, a file has to be specifiedwhich will be treated file as Flash memory.

To test the program, on the emulated Gumstix connex board, we firstcreate a 16MB file representing the Flash.

We use the dd command to copy 16MB of zeroes from /dev/zero tothe file flash.bin. The data is copied in 4K blocks.

dd if=/dev/zero of=flash.bin bs=4096 count=4096

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 43 / 45

Page 48: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code

We now copy add.bin file into the beginning of the Flash:dd if=add.bin of=flash.bin bs=4096 conv=notrunc

This is the equivalent of programming the bin file on to the Flashmemory.

After reset, the processor will start executing from address 0x0, andthe instructions from the program will get executed. The commandto invoke qemu is: qemu-system-arm -M connex -pflash

flash.bin -nographic -serial /dev/null

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 44 / 45

Page 49: Compiler Development (CMPSC 401)The Architecture for the Digital World ARM designs technology that lies at the heart of advanced digital products Janyl Jumadinova Compiler Development

Running ARM code

To view the contents of the registers the info registers monitor commandcan be used.

(qemu) info registers

R00=00000005 R01=00000004 R02=00000009 R03=00000000

R04=00000000 R05=00000000 R06=00000000 R07=00000000

R08=00000000 R09=00000000 R10=00000000 R11=00000000

R12=00000000 R13=00000000 R14=00000000 R15=0000000c

PSR=400001d3 -Z-- A svc32

Janyl Jumadinova Compiler Development (CMPSC 401) April 4, 2019 45 / 45