Influência das Características de Processadores e Aplicações no Nível de Blocos Básicos
Resumo
Este trabalho avalia o desempenho do processador e aplicações no nível de blocos básicos, usando um simulador de microarquitetura para construir o perfil dinâmico do comportamento de cada bloco básico de uma aplicação. Foram analisadas diversas características relacionadas ao desempenho de cada bloco, tais como faltas de dados nas memórias cache, falhas nas predições de saltos e contenções nas unidades funcionais. Baseando-se nessa análise, podemos determinar a influência de tais características no desempenho de cada carga de trabalho, e assim, investigar possíveis otimizações para aumentar o paralelismo em nível de instruções no nível arquitetural. Entre os mecanismos dinâmicos, a maior parte efetua a análise em nível de instruções. Uma granularidade tão fina implica em custos adicionais para coleta e armazenamento de informações por vezes irrelevantes. Os experimentos mostram que as características mais importantes para o desempenho do processador são as faltas de dados noúltimo nível de memória cache e falhas nas predições de saltos. A contenção nas unidades funcionais e as faltas de dados nas memórias cache L1 e L2 são menos relevantes, uma vez que grande parte destas latências são escondidas pela execução fora de ordem do processador superescalar e pelo mecanismo de prefetching. Nesse artigo, é usada uma análise dinâmica de desempenho em nível de blocos. Isto leva a um melhor entendimento das partes de código que possuem representatividade no programa, possibilitando ainda a caracterização de eventuais problemas em tais blocos. Quando eliminadas estas duas fontes de degradação do desempenho, através da simulação de um processador livre de faltas de dados noúltimo nível de cache ou com um preditor de saltos perfeito, observamos respectivamente melhorias de desempenho máximas de 78% e 127% (em média 10% e 23%).
Referências
H. Esmaeilzadeh, E. Blem, R. S. Amant, K. Sankaralingam, and D. Burger, “Dark silicon and the end of multicore scaling,” in Computer Architecture (ISCA), 2011 38th Annual International Symposium on. IEEE, 2011, pp. 365–376.
D. W. Wall, “Wrl research report 93/6,” DEC Western Research Laborator, Tech. Rep., 1993.
V.-M. Panait, A. Sasturkar, and W.-F. Wong, “Static identification of delinquent loads,” in Code Generation and Optimization, 2004. CGO 2004. International Symposium on, 2004, pp. 303–314.
H. Gao, Y. Ma, M. Dimitrov, and H. Zhou, “Addressbranch correlation: A novel locality for long-latency hardto- predict branches,” in High Performance Computer Architecture, 2008. HPCA 2008. IEEE 14th International Symposium on, 2008, pp. 74–85.
D. Ansaloni, S. Kell, Y. Zheng, L. Bulej, W. Binder, and P. Tuma, “Enabling modularity and re-use in dynamic program analysis tools for the java virtual machine,” in ECOOP 2013–Object-Oriented Programming. Springer, 2013, pp. 352–377.
M. Kambadur, K. Tang, and M. A. Kim, “Harmony: collection and analysis of parallel block vectors,” in Proceedings of the 39th Annual International Symposium on Computer Architecture, ser. ISCA ’12. Washington, DC, USA: IEEE Computer Society, 2012, pp. 452–463. [Online]. Available: http://dl.acm.org/citation.cfm?id=2337159.2337211
S. Srinath, O. Mutlu, H. Kim, and Y. Patt, “Feedback directed prefetching: Improving the performance and bandwidthefficiency of hardware prefetchers,” in High Performance Computer Architecture, 2007. HPCA 2007. IEEE 13th International Symposium on, 2007, pp. 63–74.
C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood, “Pin: building customized program analysis tools with dynamic instrumentation,” in Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, ser. PLDI ’05. New York, NY, USA: ACM, 2005, pp. 190–200. [Online]. Available: http://doi.acm.org/10.1145/1065010.1065034
G. Hamerly, E. Perelman, J. Lau, and B. Calder, “Simpoint 3.0: Faster and more flexible program phase analysis,” Journal of Instruction Level Parallelism, vol. 7, no. 4, pp. 1–28, 2005.
H. Patil, R. Cohn, M. Charney, R. Kapoor, A. Sun, and A. Karunanidhi, “Pinpointing representative portions of large intel itanium programs with dynamic instrumentation,” in Microarchitecture, 2004. MICRO-37 2004. 37th International Symposium on, 2004, pp. 81–92.
J. Cocke, “Global common subexpression elimination,” SIGPLAN Not., vol. 5, no. 7, pp. 20–24, Jul. 1970. [Online]. Available: http://doi.acm.org/10.1145/390013.808480
J. Huang and D. Lilja, “Extending value reuse to basic blocks with compiler support,” Computers, IEEE Transactions on, vol. 49, no. 4, pp. 331–347, 2000.
T. Sherwood, E. Perelman, and B. Calder, “Basic block distribution analysis to find periodic behavior and simulation points in applications,” in Parallel Architectures and Compilation Techniques, 2001. Proceedings. 2001 International Conference on, 2001, pp. 3–14.