4 ms·
So software (or another part of the CPU) will handle the errors so that the programmer doesn't have to check that every single operation worked correctly. This
by coderdude 16y ago
So software (or another part of the CPU) will handle the errors so that the programmer doesn't have to check that every single operation worked correctly. This reminds me of how Hadoop handles failures such as a hard drive dying. If we're abstracted from the failures we really don't have to pay attention to them (except with a distributed filesystem you would need to replace dead hardware).
This is a very interesting concept. Although it mentions decreased power consumption, would this also entail more performance for chips? It mentions that Moore's Law is being hampered by our "need for perfection."
- forgottenpaswrd 16y agoWhen you use a hard drive you are already using a "stable" CPU, you are sure that the checking operations(CRC...) you do are well done. How are you going to check something is well done without doing it if you don't know the solution?.Whatever you do you are going to add a ton of new logic(more consumption, and complexity and HORRIBLE BUGS on hardware level). I meet people that had to manage hardware bugs when CPUs where not as reliable as today(automatic testing in VHDL and Verilog has helped a lot), like the people that worked in the first Cray computers. It made their lives miserable, boring, repetitive and painfully slow work. The worst bug in existence for a programmer is the one that appears and disappears randomly and when you had invested months of work trying to find it on your code, you find is a hardware bug!!
- coderdude 16y agoTo quote myself from above: >>So software (or another part of the CPU) will handle the errors so that the programmer doesn't have to check that every single operation worked correctly. Now, does your comment have any purpose?
- reitzensteinm 16y agoI always imagined that this would work by doubling up the hardware, requiring two logic units to agree, if they didn't then computation work would be redone, much like a branch prediction failing. This would obviously not help power consumption at all, but freqeuncy could probably be scaled up quite a bit. It also assumes that if an error happens it's unlikely to repeat in the same way in the second logic unit. But that may not be a reasonable assumption.
- gdickie 16y agoAt the lowest level, you don't need to double-up, you can use an error correcting code. If the memories and registers on a chip use a multiple-error correcting code, then the underlying error rate could be quite high without making any difference in the user-visible error rate. Similarly you could use noisy-network protocols for on-chip wires, so that each signal path doesn't need to be perfect. Again you don't need to double-up. Instead you lose a small percent to overhead, and a delay in order to encode / decode.
- reitzensteinm 16y agoHow would the error correcting code work for something like a floating point multiplication? Correcting errors in storage is simple, but correcting errors in computation seems like a significantly harder problem.