the execution workload is the same. Using our speedup formula, we know Our new branch predictor has provided a 1.5x speedup over the original. Using cycles per instruction and instructions per cycle We can also measure speedup in cycles per instruction (CPI) which is a latency. First, we execute the program with the standard branch predictor, which yields a CPI of 3. Next, we execute the program with our modified branch predictor, which yields a CPI of 2. In both cases the execution workload is the same and both architectures are not pipelined nor parallel. Using the speedup formula gives We can also measure speedup in instructions per cycle (IPC), which is a throughput and the inverse of CPI. Using the speedup formula gives We achieve the same 1.5x speedup, though we measured different quantities. Additional details Let S be the speedup of execution of a task and s the speedup of execution of the part of the task that benefits from the improvement of the resources of an architecture. Linear speedup or ideal speedup is obtained when . When running a task with linear speedup, doubling the local speedup doubles the overall speedup. As this is ideal, it is considered very good scalability. Efficiency is a metric of the utilization of the resources of the improved system defined as Its value is typically between 0 and 1. Programs with linear speedup and programs running on a single processor have an efficiency of 1, while many difficult-to-parallelize programs have efficiency such as 1/ln(s) that approaches 0 as the number of processors increases. In engineering contexts, efficiency curves are more often used for graphs than speedup curves, since all of the area in the graph is useful (whereas in speedup curves half of the space is wasted); it is easy to see how well the improvement of the system is working; there is no need to plot a "perfect speedup" curve. In marketing contexts, speedup curves are more often used, largely because they go up and to the right and thus appear better to the less-informed. Super-linear speedup Sometimes a speedup of more than A when using A processors is observed in parallel computing, which is called super-linear speedup. Super-linear speedup rarely happens and often confuses beginners, who believe the theoretical maximum speedup should be A when A processors are used. One possible reason for super-linear speedup in low-level computations is