Arquitetura de Computadores Moderna

Propaganda
Arquitetura de
Computadores
Moderna
Eduardo Barrére ([email protected])
DCC/UFJF
Baseado no material do prof. Marcelo Lobosco
Agenda









Visão Geral
Objetivos do Curso
Ementa
Bibliografia
Avaliações
Datas Importantes
Histórico e Evolução
Abstrações e Tecnologias Computacionais
Linguagem de Máquina
Visão Geral

Estudo da organização 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 específicas.
 Estudar e “pensar” o hardware como
elemento facilitador/limitador do desempenho
da aplicação
 Estudar e “pensar” o SO como elemento
facilitador/limitador do desempenho da
aplicação
Ementa da parte de Hardware
Revisão de:
 Abstrações e Tecnologias Computacionais;
 Instruções: a Linguagem de Máquina;
 Aritmética Computacional;
 Avaliando e Compreendendo o Desempenho;
 O Processador: Caminho de Dados e Controle;
 Pipelining;
 Hierarquia de Memória
 Armazenamento, redes e outros periféricos
Bibliografia Básica
PATERSON, David A. e HENESSY,
John L. Organização e Projeto de
Computadores: a Interface
Hardware/Software. 3ª. Edição. Ed.
Campus, 2005.
PATERSON, David A. and
HENESSY, John L. Arquitetura de
Computadores: Uma Abordagem
Quantitativa, Ed. Campus, 2003 (3ª
ed.)
Bibliografia Complementar
TANEMBAUM, Andrew S., Organização
estruturada de computadores. 5ª.
Edição. LTC, 2008.
Outras bibliografias no plano da disciplina.
Avaliações da 1a parte
Uma prova, provavelmente no dia 11/abril,
valendo 30 pontos
 Seminário, provavelmente no dia 15/abril,
valendo 20 pontos sobre desempenho de
hardware.

von Neummann

1952: John von Neumann (1903-1957) projeta a
máquina IAS
 Projeto
lógico
ainda é a base dos
computadores
digitais
Memória
UC
ULA
acumulador
von Neumann
E
S
Transistores

1948: Bell Labs desenvolve o transistor


MIT desenvolve TX-0


Primeiro computador transistorizado
PDP-1 (US$120,000)


Menor, mais rápido e duradouro que as válvulas
Primeiro video-game
PDP-8 (US$16,000)

Único barramento
Circuitos Integrados

Década de 1960
 Chip
(vários transistores em uma única
pastinha de silício)

IBM System/360
 Multiprogramação
 Emulação
 16
MB de memória
VLSI, ULSI e Computadores
Pessoais

Década de 1980: Very Large
Scale Integration
 Dezenas/centenas
de milhares
de transistores em um único
chip

Década de 1990: Ultra Large
Scale Integration
 Milhões
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:




Múltiplos usuários
Projetados para suportar grandes cargas de trabalho
(única aplicação complexa/múltiplas 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, automóveis, máquinas de lavar, aviões...
Projetados para executar aplicações / conjunto de
aplicações relacionadas com um único sistema
Necessidades específicas: desempenho mínimo com
limitações rígidas em relação ao custo ou potência
Possuem maior tolerância a falhas
 Obtida por simplicidade e/ou redundância
Por Baixo do Seu Programa

Aplicações típicas podem consistir de milhares de linhas
de código e se basear em bibliotecas de software que
implementam funções complexas

Hardware só pode executar instruções extremamente
simples

Camadas de software interpretam instruções de alto nível
nas instruções simples que o hardware compreende
 Organizadas de modo hierárquico
 Muitos tipos de software de sistema
 SO e compilador fundamentais
Por Baixo do Seu Programa

Compiladores
 Realizam
outra função fundamental: tradução
de programas escritos em linguagem de alto
nível em instruções que o hardware possa
executar
 Processo complexo devido à sofisticação das
linguagens modernas e às instruções simples
executadas pelo hardware
 Disciplina específica para estudar
Compiladores
Por Baixo do Seu Programa
Por Baixo do Seu Programa

Linguagens de Alto Nível oferecem vários
benefícios
 Permitem
que o programador pense em uma
linguagem mais natural

Uso de palavras em inglês e notação algébrica
 Permitem
que linguagem seja projetada de acordo
com uso pretendido

Fortan, Cobol, Lisp...
 Maior
produtividade do programador
 Linguagens independentes do computador onde
serão executadas
Falácias e Armadilhas

Armadilha: Ignorar o inevitável progresso
do hardware ao planejar uma nova
máquina
 Você
planeja introduzir um computador
revolucionário, 3 vezes mais rápido do que os
atuais

Prazo para entrar no mercado: 3 anos
 Você
terá sucesso?
Provavelmente não
 Taxa de crescimento anual de desempenho: 50%

Falácias e Armadilhas

Máquina com desempenho x hoje
três anos, 1,53x = 3,4x
 Nova máquina não teria qualquer vantagem de
desempenho
 Em
Falácias e Armadilhas
Linguagem de Máquina



Instruções: “Palavras” da linguagem de um
computador
Conjunto de instruções: vocabulário dos
comandos entendidos por uma determinada
arquitetura
Veremos conjunto de instruções de um
computador real: MIPS
 Linguagens
de computador são muito semelhantes
 Aprendendo uma, fácil entender as outras
Operações do Hardware do
Computador
Todo computador precisa ser capaz de
realizar aritmética
 Todas as instruções aritméticas MIPS
possuem três operandos
 A ordem do operando é fixa (destino
primeiro)
 Notação assembly do MIPS para soma

add a, b, c #a = b + c
Operações do Hardware do
Computador
Por que não quatro parâmetros?
 Princípio de projeto 1: a simplicidade
favorece a regularidade

 Hardware
com número variável de operandos
é mais complexo do que hardware para
número fixo

Como operar com mais parâmetros?
add a, b, c
add a, a, d # a = b + c + d;
Operações do Hardware do
Computador

Notação assembly do MIPS para subtração
sub d, a, e # d = a – e

Compilando atribuição C complexa no
MIPS
f
= (g+h)-(i+j);
 Uso de variável temporária
add t0, g, h
add t1, i, j
sub f, t0, t1
Operandos do Hardware do
Computador

Ao contrário dos programas nas linguagens de
alto nível, operandos das instruções aritméticas
são restritos
 Registradores
 Tamanho

do registrador MIPS: 32 bits
Palavra (word)
 Quantidade


limitada
MIPS: 32 registradores
Princípio de projeto 2: menor significa mais
rápido
Operandos do Hardware do
Computador

Convenção MIPS para representar
registradores
 Sinal
de cifrão($) seguido por dois caracteres
 Veremos o porque dos nomes ao longo do
curso
 Por enquanto:
$s0, $s1, ... para registradores que correspondem
às variáveis dos programas
 $t0, $t1, ... para registradores temporários

Operações do Hardware do
Computador
Tarefa do compilador associar variáveis 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 contém g + h
add $t1, $s3, $s4 # $t1 contém i + j
sub $s0, $t0, $t1 # f recebe $t0 - $t1
Operações do Hardware do
Computador

E quanto aos programas com muitas variáveis? E estruturas de
dados complexas?

Processador só pode conter pequena quantidade de dados nos
registradores


Compilador tenta manter variáveis mais utilizadas nos
registradores (acesso mais rápido)

Demais dados mantidos em memória (acesso mais lento)

Processo chamado de spilling registers
Em MIPS, operações aritméticas só ocorrem com registradores


Necessária instruções de transferência de dados entre memória e
registradores
Para acessar palavra na memória, precisamos de localização:
endereço
Operações do Hardware do
Computador

Memória vista como sequência grande e
unidimensional, com endereço atuando
como índice para esse array
 Ex:
Endereço da terceira posição de memória = 2,
conteúdo = 10
Operações do Hardware do
Computador

Load: instrução que copia dados da memória para
registrador (lw: load word)
 Três



parâmetros:
Registrador destino: local onde os dados serão copiados
Deslocamento (ou offset): distância, a partir do endereço
inicial da memória, onde dado se encontra
Registrador base: endereço inicial da memória
 Ex:
g = h + A[8]
g em $s1, h em $s2 e endereço inicial de A em $s3
lw $t0, 8($s3)
add $s1, $s2, $t0

Operações do Hardware do
Computador

No MIPS, uma word tem 32 bits (4 bytes)
1

byte = 8 bits
Endereços reais diferentes dos endereços
da figura anterior
 Endereço
em bytes da 3a. palavra é 8
12
8
4
0
32 bits de dados
32 bits de dados
32 bits de dados
32 bits de dados
Operações do Hardware do
Computador

Words em MIPS precisam começar em
endereços que sejam múltiplos de 4
 Requisito
denominado restrição de alinhamento
 Deslocamento apropriado no exemplo anterior
(A[8]): 4 x 8 = 32

Little endian x Big endian
 Endereço da word definida como o endereço
do byte mais à esquerda (big) ou mais à direita
(little)
 MIPS: big endian
Operações do Hardware do
Computador

Store: copia dados de um registrador para
a memória (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 = Memória [$s3+32]
 add $t0, $s2, $t0 # $t0 = $t0 + $s2
 sw $t0, 48($s3) # Memória [$s3+48] = $t0

Operações do Hardware do
Computador

Quantos endereços temos disponíveis no MIPS?
 230
words com endereços de byte 0, 4, 8, ...
 4 GB de memória (230 words x 4 bytes por word)

Usando instruções vistas até aqui, se
quiséssemos usar constante em uma operação,
necessário armazená-la em memória
 Uso
de operações com constantes muito comum
 Custo alto no acesso a memória
 Alternativa: instruções imediatas
Operações do Hardware do
Computador

Add imediato (addi): constante no lugar de
um operando
 addi

$s3, $s3, 4 # $s3 = $s3 + 4
Princípio de projeto 3: agilize os casos mais
comuns
 Operandos
constantes ocorrem com
frequência

Mais rápido incluí-las dentro das instruções
aritméticas do que lê-las da memória
Download