Você está na página 1de 58

Arquitetura de Computadores

Celso Alberto Saibel Santos, Dr.


Dep. de Informtica
UFES
Sala 08 do CT-VII
saibel@inf.ufes.br

Ementa do Curso

Resumidamente:
Introduo Arquitetura e Organizao de Computadores.
Processador
Memria
Barramentos
Entrada/Sada (I/O)

Plano de Curso

Referncias Utilizadas / Recomendadas


REFERNCIA BSICA
Hennessy, John. L.; Patterson, David A.
Organizao e Projeto de
Computadores, 3a Ed, 2005. Campus.
REFERNCIAS COMPLEMENTARES
Hennessy, John. L.; Patterson, David A.
Arquitetura de Computadores: Uma
abordagem quantitativa, 4a Edio,
2007. Campus.
TANENBAUM, A. Arquitetura de
Computadores, 5 Edio, Prentice Hall
do Brasil.
STALLINGS, W. Arquitetura de
Computadores, 5 Edio, Prentice Hall
do Brasil.
HowStuffWorks - Learn How Everything
Works! URL:
http://www.howstuffworks.com/
Michael Karbo, Denmark, Europe. 19962012. PC Architecture. URL:
http://karbosguide.com/books/pcarchitectur
e/chapter01.htm

Objetivos do Curso
Capacitar os alunos a compreenderem conceitos
fundamentais da rea de Computao:
Arquitetura e organizao de computadores
Estes conceitos so importantes para um profissional que utilize
sistemas computacionais...
Garantir a homogeneidade dos alunos em relao
terminologia e conceitos essenciais de sistemas de
computao, no sentido de viabilizar as referncias a esses
conceitos posteriormente.

INTRODUO AOS SISTEMAS


COMPUTACIONAIS OU DE COMPUTAO

O que um Sistema?
Sistema: conjunto de componentes que trabalham de maneira
coordenada para realizar alguma atividade
Tecnolgicos: sistema de TV digital, sistema de controle
de freios, sistema de injeo eletrnica, sistema de reserva
de passagens, sistema de controle de trfego areo,
sistema de atendimento automtico, sistema distribudo,...
No-tecnolgicos: sistema circulatrio, sistema
respiratrio, sistema nervoso, sistema de venda de
bilhetes, ...
Abordagem sistmica
Facilita a compreenso do funcionamento como um todo e
a participao de cada uma das partes envolvidas

Ex: Abordagem Sistmica Sistema de Impresso


Por que no est imprimindo?
A impressora est ligada?
A impressora est funcionando e est imprimindo outros
documentos ?
Olhar a fila de impresso:
O seu doc est na fila?
H muitos docs. na fila?
A impressora est instalada?
A impressora est na rede

Sistema Nervoso

Sistema
CREBRO

Sensaes e
Conhecimento

Estmulos
(percepo)
Usurio

(pode ser outro sistema ou


componente)

O que um Sistema de Computao?

Sistema que realiza algum tipo de processamento de informaes de


entrada para gerar algum tipo de sada
O processamento (i.e., a computao) especificado (a) atravs
de um conjunto de instrues (um programa) que definem o que,
quando e como deve ser feito
Sistema (ou mquina) que tem como finalidade processar
informao e que suporta alteraes sua funcionalidade atravs da
sua programao
Processar informao (ou realizar computao) significa,
abstratamente, transformar elementos de entrada com o objetivo
de produzir elementos na sada, de uma forma coerente,
desejvel e previsvel.
O processamento da informao deve produzir resultados teis a
um usurio do sistema.

Sistema de Computao

Sistema
COMPUTADOR
OU
PROCESSADOR
Sada

Entrada
Usurio

10

Sistema Computacionais: Outro nvel de abstrao

11

Primeiros problemas a vista...

Entrada:
Como consigo interagir com o sistema?
Qual a linguagem que ele entende?
Quanto de conhecimento preciso ter para inserir coisas no
sistema?
Qual o formato ou modalidade devo usar?
...
Sada:
Qual a linguagem que o usurio entende?
Qual o resultado esperado pelo usurio?
Quanto de conhecimento preciso para entender os resultados
produzidos?
Qual o formato, linguagem e modalidade a ser utilizada?
...

12

Sistemas Computacionais

Um sistema computacional pode ser visto como uma estrutura


dividida em 3 componentes:

Hardware e seus Componentes

Software

Dados

13

Sistemas Computacionais

Sistemas computacionais: compostos por subsistemas

Hardware e seus Componentes


Infraestrutura eletrnica-digital para o processamento
Dispositivos de Entrada/Sada
Unidade Central de Processamento
Memria RAM
Interconexes (barramentos)

14

Estudo de Sistemas (Computacionais)


Os sistemas (incluindo os computacionais) so
extremamente complexos se forem estudados em todos
seus detalhes
SOLUO Diferentes nveis de ABSTRAO

Abstrao: distino entre as propriedades externas de


um componente e os detalhes internos de sua construo.
Ex:
Utilizamos dispositivos eltricos sem entender a sua
tecnologia
Beneficiamo-nos de servios de terceiros sem conhecer com
detalhes suas atividades
Ubiquidade um desejo ainda no atingido para sistemas
computacionais

15

16

Sistemas de Numerao: binrio e hexadecimal

17

Sistemas de Numerao

Nosso curso:
Base binria (base 2) e hexadecimal (base 16)

Representao de Inteiros e Operaes Bsicas


Soma, subtrao e multiplicao

Implementaes em hardware
[http://www.inf.ufsc.br/ine5365/clteoria.html]

Transformaes entre bases de representao

Representao de racionais

18

Sistemas de Numerao

Notao em ponto fixo


Menos utilizada
Notao em ponto flutuante
Nos computadores atuais:
impossvel a representao de nmeros reais em
computadores binrios digitais porque a representao binria
discreta.
Em qualquer linguagem de programao utilizamos
representaes que prevem algum grau de arredondamento.
Notao IEEE 754 (padro)

19

Por que o uso de notao binria?

Variveis Booleanas
Podem assumir apenas 2 valores: 0 e 1
Abstraes:
Lmpada: acesa (1) ou apagada (0)
Chave: fechada (1) ou aberta (0)
Verdadeiro (1) ou Falso(0)
Representao:
Expresso Lgica
Tabela Verdade
Smbolos (portas lgicas)

20

21

Anotaes da Parte 1

OBS: Essas anotaes so adaptaes do material


suplementar (apresentaes PPT) ao Livro do Hennessy e
Patterson, complementado com material de suporte do
Livro do Stallings. Supe-se que os estudantes tenham
noes de lgica digital e linguagem assembly para o
entendimento das aulas.

22

Introduo

Campo com mudanas rpidas:


Tubo de vcuo -> transistor -> CI -> VLSI (ver seo 1.4)
Dobrando a cada 1.5 anos:
Capacidade de memria
Velocidade do processador

(Avanos tecnolgicos & organizao)

Coisas que sero aprendidas:


Como computadores funcionam: fundamentao bsica
Como analisar seus desempenhos (ou como no se fazer isso!)

Questes que influenciam computadores recentes (caches, pipelines)

Por que aprender isso?


Voc quer ser um cientista da computao

Voc quer construir softwares (necessidade de desempenho)


Voc precisa tomar decises ou oferecer expertise na rea

23

O que um computador?

Componentes:
Entrada (mouse, teclado, USB)
Sada (monitor, impressora)
Memria (disk drives, DRAM, SRAM, CD, DVD, flash memory)
Rede
Foco inicial: o processador (controle e via de dados)
Implementado usando milhes de transistores
Impossvel entender olhando cada transistor
Precisamos de...

24

Abstrao

Removendo camadas
temos mais informao

Uma abstrao omite detalhes


desnecessrios, ajudando a reduzir
a complexidade

High-level
language
program
(in C)

swap(int v[], int k)


{int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
}

C compiler

Assembly
language
program
(for MIPS)

Quais detalhes nos parecem familiares


nessas abstraes ao lado?

swap:
muli $2, $5,4
add $2, $4,$2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31

Assembler

Binary machine
language
program
(for MIPS)

Como so executados cdigos Java e Android? Mquinas virtuais?


http://www.differencebetween.com/difference-between-android-and-vs-java/

00000000101000010000000000011000
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
00000011111000000000000000001000

25

Instruction Set Architecture

Instruction Set Architecture = Conjunto de Instrues


Uma abstrao muito importante
Interface entre nvel de hardware e software de baixo nvel
Padroniza instrues, padres de bits da linguagem de mquina, etc.
Vantagem: Implementes diferentes da mesma arquitetura
Desvantagem: As vezes dificulta o uso de novas invenes

True OU False: Compatibilidade binria fundamental?

Conjunto de Instrues relativamente recentes:


80x86/Pentium/K6, PowerPC, DEC Alpha, MIPS, SPARC, HP

26

O que tratado no Livro

Questes de desempenho (Cap. 2) vocabulrio e motivao


Um conjunto de instrues especfico (Cap. 3)
Aritmtica e construo de uma ULA (Cap. 4)
Construir um processador para executar nossas instrues (Cap. 5)
Pipelining para ganhar desempenho (Cap. 6)
Memria: caches e memria virtual (Cap. 7)
Entrada e Sada - I/O (Cap. 8)

Chave para uma boa nota na disciplina: guie-se pelos slides, mas
LEIA o Livro texto!

27

Arquitetura Bsica dos Computadores Atuais

CPU: ALU
(datapath)
+ control

interrupts

Cache
main bus
Main
Memory

I/O
Controller

I/O
Controller
Graphics
display

I/O
Controller
Keyboard

I/O
Controller
Network

28

Mas nem sempre foi assim ...

Da onde surgiram os computadores atuais?


J ouviu falar em baco e hollerith?
baco
Original do oriente mdio
Calculador decimal manual
Herman Hollerith (1860-1929)
Funcionrio do Departamento de Recenseamento dos Estados
Unidos
Construiu sua Mquina de Recenseamento ou Mquina
Tabuladora - 1866
Utilizava carto perfurado
Reduziu de 10 para 3 anos o perodo de realizao de censo de
1890

29

Um breve histrico

MARK I 1944
Primeiro computador eletromecnico
Desenvolvido pela Universidade de Harvard, com apoio da IBM
Medidas:
700.000 peas
800.000 metros de fios
17 metros de comprimento por 2 metros de altura
70 toneladas
Soma 0,3 segundos
Multiplicao 6 segundos

30

Um breve histrico

ENIAC 1945

Primeiro computador eletrnico.


Desenvolvido na Universidade de Pensilvnia.
Projeto do exrcito dos Estados Unidos para o clculo da
trajetria de projteis.
Alguns nmeros:

17.000 vlvulas.
50.000 comutadores.
70.000 resistncias.
Soma 0,0002 segundos.
Multiplicao 0,003 segundos.
111 m3.
30 toneladas.
Consumo 100.000 a 200.000 watts.

Programao conexo de fios tipo painel de telefonista.

31

Um breve histrico
Mquina de von Neumann
Proposta em 1946
Mquina composta por:
Memria (MEM)
Armazena dados, onde alguns destes dados so interpretados como
instrues de um programa a ser executado pela CPU
A caracterstica fundamental da mquina de von Neumann que
dados e programas esto armazenados numa mesma memria!

Unidade Central de Processamento (CPU)

Unidade de controle (UC)


Unidade de clculos aritmticos e lgicos (UAL)
Registrador de instruo (IR)
Ponteiro de instruo (IP)
Registrador de uso geral (acumulador - ACC)

Dispositivos de Entrada e Sada

Base para a maioria das arquiteturas atuais

32

Mquina de von Neumann

33

Voltando arquitetura Bsica Atual...

CPU: ALU
(datapath)
+ control

interrupts

Cache
main bus
Main
Memory

I/O
Controller

I/O
Controller
Graphics
display

I/O
Controller
Keyboard

I/O
Controller
Network

34

Como se fazer entender pelo computador?

Linguagem do computador : 100011000001 (bits)


Nmeros binrios: base da teoria computacional
1. Primrdios: uso da linguagem nativa em binrio!!!
2. Linguagem de Montagem (Assembly)

Montador: traduz uma verso simblica das instrues


para sua representao binria na arquitetura
add A, B montador 100011000001

3.

Linguagem de Programao de alto-nvel

Compilador: traduz instrues de alto-nvel para


instrues binrias diretamente ou via um montador
A + B compilador add A, B montador
100011000001 ou
A + B compilador 100011000001

35

Mas s isso?
Existe ainda um programa que gerencia os recursos da mquina
durante a execuo dos programas: o SISTEMA
OPERACIONAL (SO)
Operaes de Entrada/Sada (E/S), carga do programa na
memria, excees, etc.
O SO funciona como um gerente dos recursos, escondendo o
acesso direto ao hardware dos usurios
Mais ainda: multiprocessamento, gerncia de arquivos,
processamento distribudo, ...
Assim, existem diversas camadas e servios disponveis para
auxiliar nossa comunicao com a mquina:
Um modelo em camadas e servios uma forma
interessante de abstrao para a comunicao

36

Uma questo importante!!!

6o. bit

15o. bit

O que isto?
00000000001000100100000000100000
214

25 ...

20

Pode ser lido como:


25 + 214 + 217 + 221
= 32 + 16384 + 131072 + 2097152
= 2244640

37

Dilogo com o computador...

O que isto?
00000001000000010000001000001000000000000100000
00000001000000110000010000001001000000000100000
000000100000100000001001000001010000000 00100010

Melhor assim?
00000001 00000001 00000010 00001000 0000000 00100000
00000001 00000011 00000100 00001001 0000000 00100000
00000010 00001000 00001001 00000101 0000000 00100010
38

Traduzindo...
E assim?
1
1
1
3
2
8

2
4
9

8
9
5

0
0
0

32
32
34

Melhorando...
add $8,
add $9,
sub $5,

$1,
$3,
$8,

$2
$4
$9

39

Traduzindo mais um pouco...


Melhorando ainda mais...
$8 = $1 + $2
$9 = $3 + $4
$5 = $8 - $9

Claro agora?
u=a+b
v=c+d
x=u-v
Sim, claro: x = (a+b) - (c+d)
40

Nveis de Representao
Programa em
Linguagem de Alto-Nvel

x = (a+b)
x = x (c+d)
Compilador /
Interpretador

Compilador

lw
lw
sw
sw

Programa em Linguagem
de Montagem
Montador ou
Assembler

$15,
$16,
$16,
$15,

0($2)
4($2)
0($2)
4($2)

0000 1001 1100 0110 1010 1111 0101 1000


1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111

Programa em
Linguagem de Mquina

Arquitetura Conjunto de Instrues

Interpretao da Mquina
Especificao do
controle de sinais

ALUOP[0:3] <= InstReg[9:11] & MASK

41

Implementao em Circuitos
Lgica Binria

42

Tecnologia Desempenho e Integrao

Clula Complexa

Lgica de portas CMOS


Transistores

Ligaes

43

Transistor MOS : Base do Funcionamento

X
I

V+
ig

44

Tecnologia bsica: CMOS

CMOS: Complementary Metal Oxide Semiconductor


Transistors NMOS (N-Type Metal Oxide Semiconductor)
Transistors PMOS (P-Type Metal Oxide Semiconductor)
Vdd = 5V
Transistor NMOS
Uma tenso alta (HIGH = Vdd) no gate
torna o transistor um condutor
GND = 0v
Uma tenso baixa (LOW = GND) no gate
abre o circuito
Transistor PMOS
Uma tenso baixa (LOW = GND) no gate
torna o transistor um condutor
Uma tenso alta (HIGH = Vdd) no gate
abre o circuito

GND = 0v

Vdd = 5V

45

NOT

Porta Lgica NOT


a porta Inversora
Operador: Barra, Apstrofo

A , A
Smbolo

Tabela da Verdade
A
0
1

F = A
1
0

46

Componentes bsicos: Inversor CMOS


Vdd

Smbolo
In

Circuito

PMOS

In

Out

Out
NMOS

Operao do Inversor
Vdd

Vout
Vdd

Vdd

Vdd
Open

Carga
Sada = 1

Sada = 0

Open

Descarga
Vdd

Vin

47

Componentes bsicos: Portas Lgicas CMOS


Porta NAND
A
A

Out

B Out

0
0
1
1

Porta NOR
0
1
0
1

1
1
1
0

A
A

Out

Vdd

0
0
1
1

B Out
0
1
0
1

1
0
0
0

Vdd
A
Out
B

B
Out
A

48

Circuitos Lgicos

Circuito Combinacional: sadas refletem o estado instantneo das


entradas (ex. somador)
Circuito Seqencial: progresso de estado em estado ma medida
que ocorrem mudanas nas entradas (ex. contador)
Requisitos:
Armazenam estado parcial (memria)
Uso de sinais para promover a transio de um estado a outro
(relgios ou clocks).
Exemplo:
Aluno est em determinado estado (na escola)
Move para outro estado (dirige p/ casa) quando a aula termina
(evento) s 18:00 horas.

49

Circuitos Seqenciais: Mquina de Estados


Mquina de estados: progresso do sistema estado atual e
funo prximo estado
Controle de operaes em uma CPU
Mudanas de estados pelo clock: sncronas

Estado
Corrente

Funo prximo
estado

Clock

Prximo
Estado

Entradas
Funo

Sadas

sada

50

Armazenando um Programa

Instrues armazenadas como binrios


Dados (obviamente??) tambm armazenados como nmeros
binrios
Programas e dados so armazenados numa mesma memria:
arquitetura von Neumann

Registradores

CPU

Memria Principal

ULA

Dados e
instrues
armazenados
na mesma
... ento, quando eles
memria so carregados para a
CPU, os dados vo
para os registradores e
as instrues so
executadas.

51

Memria na Arquitetura MIPS (Patterson)

Arranjo de palavras
cada palavra contm 32 bits
... isto , quatro bytes de 8 bits
Endereos de memria referem-se a palavras ao invs de bytes
diretamente
Os endereos podem ser armazenados em palavras
Portanto, cada posio endereada contm 8 bits
Em geral, as arquiteturas no acessam bits diretamente, mas
blocos ou conjuntos de bits
O tamanho dos blocos variam de acordo com os nveis de
memria endereados...

52

Outra possvel interpretao!?!?

Uma palavra de memria contm:


Hexadecimal:
41424344
Binrio: 0100 0001 0100 0010 0100 0011 0100 0100

msb

O que representa?
Cdigo ASCII (ANSI):
ex. A=65 (0x41), a= 97, B=66, C=67, ...
0=48, 1=49, ...

Ento qual a resposta?

lsb

53

...Resposta

Depende da forma como o endereamento aos bytes organizado:

ABCD se byte + significativo est no < endereo: bigendian


DCBA se byte + significativo est no > endereo: littleendian

Algumas Arquiteturas:
SPARC big-endian (compatibilidade com a linha 68K usada
pela SUN)
MIPS configura-se em big ou little-endian (interoperabilidade)
IBM big-endian
Intel 80x86 e VAX little-endian

54

Exemplo

Implementao little-endian
Endereo do byte = Endereo da palavra + offset (deslocamento)

Offset

ms
+3 +2
3

A
7

Endereos
de Bytes

41

+1
1

B
6

42

ls
+0
0

C D
5

43

44

Palavra
0

4
8
12

(Contedo em
Hexadecimal)

16
55

Instrues Bsicas de Programas


Conjunto de instrues = linguagem de mquina
Formato da Instruo: opcode [operandos]
Tipos de instruo:
Instrues aritmticas e lgicas (add, sub, AND, OR)
Referncia memria ou Load&store
Desvios Condicionais: if + goto / if-then-else
Desvios Incondicionais ou saltos (jumps)
Conjunto de instrues complexo: CISC
Lgica de controle complexa, microprogramas
Conjunto de instrues reduzido: RISC
Lgica de controle mais simples, muitos registradores, tipos
de endereamento simples

56

Desempenho x Tecnologia
Poder da Tecnologia Ganho: 1.2 x 1.2 x 1.2 = 1.7 x / ano
Tamanho: miniaturizao do transistor ganha 10%/ ano
velocidade de chaveamento ganha 1.2 / ano.
Densidade: aumenta 1.2x / ano.
rea da pastilha (die): 1.2x / ano.
A lio da abordagem RISC deixar o conjunto de instrues
(ISA) o mais simples possvel:
Ciclo de projeto curto explora de maneira otimizada a
tecnologia (~3 anos)
Tcnicas de pipeline e previso de desvios (branches)
Caches on-chip maiores e mais sofisticados

57

Filosofia RISC [Tanembaum]...


1. Regra de base: Simplificar a via de dados
registradores, ULA e barramentos de interconexo;
2. Minimizar tempo de ciclo da via de dados:
Faa o comum executar mais rpido
A simplicidade favorece a regularidade
A perfeio atingida, no quando no existe nada
mais a acrescentar, mas quando no existe nada mais
a jogar fora! [St. Exupry]

58

Você também pode gostar