Você está na página 1de 36

Arquitetura de

Computadores
Moderna
Eduardo Barrre (eduardo.barrere@ice.ufjf.br)
DCC/UFJ F
Baseado no material do prof. Marcelo Lobosco
Agenda
Viso Geral
Objetivos do Curso
Ementa
Bibliografia
Avaliaes
Datas Importantes
Histrico e Evoluo
Abstraes e Tecnologias Computacionais
Linguagem de Mquina
Viso Geral
Estudo da organizao e projeto de
computadores (hardware e software) com
a finalidade de entender/buscar o
desempenho
Objetivos do Curso
Permitir ao aluno:
Avaliar arquiteturas e SOs em busca de obter
desempenho para finalidades especficas.
Estudar e pensar o hardware como
elemento facilitador/limitador do desempenho
da aplicao
Estudar e pensar o SO como elemento
facilitador/limitador do desempenho da
aplicao
Ementa da parte de Hardware
Reviso de:
Abstraes e Tecnologias Computacionais;
Instrues: a Linguagem de Mquina;
Aritmtica Computacional;
Avaliando e Compreendendo o Desempenho;
O Processador: Caminho de Dados e Controle;
Pipelining;
Hierarquia de Memria
Armazenamento, redes e outros perifricos
Bibliografia Bsica
PATERSON, David A. e HENESSY,
J ohn L. Organizao e Projeto de
Computadores: a Interface
Hardware/Software. 3. Edio. Ed.
Campus, 2005.
PATERSON, David A. and
HENESSY, J ohn L. Arquitetura de
Computadores: Uma Abordagem
Quantitativa, Ed. Campus, 2003 (3
ed.)
Bibliografia Complementar
TANEMBAUM, Andrew S., Organizao
estruturada de computadores. 5.
Edio. LTC, 2008.
Outras bibliografias no plano da disciplina.
Avaliaes da 1a parte
Uma prova, provavelmente no dia 11/abril,
valendo 30 pontos
Seminrio, provavelmente no dia 15/abril,
valendo 20 pontos sobre desempenho de
hardware.
von Neummann
1952: J ohn von Neumann (1903-1957) projeta a
mquina IAS
Memria
UC ULA
acumulador
E S
Projeto lgico
ainda a base dos
computadores
digitais
von Neumann
Transistores
1948: Bell Labs desenvolve o transistor
Menor, mais rpido e duradouro que as vlvulas
MIT desenvolve TX-0
Primeiro computador transistorizado
PDP-1 (US$120,000)
Primeiro video-game
PDP-8 (US$16,000)
nico barramento
Circuitos Integrados
Dcada de 1960
Chip (vrios transistores em uma nica
pastinha de silcio)
IBM System/360
Multiprogramao
Emulao
16 MB de memria
VLSI, ULSI e Computadores
Pessoais
Dcada de 1980: Very Large
Scale Integration
Dezenas/centenas de milhares
de transistores em um nico
chip
Dcada de 1990: Ultra Large
Scale Integration
Milhes de transistores em um
nico chip
Classes de computadores
Desktop
Uso individual
nfase em bom desempenho por um baixo custo
Acesso via teclado/mouse
Servidor:
Mltiplos usurios
Projetados para suportar grandes cargas de trabalho
(nica aplicao complexa/mltiplas tarefas pequenas)
Acesso via rede
Abrangem faixa mais ampla em termos de custo e
capacidade
Classes de computadores
Computadores embarcados/embutidos:
Maior classe de computadores
Microprocessadores encontrados em micro-ondas,
celular, automveis, mquinas de lavar, avies...
Projetados para executar aplicaes / conjunto de
aplicaes relacionadas com um nico sistema
Necessidades especficas: desempenho mnimo com
limitaes rgidas em relao ao custo ou potncia
Possuem maior tolerncia a falhas
Obtida por simplicidade e/ou redundncia
Por Baixo do Seu Programa
Aplicaes tpicas podem consistir de milhares de linhas
de cdigo e se basear em bibliotecas de software que
implementam funes complexas
Hardware s pode executar instrues extremamente
simples
Camadas de software interpretam instrues de alto nvel
nas instrues simples que o hardware compreende
Organizadas de modo hierrquico
Muitos tipos de software de sistema
SO e compilador fundamentais
Por Baixo do Seu Programa
Compiladores
Realizam outra funo fundamental: traduo
de programas escritos em linguagem de alto
nvel em instrues que o hardware possa
executar
Processo complexo devido sofisticao das
linguagens modernas e s instrues simples
executadas pelo hardware
Disciplina especfica para estudar
Compiladores
Por Baixo do Seu Programa
Por Baixo do Seu Programa
Linguagens de Alto Nvel oferecem vrios
benefcios
Permitem que o programador pense em uma
linguagem mais natural
Uso de palavras em ingls e notao algbrica
Permitem que linguagem seja projetada de acordo
com uso pretendido
Fortan, Cobol, Lisp...
Maior produtividade do programador
Linguagens independentes do computador onde
sero executadas
Falcias e Armadilhas
Armadilha: Ignorar o inevitvel progresso
do hardware ao planejar uma nova
mquina
Voc planeja introduzir um computador
revolucionrio, 3 vezes mais rpido do que os
atuais
Prazo para entrar no mercado: 3 anos
Voc ter sucesso?
Provavelmente no
Taxa de crescimento anual de desempenho: 50%
Falcias e Armadilhas
Mquina com desempenho x hoje
Em trs anos, 1,5
3
x = 3,4x
Nova mquina no teria qualquer vantagem de
desempenho
Falcias e Armadilhas
Linguagem de Mquina
Instrues: Palavras da linguagem de um
computador
Conjunto de instrues: vocabulrio dos
comandos entendidos por uma determinada
arquitetura
Veremos conjunto de instrues de um
computador real: MIPS
Linguagens de computador so muito semelhantes
Aprendendo uma, fcil entender as outras
Operaes do Hardware do
Computador
Todo computador precisa ser capaz de
realizar aritmtica
Todas as instrues aritmticas MIPS
possuem trs operandos
A ordem do operando fixa (destino
primeiro)
Notao assemblydo MIPS para soma
add a, b, c #a = b + c
Operaes do Hardware do
Computador
Por que no quatro parmetros?
Princpio de projeto 1: a simplicidade
favorece a regularidade
Hardware com nmero varivel de operandos
mais complexo do que hardware para
nmero fixo
Como operar com mais parmetros?
add a, b, c
add a, a, d #a = b + c + d;
Operaes do Hardware do
Computador
Notao assembly do MIPS para subtrao
sub d, a, e #d = a e
Compilando atribuio C complexa no
MIPS
f = (g+h)-(i+j);
Uso de varivel temporria
add t0, g, h
add t1, i, j
sub f, t0, t1
Operandos do Hardware do
Computador
Ao contrrio dos programas nas linguagens de
alto nvel, operandos das instrues aritmticas
so restritos
Registradores
Tamanho do registrador MIPS: 32 bits
Palavra (word)
Quantidade limitada
MIPS: 32 registradores
Princpio de projeto 2: menor significa mais
rpido
Operandos do Hardware do
Computador
Conveno MIPS para representar
registradores
Sinal de cifro($) seguido por dois caracteres
Veremos o porque dos nomes ao longo do
curso
Por enquanto:
$s0, $s1, ... para registradores que correspondem
s variveis dos programas
$t0, $t1, ... para registradores temporrios
Operaes do Hardware do
Computador
Tarefa do compilador associar variveis do
programa aos registradores
Considere exemplo anterior
f = (g+h)-(i+j);
f, g, h, i e j associados a $s0, $s1, $s2, $s3 e
$s4
add $t0, $s1, $s2 #$t0 contm g + h
add $t1, $s3, $s4 #$t1 contm i + j
sub $s0, $t0, $t1 #f recebe $t0 - $t1
Operaes do Hardware do
Computador
E quanto aos programas com muitas variveis? E estruturas de
dados complexas?
Processador s pode conter pequena quantidade de dados nos
registradores
Compilador tenta manter variveis mais utilizadas nos
registradores (acesso mais rpido)
Demais dados mantidos em memria (acesso mais lento)
Processo chamado de spilling registers
Em MIPS, operaes aritmticas s ocorrem com registradores
Necessria instrues de transferncia de dados entre memria e
registradores
Para acessar palavra na memria, precisamos de localizao:
endereo
Operaes do Hardware do
Computador
Memria vista como sequncia grande e
unidimensional, com endereo atuando
como ndice para esse array
Ex: Endereo da terceira posio de memria = 2,
contedo = 10
Operaes do Hardware do
Computador
Load: instruo que copia dados da memria para
registrador (lw: load word)
Trs parmetros:
Registrador destino: local onde os dados sero copiados
Deslocamento (ou offset): distncia, a partir do endereo
inicial da memria, onde dado se encontra
Registrador base: endereo inicial da memria
Ex: g = h + A[8]
g em $s1, h em $s2 e endereo inicial de A em $s3
lw$t0, 8($s3)
add $s1, $s2, $t0
Operaes do Hardware do
Computador
No MIPS, uma word tem 32 bits (4 bytes)
1 byte = 8 bits
Endereos reais diferentes dos endereos
da figura anterior
Endereo em bytes da 3
a.
palavra 8
32 bits de dados
32 bits de dados
32 bits de dados
32 bits de dados
0
4
8
12
Operaes do Hardware do
Computador
Words em MIPS precisam comear em
endereos que sejam mltiplos de 4
Requisito denominado restrio de alinhamento
Deslocamento apropriado no exemplo anterior
(A[8]): 4 x 8 = 32
Little endian x Big endian
Endereo da word definida como o endereo
do byte mais esquerda (big) ou mais direita
(little)
MIPS: big endian
Operaes do Hardware do
Computador
Store: copia dados de um registrador para
a memria (sw: store word)
Formato semelhante ao load
Registrador a ser armazenado
Deslocamento
Registrador base
Ex: A[12] = h + A[8]
lw$t0, 32 ($s3) #$t0 = Memria [$s3+32]
add $t0, $s2, $t0 #$t0 = $t0 + $s2
sw$t0, 48($s3) #Memria [$s3+48] = $t0
Operaes do Hardware do
Computador
Quantos endereos temos disponveis no MIPS?
2
30
words com endereos de byte 0, 4, 8, ...
4 GB de memria (2
30
words x 4 bytes por word)
Usando instrues vistas at aqui, se
quisssemos usar constante em uma operao,
necessrio armazen-la em memria
Uso de operaes com constantes muito comum
Custo alto no acesso a memria
Alternativa: instrues imediatas
Operaes do Hardware do
Computador
Add imediato (addi): constante no lugar de
um operando
addi $s3, $s3, 4 #$s3 = $s3 + 4
Princpio de projeto 3: agilize os casos mais
comuns
Operandos constantes ocorrem com
frequncia
Mais rpido inclu-las dentro das instrues
aritmticas do que l-las da memria