 Shared resources include branch prediction structures, various buffer entries, and out-of-order execution resources.Static resource allocation reserves the resources to the threads based on a policy whether the thread can use them or not.Dynamic threading allocates these resources to the threads that are ready and will use them, thus improving performance.