T oday’s demanding Internet applications typically execute on superscalar microprocessors that fetch, decode, and execute multiple instructions in each clock cycle. These microprocessors contain multiple functional units, generally employ large caches, and tend to execute instructions in an order different from the instruction sequence fed to them. To finish the job as soon as possible, they look deep into the instruction stream and execute instructions from places where sequential execution flow has not yet reached. With the aid of sophisticated branch predictors, they identify the program flow’s potential path to find instructions that can be executed in advance. At times, however, a processor makes wrong predictions and must nullify the extra work it performed speculatively. Developers designed most of the microprocessors that execute today’s Internet applications before the advent of these emerging workloads. CPU-intensive benchmarks have been widely used in processor performance evaluation but differ in functionality from emerging commercial applications, which contain several Web server and e-commerce software packages, interfaces, and standards. An end-to-end e-business transaction typically involves at least a dozen different software modules, including the front end or portal, shopping carts, network communication, credit card or electronic check processing, and security. Many of these applications involve a Web-based interface to an underlying database that stores the data relating to the user inquiry or transaction. Modern servers use a three-tier approach in which the back-end tier handles the database access while the middle tiers and front end implement much of the business logic and user interface. Some researchers have studied large database applications, which are usually used as an Internet server back end. Although these studies have revealed much about the back end, we still do not fully understand how the front and middle tiers of serverside workloads behave. To help fill that knowledge gap, we examined how the front-end and middle-tier workloads of Web and Java servers have affected modern microprocessor architectures. We also compared a number of server benchmarks with CPU-intensive benchmarks, such as the Standard Performance Evaluation Corporation’s SPECint2000, to get a perspective on their behavior compared to more traditional and better-understood workloads.
Download Full PDF Version (Non-Commercial Use)