In striving for such parallelism, researchers have exploited advances in chip technology to develop complex, hardware-intensive processors. To simplify these increasingly complex designs, developers can borrow distributed- systems methods and apply them at the processor level to solve load balance, resource allocation, and communication problems. Finally, new instruction sets may be necessary to better focus on instruction-level communication and dependence, rather than computation and independence as is commonly done today. Although novel functionality in the 1990s played a dominant role in processor design, the authors predict that implementation will dominate over functionality. Designing, debugging, and verifying monolithic designs that use hundreds of millions of transistors will be very difficult, and increasing wire delays will make intrachip communication and clock distribution costly.
Speculation is the key factor.
Multithreaded processors that support concurrent execution of multiple threads on a single chip may dominate some application uses in the next decade. Simultaneous multithreading uses monolithic designs with shared resources among the threads. Multithreading seeks to divide programs into data-independent parallel threads. Before speculative multithreading becomes commonplace in mainstream processors, technologies must be developed for conveying thread information from software to hardware. Likewise, algorithms for thread selection and management and hardware and software to support the simultaneous execution of speculative and nonspeculative threads must also be devised.