The Inquirer says about the patent:
>It specifically says that in one test, a CPU executed at least two threads concurrently
Hmmm... makes it sound as if AMD has a real CPU with HT. Doesn't sound very likely, does it? The Inquirers link to the patent doesn't get there. This is the text of that link:
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=/netahtml/search-adv.htm&r=1&p=1&f=G&l=50&d=ft00&S1=5,944,816.WKU.&OS=PN/5,944,816&RS=PN/5,944,816
I doubt if I'd understand the patent anyway. (I've looked at patents before!)
One thing about patents: one party can patent one aspect needed to implement a solution, and another party a second, and another party a third. By the time anyone gets to making a real version, they might need all three patents.
In their paper, Intel gives the ways to execute threads concurrently. It kind of depends on what counts as simultaneous. Here's my interpretation, listed by how much is shared:
1) Two entirely separate computers can execute parts of the same program.
2) Dual processors sharing the same bus and memory, and maybe even the same chip, can do it.
3) Simplest of all: one processor can be switched between the several parts (this is what Windows normally does, since Windows 95.) It can be done by just having a timer interrupt the CPU. Before that, Window had voluntary switching. Each program was supposed to have spots, while it was executing, where it returned to control to the OS, which in turn switched to another program. Needless to say, programmers being the way they are, every program wanted to hog everything for itself.
4) The hardest: one chip can implement two virtual processors sharing the same CPU resources (cache, buffers, registers, execution units.)
Because of the way x86 CPUs are already implemented as virtual CPUs, #4 is not as incredible as it once must have seemed. How can two virtual CPUs share the same 8 registers? They can't really. CPUs already have already have a lot of registers behind the scenes, and those registers are renamed as needed, even with one virtual CPU. How can two virtual CPUs use the same execution unit at the same time? They can't. There are several execution units already available to be used simultaneously even with one virtual CPU.
Sharing the cache does seem to cut the cache per CPU in half, and you would think that would be a serious performance hit. It also opens the possiblilty that one thread would kick out all the key instructions and data from the cache that the other needs. Both threads could be doing it to each other in fact. In that case, you would get cache thrashing and effective speed would slow down to a crawl, worse than if you had no cache. Intel simply put a limit on how much a virtual CPU can hog. They don't go into how they managed to do it.
Keeping track of which virtual CPU is using what, seems difficult to me. Imagine trying to cook up two complex dishes simultaneously, when either recipe can use the any measuring cup, bowl, or pot, and a given container sometimes has things for one recipe and sometimes for the other. Obviously everything has to have a temporary label, but even so, how is the CPU keeping the two sequences separate?
Since both recipes might need the same pot when it is occupied by the other, how can you be sure that one recipe does not block the other from progressing? Intel resolved this by always giving the opposite CPU the next turn, without worrying about whether this produced optimal speed. Keeping both programs progessing is the priority.
Back to the patent: I wonder if it is really HT in the Intel sense?
Patents can be conflicting. The patent applicant pays for a patent search, which hopefully turns up conflicts. Just because it may not, doesn't mean the patent offices decision garantees your rights. In can be overturned in court, and there are a lot of important patents that were. The patent on the automobile was overturned. I think the patent on the laser, or at least some lasers, was overturned.