A Survey on Hardware and Software Support for Thread Level Parallelism
---

Title: A Survey on Hardware and Software Support for Thread Level Parallelism

Section 1: INTRODUCTION
Description 1: This section introduces the concept of thread-level parallelism (TLP), its importance, and the need for both hardware and software support for efficient execution of multithreaded applications.

Section 2: THREAD BASICS
Description 2: This section explains what constitutes a thread, including thread creation, characteristics, execution flow, granularity, parallelism, execution platforms, and thread safety.

Section 3: Runtime Thread Management
Description 3: This section covers how thread scheduling is managed by the operating system, different scheduling methods, and the types of multithreading techniques used to increase performance.

Section 4: THREADING IN PROGRAMMING MODELS
Description 4: This section discusses various parallel programming models used for threading, including shared memory, distributed memory, partitioned global address space, dataflow, and heterogeneous programming models.

Section 5: HARDWARE SUPPORT FOR THREADS
Description 5: This section describes different hardware-based thread support mechanisms in multicore processors, including specific architectures and processors that offer dedicated thread management features.

Section 6: SOFTWARE SUPPORT
Description 6: This section examines the software side of thread support, including solutions for deterministic threading, runtime systems for managing threads, and techniques for enhancing performance in multithreaded applications.

Section 7: THREAD MANAGEMENT: ITS ISSUES AND DISCUSSION
Description 7: This section discusses common issues and challenges associated with thread management, such as memory issues, synchronization, deadlock, loop management, granularity, and thread mapping.