Arquitetura de Computadores Moderna · computadores (hardware e software) com a finalidade de...

Post on 04-Jul-2020

1 views 0 download

Transcript of Arquitetura de Computadores Moderna · computadores (hardware e software) com a finalidade de...

Arquitetura de Computadores Moderna

Eduardo Barrére (eduardo.barrere@ice.ufjf.br) 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