23
Organização de Computadores Fabiano Hessel [email protected] http://www.inf.pucrs.br/~hessel

Organização de Computadores Fabiano Hessel [email protected] hessel

Embed Size (px)

Citation preview

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

Organização de Computadores

Fabiano [email protected]

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

Page 2: Organização de Computadores Fabiano Hessel hessel@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

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

© 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

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

© 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

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

© 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

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

© 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

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

© 2000 Morgan Kaufman

Overheads for Computers as Components

Embedding a computer

CPU

mem

input

output analog

analog

embeddedcomputer

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

© 2000 Morgan Kaufman

Overheads for Computers as Components

Instruction sets

Computer architecture taxonomy.Assembly language.

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

© 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.

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

© 2000 Morgan Kaufman

Overheads for Computers as Components

CPU + memory

memoryCPU

PC

address

data

IRADD r5,r1,r3200

200

ADD r5,r1,r3

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

© 2000 Morgan Kaufman

Overheads for Computers as Components

Harvard architecture

CPU

PCdata memory

program memory

address

data

address

data

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

© 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.

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

© 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.

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

© 2000 Morgan Kaufman

Overheads for Computers as Components

Instruction set characteristics

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

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

© 2000 Morgan Kaufman

Overheads for Computers as Components

Programming model

Programming model: registers visible to the programmer.

Some registers are not visible (IR).

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

© 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.

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

© 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.

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

© 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

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

© 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.

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

© 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

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

© 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

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

© 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

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

© 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