Trabalho 2 - Arquitetura
Por: Rafael Lima • 9/3/2016 • Seminário • 1.913 Palavras (8 Páginas) • 278 Visualizações
Otimizações do compilador
Resumo
Este trabalho apresenta como algumas técnicas de otimizações de compiladores ajudam a diminuir a taxa de faltas da memória cache sem qualquer mudança no hardware. Apresentando como foi compilado os códigos, quais os valores das entradas que foram utilizados. Utilizando gráficos para uma melhor compreensão do trabalho realizado. O trabalho foi baseado no texto da disciplina com o objetivo deste trabalho é estudar a variação da taxa de perdas em função da organização das memórias caches e da estrutura de código.
Introdução
A grande maioria das melhorias quando se trata de taxa de falta em cache é feita em hardware, porém, essas técnicas estudadas vem como uma opção de melhoria sem mudança alguma em nível de hardware. A diferença de desempenho entre o processador e a memória principal vem sendo uma inspiração para os projetistas de compiladores estudarem mais de perto a hierarquia de memória para ver se as otimizações em tempo de compilação podem melhorar o desempenho. Esses estudos seguem duas vertentes, uma segue as melhorias que ocorrem nas faltas de instruções e a outra segue as melhorias nas falta por dados.
Será demonstrado nesse trabalho três otimizações do compilador para reduzir a taxa de faltas, Loop Fusion, Loop Interchange e Blocking, essas três técnicas são utilizadas na maioria dos compiladores modernos a fim de melhorar a taxa de faltas.
Foi entregue para o grupo alguns algoritmos referentes as técnicas para a otimização, esse algoritmos são: blocking_1, blocking_2 referentes ao Blocking; loop_fusion_1, loop_fusion_2 refentes ao Loop Fusion; loop_interchange_1, loop_interchange_2 refentes ao Loop Interchange. Além de um arquivo de cabeçalho e um makefile. Todos esses algoritmos foram compilados sem algum problema, para compilar utilizamos somente o makefile que já vinha com os arquivos.
Informações sobre a arquitetura do computador utilizado
Neste tópico será apresentado algumas informações da arquitetura na qual foi executado o código.
Informações sobre a Memória:
MemTotal: 1791052 kB
MemFree: 1146456 kB
MemAvailable: 1280668 kB
Buffers: 36852 kB
Cached: 212252 kB
SwapCached: 0 kB
Active: 378604 kB
Inactive: 175968 kB
Active(anon): 312204 kB
Inactive(anon): 3032 kB
Active(file): 66400 kB
Inactive(file): 172936 kB
Unevictable: 15876 kB
Mlocked: 15876 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 321416 kB
Mapped: 140928 kB
Shmem: 3504 kB
Slab: 27388 kB
SReclaimable: 15000 kB
SUnreclaim: 12388 kB
KernelStack: 3408 kB
PageTables: 13644 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2992672 kB
Committed_AS: 1246552 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 14320 kB
VmallocChunk: 34359715739 kB
HardwareCorrupted: 0 kB
AnonHugePages: 67584 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 13888 kB
DirectMap2M: 1818624 kB
Informações sobre a CPU:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz
stepping : 13
microcode : 0xa3
cpu MHz : 2167.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dtherm
bogomips : 4336.00
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz
stepping : 13
microcode : 0xa3
cpu MHz : 1667.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
...