As computer architects, it is important to understand how to optimize (micro)architecture in light of emerging application paradigms. Cloud-based Web services are undergoing a transformation toward using event-driven, server-side scripting, such as Node.js, as part of the backends. The use of the asynchronous event-driven execution model coupled with the managed scripting language leads to better application scalability and higher throughput, developer productivity, and code portability, all essential for Web-scale development.
Existing hardware systems, however, are fundamentally designed for conventional thread-based Web services, and therefore are ill-suited for event-driven, managed-language systems. Using Node.js as a case-study, we discover microarchitecture front-end inefficiencies in today's CPUs and show that existing thread-based latency mitigation techniques do not apply to event-driven, scripted services. We propose a set of hardware-runtime co-design techniques to improve the microarchitecture efficiency while mitigating the tail latencies.