153
1 Sistemas Microprocessados – ENGC50 Prof. Augusto Loureiro da Costa Departamento de Engenharia Elétrica Escola Poltécnica Universidade Federal da Bahia [email protected]

Augusto loureiro sistemas microprocessados

Embed Size (px)

Citation preview

Page 1: Augusto loureiro   sistemas microprocessados

1

Sistemas Microprocessados – ENGC50

Prof. Augusto Loureiro da CostaDepartamento de Engenharia Elétrica

Escola PoltécnicaUniversidade Federal da Bahia

[email protected]

Page 2: Augusto loureiro   sistemas microprocessados

2

Programa do Curso

IntroduçãoDesempenho de Sistemas de Computação: aspectos Arquitetura de Conjunto de InstruçõesEstrutura do processador: fluxo de dados e controleSistemas de Entrada/Saída e comunicaçãoSistemas de Memória.

Page 3: Augusto loureiro   sistemas microprocessados

3

Slides - referênciasftp://ftp.nuperc.unifacs.br/professor/celso/publico/html/Modulo1/University College of London, J. Crowcroft, S. Wilbur,www.cs.ucl.ac.uk/teaching/1B10 ©UCLUniversity of California, Berkeley, David Patterson’s lectureslides ©UCB, DAP’ 97 www.cs.berkeley.edu/~pattrsn/152F97/index_lectures.html

Morgan Kaufmann Publishers, Tod Amon www.mkp.com/books_catalog/cod2/ph2_res.htm#slidesCopyright 1998 Morgan Kaufmann Publishers

Central Queensland University, A Silberschatz, P. Galvin, www.infocom.cqu.edu.au/Units/win99/85349/Resources/Lectures ©CQU

Page 4: Augusto loureiro   sistemas microprocessados

4

INTRODUÇÃO

Page 5: Augusto loureiro   sistemas microprocessados

5

O que é a Arquitetura de um Computador?

Arquitetura de Computadores =

Conjunto de Instruções(ISA - Instruction Set Architecture)

+Organização da Máquina

Page 6: Augusto loureiro   sistemas microprocessados

6

Conjunto de Instruções da Arquitetura (ISA)

... os atributos de um sistema [de computação] vistos pelo programador, i.e. a estrutura conceptual e o comportamento funcional, são distintos da organização dos fluxos de dados e dos controles da lógica e da implementação física. [Amdahl, Blaaw andBrooks, 1964]

-- Organização da Memória

-- Tipos de dados e estruturas de dados:Codificações e representações

-- Conjunto de Instruções

-- Formato das Instruções

-- Modos de Endereçamento e Acesso de Dados e Instruções

-- Condições de Exceção

Page 7: Augusto loureiro   sistemas microprocessados

7

Conjunto de Instruções: Uma Interface Crítica

Conjunto de instruções

software

hardware

Page 8: Augusto loureiro   sistemas microprocessados

8

Conjunto de Instruções

O conjunto de instruções especifica o mais baixo nível das funcionalidades de uma máquina.

O conjunto de instruções é como o “vocabulário”do computador; as instruções seriam suas “palavras”.

É possível se fazer um mapeamento quase de 1-para-1 entre as instruções de máquina (binárias) e representações simbólicas (mnemônicos) em linguagens de montagem (ou assembly)

Page 9: Augusto loureiro   sistemas microprocessados

9

Exemplos de Conjuntode Instruções da Arquitetura

Digital Alpha (v1, v3) 1992-97HP PA-RISC (v1.1, v2.0) 1986-96Sun Sparc (v8, v9) 1987-95SGI MIPS (MIPS I, II, III, IV, V) 1986-96Intel (8086,80286,80386, 1978-00

80486,Pentium, MMX, ...)

Page 10: Augusto loureiro   sistemas microprocessados

10

MIPS R3000 Instruction Set Architecture

Tipo de InstruçãoLoad/StoreComputationalJump and BranchFloating Point (coprocessor)Memory ManagementSpecial

R0 - R31

PCHILO

OP

OP

OP

rs rt rd sa funct

rs rt immediate

jump target

3 Formatos de Instrução: TODOS com 32 bits de comprimento

Registradores

Q: Quem já ouviu falar desta arquitetura?

Page 11: Augusto loureiro   sistemas microprocessados

11

Organização da Máquina

Capacidades & Características de Desempenho das Principais Unidades Funcionais (Fus)

(ex., Registradores, ULA, Shifters, Unidades Lógicas, ...)

Forma de interconexão dos componentesFluxo de informação entre componentesLógica e forma pela qual o fluxo de informações écontroladoImplementação do ISA sobre as Unidades FuncionaisDescrição do Nível de Transferência dos Registros

Page 12: Augusto loureiro   sistemas microprocessados

12

Exemplo de Organização

TI SuperSPARCtm TMS390Z50 da Sun SPARCstation20

Floating-point Unit

Integer Unit

InstCache

RefMMU

DataCache

StoreBuffer

Bus Interface

SuperSPARC

L2$

CC

MBus Module

MBus

L64852 MBus controlM-S Adapter

SBus

DRAM Controller

SBusDMA

SCSIEthernet

STDIOserialkbdmouseaudioRTCBoot PROMFloppy

SBusCards

Page 13: Augusto loureiro   sistemas microprocessados

13

O que é Arquitetura de Computadores?

Coordenação de níveis de abstração

I/O systemInstr. Set Proc.

CompilerOperating

System

Application

Digital DesignCircuit Design

ISA - Instruction SetArchitecture

Sujeita a um conjunto de influências em constante e rápidas alterações.

Page 14: Augusto loureiro   sistemas microprocessados

14

Desempenho crescente. . .

Computadores têm se tornado incrivelmente mais poderosos desde que foram inventados nas décadas de 30-40.

• Um palm-top hoje é tipicamente mais potente que ...

• ... uma máquina IBM que ocupava uma sala na geração anterior.

Page 15: Augusto loureiro   sistemas microprocessados

15

Influências nas Arquiteturas...

Arquitetura deComputadores

Tecnologia Linguagens deProgramação

SistemasOperacionais

História

Aplicações

(A = F / M)

Levando em conta que... O ENIAC tem 18000 válvulas e pesa 30 toneladas, no futuro os computadores deverão ter 1000 válvulas e pesar 1,5 toneladas

Revista Popular Mechanics, março de 1949.

Page 16: Augusto loureiro   sistemas microprocessados

16

Tecnologia: memória

DRAMYear Size1980 64 Kb1983 256 Kb1986 1 Mb1989 4 Mb1992 16 Mb1996 64 Mb1999 256 Mb2002 1 Gb2009 ? Gb

capacidade do chip DRAMEm ~1985 o processador “single-chip” (32-bit) e o computador “single-board” apareceram⇒ workstations, personal

computers, multiprocessorssurgiram nessa era

Em 2002 + δt, este caminho nos leva a crer que teremos mainframescomparados a computadores “single-chip” (talvez 2 ou + chips)

Page 17: Augusto loureiro   sistemas microprocessados

17

Tecnologia: densidade

i80286

i80486

Pentium

i80386

i8086

i4004

R10000

R4400

R3010

SU MIPS

1000

10000

100000

1000000

10000000

100000000

1970 1975 1980 1985 1990 1995 2000 2005

Núm

ero

de T

rans

isto

rs

i80x86M68KMIPSAlpha

Densidade de Lógica dos Microprocessadores

Page 18: Augusto loureiro   sistemas microprocessados

18

Projeções de DesempenhoLo

gdo

des

empe

nho

0.1

1

10

100

1000

1965 1970 1975 1980 1985 1990 1995 2000

Microprocessors

Minicomputers

Mainframes

Supercomputers

Page 19: Augusto loureiro   sistemas microprocessados

19

Desempenho: CPU e Redes (Patterson)

Ano

DesempenhoRelativo

1000

100

10

11980 1985 1990 1995 2000

100 Mb FDDI10 Mb

1 Gb ATM

MIPSM/120

DECAlpha

CPU(spec)

LAN

Page 20: Augusto loureiro   sistemas microprocessados

20

Tecnologia: mudanças drásticas

Processadorcapacidade lógica: ~ 30% por anotaxa de clock: ~ 20% por ano

MemóriaCapacidade DRAM: ~ 60% por ano (4x em 3 anos)Velocidade: ~ 10% por anoCusto por bit: ganho de 25% por ano

DiscosCapacidade: ~ 60% por ano

Page 21: Augusto loureiro   sistemas microprocessados

21

Desempenho dos Processadores

0

50

100

150

200

250

300

35019

82

1983

1984

1985

1986

1987

1988

1989

1990

1991

1992

1993

1994

1995

Ano

Des

empe

nho

RISC

Intel x86

35%/yr

Introdução doRISC

Quais as possibilidades do RISC em relação às outras?

Desempenho aumenta ~ 50% por ano (2x a cada 1.5 ano)

Page 22: Augusto loureiro   sistemas microprocessados

22

Linguagens e Aplicações

CAD, CAM, CAE, . . .MAC, Unix, DOS, . . . Multimídia, . . .World Wide Web, . . .JAVA, . . .???

Tecnologia criando necessidades versus necessidades demandando novas tecnologias

Page 23: Augusto loureiro   sistemas microprocessados

23

Assim ...

Arquitetura é um processo iterativo-- Busca de espaço para possíveis projetos-- Observar todos os níveis de sistemas de

computação

Design

Análise

Boas IdBoas IdééiasiasIdéias Medíocres

Idéias Ruins

Custo/Análise deDesempenho

Criatividade

Page 24: Augusto loureiro   sistemas microprocessados

24

Visão geral de Arquitetura de Computadores

Arquitetura de Computadores e Engenharia

Conjunto de Instruções Organização do Computador

Interfaces Componentes de Hardware

Visão Compilador/Sistema Visão do Projeto Lógico

“Arquitetura da Construção” “Engenharia de Construção”

Page 25: Augusto loureiro   sistemas microprocessados

25

Arquitetura Básica dos Computadores Atuais

CPU: ALU (datapath)+ control

Cache

I/OController

I/OController

I/OController

Main Memory

Graphicsdisplay

Keyboard

main bus

interrupts

Page 26: Augusto loureiro   sistemas microprocessados

26

Como se fazer entender pelo computador?

“Linguagem” do computador : 100011000001 (bits)Números binários: base da teoria computacional

1. Primórdios: uso da linguagem nativa em binário!!!2. Linguagem de Montagem (Assembly)

Montador: traduz uma versão simbólica das instruções para sua representação binária na arquiteturaadd A, B → montador → 100011000001

3. Linguagem de Programação de alto-nívelCompilador: traduz instruções de alto-nível para instruções binárias diretamente ou via um montadorA + B → compilador → add A, B → montador →100011000001 ouA + B → compilador → 100011000001

Page 27: Augusto loureiro   sistemas microprocessados

27

Mas é só isso?

Existe ainda um programa que gerencia os recursos da máquina durante a execução dos programas: o SISTEMA OPERACIONAL (SO)Operações de Entrada/Saída (E/S), “carga” do programa na memória, exceções, etc.O SO funciona como um gerente dos recursos, escondendo o acesso direto ao hardware dos usuáriosMais ainda: multiprocessamento, gerência de arquivos, processamento distribuído, ...Assim, existem diversas camadas e serviços disponíveis para auxiliar nossa comunicação com a máquina.

Page 28: Augusto loureiro   sistemas microprocessados

28

Uma questão?

O que é isto?00000000001000100100000000100000

• Pode ser lido como:25 + 214 + 217 + 221

= 32 + 16384 + 131072 + 2097152= 2244640

214

15o. bit 6o. bit

25 ... 20

Page 29: Augusto loureiro   sistemas microprocessados

29

Diálogo com o computador...

Melhor assim?00000000 00000001 00000010 00001000 0000000

0010000000000000 00000011 00000100 00001001 0000000

0010000000000000 00001000 00001001 00000101 0000000

00100010

• O que é isto?0000000000000001000000100000100000000000010000000000000000000110000010000001001000000000100000000000000000100000001001000001010000000 00100010

Page 30: Augusto loureiro   sistemas microprocessados

30

Traduzindo...

E assim?0 1 2 8 0 320 3 4 9 0 320 8 9 5 0 34

• Melhorando...add $8, $1, $2add $9, $3, $4sub $5, $8, $9

Page 31: Augusto loureiro   sistemas microprocessados

31

Traduzindo mais um pouco...

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

• Claro agora?u = a + bv = c + d;x = u - v

• Sim, é claro: x = (a+b) - (c+d)

Page 32: Augusto loureiro   sistemas microprocessados

32

Níveis de Representação

Programa em Linguagem de Alto-Nível

Programa em Linguagem de Montagem

Programa em Linguagem de Máquina

Especificação do controle de sinais

Compilador

Montador ou Assembler

Interpretação da Máquina

x = (a+b)x = x – (c+d)

lw $15, 0($2)lw $16, 4($2)sw $16, 0($2)sw $15, 4($2)

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

°°

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

Compilador

Page 33: Augusto loureiro   sistemas microprocessados

33

Níveis de Organização

SPARCstation 20

Processador

Computador

Controle

Datapath

Memória Dispositivos

Entrada

Saída

Objetivo do Projeto:25% do custo - Processador25% do custo - Memória(configuração mínima)Resto – dispositivos I/O,energia, gabinete, etc.

Page 34: Augusto loureiro   sistemas microprocessados

34

Executando um Programa:Ciclo de Execução

Obtém uma instrução do programa armazenado

Determine as ações e o tamanho da instruções

Localiza e obtém os dados (operandos)

Calcula um valor do resultado ou status

Armazena resultados na memória para uso futuro

Determina a próxima instrução

InstructionFetch

InstructionDecode

OperandFetch

Execute

ResultStore

NextInstruction

Page 35: Augusto loureiro   sistemas microprocessados

35

Instruções Básicas de Programas

Conjunto de instruções = linguagem de máquinaInstrução: opcode [operandos]Tipos de instrução:

Instruções aritméticas e lógicas (add, sub, AND, OR)Referência à memória ou Load&storeDesvios Condicionais: if + goto / if-then-elseDesvios incondicionais ou saltos (jumps)

Formas de endereçamento: complexidade da arquite-tura → em RISC poucas formas de endereçamento direto a operandos; instruções de mesmo tamanho

Page 36: Augusto loureiro   sistemas microprocessados

36

Registradores

Registradores armazenam palavras simples na CPU, em locais próximos à ULA.

A ULA tem acesso extremamente rápido aos registradores

Em arquiteturas RISC modernasTodas as instruções são executadas sobre dados armazenados em registradoresInstruções do tipo carregar/armazenar (load/store)↔ registradores

MIPS:32 registradores indicados: $0...$31

Page 37: Augusto loureiro   sistemas microprocessados

37

Avaliando o desempenho de arquiteturas

Métricas de projeto:

- Pode ser implementado em quanto tempo e com qual custo?

- Pode ser programado? Fácil para compilar?Métricas estáticas:- Quantos bytes o programa ocupa na memória?Métricas dinâmicas:- Quantas instruções são executadas?- Quantos bytes o processador deve buscar para

executar o programa?- Quantos clocks são requeridos por instrução (CPI)?- Qual valor de clock ideal?

Melhor métrica: Tempo para executar o programa!

NOTA: isto depende do conjunto de instruções, da organização do processador e das técnicas de compilação

CPI

Inst. Count Cycle Time

Page 38: Augusto loureiro   sistemas microprocessados

38

Aspectos do Desempenho da CPU

CPU time = Seconds = Instructions x Cycles x SecondsProgram Program Instruction Cycle

CPU time = Seconds = Instructions x Cycles x SecondsProgram Program Instruction Cycle

instr count CPI clock rate

Programa X

Compilador X X

Conj. Instr. X X

Organização X X

Tecnologia X

Page 39: Augusto loureiro   sistemas microprocessados

39

Lei de Amdahl

Ganho de velocidade (speed-up) devido ao ganho E:

speedup(E) = TExec sem E = Desempenho com E

TExec com E Desempenho sem E

Suponha que a melhoria E acelere a parte S e o restante do programa não é afetada pela melhoria:

TExec(com E) = ((1-F) + F/S) × TExec(sem E)

speedup(com E) = 1 1(1-F) + F/S

Page 40: Augusto loureiro   sistemas microprocessados

40

Desempenho x Tecnologia

Poder da Tecnologia: 1.2 x 1.2 x 1.2 = 1.7 x / anoTamanho: miniaturização ganha 10%/ ano →velocidade de chaveamento ganha 1.2 / ano.Densidade: aumenta 1.2x / ano.Área da pastilha (die): 1.2x / ano.

A lição da abordagem RISC é deixar o conjunto de instruções (ISA) o mais simples possível:

Ciclo de projeto curto → explora de maneira otimizada a tecnologia (~3 anos)Técnicas de pipeline e previsão de desvios (branches)Caches on-chip maiores e mais sofisticados

Page 41: Augusto loureiro   sistemas microprocessados

41

PROCESSADOR E

MEMÓRIA

Page 42: Augusto loureiro   sistemas microprocessados

42

Onde estamos agora?

Cinco componentes do computador

Projetando uma CPU monociclo

Conjunto de Instruções(parte 2)

tecnologia (parte 1 e 2)

Projeto da máquina

Aritmética

Processor

Computer

Control

Datapath

Memory Devices

Input

Output

Page 43: Augusto loureiro   sistemas microprocessados

43

Filosofia RISC [Tanembaum]...

1. Regra de base: Simplificar a via de dados – registradores, ULA e barramentos de interconexão;

2. Minimizar tempo de ciclo da via de dados:• Faça o comum executar mais rápido• A simplicidade favorece a regularidade

3. “A perfeição é atingida, não quando não existe nada mais a acrescentar, mas quando não existe nada mais a jogar fora!”[St. Exupéry]

Page 44: Augusto loureiro   sistemas microprocessados

44

Implementação do conjunto de instruções

Para executar qualquer instrução:1. Enviar o valor do PC para a memória que contém o

código (opcode) e trazer para a via de dados a instrução armazenada nessa memória

2. Ler registradores (1 ou mais), usando os campos da instrução para selecioná-los (operandos)

As ações do hardware para completar a execução da instrução variam, mas em geral, usam a ULA (simpli-cidade e regularidade)

INSTRUÇÂO opcode operando 1 operando 2

Page 45: Augusto loureiro   sistemas microprocessados

45

Visão geral da implementação MIPS

DataOut

Clk

5

Rw Ra Rb32 32-bitRegisters

Rd

AL

U

Clk

Data In

DataAddress Ideal

DataMemory

Instruction

InstructionAddress

IdealInstruction

Memory

Clk

PC

5Rs

5Rt

32

323232

A

B

Nex

tAdd

ress

Control

Datapath

Control Signals Conditions

Page 46: Augusto loureiro   sistemas microprocessados

46

Controle e Via de Dados

Controle: define os sinais para acionar o hardware (unidades funcionais) para cada instrução decodificadaVia de dados: movimentação de dados mem-reg, reg-reg, reg-ULA (barramentos + unidades)CPU “monociclo”: instrução quebrada em passos correspondentes às unidades funcionais envolvidas

PCInstrução

Endereço deleitura

Memória de instruções

4 som

ador

Ex: Busca dapróxima instrução

Page 47: Augusto loureiro   sistemas microprocessados

47

Implementação “multiciclo”

Cada passo de execução da instrução = 1 ciclo de clockCompartilhamento das unidades funcionais dentro do espaço de tempo correspondente a uma instruçãoAssume-se que o ciclo de clock possa acomodar operações de acesso à memória, uma operação da ULA e acesso (leitura-escrita) aos registradoresA via de dados possui registradores “adicionais” para armazenar valores usados nas próximas instruções (registrador de instrução e registrador de dados da memória, saída da ULA, operandos lidos dos reg’s, ...)Ex: Busca da instrução X (PC) → PC = PC +4 → ...

PC pode ser incrementado antes do fim da instrução X

Page 48: Augusto loureiro   sistemas microprocessados

48

Controle numa CPU multiciclo (1)

Complexidade aumenta:Monociclo: tabelas-verdade (combinacional)Multiciclo: próximo estado depende do atual e dos sinais de entrada (seqüencial)

Duas soluções:1. Máquina de estados – seqüência de estados e regras

de transição2. Multiprogramação – representação para o controle

semelhante a um programaQuanto mais simples o conjunto de instruções, mais simples e ágil o controle: INTEL 80x86 precisa de milhares de estados (modos de endereçamento, mais

opcodes); MIPS 100 instruções

Page 49: Augusto loureiro   sistemas microprocessados

49

Controles baseados em Máquinas de Estado

Lógica de ControleCombinacional

Entradas

Saíd

as

Saídas de controle docaminho de dados

Entradas vindas do opcodedo registrador de instruções

Registradorde estado

Próximoestado

Page 50: Augusto loureiro   sistemas microprocessados

50

Controle por Microprogramação

Máquinas de estados não são adequadas para controle de conjunto de instruções complexos! A única saída é a microprogramaçãoMicroprograma: conjunto de microinstruções que definem o conjunto de sinais de controle da via de dados a serem ativados em determinado estado

Representação simbólica do controle, que deve ser traduzida em termos de sinais para o hardwareEm geral, o microprograma está numa ROM ou PLA

Ainda fazem parte do controle da CPU: tratamento de interrupções e de exceções que determinam mudança no fluxo normal de execução (overflow, operação de E/S)

Page 51: Augusto loureiro   sistemas microprocessados

51

CPU’s de arquiteturas conhecidas

Kernel: via de dados e controleOutras técnicas para aumentar o desempenho: pipeline

1985: MIPS R2000 com pipelineAté 80386 sem pipeline80486, Pentium, Pentium PRO têm pipeline, mas o controle continua extremamente complexo para suporte das instruções da linha 80x86

Pentium e Pentium PRO usam pipeline superescalar: mais de uma instrução por clock replicando os recursos da via de dados

Pentium suporta até 2 instruções e o POR, até 4Pentium PRO usa conceitos RISC

Page 52: Augusto loureiro   sistemas microprocessados

52

Aumentando o desempenho: Pipeline

Técnica de implementação de processadores que permite a superposição temporal de diversas fases de execução de instruçõesCada passo de execução da instrução deve ser executada em 1 ciclo de clock:

Tecnologia limita o tempo de clock e o tempo de cada passo do pipeline

A idéia de base é aumento a “vazão” e não redução do tempo de execução por instrução:

Analogia: Produção de uma linha de montagem de automóveis = 1 automóvel por minuto!

Page 53: Augusto loureiro   sistemas microprocessados

53

Implementação um pipeline

1 2 3 4 51 2 3 4 5

1 2 3 4 51 2 3 4 5

1 2 3 4 51 2 3 4 5

1 clock

BuscaInstrução

Decodificainstrução

ExecutaOperação

AcessaMemória

Escreveresultado tempo

Ordem de execução

Page 54: Augusto loureiro   sistemas microprocessados

54

Vantagens do RISC

Instruções têm o mesmo tamanho: busca e decodificação simples e com tempo reduzidoInstruções simétricas e com uso dos registradores facilita a seqüência das operações do pipelineO uso de apenas instruções load & store para referên- cias à memória permite o uso do estágio de execução para cálculo de memória, para depois, no seguinte, acessar a memória

Page 55: Augusto loureiro   sistemas microprocessados

55

Problemas a vista: conflitos do pipeline

Conflitos estruturais: com uma memória única para dados e instruções, existe um conflito entre o ciclo de busca de instrução e escrita em memória; a solução éusar duas memórias independentes (design) Conflitos de controle: obrigam a parada do pipeline

Instruções de desvioParadas geram bolhas no pipeline

busca di ULA mem w regbusca di ULA mem w reg

busca di ULA mem w reg

tempo

Ordem de execução

add $4,$5,$6beq $1,$2,40

lw $3,300($0)

bolha bolha bolha bolha bolha

Page 56: Augusto loureiro   sistemas microprocessados

56

Outros conflitos

Conflitos por dados: a próxima instrução utiliza um operando da instrução anterior que ainda não estápronto:

add $s0, $t0, $t1sub $t2, $s0, $t1

busca di ULA mem w regbusca di

tempo

Ordem de execução

add$s0,$t0,$t1sub $t2,$s0,$t3

ULA mem w regdi

Page 57: Augusto loureiro   sistemas microprocessados

57

Soluções clássicas para conflitos

Reordenação do código (compilador): mudar a ordem de execução sem que o resultado da execução global seja alterado pode evitar as bolhasIncluir instruções do tipo NOPAdiantamento de instruçõesPré-suposição da realização do desvio condicional (if)Predição dinâmica em loops e desvios baseado em dados armazenados (história)

E em pipelines superescalares? Mais complexidade...

Page 58: Augusto loureiro   sistemas microprocessados

58

Próximo passo...

Hierarquia de Memória: reduzindo o tempo de acesso aos dados

Page 59: Augusto loureiro   sistemas microprocessados

59

Os componentes clássicos de um computador

O processador deve buscar cada dado e instrução na memória durante a execução de um programa: o

tempo de acesso é fundamental para o desempenho!

Processor

Computer

Control

Datapath

Memory Devices

Input

Output

Page 60: Augusto loureiro   sistemas microprocessados

60

Desafios para a memória...

Desempenho da CPU aumenta 25-50% p.a.Desempenho das memórias, cerca de 7% p.a.

Capacidade Velocidade

Lógica: 2x em 3 anos 2x em 3 anos

DRAM: 4x em 3 anos 1.4x em 10 anos

Disco: 2x em 3 anos 1.4x em 10 anosDRAM

ano Tam Tempo de Ciclo1980 64 Kb 250 ns1983 256 Kb 220 ns1986 1 Mb 190 ns1989 4 Mb 165 ns1992 16 Mb 145 ns1995 64 Mb 120 ns

Page 61: Augusto loureiro   sistemas microprocessados

61

Reflexões Sobre Arquiteturas de Memórias

A velocidade de memória aumenta muito menosrapidamente que a dos processadores (Lei de Moore)Para máquinas + rápidas, é necessário projetar um sistema de memória de forma a não desperdiçar osganhos adquiridos com o processadorSolução: hierarquia de memória e cachesÉ desejável que o usuário “acredite” que ele tem um espaço de memória enorme, mesmo se a quantidade de memória é sabidamente limitadaO SO precisa suprir o mesmo espaço de memória paravários usuários sem que haja conflitoSolução: Memória Virtual

Page 62: Augusto loureiro   sistemas microprocessados

62

Melhorando o desempenho: Princípio da localidade

Localidade TemporalUma palavra de memória que acaba de ser referenciada, tende a ser novamente referenciada

Localidade EspacialItens cujos endereços estão próximos daqueles queacabam de ser referenciados tendem a ser referenciados também brevemente

Conclusão: usar mecanismos que permitam armazenartemporariamente o material com que se trabalhaObservar a estrutura dos programas:

Programas acessam somente uma pequena porçãode memória num curto espaço de tempo

variáveis – temporal, laços - temporal e espacial, percurso de arrays - espacial

Page 63: Augusto loureiro   sistemas microprocessados

63

Idéia de hierarquia para a memóriaDividir o espaço de memória em níveis com tamanhos, velocidades e custos diferentes por nível

O princípio da localidade pode ser aplicado diretamente àhierarquia de memória: quanto mais rápida a memória, mais próxima ao processador

Velocidade Tam Custd: $/bit Exemplo

+ rápida menor + alto 64k SRAM

64M DRAM

+ lenta maior + baixo 6.4 G Mag. Disk

MemóriaNível 1

MemóriaNível 2

Processador

MemóriaNível 3

capacidade

Page 64: Augusto loureiro   sistemas microprocessados

64

Hierarquia de Memória atualmente

Memória

Registradores CPU~100 Bytes~10 ns

CacheK Bytes10-100 ns

Memória PrincipalM Bytes100ns-1us

DiscoG Bytesms-3 -4

CapacidadeTempo de Acesso

Tapeinfinitosec-min

Cache

Registradores

Tape

Disco

Operandos Inst.

Blocos

Páginas

Arquivos

EstágioUnidade

prog./compil.1-8 bytes

contr. cache8-128 bytes

SO512-4K bytes

user/operadorMbytes

Nível + Alto

Nível + baixoMaior

Fonte: Slides Patterson

+ rápido

Page 65: Augusto loureiro   sistemas microprocessados

65

Funcionamento a hierarquia (1)

Pode conter diversos níveis, mas a gerência é feita entre níveis adjacentesUnidades de mapeamento entre níveis: blocosSe a informação solicitada pelo processador estiver presente no nível superior da hierarquia, ocorre um “acerto” (hit)Se a informação não puder ser encontrada nesse nível, ocorre uma “falha” (miss) e um nível mais baixo éacessado para que o bloco desejado seja recuperadoA medida de desempenho da hierarquia é relacionada àtaxa de acertos dos acessos: fração dos acessos à me-mória encontrados no nível superiorOutra medida: taxa de falhas = 1 – taxa de acertos

Page 66: Augusto loureiro   sistemas microprocessados

66

Funcionamento a hierarquia (2)

Desempenho = tempo de acesso à memória1. Tempo de acerto (ta): tempo para acessar o nível

superior da hierarquia (RAM) + tempo necessário para se determinar se o acesso é ou não um acerto

2. Penalidade por falta (tf): tempo para substituir um dos blocos do nível superior pelo bloco do nível inferior com a informação desejada + tempo para enviar o dado ao processador

ta << tf: tempo de acesso ao nível inferior é muito maiorHierarquia de memória tem influência direta na gerên-cia de memória feita pelo SO, no código gerado pelo compilador e até mesmo no tipo de aplicação a ser executada na máquina.

Page 67: Augusto loureiro   sistemas microprocessados

67

Conceitos básicos sobre Memória Cache

Cache: esconderijo! ☺De maneira abrangente: qualquer memóriagerenciada que tira proveito das propriedadesde localidadeComo fazer para guardar os dados e instruçõesrecentemente usados numa cache:

Como saber se um item de dado está ounão na cache?Se estiver, como achá-lo?

Page 68: Augusto loureiro   sistemas microprocessados

68

Conceitos básicos sobre Memória Cache

Caches com mapeamento direto mapeiam cadaendereço de memória numa locação específicada cache

Várias locações de memória têm a mesmalocação na cacheUsa um mecanismo modulo N (N é potênciade 2)Precisa de uma tag indicando o endereçoatualmente armazenadoPrecisa de um bit de validade indicando se o dado está na cache

Page 69: Augusto loureiro   sistemas microprocessados

69

Cache com mapeamento direto simples

131415161718

0123456789101112

Memória

0123

Cache diretamente mapeadoTamanho = 4

•Cache de 4 (22) palavras•Endereços de memória “mod 4”

mapeiam locações de cache•Muitos endereços de memória são

mapeados p/ uma mesma locação•Usa log2N bits de endereços para

a indexaçao da cache19

Page 70: Augusto loureiro   sistemas microprocessados

70

Acesso à cache: Rótulo (tag) e Índice (index)Considerando endereços de memória de 32-bits :

Uma cache com mapeamento direto de 2N bytes:− Índice (index): Os N bits mais baixos dos endereços de memória− Rótulo (tag): Os (32-N) bits mais altos dos endereços de memória

Cache Index

0123

2 - 1N

:

2 N BytesCache com Mapeamento Direto

Byte 0Byte 1Byte 2Byte 3

Byte 2N -1

0N31

:

Cache Tag Ex: 0x50 Ex: 0x03

0x50

Armazenados comoparte do cache “state”Bit validade

:

Endereços de Memória

Page 71: Augusto loureiro   sistemas microprocessados

71

Alguns comentários…

Cache com mapeamento direto precisa ser grandesuficiente , por ex, para que as últimas instruções num laço de execução não se sobreponham sobre as anteriores (a cache com 4 blocos é apenas exemplo)Podem existir 2 caches o numa arquitetura: uma parainstruções e outra para dados

Em geral, não é mais eficiente que apenas umacache para um tamanho fixo de cacheMas, o dobro de vazão pode ser compensar

No start-up, a cache está vazia (ou inválida) e tem-se uma taxa de falhas elevada inicialmenteA abordagem trata assim da localidade temporal masnão da localidade espacial

Page 72: Augusto loureiro   sistemas microprocessados

72

Cache com 64KB (DECStation 3100)

31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0Endereços de Memória

V Tag Data-32bits

16kentradas

Data

Index

EQ

AND

Tag

ValidHIT

14

16

16 32

Deslocamento

Page 73: Augusto loureiro   sistemas microprocessados

73

Localidade temporal

A cache mostrada anteriormente apenas explora a localidade espacialPara tratar com a localidade temporal um bloco de maisde uma palavra é transferido para a cache no caso de uma falha (miss)No exemplo seguinte, a cache tem o mesmo tamanho(64KB), mas 4K entradas para blocos de 16 bytes cada:

Os próximos devem gerar acertos ao invés de faltasIsso pode provocar um aumento significativo na taxade acertos, mesmo com pequenos tamanhos de blocos

Page 74: Augusto loureiro   sistemas microprocessados

74

Cache com 64KB (DECStation 3100)

31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0Endereços de Memória

V Tag Data-0 Data-4 Data-8 Data-12

4kentries

Select

Block offset

Data

Index

EQ

AND

Tag

ValidHIT

Page 75: Augusto loureiro   sistemas microprocessados

75

Resultados de desempenho das duascaches

Fonte: Livro P&H p. 329

Programa Tam. Bloco TaxaI-miss Taxa D-miss Taxa Comb. miss

gcc 1 6.1% 2.1% 5.4%4 2.0% 1.7% 1.9%

spice 1 1.2% 1.3% 1.2%4 0.3% 0.6% 0.4%

Tamanho da cache: 128KB (64KB + 64KB)

Page 76: Augusto loureiro   sistemas microprocessados

76

Tamanho do Bloco de Cache

Em geral, um tamanho maior leva a vantagem dalocalidade espacial dos dados, MAS:

Maior tamanho de bloco significa maior penalidade de falhas (miss penalties) – mais tempo para encher um blocoSe o tamanho do bloco é muito grande em relação aotamanho da cache, a taxa de falhas irá aumentar

TMédio de Acesso = tacerto x (1 – taxa_acerto) + penalidade_falha x tfalhas

Page 77: Augusto loureiro   sistemas microprocessados

77

Tamanho do Bloco de Cache

Taxa deFalhas

Tam. Bloco

Taxa deAcerto Explora a Localidade

Espacial

Poucos blocos: compromete alocalidade temporal

Tempo Médio de Acesso

Aumenta Miss Penalty& Miss Rate

Tam. Bloco Tam. Bloco

Fonte: Patterson slides

Page 78: Augusto loureiro   sistemas microprocessados

78

Acessos em escrita

Não é tão simples em se tratando de cache

Deve-se assegurar que o dado foi escritona memória

Do contrário, memória e cache podem se tornar inconsistentes

Page 79: Augusto loureiro   sistemas microprocessados

79

Acessos em escrita

Solução mais simples: write-throughMemória e cache escritas ao mesmo tempoMas se for necessário uma espera para isso, osvalores da cache serão perdidos!

Usar um buffer (FIFO) no caminho de escritapara a memóriaBuffers permitem “equalizar” o serviço quandoa taxa de chegada de requisições é variável(algo como cadeiras num banco para osclientes esperarem…)

Page 80: Augusto loureiro   sistemas microprocessados

80

Outras soluções para escrita…

Escrita somente no retorno: write-backAtualização quando o bloco for susbstituído e se houver ocorrido alteração

Escrita somente uma vez : write-onceIdeal para sistemas multiprocessadores, quecompartilham um mesmo barramento (maisadiante)O controlador da cache escreve a atualização namemória principal sempre que o bloco for atualizado pela primeira vez na cache – ou seja, faz um write-through e ainda alerta os demaiscomponentes ligados ao barramento que houve a alteração

Page 81: Augusto loureiro   sistemas microprocessados

81

Comparando as três soluções

write-through : pode acontecer uma grandequantidade de escritas desnecessárias na memória…

write-back : minimiza o problema, mas a memóriapode ficar temporariamente desatualizada, obrigandoque outros dispositivos acessem os valores via cache…

write-once : conveniente, mas apenas em sistemascom múltiplas CPUs; utilização excessiva do barramento pode ser um fator de queda de desempenho…

Page 82: Augusto loureiro   sistemas microprocessados

82

Elementos de Projeto de uma Cache

Definição do tamanhoFunção de mapeamento de dados Memória/cacheAlgoritmos de substituição de dados nacachePolítica de escrita na cache

Page 83: Augusto loureiro   sistemas microprocessados

83

Próximo passo...

Hierarquia de Memória: MemóriaVirtual, Paginação, Aumento de Desempenho

Page 84: Augusto loureiro   sistemas microprocessados

84

Hierarquia Completa de Memória

Memória

Registradores CPU~100 Bytes1~10 ns

CacheK Bytes10-100 ns

Memória PrincipalM Bytes100ns-1us

DiscoG Bytesms-3 -4

CapacidadeTempo de Acesso

Tapeinfinitosec-min

Cache

Registradores

Tape

Disco

Operandos Inst.

Blocos

Páginas

Arquivos

EstágioUnidade

prog./compil.1-8 bytes

contr. cache8-128 bytes

SO512-4K bytes

user/operadorMbytes

Nível + Alto

Nível + baixoMaior

Fonte: Slides Patterson

+ rápido

Page 85: Augusto loureiro   sistemas microprocessados

85

Requisitos de um Sistema de Memória

Dar a ilusão de um vasto espaço de memóriatotal memória para todos os jobs simultâneos > memória realum job pode usar um espaço de endereços > memória atual

Acesso rápido à memóriaTransparência:

Livrar os programadores da tarefa de otimizar dautilização da memória → cache:memória:disco

Espaço de endereçamento uniforme:Não se pode saber onde os programas serãocarregados nem quais partes dos programas serãomudadas e recarregadas durante a execuçãoIdeal: os endereços situados entre 0 e 2N-1

Page 86: Augusto loureiro   sistemas microprocessados

86

Endereço virtual x endereço físico

O programador usa um espaço de endereçamentovirtual “imenso”, por ex. 231 bytes

Ele pode escrever programas como se todas essasposições de memória existissem realmente!O SO e a arquitetura de memória gerenciam o mapeamento endereço virtual – físicoSe o programa é realmente muito grande, deveexistir uma forma de armazená-lo na memória damáquina – seja em memória ou em disco (“memória de massa”)

A memória real é normalmente menor que o espaçovirtual de endereçamento

o tanto quanto puder ser suportado…endereços físicos ou reais

Page 87: Augusto loureiro   sistemas microprocessados

87

Memória Virtual (2)

Mapeamento endereços virtuais – memória real éfeita em blocos – tipicamente de 1 a 8KBBlocos de memória virtual são chamados páginasPáginas de memória virtual que estão no disco sãochamadas de paginadas-fora (paged-out)Uma referência feita a uma página que não está namemória principal é chamada de falha de página(page fault)A transformação entre endereços virtuais emendereços físicos (memory mapping) é feito atravésde uma tabela de paginação (page table)

Page 88: Augusto loureiro   sistemas microprocessados

88

Mapeamento de endereços virtuais

0x00000x10000x20000x30000x40000x50000x60000x7000

0xD0000xE0000xF000

:::

Prog A VirtualAddresses

:::

Prog B VirtualAddresses

Physical MemoryAddresses

Disk AddressesVirtualAddressSpace

No memory

UnusedMemoryaddressspace

Unused Unused

Page 89: Augusto loureiro   sistemas microprocessados

89

Mapeamento de Memória

O mapeamento Endereço Virtual x Endereço Físicoé também chamado de translação de endereçoNo INTEL 80386: espaço de end. lógico de 4GB ou 230 bytes – páginas de 4KB – endereços de 12 bits. Uma tabela de página poderia ocuparde memória (entradas de 4 bytes) Endereços virtuais são divididos em Número daPágina Virtual (NPV) e offset da página (12 bits nesse caso)Mapeamento de memória feito observando-se o NPV na tabela de páginas e concatenando com o offset da páginaNas arquiteturas atuais, o tamanho das tabelas de página varia (esquema de diretório de tabelas)

Page 90: Augusto loureiro   sistemas microprocessados

90

Processo de Mapeamento

Considere um espaço de endereçamento virtual de 4 GB e um espaço físico em memória de 1 GB

31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0

Número da Página Virtual Deslocamento

Translação

29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0

Número da Página Física Deslocamento

4GB

1GB

Page 91: Augusto loureiro   sistemas microprocessados

91

Falhas com Memória Virtual

Custo de uma falha é muito alto: em torno de mspara acessar um bloco de discoAs páginas devem ser grandes o suficiente paraamortizar o alto custo de acesso (4 KB, 8 KB, e mesmo MB …)

Mas não tão grandes para evitar a fragmentação…Tamanho fixado pelo hardware (MMU)

Page 92: Augusto loureiro   sistemas microprocessados

92

Falhas com Memória Virtual

Re-estruturação de programas reduz taxa de falhasProcessar as falhas de página por SW e não por HW

Algoritmos sofisticados podem ser empregadosPequenos aumentos na miss rate podem ser recompensadas pela redução de custos do algoritmo

Evitar a política write-through: Escritas em níveis mais baixos são muitodemoradas

Page 93: Augusto loureiro   sistemas microprocessados

93

Tabelas de Páginas (1)

As páginas deveriam poder ser localizadas emqualquer lugar conveniente na memória

Qualquer página virtual pode ser mapeada emqualquer página física disponívelChamado mapeamento totalmente associativoTabela de páginas faz o mapeamento e reside namemóriaCada programa tem sua própria tabela de páginaO hardware tem um registrador de tabela queaponta para a tabela de página

Os diagramas anteriores se tornam então:

Page 94: Augusto loureiro   sistemas microprocessados

94

Tabelas de Páginas (2)

29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0

Número da página física Deslocamento

Endereço Físico

Registrador da tabela de página

12

18Se Zero :Falha depágina

31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0

Número da Página Virtual Deslocamento

Endereço Virtual

Validade Número da página física

Pagetable

20

4GB

1GB

Page 95: Augusto loureiro   sistemas microprocessados

95

Falhas de Página (Page Faults) (1)

Quando o valid bit é zero ele indica que a página nãoestá na memória principalO controle deve ser passado ao SO para buscar a página(ou criar a página, para páginas de dados…)

Tipicamente o SO cria uma imagem do programa no disco quando o programa começaBusca as partes relevantes quando é precisoOnde olhar? – um mapeamento é necessário paramostrar onde estão as imagens no discoPode ser parte da tabela de páginas ou ser feita emseparado

Page 96: Augusto loureiro   sistemas microprocessados

96

Falhas de Página (Page Faults) (2)

Se todas as páginas na memória física estão em uso e o S.O. precisa substituir uma – Qual será escolhida?Política de substituição de páginas

Localidade Temporal é um critério normalMenos recentemente usada (MRU ou LRU)

i.e., sendo os acessos recentes às páginas: 10, 12, 9, 7, 11, 10.MRU numa falha de página trocaria a página 12; napróxima falha, substituiria a página 9, etc.

Tabelas de páginas tem um bit de uso ou referência“Levado a 1” quando a página é acessadaPode ser periodicamente “levado a 0” pelo S.O.Possibilita que o S.O. tenha uma visão aproximada das páginas recentemente utilizadas

Page 97: Augusto loureiro   sistemas microprocessados

97

Falhas de Página (Page Faults) (3)

Para um endereço virtual de 32-bits, páginas de 4KB (12-bits) com 4 bytes por entrada na tabela de página

220 pag x 4 bytes = 4MBIsto para cada programa ativo → muito memória“presa” em tabelas de páginas não usadas

Poderiam ser adicionados registradores de limites e somente mapear as páginas para endereços virtuaisbaixos para limitar o registrador

mas, num modelo normal, o segmento de dados cresce para cima e a pilha para baixonão consistente com a abordagem de limitesUsa 2 tabelas de páginas com 2 registradores de limite – um para a pilha e outro para o resto…

Page 98: Augusto loureiro   sistemas microprocessados

98

Operações de escrita

Write-through para o nível mais baixo da hierarquia (o disco nesse caso) é impraticável nesse caso devido ao alto custo para a escrita no discoA idéia é “salvar as escritas” para depois executá-lasWrite-back quando a página é substituída!Entretanto...

Custoso e desnecessário fazer write-back para páginaspara as quais não forem feitas escritas (por ex., páginas de programa)Assim, as tabelas de páginas têm um bit de sujeira(dirty bit) por entrada que é setado quando dados sãoescritos na páginaSe esse dirty bit é setado quando a página precisa ser substituída, ele é escrito em write-back para a imagemdo programa no disco

Page 99: Augusto loureiro   sistemas microprocessados

99

Fazendo isso rápido…

Tabela de páginas em máquinas modernas está namemória principal:

2 registradores: um de base da tabela namemória e outro indicando o no. de entradas

Portanto ...Cada acesso à memória lógica de um programanecessita de dois outros acessos à memória fíciapara achar a tabela de páginas

Como agilizar isso?Localidade de referências novamente

Inserir numa cache as tabelas de página maisrecentementes utilizadas:

Translation-lookaside buffer = cache inseridadentro da MMU (memory management unit)

Page 100: Augusto loureiro   sistemas microprocessados

100

Translation-Lookaside Buffer (TLB)

Número dapágina virtual

MemóriaFísica

Disco

Validade Página Física ou End. Disco

Validade End. Página FísicaRótulo

TLB

Tabela de Página

Page 101: Augusto loureiro   sistemas microprocessados

101

Translation-Lookaside Buffer

TLB é uma cache Se não existir a entrada na TLB, é preciso buscá-la natabela de páginas que está na memória principalA tabela de páginas tem uma entrada para cada páginaO TLB e a página usam o dirty bit e o reference bitUsar a abordagem write-back para esses bits da TLB para a página de tabelas numa falha é muito eficienteCaracterísticas típicas:

Block size 1-2 page table entries (4-8 bytes each)Hit time 1/2 to 1 clock cycleMiss penalty 10 to 30 clock cyclesMiss rate 0.01% - 1%TLB size 32 to 1024 entriesFonte: Livro P&H p. 492

Page 102: Augusto loureiro   sistemas microprocessados

102

Sistemas Modernos de Memória

Characteristic Intel Pentium Pro PowerPC 604Virtual address 32 bits 52 bitsPhysical address 32 bits 32 bitsPage size 4 KB, 4 MB 4 KB, selectable, and 256 MBTLB organization A TLB for instructions and a TLB for data A TLB for instructions and a TLB for data

Both four-way set associative Both two-way set associativePseudo-LRU replacement LRU replacementInstruction TLB: 32 entries Instruction TLB: 128 entriesData TLB: 64 entries Data TLB: 128 entriesTLB misses handled in hardware TLB misses handled in hardware

Characteristic Intel Pentium Pro PowerPC 604Cache organization Split instruction and data caches Split intruction and data cachesCache size 8 KB each for instructions/data 16 KB each for instructions/dataCache associativity Four-way set associative Four-way set associativeReplacement Approximated LRU replacement LRU replacementBlock size 32 bytes 32 bytesWrite policy Write-back Write-back or write-through

Page 103: Augusto loureiro   sistemas microprocessados

103

Próximo passo...

Interface: dispositivos de entrada e saída (E/S) e barramentos

Page 104: Augusto loureiro   sistemas microprocessados

104

INTERFACE PROCESSADOR – DISPOSITIVOS

Page 105: Augusto loureiro   sistemas microprocessados

105

Os componentes clássicos de um computador

Características extremamente dependentes da tecnologia, assim como os processadores“Um pouco neglicenciados” nos últimos anos...

Processor

Computer

Control

Datapath

Memory Devices

Input

Output

Page 106: Augusto loureiro   sistemas microprocessados

106

Arquitetura Típica

Processadorvia de dados

+ controle

Cache

ControladorE/S

ControladorE/S

ControladorE/S

MemóriaPrincipal

Display(monitor)

Teclado

interrupções

Barramento de Memória – E/S

Rede

ControladorE/S

Page 107: Augusto loureiro   sistemas microprocessados

107

Desempenho em Sistemas de Entrada e Saída

Seja um programa com tempo de execução de 100s, com 90% do tempo em CPU e 10% E/S

Se a CPU aumenta a velocidade 50% por ano, ao fim de 5 anos, o programa passa a ser executado em:90/(1.5)5 + 10 = 22 → 45% do tempo em

E/S !!!Métricas de desempenho complexas:

Supercomputadores: leitura de arquivos imensos e escrita de vários arquivos pequenos → vazãoProcessamento de Informações: tempo de resposta e desempenho em termos de vazãoSistemas de Arquivo: acessos a arquivos pequenos, dados seqüenciais, mais leitura e menos escrita →utilização do espaço e tempo de resposta

Page 108: Augusto loureiro   sistemas microprocessados

108

Arquitetura de Entrada/SaídaCaracterísticas dos dispositivos de E/S (I/O)

Cada dispositivo tem um endereço de portaLimite de dispositivos ~ número de bits da portaAcesso da CPU via bus + interface do dispositivo

Esquemas para a transferência de dadosDispositivos lentos

Programada com espera ocupada (polling ou busy-waiting)Acionada por interrupção

Dispositivos rápidosAcesso direto à memória – DMA (Direct Memory Access)Utilizando canais de dados – Controle de barramentos

Page 109: Augusto loureiro   sistemas microprocessados

109

Tipos de Dispositivos e E/SDispositivo Tipo Parceiro Taxa Ordem

(KB/sec)Teclado entrada humano 0.01 0Mouse entrada humano 0.02 0Alto-falante saída humano 0.60 1Line printer saída humano 1 2Floppy disc armazenagem máquina 50 3Laser printer saída humano 100 4Scanner entrada humano 200 4Optical disc armazenagem máquina 500 4LAN entrada/saída máquina 10K-1G 5Hard disc armazenagem máquina >10K 5Display saída humano 60K 6

A arquitetura de E/S deve acomodar uma variedadeenorme de dispositivos periféricos, com diferençassignificantes de desempenho.

Page 110: Augusto loureiro   sistemas microprocessados

110

Dispositivos de E/S simples

Lentos, geralmente orientados a caracteres (8bits) : teclados, displays, impressoras, etc. Muito mais lentos que o processador... ... Necessidade de protocolo de controle de fluxo de dados, hand-shaking protocolRequerem, pelo menos:

um registrador de dadosum registrador de controle com um bit done (colocado em 1 quando pronto para receber ou enviar o próximo dado, ou 0 em caso contrário).

Page 111: Augusto loureiro   sistemas microprocessados

111

MouseProcessador lê os contadores para determinar a posição e atualizar a telaBotões pressionados geram eventosTudo controlado por softwareInterface E/S por polling (mais adiante...)

+ 20 em Y+ 20 em Y– 20 em X

– 20 em Y– 20 em X

+ 20 em Y+ 20 em X

– 20 em X + 20 em X

– 20 em Y+ 20 em X

– 20 em Y

Posiçãoinicial

Page 112: Augusto loureiro   sistemas microprocessados

112

Discos Magnéticos (hard disks)

Superfície rotativa magnética

1 ou mais pratosRotação a ~ 103 RPM

Divididos em (~1000 a 5000) trilhas concêntricasCada trilha tem tipicamente 64 a 200 setores (entre 512-4096 bits)

Setores

Trilhas

Superfícies

Page 113: Augusto loureiro   sistemas microprocessados

113

Discos MagnéticosO setor, às vezes chamado bloco, é a unidade fundamental de transferência (não se pode transferir menos que ela)Discos mais recentes utilizados em PC’s só tem 1 prato devido aos ganhos tecnológicos na confecção dos discosEm geral, fabricantes informam tempo de busca máximo, mínimo e médio de acesso aos dadosDiscos flexíveis utilizam tecnologia da década de 80: menor velocidade, confiabilidade e capacidadeDiscos ópticos tornam-se parte integrante nos anos 90...

Page 114: Augusto loureiro   sistemas microprocessados

114

Desempenho de discos

Os braços movem-se entre os pratos rotativos, lendo ou escrevendo informaçõesTempo de busca (seek time)

Tempo para o braço localizar a trilha corretaLatência rotacional

Tempo para encontrar o setor corretoTempo de transferência

Tempo para transferir o bloco de informaçõesCabeças

Muitos discos têm uma cabeça por superfície – alta densidade de dadosAlguns discos mais antigos têm múltiplas cabeças por superfície – baixa latência de acesso e alto desempenho.

Page 115: Augusto loureiro   sistemas microprocessados

115

E/S com Disco

Registradores de dispositivo:Endereço no discoNúmero de bytes a ser transferido, que pode ser <, = ou > um setor. Endereço de memória para a transferênciaRegistrador de comando:

tipo de comando: read - disco para memória; write; write&verify (ler depois de escrever), etc.habilita interrupção go - quando ligado promove a transferência para o início, utilizando os valores correntes nos registradores de endereço e de comprimento.

Registrador de statusIndicadores de erros - unreadable/unwritablesector, etc.Livre/ocupado (idle/busy)

Page 116: Augusto loureiro   sistemas microprocessados

116

Conexão dos Dispositivos de E/S ao Processador e àMemória

Conexão via barramento: Nada mais é que um conjunto de ligações (fios) que forma um canal de comunicação compartilhado entre os vários subsistemas (processador, memória, entrada/saída)Limitação: gargalo para a comunicaçãoDesempenho limitado fisicamente pelo número de dispositivos conectados, comprimentoInclui uma via de controle (solicitações) e uma via de dados (informações):

A via de controle inclui envolve linhas para requisição do barramento e para garantir o seu controleA via de dados tipicamente tem de 8 a 64 bits de largura, i.e. 8 a 64 ligações separadas

Page 117: Augusto loureiro   sistemas microprocessados

117

Interconexão de componentes (1)

Diretamente com o processadorNenhuma máquina moderna aplicam esta solução, em geralNem flexível, nem extensívelBarramento plano (backplane)Barramento “curto” e de propósito geral – conecta memória, periféricos e o processadorDeve seguir um padrão – ex. VME, PCI, etc.

Barramento E/Slongo, interligando diferentes tipos de dispositivosDeve seguir um padrão comercial: SCSI, IPI, etc.

Barramento processador-memóriaBarramento “curto” de altíssima velocidade, especializado para otimizar as comunicações memória-processadorGeralmente proprietário – específico para a máquina ou vendedor na busca de melhoria de desempenho

Page 118: Augusto loureiro   sistemas microprocessados

118

Interconexão de componentes (2)

Local Area Network (LAN)Pode ser usada para compartilhar periféricos, como impressoras, sistemas de arquivos, etc.Distâncias muito maioresGeralmente taxas de dados “moderadas/altas” entre 100Kbits/sec e 155 Mbits/sec

Projetos de alto desempenho envolvem múltiplos barramentos para produzir caminhos ótimos para os dados.Geração futura deve usar “switches” especializados –derivados da tecnologia LAN

Page 119: Augusto loureiro   sistemas microprocessados

119

Barramentos Síncronos e Assíncronos

Síncrono: inclui um clock em suas linhas de controleRequer que cada dispositivo do barramento “rode”a uma mesma velocidade.Barramentos Processador-memória : sincronização na leitura e escrita; poucos dispositivos, próximos e muito rápidos

Assíncrono: não “segue” um clockPode ligar vários dispositivos de características diferentes, sem preocupação com o sincronismoTipicamente para entrada/saídaControlado por um mecanismo de handshaking(vários passos, mas o receptor e transmissor sóseguem em frente se ambas as partes envolvidas estão de acordo)

Page 120: Augusto loureiro   sistemas microprocessados

120

Arbitragem do barramento (1)

Como isso se comporta na prática?O que acontece quando vários dispositivos querem ter acesso ao barramento?

8-64

Controladorde

Barramentoou

Árbitro 16-?

4-8

Comando

Dados

Endereço

Processador Memória HardDisk

FloppyDisk

Bus requestBus grant

Daisy chain

Page 121: Augusto loureiro   sistemas microprocessados

121

Arbitragem do barramento (2)Quando um dispositivo (incluindo a CPU) necessita do barramento, ele envia (ou “seta”) uma requisição na requestline

Existe uma linha única de requisições funcionando em “wired-OR “Só distingue se existe ou não requisição

O árbitro atende uma requisição quando o barramento torna-se disponível “setando” a linha grant lineO primeiro dispositivo que “vai para nível 0” pode usar o barramento

Árbitro do

Barramento

Dispositivo 1

Dispositivo 2

Dispositivo 3

Dispositivo 4

Bus Request

Bus Grant

A permissão pode ou não se propagar

pela cadeia

Page 122: Augusto loureiro   sistemas microprocessados

122

Arbitragem do barramento (3)

Dispositivo que “ganha” o barramento:Torna-se o mestre do barramentoEle não propaga o sinal de “grant” para os outros dispositivos desligados (em nível baixo)Portanto, um mecanismo de prioridade é construído – os dispositivos mais próximos do árbitro têm maior prioridadeGarantir que outros dispositivos tenham acesso ao barramentoAssim limitar “a janela de tempo” para assegurar que restrições temporais críticas não sejam ultrapassadas nos dispositivosO mestre colocar comandos, endereços e dados no barramento para serem tratados pela memória ou por um outro dispositivoSe a transferência não recebe um acknowledgment, uma exceção de erro de endereço de barramento é gerada

Page 123: Augusto loureiro   sistemas microprocessados

123

Arbitragem do barramento (4)

Árbitro do

Barramento

Dispositivo 1

Dispositivo 2

Dispositivo 3

Dispositivo 4

Grant nível 1Grant nível 2

Req. nível 1Req. nível 2

Esquema com nível de prioridades no barramento:nível 2 > nível 1Conflito: 3 > 4 > 1 > 2

Page 124: Augusto loureiro   sistemas microprocessados

124

Padrões para barramentos (1)Barramento E/S permite a expansão da máquina: padronização é fundamental!

SCSI (Small Computer Systems Interface) e Ethernet são exemplos de padrões criados por reunião de fabricantesPCI criado pela INTEL e depois adotado por outras

PCI : barramento para backplane de propósito geralSCSI: barramento de entrada e saída

Faz a interface entre o barramento do backplane e o barramento processador-memória

Page 125: Augusto loureiro   sistemas microprocessados

125

Padrões para Barramentos (2)

Característica PCI SCSItipo backplane E/Slargura de dados 32 a 64 bits 8 a 32 bitsmestre do bus múltiplos múltiplosArbitragem centralizada, com distribuída, com

requisição em paralelo acesso por seleçãoclock Síncrono 33 a 66Mhz Ambos (5 a 10Mhz)Banda passante 80 MB/s 5 or 40 MB/sNo.max dispositivos 1024 7 a 31comprimento max 0.5m 25mNome padrão PCI ANSI

Source: P&H p. 395

Em evolução constante... Dados tabelados em 1997!

Page 126: Augusto loureiro   sistemas microprocessados

126

Interface dos Dispositivos E/S com a Memória, Processador e SO

Um protocolo de barramento define exatamente o que deve ser feito em uma transmissão de dados entre subsistemasO SO é responsável pela gerência de toda a E/S:

Proteção de acesso aos dispositivosDefine abstrações para acesso aos dispositivosTrata as interrupções geradas pelo processador e dipositivosGarante o acesso compartilhado aos dispositivos

O SO efetua 3 tipos de comunicação:1. Envio de comandos aos dispositivos2. Comunicação do dispositivo indicando fim da tarefa3. Transferência dos dados entre memória e dispositivos

Page 127: Augusto loureiro   sistemas microprocessados

127

Envio de Comandos aos dispositivos

Dois métodos de endereçamento: Mapeamento de E/S em memóriaComandos especiais de E/S

Mapeamento em memória:Parte do espaço de endereçamento é reservada aos dispositivos (e protegido dos programas usuário)Leituras/escritas a esses endereços são interpretadas pelo SO como operações de E/SVantagem: simplicidade e transparência

Comandos especiais de E/S:Instruções incluídas no processadorVerifica o estado do dispositivo para saber se o comando foi completado ou não (só em modo kernel)

Page 128: Augusto loureiro   sistemas microprocessados

128

Exemplo: Teclado e monitoresTeclados produzem caracteres à medida em que são digitados, em geral à taxa média de 10 cpsMonitores são capazes de exibir textos alfanuméricos àtaxa aproximada de 1200 cps

7 6 45 3 2 1 07 6 45 3 2 1 0

Ready/Done

Keyboard RegistersControle Data

7 6 45 3 2 1 07 6 45 3 2 1 0

Ready/Done

Display RegistersControl Data

Read-only

Write-onlyUnused (for now)

Page 129: Augusto loureiro   sistemas microprocessados

129

Exemplo - Estrutura de um programa “echo”

Assuma que os registradores de E/S são mapeados em memória a partir das posições 0xffff 0000:

+0 Keyboard control+4 Keyboard data+8 Display control+12 Display data

No modo full-duplex os caracteres inseridos através do teclado não são exibidos a menos que haja um programa que instrua a arquitetura para tal, por ex:1. aguarde o sinal ready do teclado ser ligado2. leia o caractere - automaticamente zera (desliga) ready3. envie o caractere ao display4. aguarde a exibição ( Não necessariamente verdade, já

que o display geralmente é muito mais rápido que a digitação )

5. volte ao começo

Page 130: Augusto loureiro   sistemas microprocessados

130

Exemplo - o código...

Programa simples em assemblyusando E/S polled

.textmain: li $8, 0xffff0000

mloop: lw $7, 0($8) # get control registerandi $7, $7, 1 # mask out done bitblez $7, mloop # loop waiting for data

lw $6, 4($8) # get data/clear kbd done

lp2: lw $7, 8($8) # wait for display readyandi $7, $7, 1 # mask out done bitblez $7, lp2 # loop waiting

sw $6, 12($8) # display character

b mloop # next char

Page 131: Augusto loureiro   sistemas microprocessados

131

Analisando o desempenho do Polling

A espera “ocupada” do bit done é chamada pollingDesperdício de tempo de processamento, já que os dispositivos são (em geral) muito mais lentos do que o processadorPor outro lado, no caso de disco magnético o processador pode não dar conta de atender a alta taxa de transferência de dados.Necessidade de outras técnicas é clara: mecanismo de entrada/saída dirigida por interrupção

Page 132: Augusto loureiro   sistemas microprocessados

132

Mecanismo de Interrupção

Mecanismo que desvia o processador de suas atividades normais quando algum dispositivo precisa ser atendido: 1. A CPU emite uma instrução de E/S e não espera resposta

imediata, desviando-se para realizar outra atividade, suspendendo a execução do programa de E/S

2. O processador verifica, no início ou fim do ciclo de execução de cada instrução, se ocorreu alguma interrupção.

3. Em caso positivo (i.e., a interface está para transferir o dado), o controle é transferido para uma rotina de tratamento de interrupção - Interrupt Service Routine ou Interruption Handler

4. O dado é então transferido5. A CPU retoma ao programa original no ponto em que

aconteceu a interrupção.

Page 133: Augusto loureiro   sistemas microprocessados

133

Interrupções

Internas: Devido a eventos gerados durante a execução de um programa pelas instruções (overflow por divisão por zero, underflow) ou por programação (alarmes)

Externas:Devido a sinais externos à CPU: interface de dispositivos de E/S que “avisam” à CPU que existem dados a serem transferidos

Algumas podem ser desabilitadas:No nível do dispositivo - afeta apenas um dispositivoNo nível do sistema - afeta todos os dispositivos

Para lidar com a imensa gama de dispositivos de E/S, os mecanismos de interrupção têm níveis de prioridade definidos

Page 134: Augusto loureiro   sistemas microprocessados

134

Como sincronizar as interrupções?

Através de fila ou bufferEstrutura tipo first-in, first-outUma fila para entrada, outra para saída. Se a fila estiver vazia → nenhum trabalho a ser feito. Se a fila de entrada estiver vazia e o programa do usuário necessita uma entrada, então o Sistema Operacional (SO) suspende o programa assume algum outro que possa dar prosseguimento. De maneira similar, se a fila de saída estiver cheia, o SO precisa re-escalonar os processos até que a rotina de interrupção tenha gerado algum dado.

Page 135: Augusto loureiro   sistemas microprocessados

135

Filas de I/O

entrada Q

out: add to Qif full OS suspends

saída Q

in: get from Qif empty OS suspends

Programa do usuário

main: do workcall indo workcall out

Kbd data

Display data

Rotina de interrupção

Código de Inicializaçãopara habilitar interrupções

Kbd: get dataput in Qif full beepresume

Disp: get data from Qif none disableinterruptsend to displayresume

Page 136: Augusto loureiro   sistemas microprocessados

136

Múltiplos Dispositivos

Quando ocorre uma interrupção pode-se sair varrendo um a um para determinar quem interrompeu: test chain

Processo lento, utilizado em máquinas antigas. Certos dispositivos têm tempos críticos de resposta: se o dado não for tratado a tempo ele será perdido ou outro prejuízo na aplicação pode acontecer. Diversas soluções:

Interrupção vetorizada - cada dispositivo tem associado um endereço exclusivo na memória onde um ponteiro para sua ISR pode estar armazenado. Interrupção com vetorização parcial - dispositivos são divididos em classes com faixa de tempo crítico similares, vetorizados todos para o mesmo endereço. O test chain érealizado para o refinamento da identificação. Interrupção não-vetorizada - test chain e outros truques...

Page 137: Augusto loureiro   sistemas microprocessados

137

Vetores de Interrupção

.ktext 0x80000000

.word Lkbd # vector for kbd

.word Ldisp # vector for display

.ktext 0x80000020

.word Lhd # hard disk vector

.ktext 0x80000040

.word Lscan # scanner vector

.ktextLkbd: ... # ISR for kbd

resumeLdisp: ... # ISR for display

resumeLhd: ... # ISR for disk

resumeLscan: ... # ISR for scanner

resume

Page 138: Augusto loureiro   sistemas microprocessados

138

Vetorização Parcial.ktext 0x80000000.word slow # vector for slow devices.ktext 0x80000020.word med # vector for med speed devices.ktext 0x80000040.word fast # vector for fast devices.ktext

slow: test kbd # ISR for slow devstest disptest clocktest mouseresume

kbd: ... # ISR for kbdresume

disp: # etc.# - - - - - - - -med: ... # ISR for med speed devs

resume# - - - - - - - -fast: ... # ISR for fast devs

resume

Not MIPS code!

Page 139: Augusto loureiro   sistemas microprocessados

139

Do ponto de vista da CPU

A CPU é interrompida: Qual tipo de interrupção? Qual o dispositivo sinalizou? Reagir imediatamente, mais tarde, ignorar? O que fazer com o programa interrompido? Quando retornar à sua execução?

Rotina de Tratamento da InterrupçãoAntes de ir para a rotina a CPU “salva o contexto” do processo em execuçãoA CPU recebe o endereço inicial da rotina de tratamento da interrupção e inicia sua execução

Embora melhore o desempenho, a CPU ainda “perde tempo”com a execução da rotina de interrupção e controle da transferência: imagine a transferência de 100KB do disco para a memória

Page 140: Augusto loureiro   sistemas microprocessados

140

Transferência entre Dispositivo e Memória

Polling e Interrupções funcionam bem para transfe-rências entre dispositivos de banda passante baixaAs interrupções retiram do processador ô “ônus” de ter que esperar cada evento de E/S, mas ainda assim, a transferência do disco para memória não necessitam do controle direto da CPUA solução encontrado foi criar um mecanismo de transferência denominado DMA (directmemory access) ou acesso direto à memória

Page 141: Augusto loureiro   sistemas microprocessados

141

Acesso Direto a Memória (DMA)

Dados são transferidos entre a memória e o disco diretamente, sem o envolvimento do processador.

Interrupção ainda utilizada para dizer à CPU quando a transferência é iniciada e terminada.

Transferências DMA:CPU informa ao controlador de disco a operação a ser realizada e os endereços envolvidos. O controlador do dispositivo realiza então a operação, através de DMA, deixando livre a CPUControlador de barramento faz a arbitragem do barramento.O controlador do dispositivo informa à CPU o término da transferência usando uma interrupção ou no caso de erro

Page 142: Augusto loureiro   sistemas microprocessados

142

Análise do DMA (1)

Um barramento é um caminho compartilhado de alta velocidade. Considere a execução normal de um programa que requisita acessos à memória ao processador:

Inst R Data R Data WInst RInst R Inst RInst R

Atividade no Bus (P/M)

Tempo

Processador trabalhando

Processador

Memória Disco

Tela Teclado

Bus

Page 143: Augusto loureiro   sistemas microprocessados

143

Análise do DMA (2)

Agora, com o disco envolvido na transferência DMA

Inst R Data R Data WInst R Inst R

Atividade no Bus (P/M/D)

Tempo

Inst R Inst RInst R Inst R

Disk R/W Disk R/W

Disk R/W Data W Disk R/W

Processador

Memória Disco

Tela Teclado

Bus

Page 144: Augusto loureiro   sistemas microprocessados

144

Análise do DMA (3)

Bus é compartilhado por transferências processador-memória e disco-memóriaAssim, o desempenho do processador pode sofrer uma redução. Arquiteturas multi-barramentos são usadas para reduzir este efeitoÉ preciso que algo seja usado para organizar o compartilhamento do barramento: árbitro ou controlador de barramentoA conexão ao barramento e a tomada de decisões gasta tempo. Em alguns protocolos de barramentos SO, somente rajadas (burst) limitadas de dados podem ser transmitidas: burst-mode

Page 145: Augusto loureiro   sistemas microprocessados

145

Próximo passo...

Arquiteturas Avançadas: multicomputadorese multiprocessadores

Page 146: Augusto loureiro   sistemas microprocessados

146

Sistemas Multiprocessadores (I)

Mais que uma CPU

Em geral confinadas a um mesmo espaço físico (gabinete, rack, ...)

Fortemente acoplados

Comunicação via memória compartilhada

Page 147: Augusto loureiro   sistemas microprocessados

147

Sistemas Multiprocessadores (II)

CPU

Mem

Bus

CPU

cache

Page 148: Augusto loureiro   sistemas microprocessados

148

Sistemas Multiprocessadores (III)

Switch

(Ômega)

CPU

Mem

Page 149: Augusto loureiro   sistemas microprocessados

149

Sistemas Multiprocessadores (IV)

Crossbar

CPU

Mem

Page 150: Augusto loureiro   sistemas microprocessados

150

Sistemas Multicomputadores (I)

Mais que uma CPU

Máquinas podem estar geograficamente distantes

Sistemas fracamente acoplados

Cada processador possui sua memória local própria e a comunicação é feita por passagem de mensagens

Page 151: Augusto loureiro   sistemas microprocessados

151

Sistemas Multicomputadores (II)

CPU

Mem local

Rede

Page 152: Augusto loureiro   sistemas microprocessados

152

Sistemas Multicomputadores (III)

MALHA TRIDIMENSIONAL (k=3, n=3)

CPU

Mem local

Page 153: Augusto loureiro   sistemas microprocessados

153

Desafios

Balanceamento de carga entre processadoresAdequação aplicação x arquiteturaCoerência de memória (cache)Linguagem de programação e compiladoresLimitações físicas: temperatura, comprimento das ligações, custo