Estas tres últimas semanas he estado muy ocupado trabajando en un paper, así que no he tenido tiempo para escribir posts. Pues bueno, éste es el primero de algunos post que tengo en mente y cómo no, voy a hablar del paper que hemos entregado para la conferencia Micro en su edición 40 (una conferencia ya veterana en Ciencias de la Computación). Esta edición es en Chicago a primeros de Diciembre. La temática de esta conferencia está enfocada a la microarquitectura, aunque tienen su sección para sistemas que instrumentan binarios dinámicamente. Este área está entre arquitectura y compiladores, así que las conferencias importantes sobre estos dos temas suelen tener una sección dedicada a ello. Ya hablé sobre Pin en un post anterior, y de la utilidad de estos sistemas. También hablé sobre la clase a la que asistí el semestre pasado, Virtual Execution Environments.
Pues bien, al terminar el semestre la profesora, Kim Hazelwood, me animó a extender el proyecto de clase para enviarlo a Micro. El mayor problema estaba en el tiempo disponible. El plazo terminaba en dos semanas, así que hubo que ponerse las pilas, y bien. Después de dos semanas intensas, repitiendo simulaciones y experimentos, acabé de escribirlo en el aeropuerto de Dulles, junto antes de embarcar en un vuelo a Chicago (mini-vacaciones planeadas antes de que supiera nada del paper). Acto seguido, Kim lo revisó en una habitación de hotel en San Diego (daba un tutorial de Pin al día siguiente) y lo envió justo a tiempo. Literalmente minutos antes de que se acabara el plazo. Así que podéis haceros a la idea. Una experiencia muy estresante.
Para los informáticos, os dejo el abstract, a ver que tal os suena. Se aceptan comentarios:
Dynamic binary instrumentation systems offer a wide range of new applications such as program instrumentation, optimization, and security. DBIs use a JIT compiler to add instrumentation and store the instrumented traces in a software code cache. The code layout in the code cache greatly differs from the code layout of the original program. It is widely assumed that the system cache performs better with instrumented code due to trace layout, although there is no formal evaluation of these icache effects in the literature. This paper provides an exhaustive, cross-architecture, cross-platform analysis of the performance of the instruction cache and other structures of the micro-architecture while a DBI executes.
In order to perform our evaluation, we have developed two tools: one that uses simulation to evaluate the locality of the application, and another that directly accesses the hardware performance counters to determine actual icache miss counts. Our results show that when executing an application under the control of a DBI, icache miss count actually increases anywhere from 2X to 4X, depending on the DBI used. This performance degradation is due to the impact of the instructions added by the DBI, which increases the memory use of instrumented programs and the number of instructions that are finally executed. We find that these observations hold regardless of the trace length and code cache size. These surprising results provide a better understanding of the efficiency of current instrumentation tools, and overturn the prevailing assumption that trace-based systems improve instruction cache performance.
En definitiva, ha estado bien como experiencia. Y si lo aceptan en una conferencia importante como Micro tendré motivos para estar muy satisfecho (aunque no sé si la contribución del paper es suficiente). En los próximos días ya comentaré algo sobre Chicago.