1. Sistemas Microprocessados – ENGC50
Prof. Augusto Loureiro da Costa
Departamento de Engenharia Elétrica
Escola Poltécnica
Universidade Federal da Bahia
Augusto.loureiro@ufba.br
1
2. Programa do Curso
Introdução
Desempenho de Sistemas de Computação:
aspectos
Arquitetura de Conjunto de Instruções
Estrutura do processador: fluxo de dados e
controle
Sistemas de Entrada/Saída e comunicação
Sistemas de Memória.
2
5. O que é a Arquitetura de um Computador?
Arquitetura de Computadores =
Conjunto de Instruções
(ISA - Instruction Set Architecture)
+
Organização da Máquina
5
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
-- Organização da Memória funcional, são distintos
da organização dos
-- Tipos de dados e estruturas de dados: fluxos de dados e dos
Codificações e representações controles da lógica e da
-- Conjunto de Instruções
implementação física.
[Amdahl, Blaaw and
-- Formato das Instruções Brooks, 1964]
-- Modos de Endereçamento e Acesso de Dados e Instruções
-- Condições de Exceção
6
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)
8
9. Exemplos de Conjunto
de Instruções da Arquitetura
Digital Alpha (v1, v3) 1992-97
HP PA-RISC (v1.1, v2.0) 1986-96
Sun Sparc (v8, v9) 1987-95
SGI MIPS (MIPS I, II, III, IV, V) 1986-96
Intel (8086,80286,80386, 1978-00
80486,Pentium, MMX, ...)
9
10. MIPS R3000 Instruction Set Architecture
Registradores
R0 - R31
Tipo de Instrução
Load/Store
Computational
Jump and Branch PC
Floating Point (coprocessor) HI
Memory Management LO
Special
3 Formatos de Instrução: TODOS com 32 bits de comprimento
OP rs rt rd sa funct
OP rs rt immediate
OP jump target
Q: Quem já ouviu falar desta arquitetura? 10
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 componentes
Fluxo de informação entre componentes
Lógica e forma pela qual o fluxo de informações é
controlado
Implementação do ISA sobre as Unidades Funcionais
Descrição do Nível de Transferência dos Registros
11
12. Exemplo de Organização
TI SuperSPARCtm TMS390Z50 da Sun
SPARCstation20
MBus Module
SuperSPARC
Floating-point Unit
L2 CC DRAM
Integer Unit $ MBus Controller
Inst Ref Data L64852 MBus control
M-S Adapter STDIO
Cache MMU Cache
SBus serial
Store SCSI kbd
SBus mouse
Buffer DMA Ethernet audio
RTC
Bus Interface SBus Boot PROM
Cards Floppy
12
13. O que é Arquitetura de Computadores?
Coordenação de níveis de abstração
Application
Operating
Compiler System
ISA - Instruction Set
Architecture
Instr. Set Proc. I/O system
Digital Design
Circuit Design
Sujeita a um conjunto de influências em constante e rápidas
alterações.
13
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.
14
15. Influências nas Arquiteturas...
Tecnologia Linguagens de
Programação
Aplicações
Arquitetura de
Computadores
História
Sistemas
Operacionais (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.
15
16. Tecnologia: memória
capacidade do chip DRAM
Em ~1985 o processador “single-
chip” (32-bit) e o computador
DRAM “single-board” apareceram
Year Size
⇒ workstations, personal
1980 64 Kb
computers, multiprocessors
1983 256 Kb
surgiram nessa era
1986 1 Mb
1989 4 Mb
Em 2002 + δt, este caminho nos
1992 16 Mb
leva a crer que teremos mainframes
1996 64 Mb
comparados a computadores
1999 256 Mb
“single-chip” (talvez 2 ou + chips)
2002 1 Gb
2009 ? Gb
16
17. Densidade de Lógica dos Microprocessadores
100000000
Tecnologia: densidade
10000000
R10000
Pentium
Número de Transistors
R4400
i80486
1000000
i80386
i80286
100000
R3010
SU MIPS
i8086 i80x86
M68K
10000 MIPS
Alpha
i4004
1000 17
1970 1975 1980 1985 1990 1995 2000 2005
19. Desempenho: CPU e Redes (Patterson)
Desempenho
Relativo
CPU
(spec)
1000
LAN
DEC 1 Gb ATM
100 Alpha
MIPS
10 M/120
100 Mb FDDI
10 Mb
1
Ano
1980 1985 1990 1995 2000
19
20. Tecnologia: mudanças drásticas
Processador
capacidade lógica: ~ 30% por ano
taxa de clock: ~ 20% por ano
Memória
Capacidade DRAM: ~ 60% por ano (4x em 3
anos)
Velocidade: ~ 10% por ano
Custo por bit: ganho de 25% por ano
Discos
Capacidade: ~ 60% por ano
20
21. Desempenho dos Processadores
Desempenho aumenta ~ 50% por ano (2x a cada 1.5 ano)
350
300
RISC
250
Desempenho
200
Introdução do
150 RISC Intel x86
100
50 35%/yr
0
1986
1988
1989
1990
1995
1987
1991
1992
1982
1985
1993
1994
1983
1984
Ano
Quais as possibilidades do RISC em relação às outras? 21
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
22
23. Assim ...
Design Arquitetura é um processo iterativo
-- Busca de espaço para possíveis projetos
-- Observar todos os níveis de sistemas de
Análise computação
Criatividade
Custo/
Análise de
Desempenho
Boas Idéias
Idéias Medíocres
Idéias Ruins 23
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”
24
25. Arquitetura Básica dos Computadores Atuais
CPU: ALU interrupts
(datapath)
+ control
Cache
main bus
Main I/O I/O I/O
Memory Controller Controller Controller
Graphics Keyboard
display
25
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 arquitetura
add A, B → montador → 100011000001
3. Linguagem de Programação de alto-nível
Compilador: traduz instruções de alto-nível para
instruções binárias diretamente ou via um montador
A + B → compilador → add A, B → montador
→100011000001 ou
A + B → compilador → 100011000001
26
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ários
Mais 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.
27
28. Uma questão?
15o. bit 6o. bit
214 25 ... 20
O que é isto?
00000000001000100100000000100000
• Pode ser lido como:
25 + 214 + 217 + 221
= 32 + 16384 + 131072 + 2097152
= 2244640
28
29. Diálogo com o computador...
• O que é isto?
00000000000000010000001000001000000000000100000
00000000000000110000010000001001000000000100000
000000000000100000001001000001010000000 00100010
Melhor assim?
00000000 00000001 00000010 00001000 0000000
00100000
00000000 00000011 00000100 00001001 0000000
00100000
00000000 00001000 00001001 00000101 0000000
00100010 29
31. Traduzindo mais um pouco...
Melhorando ainda mais...
$8 = $1 + $2
$9 = $3 + $4
$5 = $8 - $9
• Claro agora?
u=a+b
v = c + d;
x=u-v
• Sim, é claro: x = (a+b) - (c+d)
31
32. Níveis de Representação
Programa em
Linguagem de Alto-Nível
Compilador x = (a+b)
Compilador x = x – (c+d)
Programa em Linguagem
de Montagem lw $15, 0($2)
Montador ou lw $16, 4($2)
Assembler sw $16, 0($2)
sw $15, 4($2)
Programa em
Linguagem de Máquina 0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
Interpretação da Máquina 0101 1000 0000 1001 1100 0110 1010 1111
Especificação do
controle de sinais
ALUOP[0:3] <= InstReg[9:11] & MASK
°
° 32
33. Níveis de Organização
SPARCstation 20
Computador
Objetivo do Projeto: Processador Memória Dispositivos
25% do custo - Processador
25% do custo - Memória
(configuração mínima) Controle Entrada
Resto – dispositivos I/O,
energia, gabinete, etc.
Datapath Saída
33
34. Executando um Programa:
Ciclo de Execução
Instruction
Obtém uma instrução do programa armazenado
Fetch
Instruction
Decode Determine as ações e o tamanho da instruções
Operand
Localiza e obtém os dados (operandos)
Fetch
Execute Calcula um valor do resultado ou status
Result
Store Armazena resultados na memória para uso futuro
Next
Instruction Determina a próxima instrução
34
35. Instruções Básicas de Programas
Conjunto de instruções = linguagem de máquina
Instrução: opcode [operandos]
Tipos de instrução:
Instruções aritméticas e lógicas (add, sub, AND, OR)
Referência à memória ou Load&store
Desvios Condicionais: if + goto / if-then-else
Desvios 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
35
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 modernas
Todas as instruções são executadas sobre dados
armazenados em registradores
Instruções do tipo carregar/armazenar (load/store)
↔ registradores
MIPS:32 registradores indicados: $0...$31
36
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?
CPI
Métricas estáticas:
- Quantos bytes o programa ocupa na memória?
Métricas dinâmicas: Inst. Count Cycle Time
- 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!
37
NOTA: isto depende do conjunto de instruções, da organização do processador e das
técnicas de compilação
38. Aspectos do Desempenho da CPU
CPU time
CPU time = Seconds
= Seconds = Instructions x Cycles
= Instructions x Cycles x Seconds
x Seconds
Program
Program Program
Program Instruction
Instruction Cycle
Cycle
instr count CPI clock rate
Programa X
Compilador X X
Conj. Instr. X X
Organização X X
Tecnologia X
38
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
39
40. Desempenho x Tecnologia
Poder da Tecnologia: 1.2 x 1.2 x 1.2 = 1.7 x / ano
Tamanho: 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
40
42. Onde estamos agora?
Cinco componentes do computador
Computer
Processor Memory Devices
Control Input
Datapath Output
Projetando uma CPU monociclo
Projeto da
máquina
Aritmética
Conjunto de Instruções tecnologia (parte 1 e 2)
(parte 2) 42
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]
43
44. Implementação do conjunto de instruções
INSTRUÇÂO opcode operando 1 operando 2
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)
44
45. Visão geral da implementação MIPS
Ideal Control
Instruction Control Signals Conditions
Instruction
Memory
Rd Rs Rt
5 5 5
Instruction
Address
A Data
32 Data
Next Address
Rw Ra Rb Address
32 32 Ideal Out
ALU
32 32-bit
PC
Data
Registers Data Memory
B
In
Clk Clk
32
Clk
Datapath
45
46. Controle e Via de Dados
Controle: define os sinais para acionar o hardware
(unidades funcionais) para cada instrução decodificada
Via 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
somador
4
Endereço de
leitura
PC
Instrução
Ex: Busca da
próxima instrução Memória de
instruções
46
47. Implementação “multiciclo”
Cada passo de execução da instrução = 1 ciclo de clock
Compartilhamento das unidades funcionais dentro do
espaço de tempo correspondente a uma instrução
Assume-se que o ciclo de clock possa acomodar
operações de acesso à memória, uma operação da ULA e
acesso (leitura-escrita) aos registradores
A 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
47
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ção
2. Multiprogramação – representação para o controle
semelhante a um programa
Quanto 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
48
49. Controles baseados em Máquinas de
Estado
Lógica de Controle
Combinacional Saídas de controle do
caminho de dados
Saídas
Entradas
Próximo
estado
Registrador
de estado
Entradas vindas
do opcode
do registrador
de instruções
49
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ção
Microprograma: 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 hardware
Em 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)
50
51. CPU’s de arquiteturas conhecidas
Kernel: via de dados e controle
Outras técnicas para aumentar o desempenho: pipeline
1985: MIPS R2000 com pipeline
Até 80386 sem pipeline
80486, 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é 4
Pentium PRO usa conceitos RISC
51
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ções
Cada 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!
52
54. Vantagens do RISC
Instruções têm o mesmo tamanho: busca e
decodificação simples e com tempo reduzido
Instruções simétricas e com uso dos
registradores facilita a seqüência das
operações do pipeline
O 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
54
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 desvio
Paradas geram bolhas no pipeline
Ordem de
execução
add $4,$5,$6 busca di ULA mem w reg
beq $1,$2,40 busca di ULA mem w reg
bolha bolha bolha bolha bolha
lw $3,300($0) busca di ULA mem w reg
tempo
55
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, $t1
sub $t2, $s0, $t1
Ordem de
execução
add$s0,$t0,$t1 busca di ULA mem w reg
busca di
sub $t2,$s0,$t3
di ULA mem w reg
tempo
56
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 bolhas
Incluir instruções do tipo NOP
Adiantamento de instruções
Pré-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...
57
58. Próximo passo...
Hierarquia de
Memória: reduzindo
o tempo de acesso
aos dados
58
59. Os componentes clássicos de um
computador
Computer
Processor Memory Devices
Control Input
Datapath Output
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!
59
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 DRAM
Disco: 2x em 3 anos 1.4x em 10 anos ano Tam Tempo de Ciclo
1980 64 Kb 250 ns
1983 256 Kb 220 ns
1986 1 Mb 190 ns
1989 4 Mb 165 ns
1992 16 Mb 145 ns
1995 64 Mb 120 ns
60
61. Reflexões Sobre Arquiteturas de Memórias
A velocidade de memória aumenta muito menos
rapidamente 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 os
ganhos adquiridos com o processador
Soluçã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 limitada
O SO precisa suprir o mesmo espaço de memória para
vários usuários sem que haja conflito
Solução: Memória Virtual
61
62. Melhorando o desempenho: Princípio da
localidade
Localidade Temporal
Uma palavra de memória que acaba de ser
referenciada, tende a ser novamente referenciada
Localidade Espacial
Itens cujos endereços estão próximos daqueles que
acabam de ser referenciados tendem a ser
referenciados também brevemente
Conclusão: usar mecanismos que permitam armazenar
temporariamente o material com que se trabalha
Observar a estrutura dos programas:
Programas acessam somente uma pequena porção
de memória num curto espaço de tempo
variáveis – temporal, laços - temporal e espacial,
percurso de arrays - espacial 62
63. Idéia de hierarquia para a memória
Dividir 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
Processador Velocidade Tam Custd: $/bit Exemplo
+ rápida menor + alto 64k SRAM
Memória
Nível 1
Memória
Nível 2 64M DRAM
Memória
Nível 3
+ lenta maior + baixo 6.4 G Mag. Disk
capacidade
63
64. Hierarquia de Memória atualmente
Fonte: Slides Patterson
Capacidade Estágio Nível + Alto
Tempo de Acesso Unidade + rápido
Registradores CPU
~100 Bytes Registradores
~10 ns prog./compil.
Operandos Inst. 1-8 bytes
Cache
K Bytes Cache
10-100 ns
contr. cache
Blocos 8-128 bytes
Memória Principal
M Bytes Memória
100ns-1us
SO
Páginas 512-4K bytes
Disco
G Bytes Disco
ms-3 -4
user/operador
Arquivos Mbytes
Tape Maior
infinito
sec-min
Tape
Nível + baixo
64
65. Funcionamento a hierarquia (1)
Pode conter diversos níveis, mas a gerência é feita entre
níveis adjacentes
Unidades de mapeamento entre níveis: blocos
Se 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 recuperado
A medida de desempenho da hierarquia é relacionada à
taxa de acertos dos acessos: fração dos acessos à me-
mória encontrados no nível superior
Outra medida: taxa de falhas = 1 – taxa de acertos
65
66. Funcionamento a hierarquia (2)
Desempenho = tempo de acesso à memória
1. 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
maior
Hierarquia 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.
66
67. Conceitos básicos sobre Memória Cache
Cache: esconderijo! ☺
De maneira abrangente: qualquer memória
gerenciada que tira proveito das propriedades
de localidade
Como fazer para guardar os dados e instruções
recentemente usados numa cache:
Como saber se um item de dado está ou
não na cache?
Se estiver, como achá-lo?
67
68. Conceitos básicos sobre Memória Cache
Caches com mapeamento direto mapeiam cada
endereço de memória numa locação específica
da cache
Várias locações de memória têm a mesma
locação na cache
Usa um mecanismo modulo N (N é potência
de 2)
Precisa de uma tag indicando o endereço
atualmente armazenado
Precisa de um bit de validade indicando se o
dado está na cache
68
69. Cache com mapeamento direto simples
Memória Cache diretamente mapeado
Tamanho = 4
0
1 0
2 1
3 2
4 3
5
6
7
8
9
10 •Cache de 4 (22) palavras
11
12
•Endereços de memória “mod 4”
13 mapeiam locações de cache
14 •Muitos endereços de memória são
15
16
mapeados p/ uma mesma locação
17 •Usa log2N bits de endereços para
18 a indexaçao da cache
19
69
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
31 Endereços de Memória N 0
Cache Tag Ex: 0x50 Cache Index Ex: 0x03
Armazenados como 2 N Bytes
Bit validade parte do cache “state” Cache com Mapeamento Direto
Byte 0 0
Byte 1 1
Byte 2 2
0x50 Byte 3 3
: : :
Byte 2N -1 2 N- 1 70
71. Alguns comentários…
Cache com mapeamento direto precisa ser grande
suficiente , 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 para
instruções e outra para dados
Em geral, não é mais eficiente que apenas uma
cache para um tamanho fixo de cache
Mas, 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 inicialmente
A abordagem trata assim da localidade temporal mas
não da localidade espacial
71
72. Cache com 64KB (DECStation 3100)
Endereços de Memória
31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0
Index 14 Deslocamento
16 V Tag Data-32bits
16k
entradas
Tag
16 32
Data
Valid EQ
AND HIT
72
73. Localidade temporal
A cache mostrada anteriormente apenas explora a
localidade espacial
Para tratar com a localidade temporal um bloco de mais
de 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
faltas
Isso pode provocar um aumento significativo na taxa
de acertos, mesmo com pequenos tamanhos de
blocos
73
74. Cache com 64KB (DECStation 3100)
Endereços de Memória
31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0
Block offset
Index
V Tag Data-0 Data-4 Data-8 Data-12
4k
entries
Tag
Valid EQ Select
AND HIT Data
74
75. Resultados de desempenho das duas
caches
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%
Fonte: Livro P&H p. 329
Tamanho da cache: 128KB (64KB + 64KB)
75
76. Tamanho do Bloco de Cache
Em geral, um tamanho maior leva a vantagem da
localidade espacial dos dados, MAS:
Maior tamanho de bloco significa maior penalidade de
falhas (miss penalties) – mais tempo para encher um
bloco
Se o tamanho do bloco é muito grande em relação ao
tamanho da cache, a taxa de falhas irá aumentar
TMédio de Acesso = tacerto x (1 – taxa_acerto) + penalidade_falha x
tfalhas
76
77. Tamanho do Bloco de Cache
Taxa de Taxa de Tempo Médio de
Falhas Acerto Explora a Localidade Acesso
Espacial
Aumenta Miss Penalty
Poucos blocos: & Miss Rate
compromete a
localidade temporal
Tam. Bloco Tam. Bloco Tam. Bloco
Fonte: Patterson slides
77
78. Acessos em escrita
Não é tão simples em se tratando de cache
Deve-se assegurar que o dado foi escrito
na memória
Do contrário, memória e cache podem se
tornar inconsistentes
78
79. Acessos em escrita
Solução mais simples: write-through
Memória e cache escritas ao mesmo tempo
Mas se for necessário uma espera para isso, os
valores da cache serão perdidos!
Usar um buffer (FIFO) no caminho de escrita
para a memória
Buffers permitem “equalizar” o serviço quando
a taxa de chegada de requisições é variável
(algo como cadeiras num banco para os
clientes esperarem…)
79
80. Outras soluções para escrita…
Escrita somente no retorno: write-back
Atualização quando o bloco for susbstituído e se
houver ocorrido alteração
Escrita somente uma vez : write-once
Ideal para sistemas multiprocessadores, que
compartilham um mesmo barramento (mais
adiante)
O controlador da cache escreve a atualização na
memória principal sempre que o bloco for
atualizado pela primeira vez na cache – ou seja,
faz um write-through e ainda alerta os demais
componentes ligados ao barramento que houve a
alteração
80
81. Comparando as três soluções
write-through : pode acontecer uma grande
quantidade de escritas desnecessárias na memória…
write-back : minimiza o problema, mas a memória
pode ficar temporariamente desatualizada, obrigando
que outros dispositivos acessem os valores via
cache…
write-once : conveniente, mas apenas em sistemas
com múltiplas CPUs; utilização excessiva do
barramento pode ser um fator de queda de
desempenho…
81
82. Elementos de Projeto de uma Cache
Definição do tamanho
Função de mapeamento de dados
Memória/cache
Algoritmos de substituição de dados na
cache
Política de escrita na cache
82
83. Próximo passo...
Hierarquia de
Memória: Memória
Virtual, Paginação,
Aumento de
Desempenho
83
84. Hierarquia Completa de Memória
Fonte: Slides Patterson
Capacidade Estágio Nível + Alto
Tempo de Acesso Unidade
+ rápido
Registradores CPU
~100 Bytes Registradores
1~10 ns prog./compil.
Operandos Inst. 1-8 bytes
Cache
K Bytes Cache
10-100 ns
contr. cache
Blocos 8-128 bytes
Memória Principal
M Bytes Memória
100ns-1us
SO
Páginas 512-4K bytes
Disco
G Bytes Disco
ms-3 -4
user/operador
Arquivos Mbytes
Tape Maior
infinito
sec-min
Tape
Nível + baixo84
85. Requisitos de um Sistema de Memória
Dar a ilusão de um vasto espaço de memória
total memória para todos os jobs simultâneos >
memória real
um job pode usar um espaço de endereços >
memória atual
Acesso rápido à memória
Transparência:
Livrar os programadores da tarefa de otimizar da
utilização da memória → cache:memória:disco
Espaço de endereçamento uniforme:
Não se pode saber onde os programas serão
carregados nem quais partes dos programas serão
mudadas e recarregadas durante a execução
Ideal: os endereços situados entre 0 e 2N-1 85
86. Endereço virtual x endereço físico
O programador usa um espaço de endereçamento
virtual “imenso”, por ex. 231 bytes
Ele pode escrever programas como se todas essas
posições de memória existissem realmente!
O SO e a arquitetura de memória gerenciam o
mapeamento endereço virtual – físico
Se o programa é realmente muito grande, deve
existir uma forma de armazená-lo na memória da
máquina – seja em memória ou em disco
(“memória de massa”)
A memória real é normalmente menor que o espaço
virtual de endereçamento
o tanto quanto puder ser suportado…
endereços físicos ou reais 86
87. Memória Virtual (2)
Mapeamento endereços virtuais – memória real é
feita em blocos – tipicamente de 1 a 8KB
Blocos de memória virtual são chamados páginas
Páginas de memória virtual que estão no disco são
chamadas de paginadas-fora (paged-out)
Uma referência feita a uma página que não está na
memória principal é chamada de falha de página
(page fault)
A transformação entre endereços virtuais em
endereços físicos (memory mapping) é feito através
de uma tabela de paginação (page table)
87
88. Mapeamento de endereços virtuais
Prog A Virtual Physical Memory Prog B Virtual
Addresses Addresses Addresses
0x0000 Unused Unused
0x1000
0x2000 Unused
0x3000 Memory
address
0x4000 space
0x5000
0x6000
0x7000 No memory
Virtual
Address ::: Disk Addresses :::
Space
0xD000
0xE000
0xF000
88
89. Mapeamento de Memória
O mapeamento Endereço Virtual x Endereço Físico
é também chamado de translação de endereço
No 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 ocupar
de memória (entradas de 4 bytes)
Endereços virtuais são divididos em Número da
Pá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ágina
Nas arquiteturas atuais, o tamanho das tabelas de
página varia (esquema de diretório de tabelas)
89
90. Processo de Mapeamento
Considere um espaço de endereçamento virtual de
4GB
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
1GB
90
91. Falhas com Memória Virtual
Custo de uma falha é muito alto: em torno de ms
para acessar um bloco de disco
As páginas devem ser grandes o suficiente para
amortizar 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)
91
92. Falhas com Memória Virtual
Re-estruturação de programas reduz taxa de falhas
Processar as falhas de página por SW e não por HW
Algoritmos sofisticados podem ser empregados
Pequenos 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 muito
demoradas
92
93. Tabelas de Páginas (1)
As páginas deveriam poder ser localizadas em
qualquer lugar conveniente na memória
Qualquer página virtual pode ser mapeada em
qualquer página física disponível
Chamado mapeamento totalmente associativo
Tabela de páginas faz o mapeamento e reside na
memória
Cada programa tem sua própria tabela de página
O hardware tem um registrador de tabela que
aponta para a tabela de página
Os diagramas anteriores se tornam então:
93
94. Tabelas de Páginas (2)
4GB
31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0
Número da Página Virtual Deslocamento
20 Endereço Virtual
Registrador da tabela de página
12
Validade Número da página física
Page
table
18
Se Zero :
Falha de 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0
página Número da página física Deslocamento
Endereço Físico
1GB
94
95. Falhas de Página (Page Faults) (1)
Quando o valid bit é zero ele indica que a página não
está na memória principal
O 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ça
Busca as partes relevantes quando é preciso
Onde olhar? – um mapeamento é necessário para
mostrar onde estão as imagens no disco
Pode ser parte da tabela de páginas ou ser feita em
separado
95
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 normal
Menos 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; na
pró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 é acessada
Pode ser periodicamente “levado a 0” pelo S.O.
Possibilita que o S.O. tenha uma visão aproximada das
páginas recentemente utilizadas
96
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 = 4MB
Isto 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 virtuais
baixos para limitar o registrador
mas, num modelo normal, o segmento de dados
cresce para cima e a pilha para baixo
não consistente com a abordagem de limites
Usa 2 tabelas de páginas com 2 registradores de
limite – um para a pilha e outro para o resto… 97
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 disco
A idéia é “salvar as escritas” para depois executá-las
Write-back quando a página é substituída!
Entretanto...
Custoso e desnecessário fazer write-back para páginas
para 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ão
escritos na página
Se esse dirty bit é setado quando a página precisa ser
substituída, ele é escrito em write-back para a imagem
do programa no disco
98
99. Fazendo isso rápido…
Tabela de páginas em máquinas modernas está na
memória principal:
2 registradores: um de base da tabela na
memória e outro indicando o no. de entradas
Portanto ...
Cada acesso à memória lógica de um programa
necessita de dois outros acessos à memória fícia
para achar a tabela de páginas
Como agilizar isso?
Localidade de referências novamente
Inserir numa cache as tabelas de página mais
recentementes utilizadas:
Translation-lookaside buffer = cache inserida
dentro da MMU (memory management unit)
99
100. Translation-Lookaside Buffer (TLB)
Número da
página virtual Validade Rótulo End. Página Física
TLB
Memória
Validade Página Física ou End. Disco Física
Tabela de Página
Disco
100
101. Translation-Lookaside Buffer
TLB é uma cache
Se não existir a entrada na TLB, é preciso buscá-la na
tabela de páginas que está na memória principal
A tabela de páginas tem uma entrada para cada página
O TLB e a página usam o dirty bit e o reference bit
Usar a abordagem write-back para esses bits da TLB
para a página de tabelas numa falha é muito eficiente
Características típicas:
Block size 1-2 page table entries (4-8 bytes each)
Hit time 1/2 to 1 clock cycle
Miss penalty 10 to 30 clock cycles
Miss rate 0.01% - 1%
TLB size 32 to 1024 entries
Fonte: Livro P&H p. 492 101
102. Sistemas Modernos de Memória
Characteristic Intel Pentium Pro PowerPC 604
Virtual address 32 bits 52 bits
Physical address 32 bits 32 bits
Page size 4 KB, 4 MB 4 KB, selectable, and 256 MB
TLB 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 associative
Pseudo-LRU replacement LRU replacement
Instruction TLB: 32 entries Instruction TLB: 128 entries
Data TLB: 64 entries Data TLB: 128 entries
TLB misses handled in hardware TLB misses handled in hardware
Characteristic Intel Pentium Pro PowerPC 604
Cache organization Split instruction and data caches Split intruction and data caches
Cache size 8 KB each for instructions/data 16 KB each for instructions/data
Cache associativity Four-way set associative Four-way set associative
Replacement Approximated LRU replacement LRU replacement
Block size 32 bytes 32 bytes
Write policy Write-back Write-back or write-through
102
103. Próximo passo...
Interface:
dispositivos de
entrada e saída
(E/S) e
barramentos
103
105. Os componentes clássicos de
um computador
Computer
Processor Memory Devices
Control Input
Datapath Output
Características extremamente dependentes da
tecnologia, assim como os processadores
“Um pouco neglicenciados” nos últimos anos...
105
106. Arquitetura Típica
Processador interrupções
via de dados
+ controle
Cache
Barramento de Memória – E/S
Memória Controlador Controlador Controlador Controlador
Principal E/S E/S E/S E/S
Display
Teclado Rede
(monitor)
106
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ão
Processamento de Informações: tempo de resposta e
desempenho em termos de vazão
Sistemas de Arquivo: acessos a arquivos pequenos,
dados seqüenciais, mais leitura e menos escrita →
utilização do espaço e tempo de resposta 107
108. Arquitetura de Entrada/Saída
Características dos dispositivos de E/S (I/O)
Cada dispositivo tem um endereço de porta
Limite de dispositivos ~ número de bits da porta
Acesso da CPU via bus + interface do dispositivo
Esquemas para a transferência de dados
Dispositivos lentos
Programada com espera ocupada (polling ou busy-
waiting)
Acionada por interrupção
Dispositivos rápidos
Acesso direto à memória – DMA (Direct Memory
Access)
Utilizando canais de dados – Controle de
barramentos
108
109. Tipos de Dispositivos e E/S
Dispositivo Tipo Parceiro Taxa Ordem
(KB/sec)
Teclado entrada humano 0.01 0
Mouse entrada humano 0.02 0
Alto-falante saída humano 0.60 1
Line printer saída humano 1 2
Floppy disc armazenagem máquina 50 3
Laser printer saída humano 100 4
Scanner entrada humano 200 4
Optical disc armazenagem máquina 500 4
LAN entrada/saída máquina 10K-1G 5
Hard disc armazenagem máquina >10K 5
Display saída humano 60K 6
A arquitetura de E/S deve acomodar uma variedade
enorme de dispositivos periféricos, com diferenças
significantes de desempenho.
109
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 protocol
Requerem, pelo menos:
um registrador de dados
um 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).
110
111. Mouse
Processador lê os contadores para determinar a posição
e atualizar a tela
Botões pressionados geram eventos
Tudo controlado por software
Interface E/S por polling (mais adiante...)
+ 20 em Y + 20 em Y
+ 20 em Y
– 20 em X + 20 em X
– 20 em X Posição + 20 em X
inicial
– 20 em Y – 20 em Y
– 20 em X – 20 em Y
+ 20 em X 111
112. Discos Magnéticos (hard disks)
Trilhas
Superfície rotativa Superfícies
magnética
1 ou mais pratos
Rotação a ~ 103 RPM
Divididos em (~1000 a Setores
5000) trilhas concêntricas
Cada trilha tem tipicamente
64 a 200 setores (entre 512-
4096 bits)
112
113. Discos Magnéticos
O 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 discos
Em geral, fabricantes informam tempo de busca
máximo, mínimo e médio de acesso aos dados
Discos flexíveis utilizam tecnologia da década de
80: menor velocidade, confiabilidade e
capacidade
Discos ópticos tornam-se parte integrante nos
anos 90...
113
114. Desempenho de discos
Os braços movem-se entre os pratos rotativos, lendo ou
escrevendo informações
Tempo de busca (seek time)
Tempo para o braço localizar a trilha correta
Latência rotacional
Tempo para encontrar o setor correto
Tempo de transferência
Tempo para transferir o bloco de informações
Cabeças
Muitos discos têm uma cabeça por superfície – alta
densidade de dados
Alguns discos mais antigos têm múltiplas cabeças por
superfície – baixa latência de acesso e alto desempenho.
114
115. E/S com Disco
Registradores de dispositivo:
Endereço no disco
Número de bytes a ser transferido, que pode ser <,
= ou > um setor.
Endereço de memória para a transferência
Registrador 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 status
Indicadores de erros - unreadable/unwritable
sector, etc.
Livre/ocupado (idle/busy)
115
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ção
Desempenho limitado fisicamente pelo número de
dispositivos conectados, comprimento
Inclui 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
controle
A via de dados tipicamente tem de 8 a 64 bits de
largura, i.e. 8 a 64 ligações separadas
116
117. Interconexão de componentes (1)
Diretamente com o processador
Nenhuma máquina moderna aplicam esta solução, em
geral
Nem flexível, nem extensível
Barramento plano (backplane)
Barramento “curto” e de propósito geral – conecta
memória, periféricos e o processador
Deve seguir um padrão – ex. VME, PCI, etc.
Barramento E/S
longo, interligando diferentes tipos de dispositivos
Deve seguir um padrão comercial: SCSI, IPI, etc.
Barramento processador-memória
Barramento “curto” de altíssima velocidade,
especializado para otimizar as comunicações memória-
processador
Geralmente proprietário – específico para a máquina
ou vendedor na busca de melhoria de desempenho 117
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 maiores
Geralmente 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
118
119. Barramentos Síncronos e
Assíncronos
Síncrono: inclui um clock em suas linhas de controle
Requer 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 clock
Pode ligar vários dispositivos de características
diferentes, sem preocupação com o sincronismo
Tipicamente para entrada/saída
Controlado 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) 119
120. Arbitragem do barramento (1)
Como isso se comporta na prática?
O que acontece quando vários dispositivos querem ter
acesso ao barramento? Daisy chain
Hard Floppy
Processador Memória
Disk Disk
Bus grant
Bus request
Comando
Controlador
de 4-8
Barramento Endereço
ou
Árbitro 16-?
Dados
8-64
120
121. Arbitragem do barramento (2)
Quando um dispositivo (incluindo a CPU) necessita do
barramento, ele envia (ou “seta”) uma requisição na request
line
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 line
O primeiro dispositivo que “vai para nível 0” pode usar o
barramento
Bus Request
Árbitro
do
Bus Grant
Barramento
A permissão pode Dispositivo Dispositivo Dispositivo Dispositivo
ou não se propagar 1 2 3 4 121
pela cadeia
122. Arbitragem do barramento (3)
Dispositivo que “ganha” o barramento:
Torna-se o mestre do barramento
Ele 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
prioridade
Garantir que outros dispositivos tenham acesso ao
barramento
Assim limitar “a janela de tempo” para assegurar que
restrições temporais críticas não sejam ultrapassadas
nos dispositivos
O mestre colocar comandos, endereços e dados no
barramento para serem tratados pela memória ou por
um outro dispositivo
Se a transferência não recebe um acknowledgment, uma
122
exceção de erro de endereço de barramento é gerada
123. Arbitragem do barramento (4)
Esquema com nível de prioridades no
barramento:
nível 2 > nível 1
Conflito: 3 > 4 > 1 > 2
Req. nível 1
Árbitro Req. nível 2
Grant nível 2
do Grant nível 1
Barramento
Dispositivo Dispositivo Dispositivo Dispositivo
1 2 3 4
123
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
fabricantes
PCI criado pela INTEL e depois adotado por outras
PCI : barramento para backplane de propósito geral
SCSI: barramento de entrada e saída
Faz a interface entre o barramento do backplane e o
barramento processador-memória
124
125. Padrões para Barramentos (2)
Source: P&H p. 395
Característica PCI SCSI
tipo backplane E/S
largura de dados 32 a 64 bits 8 a 32 bits
mestre do bus múltiplos múltiplos
Arbitragem centralizada, com distribuída, com
requisição em paralelo acesso por seleção
clock Síncrono 33 a 66Mhz Ambos (5 a 10Mhz)
Banda passante 80 MB/s 5 or 40 MB/s
No.max dispositivos 1024 7 a 31
comprimento max 0.5m 25m
Nome padrão PCI ANSI
Em evolução constante... Dados tabelados em 1997!
125
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
subsistemas
O SO é responsável pela gerência de toda a E/S:
Proteção de acesso aos dispositivos
Define abstrações para acesso aos dispositivos
Trata as interrupções geradas pelo processador e
dipositivos
Garante o acesso compartilhado aos dispositivos
O SO efetua 3 tipos de comunicação:
1. Envio de comandos aos dispositivos
2. Comunicação do dispositivo indicando fim da tarefa
3. Transferência dos dados entre memória e dispositivos
126
127. Envio de Comandos aos
dispositivos
Dois métodos de endereçamento:
Mapeamento de E/S em memória
Comandos 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/S
Vantagem: simplicidade e transparência
Comandos especiais de E/S:
Instruções incluídas no processador
Verifica o estado do dispositivo para saber se o comando
foi completado ou não (só em modo kernel)
127
128. Exemplo: Teclado e monitores
Teclados produzem caracteres à medida em que são
digitados, em geral à taxa média de 10 cps
Monitores são capazes de exibir textos alfanuméricos à
taxa aproximada de 1200 cps
Keyboard Registers
Controle Data
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Ready/Done Read-only
Display Registers
Control Data
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Unused (for now) Ready/Done Write-only
128
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 ligado
2. leia o caractere - automaticamente zera (desliga) ready
3. envie o caractere ao display
4. 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
129
130. Exemplo - o código...
Programa simples em assembly
.text
main: li $8, 0xffff0000
usando E/S polled
mloop: lw $7, 0($8) # get control register
andi $7, $7, 1 # mask out done bit
blez $7, mloop # loop waiting for data
lw $6, 4($8) # get data/clear kbd done
lp2: lw $7, 8($8) # wait for display ready
andi $7, $7, 1 # mask out done bit
blez $7, lp2 # loop waiting
sw $6, 12($8) # display character
b mloop # next char
130
131. Analisando o desempenho do
Polling
A espera “ocupada” do bit done é chamada polling
Desperdício de tempo de processamento, já que os
dispositivos são (em geral) muito mais lentos do que o
processador
Por 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
131
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 transferido
5. A CPU retoma ao programa original no ponto em que
aconteceu a interrupção.
132
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 dispositivo
No 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
133
134. Como sincronizar as
interrupções?
Através de fila ou buffer
Estrutura tipo first-in, first-out
Uma 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.
134
135. Filas de I/O
Programa do usuário Código de Inicialização
para habilitar interrupções
main: do work
call in Rotina de interrupção
do work
call out
Kbd: get data
entrada Q put in Q
in: get from Q
if full beep
if empty OS Kbd data resume
suspends
out: add to Q saída Q Disp: get data from Q
if full OS if none disable
suspends Display data
interrupt
send to display
resume
135
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...
136
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
.ktext
Lkbd: ... # ISR for kbd
resume
Ldisp: ... # ISR for display
resume
Lhd: ... # ISR for disk
resume
Lscan: ... # ISR for scanner
resume 137
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 devs
test disp
test clock Not MIPS code!
test mouse
resume
kbd: ... # ISR for kbd
resume
disp: # etc.
#--------
med: ... # ISR for med speed devs
resume
#--------
fast: ... # ISR for fast devs
resume 138
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ção
Antes de ir para a rotina a CPU “salva o contexto” do
processo em execução
A 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
139
140. Transferência entre Dispositivo
e Memória
Polling e Interrupções funcionam bem para
transfe-rências entre dispositivos de banda
passante baixa
As 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
CPU
A solução encontrado foi criar um mecanismo
de transferência denominado DMA (direct
memory access) ou acesso direto à memória
140
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 CPU
Controlador 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
141
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:
Processador Tela Teclado
Bus
Memória Disco
Atividade no Bus (P/M)
Processador trabalhando
Inst R Data R Inst R Inst R Inst R Data W Inst R
142
Tempo
143. Análise do DMA (2)
Agora, com o disco envolvido na transferência DMA
Processador Tela Teclado
Bus
Memória Disco
Atividade no Bus (P/M/D)
Inst R Data R Inst R Disk R/W Inst R Disk R/W Data W
Tempo
Inst R Disk R/W Inst R Inst R Data W Disk R/W Inst R
143
144. Análise do DMA (3)
Bus é compartilhado por transferências processador-
memória e disco-memória
Assim, 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 barramento
A 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
144
145. Próximo passo...
Arquiteturas
Avançadas:
multicomputadores
e
multiprocessadores
145
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
146
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
150
153. Desafios
Balanceamento de carga entre
processadores
Adequação aplicação x arquitetura
Coerência de memória (cache)
Linguagem de programação e
compiladores
Limitações físicas: temperatura,
comprimento das ligações, custo
153