Software trace cache

We explore the use of compiler optimizations, which optimize the layout of instructions in memory. The target is to enable the code to make better use of the underlying hardware resources regardless of the specific details of the processor/architecture in order to increase fetch performance. The Sof...

ver descrição completa

Detalhes bibliográficos
Autores: Ramírez Bellido, Alejandro, Larriba Pey, Josep|||0000-0002-7070-9256, Valero Cortés, Mateo|||0000-0003-2917-2482
Tipo de documento: artigo
Data de publicação:2005
País:España
Recursos:Universitat Politècnica de Catalunya (UPC)
Repositório:UPCommons. Portal del coneixement obert de la UPC
Idioma:inglês
OAI Identifier:oai:upcommons.upc.edu:2117/103093
Acesso em linha:https://hdl.handle.net/2117/103093
https://dx.doi.org/10.1109/TC.2005.13
Access Level:Acceso aberto
Palavra-chave:Cache memory
Compilers (Computer programs)
Parallel processing (Electronic computers)
Pipeline processors
Instruction fetch
Compiler optimizations
Branch prediction
Trace cache
Memòria cau
Compiladors (Programes d'ordinador)
Processament en paral·lel (Ordinadors)
Àrees temàtiques de la UPC::Informàtica::Arquitectura de computadors
Descrição
Resumo:We explore the use of compiler optimizations, which optimize the layout of instructions in memory. The target is to enable the code to make better use of the underlying hardware resources regardless of the specific details of the processor/architecture in order to increase fetch performance. The Software Trace Cache (STC) is a code layout algorithm with a broader target than previous layout optimizations. We target not only an improvement in the instruction cache hit rate, but also an increase in the effective fetch width of the fetch engine. The STC algorithm organizes basic blocks into chains trying to make sequentially executed basic blocks reside in consecutive memory positions, then maps the basic block chains in memory to minimize conflict misses in the important sections of the program. We evaluate and analyze in detail the impact of the STC, and code layout optimizations in general, on the three main aspects of fetch performance; the instruction cache hit rate, the effective fetch width, and the branch prediction accuracy. Our results show that layout optimized, codes have some special characteristics that make them more amenable for high-performance instruction fetch. They have a very high rate of not-taken branches and execute long chains of sequential instructions; also, they make very effective use of instruction cache lines, mapping only useful instructions which will execute close in time, increasing both spatial and temporal locality.