Professional Documents
Culture Documents
2003
Sumrio: Aspectos de desempenho da organizao da memria (continuao). Aspectos de desempenho na organizao do CPU.
Bibliografia: K. Dowd, C. Severance High Performance Computing 2nd Ed OReilly, 1998, 1-56592-312-X
;
as caches so cada vez maiores: programas pequenos e com poucos dados colocam tudo nas caches e o desempenho decresce imenso com cdigo e dados maiores (onde j no pode ficar tudo na cache) em 1992, o IBM RS/6000 colocou toda amatriz de 100x100 reais do benchmark LINPACK na cache, conseguindo um resultado equivalente ao de um CRAY. Claro que numa matriz de 1000x1000...
Alargar a ligao cache-RAM at ao tamanho de uma linha da cache (por exemplo 256 bits) Interleaving da memria - memria por bancos: acessos consecutivos so feitos bancos diferentes os acessos so pipelined: comea-se um acesso sem esperar o fim do anterior funciona melhor para acessos regulares. Os processadores RISC ao procurar no esvaziar os pipelines ajudam ...
CPU regs
8B
C a c h e
32 B
Memory
4 KB
disk
Register
Cache
Memory
tamanho: 32 B 32 KB-4MB 128 MB velocidade: 3 ns 6 ns 60 ns $/Mbyte: $100/MB $1.25/MB tamanho da 8 B 32 B 4 KB linha: Maior, mais lenta, mais barata
Memria virtual
A maior parte dos computadores modernos utilizam um espao de endereamento linear com a memria fsica dividida en pginas ( 512 a 8K ...)
Endereo virtual n de pgina virtual deslocamento
Tabela de pginas por processo ( composta por vrias pginas ...) endereo base da pgina fsica
endereo fsico
Physical Addresses
0: 1:
CPU
N-1:
Exemplos:
CPU
P-1:
N-1: Disk
Transformao de endereos: Hardware converte endereos virtuais em endereos fsicos atravs de um tabela gerida pelo SO (tabela de pginas)
Tabela de pginas indica que o contedo referenciado pelo endereo virtual no est em RAM invocado um procedimento de excepo para trazer os dados para memria
o proceso corrente suspenso, outros podem retomar o SO tem controlo completo sobre a localizao das pginas
Falta de pgina
Depois da falta
Memory Page Table
Virtual Addresses
CPU
Physical Addresses
Disk
Disk
Processor
Reg
Cache
disk Disk
disk Disk
%esp
the brk ptr runtime heap (via malloc) uninitialized data (.bss) initialized data (.data) program text (.text) forbidden
Transformao de endereos
V = {0, 1, . . . , N1} virtual address space P = {0, 1, . . . , M1} physical address space MAP: V P U {} address mapping function MAP(a) = a' if data at virtual address a is present at physical address a' in P = if data at virtual address a is not present in P page fault Processor Hardware Addr Trans Mechanism a' OS performs this transfer (only if miss) fault handler Main Memory Secondary memory N>M
a virtual address
Transformao de endereos
Parmetros
P = 2p = tamanho da pgina (bytes). N = 2n = limite do endereo virtual M = 2m = limite do endereo fsico
n1 virtual page number p p1 page offset 0 virtual address
address translation
physical address
m1 p p1 physical page number page offset 0
Tabela de pginas
Virtual Page Number
Physical Memory
Integrao da cache e da MV
VA PA Translation Cache miss Main Memory
CPU
hit
data
Transformao de endereos antes do acesso cache, o que pode envolver acesso RAM
hit PA
Cache
Translation
data
valid
.
=
TLB
TLB hit
physical address
tag
valid tag data
index
byte offset
Cache
cache hit
data
Programa TLB-buster
var x[ 1.. 1000000] of real; for i := 1 to 1000 do for j:= 1 to 1000000 step 10000 do y := x [ j + i ]; 1000 TLB miss Total : 1 000 000 TLB misses
Consumidores de RAM
Fork e exec
vfork copy on write sticky bit
pginas so carregadas a partir da rea de swap muitos sistemas ignoram este bit, salvo para ficheiros remotos
Consumidores de RAM
Cache do sistema de ficheiros
% fixa de memria varivel de acordo com a actividade de paginao sistemas mistos (alternam CPU bound com IO bound do-se bem com sistemas varveis algumas aplicaes (por ex. SGBD) no gostam de variaes da dimenso da cache de blocos
Exec()
process-specific data structures (page tables, task and mm structs) same for each process 0xc0 %esp physical memory kernel code/data/stack stack kernel VM demand-zero process VM .data .text
Memory mapped region for shared libraries brk runtime heap (via malloc) uninitialized data (.bss) initialized data (.data) program text (.text) forbidden
libertar vm_area_structs e page tables antigas. Criar novas vm_area_structs e page tables. stack, bss, data, text, shared libs. text and data suportadas pelo fich executvel . bss and stack initialized to zero. Inicializar PC para o ponto de entrada de .text
Linux carregar as pginas medida que forem precisas.
libc.so
demand-zero .data .text
Fork()
copy-on-write
pginas de reas writabel read-only assinalar estas reas na vm_area_structs como private copy-onwrite. Escritas nestas pginas por qualquer processo originam page faults. O fault handler reconhece o copy-on-write, faz uma cpia da pgina e restaura as permisses de escrita write permissions. As cpias so deferidas at serem absolutamente necessrias (i.e., quando um processo modifica uma pgina partilhada).
Swapping
Quando os nveis de paginao sobem acima de um dado valor, pode-se optar por varrer a totalidade (ou uma percentagem significativa das pginas do processo) o processo continua running e a sua prioridade tende a subir o swapping provoca um impacto muito negativo na performance do sistema e os SO modernos tendem a evit-lo
Alternativas ao swapping
HP-UX tem uma chamada serialize() que uma indicao ao sistema de VM que o processo corrente tem uma imagem muito grande e no deve ser corrrido em conjunto com outros processos com o mesmo atributo (desactivao do processo). Esta indicao s usada quando h escassez de memria
freepages.low (def=512)
se memfree < freepages.min, o sistema reclama paginas de forma agressiva
freepages.min (def=256)
s o kernel pode obter pginas
Memria central
Total das imagens residentes Num. De utilizadores * reas privadas 10 a 20 MB para o kernel tamanho da cache fixa de ficheiros, se aplicvel 20 % da RAM para cache de ficheiros 10 % para processos de rede memria para NFS
Sintomas de engarrafamento
Memria livre baixa e muitas desactivaes muitos processos boqueados em VM muitos acessos ao disco de paginao os problemas de memria podem parecer problemas de CPU ou disco uso de chamadas ao sistema caras (fork, exec)
Solues
Hardware (mais memria, mais swap discs) Software ( reduzir o tamanho do kernel, da cache de ficheiros, reduzir locks de memria, reorganizar trabalhos, Resource manager, janelas no X, sticky bit) Optimizao da aplicao (evitar fork, exec, mmap, procurar fugas de memria Tuning do sistema: ajustar parmetros dos algoritmos de VM
Desempenho do CPU
Organizao do CPU RISC versus CISC Princpios de desenho de CPUs Paralelismo ao nvel das instrues Previso de saltos Execuo fora de ordem e renomeao de registos Execuo especulativa Microarquitectura do Pentium II
CPU
Processadores RISC tempo para executar um = num. de instrues X n de ciclos X durao de um ciclo programa
depende da tecnologia a relao entre eles clara: existente quanto mais simples as instrues menos demoram a executar e mais so precisas para compilar um programa escrito numa linguagem de alto nvel
C 1982 38 43 12 3
PL/I 1972 55 17 17 5
goto outras
9 16
3 1
0 6
1 5
* 95 % dos casos expresses com 1 ou 2 operandos ** 90 % dos casos com menos de 3 parmetros Donde se conclui que os programadores escrevem programas compostos por instrues simples. Anlises semelhantes efectudas ao cdigo gerado pelos compiladores permitiram concluir que estes no tiram muito partido das instrues mquinas muito sofisticadas
Metodologia advogada para o desenho do conjunto de instrues de um novo processador: anlise das aplicaes para determinar as operaes fundamentais desenhar o "caminho de dados principal" do processador de forma a optimizar a execuo destas operaes. Obter as instrues mquina correspondentes. no introduzir instrues mquina que faam aumentar o "tempo de ciclo do caminho de dados principal" estender os princpios anteriores a outros componentes do sistema : "cache", gesto de memria, coprocessadores aritmticos
A que tipo de mquinas que a aplicao destes princpios conduziu, relativamente s suas antecessoras:
RISC
instrues simples executadas num nico ciclo de relgio instrues de formato nico a simplicidade da arquitectura permite o uso de "pipeline" na execuo das instrues no h micro-cdigo complexidade no compilador acesso memria "rudimentar" s LOAD/STORE, poucos modos de endereamento Em muitos casos, vrios conjuntos de registos
CISC
instrues de complexidade varivel, executadas em vrios ciclos instrues de formato varivel Uso de "pipeline" limitado
instrues interpretadas pelo micro-cdigo complexidade no micro-cdigo muitos modos de endereamento, todas as operaes podem fazer acesso memria um nico conjunto de registos
Comparao entre dois exemplares de cada abordagem : IBM 370/168 Ano n de instrues tamanho da memria de micro-cdigo (em Bytes) tamanho das instrues (em Bytes) 1973 VAX 11/780 1978 IBM 801 1978 Stanford MIPS 1983 55
208
303
120
54 K
61 K
2-6
2-57
reg-reg
reg-reg
Controvrsia CISC/RISC
RISCs s tm instrues simples: para a memria s LOAD/STORE; muitos registos sobre os quais se fazem as operaes A/L Uma instruo CISC equivalente a 5 instrues RISC, mas executa 10x mais depressa? A diferena de velocidade deve-se ausncia de interpretao A velocidade da RAM e da ROM tinha-se aproximado...
Porque a que a DEC Alpha (RISC) no dominante face ao Pentium (CISC)? Compatibilidade do software Intel incorporou as ideias RISC nos seus CPUs a partir do 486
As instrues mais comuns so executadas directamente As instrues mais "exticas" so interpretadas
S LOAD e STORE referenciam a memria Muitos registos genricos O resto foi a tecnologia que permitiu aumentar o "clock"
Aumentar a velocidade
Paralelismo ao nvel da instruo
Pipelining Arquitecturas superescalares
Multiprocessadores
processadores superescalares
Estes processadores podem lanar, em tempo de execuo vrias operaes simultaneamente. Para funcionar ben requerem uma boa "mistura" de tipos de operaes. Exemplos: IBM RS/6000, SuperSparc, HP PA7100, DEC AXP 21064
processadores "superpipelined"
Neste caso a execuo de cada uma das fases de uma instruo subdividida em vrias partes: isto permite tornar os circuitos mais simples ( e mais rpidos) e aumentar o nmero de instrues em execuo simultnea Exemplos: MIPS R4000, DEC AXP 21064
Pipelines A execuo de uma instruo pode ser dividida em vrias fases: F1 F2 F3 F4 F5 obteno da instruo ("fetch") descodificao da instruo obteno dos operandos execuo escrita dos resultados
F1 F2 F1 F2 F1 F2 F1 F2 F1 F2
F3 F4
F5
F3 F4
F5 F1 F2
F3 F4 F5
F3 F4
F5 F1 F2
F3 F4 F5
F3 F4 F5
F5 F1 F2 F1 F2
F3 F4 F5
F3 F4
F3 F4
Se cada fase demora um ciclo de relgio, havendo 5 instrues em simultn pode-se completar uma instruo por cada ciclo de relgio, mesmo que cada instruo leve 5 ciclos a executar
Pipeline de instrues
Os pipelines de instrues dependem da possibilidade de obter instrues previamente. Isto simples enquanto no ocorrem saltos
Os saltos ocorrem frequentemente ( uma em cada 10 instrues pelo menos) e "esvaziam" o pipeline. Por isso a maior parte dos processadores RISC executam a(s) instruo(es) que est(o) a seguir ao salto ("delayed branch"). da obrigao do compilador colocar l instruo(es) til(eis). ADD R1,R2,R1 SUB R3,R1,R3 JMP ALGURES ZERO R3 <-- esta instruo tambm executada
Pipeline (generalidades)
Nem todas as instrues ocupam todo o pipeline No h conflitos no acesso memria Andares com durao diferente Interrupes Saltos condicionais Dependncias do contedo de registos
A instruo 3 um salto condicional para a instruo 15. S em 7 se decide. Em caso de se efectuar o salto o pipeline esvaziado e s em 8 a instruo 15 entra no pipelin. De 9 a 12 no se completam instrues
Performance do pipeline
K andares O tempo de um ciclo T = MAX(Ti) +d
Delayed branch
Previso de saltos
Um pipeline de 10 andares funciona bem em cdigo linear. Mas os programas esto cheios de saltos if (i==0) cmp i,0 k = 1; jne Else else Then: mov k,1 k = 2; jmp Next Else: mov k,2 Next:
Delayed branch
Saltos condicionais: "pipeline stalls" Saltos incondicionais
A instruo seguinte ao JMP j entrou no pipeline
Branch prediction
Esttica
Todos os saltos para trs so seguidos (loop) Todos os saltos para a frente no so seguidos (so erros e os erros ocorrem raramente)
Dinmica
Erros na previso
As aces de instrues que entraram no "pipeline" tm de ser desfeitas
Registos "escondidos" do CPU so usados para guardar valores novos/antigos
Previso dinmica
Tabela em hardware (cache) que para cada salto guarda a ltima deciso
Pipeline do 486
Fetch
D1 - Decode 1 D2 - Decode 2
EX - Execute
WB - Write back
Pipelining
Execuo de instrues dividida em vrias fases:
fetch/execute fetch/decode/fetch operand/execute/write result
Arquitecturas superescalares
Dois pipelines no Pentium pipeline-u (qualquer instruo)
Pipeline-v (instrues aritmticas simples inteiras) Pentium ao mesmo relgio era duas vezes mais rpido que o 486 se s fizesse operaes com inteiros
Arquitecturas superescalares
N pipelines completos demasiado dispendioso em hardware Muitas unidades funcionais, vrias ALUs por exemplo Compilador escalona as instrues
Arquitectura super-escalar
Exemplo Pentium II O andar S3 fornece instrues a um ritmo superior ao da execuo do S4 (vrias unidades de FP ...)
Compilador, com auxlio do hardware (muitos registos escondidos, tabelas de quais so os visveis/usados)
Execuo especulativa
Programa dividido em blocos sem construes de controlo Alguns blocos comeam a ser executados mesmo sem se saber que vo ser precisos. No exemplo a leitura de evensum pode ser feita no incio do ciclo
MIPS R4000
Baseado no Stanford MIPS Famlia R2000/3000/4000/6000 R4000 (processador+MMU)
64 bits 32 registos de 64 bits 128 KB de cache
SPARC
Scalable Processor Arquitecture Baseada no MIPS I de Berkeley Janelas de 24 registos 2 a 32 janelas de acordo com a implementao Cada procedimento v 32 registos
Registos R0 a R7 partilhados (variveis globais) ins: R24 a R32 partilhadas com o invocador locals: R16 a R23 no partilhados outs: R8 a R15 partilhados com o invocado
Pentium II
7.5 milhes de transstores microinstrues RISC-like superescalar Pentium Pro + MMX
Microarquitectura do Pentium II
Caractersticas
Pool de instrues (ReOrderBuffer) Out of order execution Previso esttica e dinmica de saltos Unidade Fetch-decode um pipeline com 7 nveis Suporta execuo especulativa Capacidade de rollback (falhas nas previses dos saltos)
Unidade fetch/decode
Unidade dispatch/execute