|
Authored by: Anonymous on Thursday, February 14 2013 @ 04:56 PM EST |
Thanks for being patient with me, I certainly owe you
the same.
In general purpose computer terms, software is a kind of
specification of how to move data between memory and
CPU registers, what operations to perform on the data
in the registers, and what order to go about these
operations.
For a real, old-fashioned computer design, there are
hardware circuits consisting of flip-flops, gates and
so on which are permanently wired together in such an
arrangement that they will behave as "registers",
"arithmetic logic units", and so on, and these circuits
cannot do anything else but whatever it is they are
designed and wired to do. This "traditional" view is
much more abstract in modern electronics design.
To create a thing that acts like a "register", I describe
an array of memory elements that can receive one bit of
data each, connected to a notional "bus" which in the
old model would be a collection of wires, one per bit,
connected to the input and output of each of the one-bit
memory elements, and then maybe I describe some other
circuits (in equally abstract terms), which cause the
"register" to have some kind of functional operational
properties (such as being able to shift bits sideways).
Running these descriptions of abstract concepts through
a synthesizer, I can then take an FPGA (yes, a physical
one) off the shelf, feed in my synthesized description,
and apply power - now the FPGA has a "register" in it!
Physically, it may be indistinguishable from the other
FPGAs on the shelf, but now this one can do computations
in a way that can be distinguished from the "unprogrammed"
FPGAs, in that the pins respond differently when exposed
to electrical inputs.
Where I was trying to lead has to do with why a lot of
physical chips cannot be used to demonstrate that something
is or is not "abstract". I'm not done thinking about it,
but I am inclined towards the notion that if it's done
with bits, it is abstract. The meaning of a bit is very
specifically an abstraction - I can arbitrarily say that
a high voltage means "FALSE" and a low voltage means
"TRUE", or zero and one, or Fred and Nancy, it is up
to me to define the abstraction and invent a set of rules
I want the abstraction to implement. Even in the traditional
hardware model, the arrangement of the wires and the
choice of gates are implementing a physical realization
of this abstract model - being unable to do anything else
does not make the implementation any less of a thought
experiment. Being able to take an FPGA and reprogram it
to suddenly become a completely "different chip" doesn't
seem to make it more of an abstraction, just a more
flexible one.
I'll take your implied point that an FPGA with faster gates
is a non-trivial improvement, and there is specific
hardware inside which makes this improved functionality
work the way it does. That to my mind is the kind of real
progress that the patent system was supposed to be
encouraging. I was trying to point out that having
two otherwise equivalent FPGAs, one of which does the
same thing but faster because I thought of a better way
to arrange the interconnects is explicitly NOT such an
advance - it's better idea, certainly, but it's better
because of abstract differences.
This is sort of an extension of the argument that
taking an idea and saying "on a computer" does not
make the idea patentable. Taking an idea and saying
"using digital hardware" has become almost the same
thing - programmable gate arrays make these almost
the same statement.
[ Reply to This | Parent | # ]
|
- Exactly! - Authored by: Anonymous on Thursday, February 14 2013 @ 06:01 PM EST
|
|
|
|