Arquitetura de Computadores Moderna · computadores (hardware e software) com a finalidade de...
Transcript of Arquitetura de Computadores Moderna · computadores (hardware e software) com a finalidade de...
Arquitetura de Computadores Moderna
Eduardo Barrére ([email protected]) DCC/UFJFBaseado 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 HardwareRevisã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. andHENESSY, 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
Memória
UC ULAacumulador
E S
Projeto lógico ainda é a base dos computadores digitais
von Neumann
Transistores
1948: Bell Labs desenvolve o transistor Menor, mais rápido e duradouro que as válvulas
MIT desenvolve TX-0 Primeiro computador transistorizado
PDP-1 (US$120,000) Primeiro video-game
PDP-8 (US$16,000) Único barramento
Circuitos Integrados
Década de 1960Chip (vários transistores em uma única
pastinha de silício) IBM System/360MultiprogramaçãoEmulação16 MB de memória
VLSI, ULSI e Computadores Pessoais Década de 1980: Very Large
Scale IntegrationDezenas/centenas de milhares
de transistores em um único chip
Década de 1990: Ultra LargeScale IntegrationMilhões de transistores em um
único chip
Classes de computadoresDesktop
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 compreendeOrganizadas de modo hierárquicoMuitos tipos de software de sistema
SO e compilador fundamentais
Por Baixo do Seu Programa
CompiladoresRealizam 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íciosPermitem 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 programadorLinguagens independentes do computador onde
serão executadas
Falácias e Armadilhas
Armadilha: Ignorar o inevitável progresso do hardware ao planejar uma nova máquinaVocê 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 hojeEm três anos, 1,53x = 3,4xNova máquina não teria qualquer vantagem de
desempenho
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: MIPSLinguagens de computador são muito semelhantesAprendendo 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 regularidadeHardware 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, cadd 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
MIPSf = (g+h)-(i+j);Uso de variável temporária
add t0, g, hadd t1, i, jsub 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 restritosRegistradoresTamanho 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
registradoresSinal de cifrão($) seguido por dois caracteresVeremos o porque dos nomes ao longo do
cursoPor 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 anteriorf = (g+h)-(i+j);f, g, h, i e j associados a $s0, $s1, $s2, $s3 e
$s4add $t0, $s1, $s2 # $t0 contém g + hadd $t1, $s3, $s4 # $t1 contém i + jsub $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 ComputadorMemória vista como sequência grande e
unidimensional, com endereço atuando como índice para esse arrayEx: 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 $s3lw $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 anteriorEndereço em bytes da 3a. palavra é 8
32 bits de dados
32 bits de dados
32 bits de dados
32 bits de dados048
12
Operações do Hardware do Computador Words em MIPS precisam começar em
endereços que sejam múltiplos de 4Requisito denominado restrição de alinhamentoDeslocamento apropriado no exemplo anterior
(A[8]): 4 x 8 = 32 Little endian x Big endianEndereç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óriaUso de operações com constantes muito comumCusto alto no acesso a memóriaAlternativa: instruções imediatas
Operações do Hardware do Computador Add imediato (addi): constante no lugar de
um operandoaddi $s3, $s3, 4 # $s3 = $s3 + 4
Princípio de projeto 3: agilize os casos mais comunsOperandos constantes ocorrem com
frequência Mais rápido incluí-las dentro das instruções
aritméticas do que lê-las da memória