Organização de Computadores Fabiano Hessel hessel@inf.pucrs.br hessel

Preview:

Citation preview

Organização de Computadores

Fabiano Hesselhessel@inf.pucrs.br

http://www.inf.pucrs.br/~hessel

© 2000 Morgan Kaufman

Overheads for Computers as Components

Bibliografia

Livro texto Patterson, D. A. & Hennessy, J. L.

Organização e projeto de computadores: a interface hardware/software

Livros referenciados e outras referências Disponíveis na página da disciplina

Slides e documentos disponíveis na página

© 2000 Morgan Kaufman

Overheads for Computers as Components

Conteúdo

Revisão de conceitos básicosProcessador Cleópatra

Características gerais Linguagem assembly Bloco de dados Bloco de controle

VHDL

© 2000 Morgan Kaufman

Overheads for Computers as Components

Avaliação

2 provas e 1 trabalho práticoFórmula G1

G1= ( P1 + P2 + T ) / 3P1 - 24/ABRILP2 - 01/JULHOP4 - 03/JULHOG2 - 08/JULHO

© 2000 Morgan Kaufman

Overheads for Computers as Components

Trabalho

Implementar o processador R11, utilizando a linguagem VHDL

Especificação do trabalho prevista para Maio

Apresentação dos trabalhos 24/JULHO 26/JULHO

© 2000 Morgan Kaufman

Overheads for Computers as Components

Aviso

Semana Acadêmica Durante a semana acadêmica não

haverá aula, estando os alunos e o professor dispensados para acompanhar o evento.

Período: 09 a 13 de Junho

© 2000 Morgan Kaufman

Overheads for Computers as Components

Embedding a computer

CPU

mem

input

output analog

analog

embeddedcomputer

© 2000 Morgan Kaufman

Overheads for Computers as Components

Instruction sets

Computer architecture taxonomy.Assembly language.

© 2000 Morgan Kaufman

Overheads for Computers as Components

von Neumann architecture

Memory holds data, instructions.Central processing unit (CPU) fetches

instructions from memory. Separate CPU and memory

distinguishes programmable computer.CPU registers help out: program

counter (PC), instruction register (IR), general-purpose registers, etc.

© 2000 Morgan Kaufman

Overheads for Computers as Components

CPU + memory

memoryCPU

PC

address

data

IRADD r5,r1,r3200

200

ADD r5,r1,r3

© 2000 Morgan Kaufman

Overheads for Computers as Components

Harvard architecture

CPU

PCdata memory

program memory

address

data

address

data

© 2000 Morgan Kaufman

Overheads for Computers as Components

von Neumann vs. Harvard

Harvard can’t use self-modifying code.

Harvard allows two simultaneous memory fetches.

Most DSPs use Harvard architecture for streaming data: greater memory bandwidth; more predictable bandwidth.

© 2000 Morgan Kaufman

Overheads for Computers as Components

RISC vs. CISC

Complex instruction set computer (CISC): many addressing modes; many operations.

Reduced instruction set computer (RISC): load/store; pipelinable instructions.

© 2000 Morgan Kaufman

Overheads for Computers as Components

Instruction set characteristics

Fixed vs. variable length.Addressing modes.Number of operands.Types of operands.

© 2000 Morgan Kaufman

Overheads for Computers as Components

Programming model

Programming model: registers visible to the programmer.

Some registers are not visible (IR).

© 2000 Morgan Kaufman

Overheads for Computers as Components

Multiple implementations

Successful architectures have several implementations: varying clock speeds; different bus widths; different cache sizes; etc.

© 2000 Morgan Kaufman

Overheads for Computers as Components

Assembly language

One-to-one with instructions (more or less).

Basic features: One instruction per line. Labels provide names for addresses

(usually in first column). Instructions often start in later columns. Columns run to end of line.

© 2000 Morgan Kaufman

Overheads for Computers as Components

ARM assembly language example

label1 ADR r4,cLDR r0,[r4] ; a commentADR r4,dLDR r1,[r4]SUB r0,r0,r1 ; comment

© 2000 Morgan Kaufman

Overheads for Computers as Components

Pseudo-ops

Some assembler directives don’t correspond directly to instructions: Define current address. Reserve storage. Constants.

© 2000 Morgan Kaufman

Overheads for Computers as Components

Endianness

Relationship between bit and byte/word ordering defines endianness:

byte 3 byte 2 byte 1 byte 0 byte 0 byte 1 byte 2 byte 3

bit 31 bit 0 bit 0 bit 31

little-endian big-endian

© 2000 Morgan Kaufman

Overheads for Computers as Components

Example: C assignments (ARM Processor)

C: x = (a + b) - c;

Assembler:ADR r4,a ; get address for aLDR r0,[r4] ; get value of aADR r4,b ; get address for b, reusing r4LDR r1,[r4] ; get value of bADD r3,r0,r1 ; compute a+bADR r4,c ; get address for cLDR r2,[r4] ; get value of c

© 2000 Morgan Kaufman

Overheads for Computers as Components

C assignment, cont’d.

SUB r3,r3,r2 ; complete computation of xADR r4,x ; get address for xSTR r3,[r4] ; store value of x

© 2000 Morgan Kaufman

Overheads for Computers as Components

Example: C assignments (SHARC DSP)

C:x = (a + b) - c;

Assembler:R0 = DM(_a) ! Load aR1 = DM(_b); ! Load bR3 = R0 + R1;R2 = DM(_c); ! Load cR3 = R3-R2;DM(_x) = R3; ! Store result in x