  Invention of Transistors in 1948 started a new era in technology, called
Solid State Electronics. Since then, sustaining development and advancement in
electronics and fabrication techniques has caused the devices to shrink in size
and become smaller, paving the quest for increasing density and clock speed.
That quest has suddenly come to a halt due to fundamental bounds applied by
physical laws. But, demand for more and more computational power is still
prevalent in the computing world. As a result, the microprocessor industry has
started exploring the technology along a different dimension. Speed of a single
work unit (CPU) is no longer the concern, rather increasing the number of
independent processor cores packed in a single package has become the new
concern. Such processors are commonly known as multi-core processors. Scaling
the performance by using multiple cores has gained so much attention from the
academia and the industry, that not only desktops, but also laptops, PDAs, cell
phones and even embedded devices today contain these processors. In this paper,
we explore state of the art technologies for multi-core processors and existing
software tools to support parallelism. We also discuss present and future trend
of research in this field. From our survey, we conclude that next few decades
are going to be marked by the success of this "Ubiquitous parallel processing".
