Date of Award:


Document Type:


Degree Name:

Master of Science (MS)


Electrical and Computer Engineering

Committee Chair(s)

Koushik Chakraborty


Koushik Chakraborty


Dan Watson


Chris Winstead


Most modern personal computers come with processors which contain multiple cores. Often, one or more of these cores is damaged during manufacturing. These faults are increasing as manufacturers try to make processors run faster. Many processor designs allow a damaged core to continue working after manufacturing, but these salvaged cores run slower than a fully functional core.

In an attempt to make software run as fast as possible for its users, software designers write applications that are split into multiple parts called threads. These threads can be run on separate cores at the same time and get more work done than if the processor only had a single core.

Communication among these threads requires that these threads must occasionally pause to synchronize with each other. When such programs are run on a computer that has a salvaged core, the thread on the salvaged core can hold up the others when they are waiting to synchronize.

This work is designed to help reduce the number of times that the other threads wait for the slower thread and reduce the amount of time that they must wait. As a result, programs with multiple threads can run faster and complete more work.