to reduce cycle per instruction 1. using pipeline that enable multiple instructions to be in execution at the same time (but they are in-order) 2. using multiple execution units (this is called "super scalar") that enable multiple instructions to be in execution parallelly (they can be out-of-order) pipeline reduce CPI down to 1.0 super scalare reduce CPI lower than 1.0