A bus-based symmetric multiprocessor (SMP) organization has limited scalability due to the contention of the shared bus and the driving capability of signals. In this project, we investigate the fundamental issues in designing a shared snooping bus including both bus physics and snooping protocols. We also study techniques to reduce the contention on accessing the shared bus. Execution-driven simulation is used to evaluate issues such as multi-level caches, large cache effect, aggressive write release, false sharing elimination, and distributed bus arbitration.