I was just wondering about the reason for hyper threading. I know that it makes 2 virtual cores out of one real one but wouldn't that just be redundant? You would think that making a core split it's power into 2 for a program would just create more power usage and slow it down because all the data going into processing is just going to the same core again. I know that in the real world it does make programs that use more threads run faster. Can someone explain why? Thanks!