Apple patent: Method and apparatus for executing program code
patft1.uspto.gov
patft1.uspto.gov
Your average HN reader would probably 'invent' the same technique if CPU design was their profession and they were tasked with the continuous march of CPU performance.
There wasn't anything in there that didn't seem straight forward enough to me after casually reading Computer Architecture: A Quantitative Approach five years ago, and I make flash games for a living.
At least in the case of patents on CPUs, though, your average company is well financed enough to fight a lawsuit around this patent, which was the particularly annoying thing about Lodsys.
The across the loop part is the vaguely new part of it. To simplify it greatly, this can already be made parallel at runtime:
float a = 5.0;
float b = 10.0;
//The next two lines are executed in one clock tick
a*=2;
b*=2;
This patent deals with a method to turn this into parallel code: float[] vals = { 1.0, 2.0, 3.0 }
for ( int i = 0; i < vals.length; i++ ) {
vals[ i ] *= 2;
}
Obviously it has to detect any data dependencies at runtime, which isn't trivial. This can't be rewritten, for instance, because i depends on i - 1: float[] vals = { 1.0, 2.0, 3.0 }
for ( int i = 1; i < vals.length; i++ ) {
vals[ i ] *= vals[ i - 1 ];
}
Now, this is cool. I'd love to be working on stuff like this. But it's an extremely obvious step, once you've cleared the low hanging fruit. It's just that the extra complexity hasn't been worth it until now, because easier and simpler things to do have given enough speed up. That someone would do this was inevitable, which is why I say the patent is ridiculous.Imagine history turning out completely differently. IBM is the largest CPU design firm in the world, after Shockley Semiconductor and HP who fab chips for the latest Commodore machine. Apple and Dell never existed. Every single person working on CPU design today for whatever reason ended up in another field.
We would still be seeing this technique first being used at the 1 billion transistor mark for CPUs. It's just a consequence of the nature of computation.
At the gcc page you linked:
Example output using -ftree-vectorizer-verbose=2:
vect-1.c:82: note: not vectorized, possible dependence between data-refs a[i_124] and a[i_83]
Apple's patented method would appear to allow vectorization in this case, whereas gcc fails.
"One significant obstacle to vectorizing loops in program code in existing systems is dependencies between iterations of the loop. For example, loop-carried data dependencies and memory-address aliasing are two such dependencies. These dependencies can be identified by a compiler during the compiler's static analysis of program code, but they cannot be completely resolved until runtime data is available. Thus, because the compiler cannot conclusively determine that runtime dependencies will not be encountered, the compiler cannot vectorize the loop. Hence, because existing systems require that the compiler determine the extent of available parallelism during compilation, relatively little code can be vectorized."
So the claim here is that this problem can't be solved just by the compiler, and wasn't solved by any existing systems at the time of the application.
To be fair to the original poster, the HN title is not "needlessly linkbaity". It is verbatim what the title of the patent is - "Method and apparatus for executing program code". Not terribly informative, but a hn link title is short as well. Can't fault the OP for copying the title.
If it were a far more reasonable "Apple patent for instruction rewriting for vector operations on CPUs", would it have gotten the same response?
You're right that it's not the OP's fault for directly copying it, and probably wasn't intentional, but it's a situation that comes up again and again on HN for patent related posts.
The problem is hn readers look at the title and think Apple has egregiously patented one obvious thing when really Apple has egregiously patented another slightly narrower but still obvious thing?
Basically, the title of patent makes it sound as bad as it is. This should ideally be a problem for Apple rather than us.
In French law, you can only patent something if it is not something that would be evident to a trained professional in the field ("Pour un homme du métier, une invention ne doit pas découler de façon évidente de l’état de la technique ; on considère que l’homme du métier est le technicienmoyen dans un secteur donné"- art. L611-10, Code Propriété Intellectuelle.)
Is it not the case in the US?
Check this out: http://www.google.com/patents?id=OfwkAAAAEBAJ
Thank you djahng.
How does France deal with this situation?
Pretty much the same way.
>(a) A patent may not be obtained though the invention is not identically disclosed or described as set forth in section 102 of this title, if the differences between the subject matter sought to be patented and the prior art are such that the subject matter as a whole would have been obvious at the time the invention was made to a person having ordinary skill in the art to which said subject matter pertains. Patentability shall not be negatived by the manner in which the invention was made.
http://www.uspto.gov/web/offices/pac/mpep/documents/appxl_35...
In the US it should be obvious to a person of ordinary skill, not just an expert. I don't think its easy to objectively define a person of ordinary skill either.
It's an extension of the usual superscalar architechtures, however this time you can look at the individual operands of a vector instruction, and not just the whole element.
The good part: You can do this without breaking the patent if you don't have 'vector control instruction'. So basically you can do it automatically on the CPU side.
It looks as though it's a patent on a particular model for implementing a highly parallel CPU, with a focus on making vectorized loops work better. Interesting stuff.
On the contrary, the claims are meant to be understandable to any reasonably technical person (anyone "highly skilled in the art"). On the other hand, your average non-technical lawyer would be completely unable to read them.
This doesn't mean it won't take time to fully digest a patent's claims, as they tend to be written with a very high degree of precision.
Fortunately patent cases now tend to get decided out of court based on who has the biggest portfolio, or when they do go to court it's a jury in East Texas deciding which lawyer they dislike least. this has taken a lot of the work out of trying to write elegant claims!
(Someone previously posted that URL to HN as http://news.ycombinator.com/item?id=3887700 and it received little response. Maybe the title wasn't sexy enough.)
But I don't understand the area enough -- what are vectorized loops, and what is Apple doing here? Can someone explain this patent in an easy way?
The novel idea here seems to be the hinting plus data dependency analysis, but I'd need read in more detail to see if there's anything here that's non-obvious.
It's definitely clever, but I can't believe they were granted a patent for this. It would be like patenting the map reduce framework. :|
Not every patent clerk is going to be Albert Einstein. Nor should we expect them to be.
Which is expensive. It should work other way around. Those who file such patents need to spend money to prove that this stuff is really innovative and for some real experts. Current patents system is pure farce.
When the titles of most patents are taken in isolation, link bait is usually the result.
I would like to hear from more knowledgeable people what the invention is and how novel is it really.
Are patents realy down to wording a known process in such a complex way that it appears to be new - as thats how I see alot of patents.
Bottom line if you can't sumarise it on the back of a postit note without duplicating somebody elses work then you have created nothing new at all.
I think bad patents like this should be fined, submit prior art patent then you should be fined - big time. Help pay for all this courtroo bullshitting about patents.
How can they get a patent on this? There must be lots of prior art (such as the SPE).
There should be a way to sue the patent office for patents you had to spend money invalidating. Better: to Sue them for approving bad patents and enabling trolls to thrive.