 Some "instruction-level parallelism" (ILP) methods such as superscalar pipelining are suitable for many applications, but are inefficient for others that contain difficult-to-predict code.Many applications are better suited to "thread-level parallelism" (TLP) methods, and multiple independent CPUs are commonly used to increase a system's overall TLP.A combination of increased available space (due to refined manufacturing processes) and the demand for increased TLP led to the development of multi-core CPUs.