I would like to acknowledge my research advisor, Tamara Lehman, for being a fantastic mentor and teaching me everything I know about computer architecture and security throughout my past 3 years in the CU Architecture Research Lab . I would also like to thank the members of my committee, Ashutosh Trivedi and Qin Lv, for supporting and helping supervise both my BS and MS theses. I also want to thank my awesome lab mates/friends, Kidus, Jackson, and Phaedra, for making each day in the lab extremely fun and still (mostly) productive, as well as the rest of the Architecture Lab for always being willing to collaborate and help out when needed. Lastly, I want to thoroughly acknowledge my amazing parents, without whom this thesis would not be possible. Thank you to everyone for supporting me through this journey! v Contents Chapter