A quantitative analysis of the .NET common language runtime
Microsofts .NET platform has been developed to simplify development of Windows applications. The execution environment at the heart of this platform is a virtual machine known as the common language runtime (or CLR). The goal of this paper is to present a comprehensive behavioral analysis of the CLR instruction set and the high level language support. This will aid in the development of a hardware implementation of the CLR, similar to techniques applied to the Java virtual machine. The pertinent data is extracted using a profiling application while executing a benchmark application. We have analyzed this data with respect to access patterns for data types, addressing modes, instruction set utilization, execution time requirements, method invocation behavior and the effects of object orientation. Conclusions and recommendations are presented that will aid in the future development of a hardware implementation.
common language runtime (clr) clr instruction set architecture clr processors