Slashdot Mirror


Asynchronous Logic: Ready For It?

prostoalex writes "For a while academia and R&D labs explored the possibilities of asynchronous logic. Now Bernard Cole from Embedded.com tells us that asynchronous logic might receive more acceptance than expected in modern designs. The main advantages, as article states, are 'reduced power consumption, reduced current peaks, and reduced electromagnetic emission', to quote a prominent researcher from Philips Semiconductors. Earlier Bernard Cole wrote a column on self-timed asynchronous logic."

192 comments

  1. alright, question... by Anonymous Coward · · Score: 2, Interesting

    so how long do you think this will take before it's implemented on any sort of a large scale?

    1. Re:alright, question... by Anonymous Coward · · Score: 1, Funny

      The brain contains ten billion neurons. Each neuron has an independent timing system. Neighboring neurons can send pulsed inputs to provide relative time coordination to the said neuron. All this seems to be a relatively reliable asynchronous logic system.
      Considering that there are 6 billon humans on earth, we already have an installed base rivaling that of currently employed synchonous designs.

  2. Asynchronous Logic? by scott1853 · · Score: 5, Funny

    Isn't that when your boss gives you several conflicting ideas on how he wants a product to be implemented, all at the same time?

    1. Re:Asynchronous Logic? by Anonymous Coward · · Score: 0

      yes

      then it will be parrell async logic because he
      will expect all of them to be done at the same time.

    2. Re:Asynchronous Logic? by dubiousmike · · Score: 5, Funny

      Scott,
      This is your boss...

      Please shut off that damn computer and get back to coding!

      - Scott's boss

    3. Re:asynchronous logic? by Kragg · · Score: 2

      But if the 2nd circuit takes somewhere between 2 and 5 picoseconds, depending on the operation being executed, then half the time you're more efficient, the other half the same.
      Full-chip synchronized clock-ticks bring the average operation execution time down to the speed of the slowest, every time.

      --
      If you can't see this, click here to enable sigs.
    4. Re:Asynchronous Logic? by Anonymous Coward · · Score: 1, Funny

      Asynchronous Logic: Ready For It?

      Part of me thinks I am ready for it.

    5. Re:asynchronous logic? by girmann · · Score: 1
      It's not quite that simple. As has been said before, the majority of the power dissipated in the design is done on the clock edges, not while the transistor is on or off. The physical properties of CMOS, in general, have a very high "static" resistance, but a very low "dynamic" resistance. The "static" resistance (what EE's call DC input impedance) is on the order of 1 megaohm. This would mean at 1.5V, the "static" power dissipation is about 2.25nW (a very, very low number). OTOH, the "dynamic" resistance (what EE's call AC input impedance) is on the order of 50 ohms. At 1.5 V, that's about 50mW or about 20 million times more power dissipation. Now fortunately, the time that it takes to switch the transistor is very short, so the dynamic power dissipation isn't continuous, but it significantly adds to the power dissipation (and that's why Intel's 2.8GHz chips run so hot. So, on to your analogy...

      In your example, the synchronous design would use more peak power but, they both use the same amount of total power and the asynchronous design would be faster. Let's say that each of your 4000 transistors switched at 1ps (not physically realistic at this point, but it's your example, not mine! ;-) After being "on" for 3ps, your 1000 transistors switched, then after 5 ps, the other 3000 switched. In this case, we go to 6ps, so we can account for the switching time of the second batch of transistors. To make this a bit clearer, the 1000 transistors are "on" for 3ps, switching for 1ps, and then "on" again for 2ps, for a total of 6ps. The 3000 transistors are "on" for 5ps and thesn switching for 1ps. If we calculate the total power for the asynchronous design, it turns out to be: for the batch of 1000 transistors: 1000*2.25nW*3ps + 1000*50mW*1ps + 1000*2.25nW*2ps = 50.00001125W*ps (by the way, it is clear here that most of the power dissipation is the "dynamic" or "switching" kind) and the batch of 3000 transistors: 3000*2.25nW*5ps + 3000*50mW*1ps = 150.00003375W*ps. For a total of 200.000045W*ps. For the synchronous design, it would be: 4000*2.25nW*5ps + 4000*50mW*1ps = 200.000045. However, it is clear that the peak power for the asynchronous design is much lower.

      So, to answer your question... No, it doesn't take any more power, and the asynchronous design is faster.

      --Girmann

      --
      Nietzsche is dead. --God
  3. timerless design elements in pentium4? by sp00nfed · · Score: 4, Interesting
    Doesn't the pentium 4 and most CPU's nowadays have at least some elements of asynchronous logic? And I'm pretty sure that certain circuits in most current CPU's are implemented asynchronously.

    Isn't this the same as having a CPU without a timer? (i.e. no MHz/GHz rating).

    1. Re:timerless design elements in pentium4? by Anonymous Coward · · Score: 1, Informative

      I think you are correct that modern microprocessors use asynchronous logic in certain parts and synscronous design in others.

    2. Re:timerless design elements in pentium4? by Xeger · · Score: 4, Informative

      Within the space of a single clock cycle, the Pentium (or other designs) might make use of asynchronous logic, but (and this is the important bit) the asynchronicity only exists within the domain of the CPU. The external interface to the CPU is still governed by a clock: you supply the CPU with inputs, trigger its clock, and a short (fixed) while later it supplies you with outputs. Asynchronous logic removes the clock entirely.

    3. Re:timerless design elements in pentium4? by emarkp · · Score: 3, Insightful
      Within the space of a single clock cycle, the Pentium (or other designs) might make use of asynchronous logic
      Okay, this is silly. Within a single clock cycle, all logic is asynchronous. Circuits are designed to have an upper bound which is less than whatever the local clock limit is, but the above statement is true by definition.
    4. Re:timerless design elements in pentium4? by Xeger · · Score: 3, Interesting

      I don't see how your statement is in any way different from mine. I brought up the fact that CPUs make use of asynchronous logic within a single clock cycle, and explained that this does not make them asynchronous machines.

      I think you parsed my sentence incorrectly.

      I could say "The US might be a free country, but we still have laws to protect others' freedoms from impinging on our own."

      Does this mean that I am in doubt, as to whether the US is a free country? No; the US is a free country by definition, the Constitution having defined it as such.

      The "Might...but" construct is frequently used in the English language to introduce a fact, and then qualify it.

    5. Re:timerless design elements in pentium4? by emarkp · · Score: 2, Insightful

      But there is a huge leap from single cycle circuits to the external interface. All synchronous CPU's are asynchronous between clocks (looks like we were both saying this), but there's a lot of room for asynchronous circuits that have a threshold >1 CPU clock, but small enough for the task. It's very unlikely that we'll get fully asynchronous chips in the near future, simply because the vast majority of the tools, methodologies, etc. are for synchronous designs. But having asynchronous circuits doing some work on a synchronous chip is much more likely. (And I think is a better path anyway.)

    6. Re:timerless design elements in pentium4? by jafuser · · Score: 1

      I imagine this would work great with SRAM =)

      --
      Please consider making an automatic monthly recurring donation to the EFF
    7. Re:timerless design elements in pentium4? by Xeger · · Score: 2

      Ah; I think I see what you're getting at. IANEE (I Am Not An Electrical Engineer), so forgive me if I'm asking a naive question, but...

      For clarification, can you give a specific example of a situation where an asynchronous circuit would be useful as part of a clocked chip?

      If it's simply a matter of an async circuit helping a more complex synchronous machine do its job, then the machine's output is ultimately still tied to the clock, no?

      Perhaps you're saying that it's possible to build async circuits to accomplish discrete computational tasks that, while they take longer than a single clock cycle to complete, still get the job done faster than an equivalent synchronous circuit? In this case, I might issue an asynchronous instruction which "completes" in one clock cycle, but the results only become available several cycles later, in a special register. This would call for the additional of special async instructions to a machine's instruction set, and all the accompanying compiler antics.

    8. Re:timerless design elements in pentium4? by twalk · · Score: 1

      Some of the latest Sparc chips have async parts that take more than one clock cycle to execute.

    9. Re:timerless design elements in pentium4? by Anonymous Coward · · Score: 0
      In this case, I might issue an asynchronous instruction which "completes" in one clock cycle, but the results only become available several cycles later, in a special register. This would call for the additional of special async instructions to a machine's instruction set, and all the accompanying compiler antics.


      Compiler antics would only be required for maximum performance, otherwise the pipeline would just stall until the result became available, or OOO would skip non-dependant instructions further ahead. I'm not aware of any CPUs that do pipelining non-transparently (unless you count manually inserting the branch slot instruction in MIPS). I took a class once where everyone in the class in the course of a semseter independantly implemented a 32-bit RISC CPU at the single logic gate level. Some students got as far as impleme ting 5-stage pipelines (proper pipeline stalls and register file bypass paths and all). A single undergrad student can do this (and several do every semester) in a semester on top of all their other classes, it's really not that hard.


      My understanding is that the main area of focus for async logic is in floating point division where the FPU will appear to stall for a variable number of clock cycles depending on the operands. That's the kind of stuff that'd make you really sit down and think. Anyone know how they track propegation delays? I would assume they design some circuity that will have a slightly longer propegation delay than the computational logic, then send the latch signal along this circuitry. Then again, maybe they cheat and have some clockand a counterand a lookup table for propegation delays.

    10. Re:timerless design elements in pentium4? by Xeger · · Score: 2

      A pipeline stall would defeat the purpose of the asynchronous circuit in the first place, but I suppose OOO could, as you say, take up the slack.

      I can't say I've ever gotten as far as designing a CPU gate by gate, but part of the undergrad CS curriculum at my school was a hands-off study of RISC CPU design, including pipelining. With the proper tools, I can see how it wouldn't be all that taxing.

      My (also limited) experience with asynchronous circuits, on the other hand, is an entirely different matter. To quote Walter Sobchek, you're entering a world of pain.

      One of the final requirements to graduation is an EE course--just so we lousy CS undergrads can get our feet wet, I guess--and the bulk of the course revolves around designing and implementing asynchronous sequential circuits. So I have an inkling of how to deal with propagation delays, in that domain. The answer is: you fudge everything.

      Usually, you try and arrange the encoding of the input and also of the state, so that no two output bits ever change as the result of one input change. Next, you eliminate output transients by eyeballing all possible state transitions and making sure you take care of any situation in which a transient may arise. Finally, you have to carefully inspect the timing of the implementation and manually insert delays or flip gates around until you've taken care of all the race conditions.

      It sucks.

    11. Re:timerless design elements in pentium4? by Anonymous Coward · · Score: 0

      Asynchronous modules would be very useful in synchronous processors for:

      1) Float division/sqrt
      2) Multipliers with reduced power consumption
      3) Reducing noise.
      4) Whatever processor designers dream up. It depends on where you would have the design be synchronous (eg on design boundaries only or make the design sync but with only certain functional units as async).

      EDA tools are the big problem. None of the three established tools have good support for async. /ac

  4. Kurzweil by Anonymous Coward · · Score: 3, Insightful

    Brains use async logic elements. Maybe the only way to achieve good artificial intelligence with practical speeds is with async logic. With a cluster of async nodes you can build a physical simulation of neural nets. Consider having a small array of async nodes simulating parts of a neural net at a time. That would be a lot faster than what would be possible with ordinary sequential processing. Async logic might very well bring large neural net research into practicality.

    1. Re:Kurzweil by pclminion · · Score: 3, Insightful
      Brains use async logic elements.

      First off, there's no proof of this. The brain certainly appears to be asynchronous, but there's no evidence to suggest that there isn't some kind of internal, distributed clocking mechanism that keeps the individual parts working together. There's not enough evidence either way.

      Async logic might very well bring large neural net research into practicality.

      Why does everyone seem to think that ANNs are the way toward "true AI?" ANNs are superb pattern matching machines. They can predict, and are resilient to link damage to some degree. But they do not think. ANNs have nothing to do with what's really going on in a biological brain, except that they are made of many interacting simple processing elements. The biological brain inspired ANN, but that's all.

    2. Re:Kurzweil by Yokaze · · Score: 2

      Actually, it's the only practical way to create a fairly sophisticated computation unit.

      The problem is, to have a synchronous chip, there has to be synchronicity.

      Problem: The more transistors a chip has, the smaller the production process has to be to keep the production profitable.
      The smaller the process the slower the signal travels.

      So, you'll get a system, where the clocks signal can't be synchronous (or it'll be terrible complicated to distribute the signal). Hence, it'll have to be asynchronous.

      Not necessarily a completion-based asynchronous logic, maybe a multi-core like the current IBM PowerPCs.
      But async-logic actually seems to be the easier way as SMP doesn't scale perfectly.

      Furthermore, the smaller the structures and the higher the clock, the larger the clock driver has to be.

      IRC, 1/3 of the current chips is used to drive the clock alone. But don't cite me on that.

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    3. Re:Kurzweil by Chiggy_Von_Richtoffe · · Score: 1

      >Maybe the only way to achieve good artificial intelligence with practical speeds is with async logic. With a cluster of async nodes you can build a physical simulation of neural nets.

      Okay, new poll
      The first successful neural-net AI shouldn be named:
      1. "Adam"
      2. "Isaac"
      3. "sky.net"
      4. "Beowulf" -laugh it's funny
      5. "Lore/Data"
      6. What do you mean CowboyNeal isn't the first?

    4. Re:Kurzweil by naasking · · Score: 2

      I have strong reservations about whether logic alone can achieve consciousness at all. The fact that it is asynchronous adds nothing that wasn't there before.

    5. Re:Kurzweil by Anonymous Coward · · Score: 0

      To prove that a system is asynchronous, it is sufficient to show the independence of only a small number of elements on a absolute timer. There are ALOT of Central Nervous System neurons that recieve no input from other neurons. That leads to the conclusion that a synchronizing signal can not originate from the rest of the network
      The only remaining way for an absolute time coordinate to exist in the brain through intracellular processes or the chemical environment of the entire brain.
      Now, the physiology of neurons is very diverse, there are more types of cells in neural tissue than in any other kind of tissue in the body. This means that the chances that a population of neurons will not respond to a single common chemical signal is quite high.
      Furthermore, and most importantly, chemical signals are most likely too slow to provide a high resolution timer for the neuron.
      As for intracellular mechanisms for timing, each neuron must have some common communication pathway to keep every neuron in sync. Many neurons have been shown to generate continous pulses without synaptic stimuli. No two neurons has ever been shown to be perfectly synchronized, or even have the exact frequency.
      This shows that it is unlikely that any synchronizing system exist for the brain as a whole. Of course the neural nets in concert with each other in the brain. This can be done with repetition of signals comming form each network, network redundancy, or linear pathways in order to avoid time mismatches. The brain is most certainly an asynchronous system by the way we define asynchronous.

    6. Re:Kurzweil by Anonymous Coward · · Score: 0

      There is a great dichotomy between synchronous and asynchronous quantum computers. Sync QCs can not generate the superpositions that some theorize that concious entails. This is because with the recycling of a quantum state through a single processing unit is vastly different from having two equivalent processors acting on a superposition. Async QC's networked like the brain might very well be the very physical basis for conciousness.

    7. Re:Kurzweil by brejc8 · · Score: 2

      Well lets see.
      Average (reather than worst) case ferformance.
      Lewer latency.
      Lewer power consumption.
      Zero power consumption static state.
      Lower EMI.
      Security by being imune to clock glitch attacks and some power attacks
      what else do you want?

    8. Re:Kurzweil by LordKane · · Score: 2, Interesting

      "ANNs have nothing to do with what's really going on in a biological brain, except that they are made of many interacting simple processing elements."

      I'm not sure quite how this can be. ANNs are inspired by and based on the biological brain. But they are not related? ANNs are just pattern matchers, and our brains are nothing like that? I beg to differ. ANNs are very similar to our brains. Humans are giant pattern matchers. How do we learn? Does stuff just pop into out heads and !BANG! we know it? No, we discover it or are told first. Science is based on being able to reproduce the results of an experiment, matching a cause->effect pattern. Speech is matching sound to meanings. Not everyone equates a sound to the same meaning, as patterns that people learned can be different. Animals are great examples of pattern machines. How are animals trained? Most often, by positive and negative reinforcement, which is essentially, conditioning. We do the same thing to our ANNs, you get a cookie if it's right, nothing if it's wrong. The close matches are kept, the others are thrown out. So, in what way are ANNs nothing like a biological brain? To me, it seems that they are incredibly similar, just on different scales. Our ANNs today are tiny and don't do to much as compared to the standard of a brain, which is layers upon layers of interlaced patterns. ANNs use simple structures as the basis for their overall structure, are our brain cells not very similar? To me, it seems that they are incredibly similar, just on different scales.

      --
      "Victims, aren't we all?"
    9. Re:Kurzweil by imadork · · Score: 5, Interesting
      Why does everyone seem to think that ANNs are the way toward "true AI?" ANNs are superb pattern matching machines. They can predict, and are resilient to link damage to some degree. But they do not think. ANNs have nothing to do with what's really going on in a biological brain, except that they are made of many interacting simple processing elements. The biological brain inspired ANN, but that's all.

      I couldn't agree more. I remember reading a comparison between the current state of AI and the state of early Flight Technology. (it may have even been here, I don't recall. I make no claim to thinking this up myself. Perhaps someone can point me to a link discussing who first thought of this?)

      One of the reasons that early attempts at flight did not do well is because the people designing them merely tried to imitate things that fly naturally, without really understanding why things were built that way in the first place. So, people tried to make devices with wings that flapped fast, and they didn't work. It wasn't until someone (Bernoulli?) figured out how wings work - the scientific principles behind flight - that we were able to make flying machines that actually work.

      Current AI and "thinking machines" are in a similar state as the first attempts to fly were in. We can do a passable job at using our teraflops of computing power to do a brute-force imitation of thought. But until someone understands the basic scientific principles behind thought, we will never make machines that think.

    10. Re:Kurzweil by pclminion · · Score: 5, Insightful
      I've had this argument many times. First, there's lots of evidence that biological brains are heavily chaotic, which ANNs traditionally are not. Second, brains are extremely recurrent in ways that could never be simulated by traditional computers -- there are simply too many links. Third, the human brain is not based merely on reward and punishment. When I sit in a chair at night, pondering whether I agree or not with what Bush has done today, there's no clear source of reward or punishment. Yet, at the end of the day, my brain has changed. ANNs have no ability to self-contemplate and change in this way.

      Fourth, when an ANN is trained, every weight in the network is changed. In a biological brain, particular links form and are destroyed, but learning is not a global process. I'm not a neuroscientist, so if I'm wrong, someone please point that out.

      Fifth, you can ask a human why he/she came to a particular conclusion. You can't ask an ANN why it reached a particular conclusion. Sometimes, analysis is possible on smaller networks. But for multi-layer networks with thousands of hidden units, this becomes impossible. I really don't think it's a question of computational power. I have a deep sense that somehow, biobrains are fundamentally different from their mathematical cousins.

      I won't claim that ANNs have no place in thinking machines. But having worked with them extensively, I feel that, although they are extremely valuable computational tools, they are not a magic wand. Many pattern recognition and data organization tasks can be much better performed by traditional symbolic algorithms.

    11. Re:Kurzweil by naasking · · Score: 2

      You misunderstand. Asyncrhonous circuits certainly have different features from synchronous circuits, there is no disputing this. But in terms of input and output, you would expect an asynch and synch chip to produce the same results if running the same program right? The logic is the same. I mention this because Kurzweil is a proponent of strong AI which claims that consciousness is merely some form of algorithm that any computational device can run. I was merely doubting that consciousness is purely a function of logic, and therefore consciousness cannot be expressed algorithmically. Consequently, since asynch logic is still defined by logic, it adds nothing new to the AI equation and will no more produce consciousness on a chip than synchronous circuits.

    12. Re:Kurzweil by the_2nd_coming · · Score: 1

      so you can ask a baby why he or she has come to a conclusion?

      you cannot think of todays ANNs as adults, you have to think of them as babies.

      Humans learn HOW to make desicions and HOW to formulate a logical reasoning.

      children do not have logical reasoning, when you ask them why they drew on the walls, they say becasue, and when you push them for an answer, they say "i don't know"

      we learn everything that you have listed above, and we do not know if a sufficiently complex ANN will be able to do the same until we can build it and test it.

      --



      I am the Alpha and the Omega-3
    13. Re:Kurzweil by Anonymous Coward · · Score: 0

      Unfortuneately, you have oversimplified the potential for mapping human neural networks in asynchronous processors and overestimated the complexity of the human brain. Conscious thought has little (and often) nothing to do with action, more often than not our conscious thoughts are post-hoc to our actions. For the rare times they are not, it is a great feat of neural network overriding, requiring high amounts of measureable, trackable backpropogation. (Insert free-will debate here) The seemingly countless number of neurons in our head can be quite easily mapped using our crude modern MRI and fMRI technology. There may be small walls in software and hardware, being able to use and process this information on a small scale is possible now, to the degree of complexity of the human mind, however, we are still a few years off. Just don't go so far as to apply a black-box model to the human mind, remember, our brains are grounded in the laws of the physical world, with enough science and study it is possible to figure out exactly how they work (Insert religious debate here) at least, to within an acceptable degree of accuracy.

    14. Re:Kurzweil by Barsema · · Score: 1

      The funny thing is bernouli was wrong!
      The reason wings work, isn't because of the presure difference between de slow and fast flowing air above and below the wing. It is because of the direction the airflow has leaving the wing (pointing down).And So it proves that even if you don't know how wings work, you can still fly.

    15. Re:Kurzweil by Christopher+Thomas · · Score: 2

      Brains use async logic elements. Maybe the only way to achieve good artificial intelligence with practical speeds is with async logic.

      The way to achieve good artificial intelligence is to have a good understanding of how intelligence in general works, at all levels. I doubt the low-level implementation matters much at all.

      Arguing about synch vs. asynch is like trying to decide whether to use vacuum tubes or relays to build a computer, while having no knowledge of combinational logic.

      And IMO, arguing about neural nets versus other pattern-processing devices is like arguing about whether to use static CMOS or dynamic logic, while having no knowledge of the system-level design of processors.

      We'll see what happens when our understanding of the nature of the human mind and of intelligence in general improves.

    16. Re:Kurzweil by PetiePooo · · Score: 1

      Average (reather than worst) case ferformance.
      Lewer latency.
      Lewer power consumption.

      How about a spell checker?

    17. Re:Kurzweil by brejc8 · · Score: 2

      These IR keyboards have a fantastic ability to perform thesame transmition error time after time.

  5. What's wrong with synchronous? by phorm · · Score: 5, Interesting

    On the flip side, the millions of simultaneous transitions in synchronous logic begs for a better way, and that may well be asynchronous logic

    The advantage outlined here seems to be independant functionality between different areas of the PC. It would be nice if the components could work independently and time themselves, but is there really a huge loss in sustained synchonous data transfer?

    From what I've understood, in most aspects of computing, synchronous data communication is preferable. IE, network cards, sound-cards, printers, etc. Don't better models support bi-directional synchronous communication?

    1. Re:What's wrong with synchronous? by Hard_Code · · Score: 4, Funny

      "but is there really a huge loss in sustained synchonous data transfer?"

      I'll answer that question, right after I look up the answer in memory...

      --

      It's 10 PM. Do you know if you're un-American?
    2. Re:What's wrong with synchronous? by Junks+Jerzey · · Score: 5, Insightful

      From what I've understood, in most aspects of computing, synchronous data communication is preferable. IE, network cards, sound-cards, printers, etc. Don't better models support bi-directional synchronous communication?

      You're just talking about I/O. Of course I/O has to be synchronous, because it involves handshaking.

      I think there are some general misconceptions about what "asynchronous" means. Seriously, all I'm seeing are comments from people without a clue about chip design, other than what they read about at arstechnica.com or aceshardware.com. And if you don't know anything about the *real* internals of synchronous chips, then how can you blast asynchronous designs?

      So-called asynchronous processors have already been designed and prototyped. Chuck Moore's recent (as in "ten years old") stack processors are mostly asynchronous, for example. Most people are only familiar with the x86 line, and to a lesser extent the PowerPC, and a much, much lesser extent the Alpha and UltraSPARC. Unless you've done some research into a *variety* of processor architectures, please refrain from commenting. Otherwise you come across like some kind of "Linux rules!" weenie who doesn't have a clue what else is out there besides (Windows, MacOS, and UNIX-variants).

    3. Re:What's wrong with synchronous? by Orne · · Score: 5, Informative

      The root problem is data transfer within the CPU, not data transfer between I/O devices.

      The clock speed (now >10E9 Hz) is the upper limit of your chip's ability to move a voltage signal around the chip. Modern CPUs are "staged" designs, where data is basically broken into an opcode "decode" stage, "register load", "operation", and "register unload" stages. For a given stage, you cannot clock the output of the stage faster than the time it takes for the computations to complete, or you're basically outputting garble.

      A synchronous design indicates that every flip-flop on the chip is tied to the same clock signal, which can mean one HUGE amount of wiring just to get everything running at the same speed, which raises costs. On top of that, you have charging effects due to the switching between HI and LO, which can cause voltage problems (which is why capacitors are added to CPUs) Then add resistive effects, where current becomes heat, and you run the risk of circuit damage. All of this puts some hard limits on how fast you can make a chip, and for what price.

      Asynchronous chip design allows us to throw away the clock circuitry, and every stage boundary becomes status polling (are you done yet, are you done yet, ok, lets transfer the results). With proper design, you can save a lot of material, you can decouple the dependance of one stage on another, so the max instruction/second speed can now run at the raw rate of the material.

    4. Re:What's wrong with synchronous? by anonymous+loser · · Score: 5, Informative
      The advantage outlined here seems to be independant functionality between different areas of the PC. It would be nice if the components could work independently and time themselves, but is there really a huge loss in sustained synchonous data transfer?


      Yes, for many reasons which are somewhat glossed over in the article (I guess the author assumes you are an EE or CPE familiary with the subject). Here's a quick breakdown of the two major issues:


      1. Power Distribution & Consumption - In a synchronous system, every single unit has a clock associated with it that runs at some multiple of the global clock frequency. In order to accomplish this you must have millions of little wires running everywhere which connect the global clock to the individual clocks on all the gates (a gate is a single unit of a logic function, sorta like a 0 or 1). Electricity does not run through wires for free except in superconductors. Real wires are like little resistors in that to push the current through them, you have to give up some of the power you are distributing (how much is a function of the cross-sectional area of the wire). The power which doesn't make it through the wire turns into heat. One of the reasons you can fry an egg on your P4 is because it's literally throwing away tons of power just trying to syncrhonize all the gates to the global clock. As stated in the article, in an asynchronous system, the clocks are divided up on a modular basis, and only the modules that are running need power at all. This design technique is already used to some degree in synchronous designs as well (sorta like the power saving feature on your laptop), but does not benefit as much since in a synchronous design must always trigger at the global clock frequency rather than only triggering when necessary.


      2. Processor Speed - Much like the speed of an assembly line is limited to the slowest person on the line, so too is the speed of a CPU limited to the slowest unit. The problem with a synchronous design is that *everything* must run at the slower pace, even if they could theoretically move faster. In an asynchronous design, the parts that can go faster, will, so the total processing time can be reduced.


      Hope that helps.

    5. Re:What's wrong with synchronous? by Rolo+Tomasi · · Score: 3, Informative

      AFAIK the modern CPUs are already asynchronous internally to a large extent. This is because at today's clock frequencies, the signal runtime difference becomes significant, i.e. by the time it takes for the signal to move across the whole die, several clock cycles would already have passed. So, prefetch, ALU, instruction decoding, FPU, etc. all operate independently from each other. I'm no expert on this though, maybe someone more knowledgable than me can shed more light on this.

      --
      Did you know you can fertilize your lawn with used motor oil?
    6. Re:What's wrong with synchronous? by hamsterboy · · Score: 2, Informative
      Actually, the biggest advantage is in routing.

      On a synchronous design of any complexity, quite a bit of the routing (i.e. where the wires go) is due to clock distribution. The CLK signal is one of the few that needs to go to every corner of the chip. There are various strategies for doing this, but they all have difficulties.

      One method is to lay a big wire across the center of the chip. Think of a bedroom, with the bed's headboard against one wall; you end up with a U-shaped space. Now, suppose you (some data) need to get from one tip of the 'U' (the decoder) to the other (an IO port). Either you have to walk around the entire bed (a long wire), or go over it (a shorter wire). The obvious choice is to go over, but when you have a wire with one voltage crossing a wire with a (potentially different) voltage, you get capacitance, and that limits the clock speed of the entire chip.

      With an asynchronous design (lots of smaller blocks with their own effective clocks), you don't have this. Data can be routed wherever it needs to go, without fear of creating extra capacitance. The downside is that they're very difficult to design. This is partially because there are no tools for this - most of the mainstream hardware simulators slow waaaaaaayyy down once you get more than a few clock signals running around.

      -- Hamster

    7. Re:What's wrong with synchronous? by default+luser · · Score: 3, Informative

      Actually, most popular communications formats are "asynchronous".

      Don't confuse yourself. Synchronous communications involve a real-time shared clock between points.

      Then you have asynchronous communications standards like RS-232. The sender and receiver choose a baud rate, and the receiver waits for a start bit, then starts sampling the stream using it's local clock. So long as the clocks are close enough, and the packets are short enough, you'll never get an error.

      Then you have standards like Fast Ethernet, which are also asynchronous. AFAIK, the clock used to decode the Ethernet packet is contained somewhere in the preamble, and a PLL is tuned to the packet's clock rate. This is to avoid the obvious problems of the simple async communications of RS-232.

      A SAMPLE OF THE ACTUAL CLOCK used to encode the packet is avaliable to the receiver, but the receiver can only use this to tune it's local clock. It has to do the decoding asynch.

      --

      Man is the animal that laughs.
      And occasionally whores for Karma.

    8. Re:What's wrong with synchronous? by CvD · · Score: 2

      But that doesn't take out the fact that there's still a slowest person in the line. Granted, for some cycles this person might not be needed, but what if they were for some calculation... it would not speed up the process.

      It's not that I disagree with the asynchronous design... I see the benifits, just pointing out a little (IMHO) flaw in your logic. :-)

    9. Re:What's wrong with synchronous? by coinreturn · · Score: 1
      One of the reasons you can fry an egg on your P4 is because it's literally throwing away tons of power just trying to syncrhonize all the gates to the global clock.

      Actually, you're quite wrong here. Most of the power in a CMOS device is burned up by state transition. Yes there is power spent on the clock (it is the fastest signal), however, the millions of flip-flops toggling swamp the clock power! Flip-flops only toggle when functions are being performed. Therefore, most of the power consumption is "useful" power. Asynchronous designs generally resemble a complicated rat's nest of "thank you" notes being passed back and forth, especially if the task is not purely a straight line chain of operations.

    10. Re:What's wrong with synchronous? by BlackGriffen · · Score: 2

      Is is also possible to get more finely grained parallelism in the processor this way? Say, for instance, one certain stage of the pipe runs at half the speed of the other stages. Could one then just replace one of these stages with two, and have the pipeline alternate which stages it uses?

      BlackGriffen

    11. Re:What's wrong with synchronous? by iabervon · · Score: 2

      The stage boundaries are already essentially status polling, because the stages are, themselves, pipelined, with different lengths depending on the complexity of the particular unit. Due to all of the out-of-order and parallel execution, it would be a pain to keep track outside of the unit what to expect when; instead, the information just goes through with the data. This does, however, avoid the problem of the clock being too fast for some stages.

      The real issue is clock distribution, because, unlike power and ground, you have to distribute clock in wires (rather than plates held at different voltages), and you have to move a lot of current around all over the place, which makes the inductive issues more complicated to simulate and work out: you've put a strangely-shaped antenna broadcasting a tone with harmonics at exactly the frequencies you care about in the middle of your chip.

    12. Re:What's wrong with synchronous? by sketerpot · · Score: 1
      If asynchronous chip design became widespread, I can foresee one good thing that doesn't have anything to do with routing or capacitance: AFAIK, clock cycles would be eliminated so chip companies would finally stop saying things like, "our chip is better than theirs because ours has more gigahertz in it".

      In its place, an alternate and better method of classifying chip performance would have to be put in place. What would it be? Quake benchmark results?

    13. Re:What's wrong with synchronous? by karlm · · Score: 2
      Then you have standards like Fast Ethernet, which are also asynchronous. AFAIK, the clock used to decode the Ethernet packet is contained somewhere in the preamble, and a PLL is tuned to the packet's clock rate.

      You're right. Metcafe's prototype and all variants tereafter (that I'm aware of) use a phase-modulated baseband signal. (Cable modems use somethign very similar to ethernat, except they use otherwise unused cable channels instead of using baseband.) You have a bunch of leading zeroes to get the PLL locked, then a 1 to signal the beginning of the header. Some of the leading zeros get discarded with every hub/switch thepacket goes through as the PLL is locking on to the clock. The original ethernet paper is a good read, one of those things wher you sit back afterwards and say to your self "that's the right way to do it".

      --
      Copyright Violation:"theft, piracy"::Anti-Trust Violation:"thermonuclear price terrorism"<-Overly dramatic language.
    14. Re:What's wrong with synchronous? by NSParadox · · Score: 1

      Hrm, I thought standard Ethernet was synchronous, using Manchester encoding to include the clock signal with the data signal.

      Maybe my memory doesn't serve me correctly.

      --
      Unless mankind redesigns itself .... robots will take over our world. (Stephen Hawking)
    15. Re:What's wrong with synchronous? by Cheesemaker · · Score: 1

      Yes, there is still a slowest person in the line, but he doesn't necessarily hold up EVERY operation anymore, so the process can run at the AVERAGE speed, instead of the worst-case speed. This is all data-dependent, though. It can get quite complex between the trade-offs in asynchronous design.

    16. Re:What's wrong with synchronous? by Anonymous Coward · · Score: 0
      And if you don't know anything about the *real* internals of synchronous chips, then how can you blast asynchronous designs?

      (seems like this is heading towards being a meta-conversation, but anyways...) What you're witnessing is a fairly standard mechanism of discussion and learning, wherein people speculate and theorize and are consequently corrected by those who know more. It's actually a highly educational process, because straight recitations of known facts seldom address the curiosities of people who are just learning a given subject.

    17. Re:What's wrong with synchronous? by Istealmymusic · · Score: 2
      Most people are only familiar with the x86 line, and to a lesser extent the PowerPC, and a much, much lesser extent the Alpha and UltraSPARC.

      Alright, you got me here. I hope I'm not too late in responding, but I am genuinely interested in the Alpha processor. So much I signed up for a free account on the Super Dimensional Fortress 64-bit non-profit public access supercomputing center. They run NetBSD (no Linux weenies there, hehehe). I've had a difficult time finding beginner tutorials, I got the official specs from ftp.digital.com (still up after all these years+acqusitions:), but I'm looking for a kinder, gentler introduction. Google returned some semi-useful docs, but if you could recommend some authoritive recommended sources I would be eternally grateful.

      --
      "The lesson to be learned is not to take the comments on slashdot too literally." --Vinnie Falco, BearShare
  6. Problem with Async by adrox · · Score: 3, Insightful

    The problem with asynchronous logic is that even though it might seem faster in theory you have to deal with the introduction of many new race conditions. Thus to prevent to the race conditions you need to implement many handshacking methods. In the end it really becomes no faster than sychronous logic due to the handshacking. This is especially true these days with 2.5 GHz CPUs.

    1. Re:Problem with Async by brejc8 · · Score: 2

      Nowdays we have good software which ensures you dont have race conditions. Infact this is where async becomes great as your data and clock is one big rase condition. The clock must be slower than data.

    2. Re:Problem with Async by taeric · · Score: 3, Informative

      Not sure if you were serious or not...

      Software will having next to nothing to do with the race conditions in the processor. Instead, the race condition you pointed out will be the difficulty. That is, how can you ensure the "ready" signal is indeed slower then the computations that a module is performing? This is not an easy thing to do. Especially if you want it to report as soon as it is done. Most likely, a signal will fire after the longest time a unit could take. You do not have a speed up for the fast solutions, but you don't have to worry about complex logic on the ready path, either. Another solution would be handshaking, but then you may run into an explosion in the amount of logic.

      Also, something I think would be a problem. Many of the current optimizations in out of order execution are almost custom fit to a clocked design. That is, the processor knows IO will take so many cycles, branches take a certain amount, etc. Now, currently (especially with hyperthreading) the processor is coming closer to keeping the execution units busy at all times. Do people really expect some magical increase when the clock is taken out? The scheduler will have to change dramatically. Right?

    3. Re:Problem with Async by brejc8 · · Score: 2

      This is done using handshaking. Its a method of communication and ensuring that both partys are happy before moving onto the next piece of data.
      As for logic there are several methods to ensure that the result is ready before the latch switches. Using matched delays involves races but is safer as its nore local than a global clock.
      A better method is using things like dual rail and Delay insensitivety. This uses two wires to communidate data. Wiggle one for a one and the other for a zero. No races.
      Asynchronous isnt that weird you know. Fine an instruction might take a 1ns or 1.2ns depending on the data. It still follows the rules of sequencing.

      Read first chapter of this for more details of race free computation.

      I even made a method of converting synchronous designs into async ones automaticly.

    4. Re:Problem with Async by brejc8 · · Score: 2

      Oh wait i see what youre getting at. The software is used in the design process reather than at run time. If you use a tool like "balsa" to design then you can get race free implementations.

    5. Re:Problem with Async by Anonymous Coward · · Score: 0

      "The problem with asynchronous logic is that even though it might seem faster in theory you have to deal with the introduction of many new race conditions. Thus to prevent to the race conditions you need to implement many handshacking methods. In the end it really becomes no faster than sychronous logic due to the handshacking. This is especially true these days with 2.5 GHz CPUs."

      This comment is wrong, wrong, wrong. I work in the caltech group responsible for the MiniMIPS (http://developers.slashdot.org/comments.pl?sid=42 858&cid=4496247). Modern Asynchronous circuits do not suffer from race conditions. This problem is largely avoided through the use of slack-elastic deterministic logic. It is true that the fastest and best synchronous circuits appear similar in structure to asynchronous circuits (the completion tree and validity checking transistors are replaced by the clock transistors). Thus, synchronous design practices are converging on standard asynchronous practices.

      However, synchronous design is always needlessly conservative. Anyone who has overclocked a processor knows that the rated speed is grossly understated. Asynchronous logic is "self-overclocking" and runs at the physical device limit. It does this without generating excessive heat because there is no power-hungry clock distribution network. Intel implemented an asynchronous version of the Pentium III and tripled the performance.

      The only real impediment to asynchronous design is that entire world of system components are built around synchronous logic. There is a high cost of converting from asynchronous signaling to synchronous signaling. (This is a form of the meta-stability problem if you want to look up more information).

    6. Re:Problem with Async by taeric · · Score: 2

      :) Yeah, I got confused by your use of the word software at first. Looking at it now, you were obviously talking about design software. Oops.

      Still, a few more questions. When I think of most async designs, I think of the ready signal as being a designed race condition where the ready signal is guaranteed to fail. The only difference between this and clocked designs is that this condition is determined by the module (not a global clock) and can vary. Is this wrong?

      If not... then that part I get. However, I fail to see how there will not be some logic considerations when you move to a non-clocked system. First, since there is no deterministic way to know how long a module will take, there is no way to know what can be done in the wait period. That is to say, when a module "blocks", would it be advantageous to wait, or to do something else then check back?

      The way I see it, there are four possibilities.
      1) You wait, and the wait time was considerably shorter due to the async design. This is obviously a win on the async side.
      2) You wait, but the wait time was the same as a sync design. I see this as detrimental. (Unless no work could have been performed in the wait time, obviously)
      3) You complete another "ready" task and check back later, but the process was ready well before you checked back. Nothing really lost here, but what was gained?
      4) You complete another "ready" task and check back later, and the process is "ready" shortly before you get back.

      To me, with hyperthreading and lots of other new designs, 4 is the designed for solution today. So, in theory, you can keep the processor occupied at all times.

      Now, my main comment, if the processor is busy at all times (in all places) what can be gained by going to async design? I do agree it is worth looking into, simply because it is there, but I am skeptical of those that think a magnitude of performance increase is possible overnight.

      Also, I am only looking at this from a CPU perspective in this. I can see the obvious advantages of it elsewhere. (Esp. in regards to power.)

    7. Re:Problem with Async by Tjp($)pjT · · Score: 2

      The calculation of the race conditions is what you use to get the performance. You eliminate the handshaking and in some cases add extra buffers in to get the timing correct. Handshaking is what makes synchronous logic synchronous. Asynchronous runs constantly at race conditions and if done correctly delivers the expected output in a calculated window (of time) from the presentation of the inputs. The only way you generate the handshaking signals you refer to is to have them generated in response to the presentation of data taking into account the skew of the various signals involved. Most folks in logic design would call those handshaking signals clocks and thus the generation of "many handshaking signals" defies the definition of asychronous logic and actually makes the design syncronous. It is a "wheel of incarnation" thing. In the early seventies quite a few designs had an overload of one-shots for timing (an asyncronous logic concept, but a bad one), late seventies syncronous logic eliminated them and improved reliability, then in the eighties asyncronous logic was refined by the big players. Then syncronous logic overcame some of its problems (like the skew of all those clock signals) and it became predominate in both research and implementation. Now as the chips grow larger and the systems get more complex, the skew of the clock signals is again a really nasty problem.
      So we turn again to asyncronous logic to solve the problems.

      As a Russian friend of mine is fond of saying, the only thing new is history that has been forgotten.

      --
      - Tjp

      I am in wallow with my inner money grubbing capitalistic pig. ... Oink!

    8. Re:Problem with Async by brejc8 · · Score: 2

      The first chapter of this explains a lot.

  7. Cyclic History by nurb432 · · Score: 5, Interesting

    Isn't this where the idea of digital logic really got started? At least its how it was taught when I was in school.

    We even did some design work in async. Cool stuff. Easy to do, fast as hell...

    Never did figure out why it never caught on. Except for the difficulty in being general purpose.. so easy of a job with sync logic. And i guess it does take a certian mind-set to follow it.

    --
    ---- Booth was a patriot ----
    1. Re:Cyclic History by Anonvmous+Coward · · Score: 4, Interesting

      "Never did figure out why it never caught on."

      I think the internet is a good metaphor of this technology. Take Quake 3 for example. Think about what all it takes to get several people playing over the net. They all have to respond within a certain time-out phase, for adequate performance they have to respond in a fraction of the timeout time, and there's a whole lot of code dedicated to making sure that when I fire my gun, 200ms later it hits the right spot and dings the right player for it.

      It works, but the logic to make that work is FAR more complex than the logic it takes to make something like a 'clocked internet' work. The downside, though, is that if you imagine what a clocked internet would be like, you'd understand why Q3 wouldn't work at all. In other words, the benefits would probably be worthwhile, but it's not a simple upgrade.

  8. Intel and asynch clocks by catwh0re · · Score: 4, Interesting
    A while back I read an article about intel making p2 clockless chips, that performed rougly 3 times(in MHz terms not overall performance) faster.

    Intel recognise clockless as the future, and hence the P4 actually has portions designed that are clockless.

    Before know-it-all's follow this up with "but it runs at 2.xx GHz", let them please read an article on about how much of your chip is oscilating at that immense speed.

    As it's said in the EE industry, "oh god imagine if that clock speed was let free on the whole system"

    1. Re:Intel and asynch clocks by poot_rootbeer · · Score: 1

      A while back I read an article about intel making p2 clockless chips, that performed rougly 3
      times(in MHz terms not overall performance) faster.


      ZUH?

      How do you measure performance in MHz on a processor without a clock?

    2. Re:Intel and asynch clocks by catwh0re · · Score: 1

      what I meant by this comment is that a P2 200MHz performed like what a P2 600MHz would perform. Not a situation where the performance of the 200 was 3 fold.(Prays to god that people don't message him with, "but the 600MHz IS 3 times faster than the 200MHz")

  9. I've had this for years... by Call+Me+Black+Cloud · · Score: 5, Funny

    and it doesn't work all that great.

    It usually goes like this: little head decides to take some action that big head later decides wasn't such a good thing to do.

    Fortunately I've invested in a logic synchronization device, which I like to call "wife". Wife now keeps little head from failing to sync with big head through availability (not use) of tools "alimony", "child support", and "knife" (aka "I'll chop that damn thing off while you sleep!")

    1. Re:I've had this for years... by Hard_Code · · Score: 2

      Yes, but then you lose the benefits of branch prediction...

      --

      It's 10 PM. Do you know if you're un-American?
  10. Doing it already... by Sheetrock · · Score: 2, Informative
    Technically speaking, if you're not using a SMP system you're processing logic asynchronously.

    But more to the point: while asynchronous logic may appear to offer a simple tradeoff (slower processing time for more efficient battery life), recent advances in microsilic design make the argument for asynchronous components moot. For one thing, while two synchronous ICs take twice the power of one asynchronous IC (not quite because of the impedance caused by the circuit pathway between two chips, but that's negligible under most circumstances), they will in general arrive at a result twice as quickly as its serial pal. Twice as quick, relatively equal power consumption.

    The real reason for the drive towards asynchronicity is to cut down on the costs of an embedded design. Most people don't need their toaster to process the 'Is the bread hot enough' instruction with twice the speed of other people's toasters. But for PDAs (Personal Data Assistants) or computer peripherals I wouldn't accept an asychronous design unless it was half as much.

    --

    Try not. Do or do not, there is no try.
    -- Dr. Spock, stardate 2822-3.




  11. might be a while... by jaredcoleman · · Score: 2, Interesting

    These chips are great for battery powered devices, such as pagers, because they don't have to power a clock. Extends the batt life at least 2x. But even if the advantages are superior to clocked chips for larger markets, how do you market something like this to people who want to see "Pentium XXXVIV 1,000,000 Ghz" on the packaging?

    1. Re:might be a while... by Tjp($)pjT · · Score: 2

      It is a divide by zero problem. Async chips would have an infinite clock frequency.

      --
      - Tjp

      I am in wallow with my inner money grubbing capitalistic pig. ... Oink!

    2. Re:might be a while... by PacoTaco · · Score: 2

      Pentium 2003? Your other option would be a new bright color scheme each year.

  12. Re:Some further information by Anonymous Coward · · Score: 4, Informative
    "PhysicsScholar", don't karma-whore and post plagiarizing. You copy-and-pasted from http://www.cis.unisa.edu.au/~cisdak/nResearch/Asyn c.html. This gets you moderated "Redundant."

    It'll be enlightening for people to just go there and read your information in context anyway, plus there are links to papers and stuff. You shoulda posted the link!!

  13. Beowulf redundant once you have async chips by Xeger · · Score: 4, Interesting

    In a way, an asynchronous circuit design already is a parallel computer. An asynchronous machine contains many (largely) independent components that communicate with each other in order to solve computational problems more efficiently by breaking them down into small pieces and working on them in parallel.

    In this context, your notions of parallel computing will change greatly. Currently, individual nodes in a cluster are islands of computation, separated by (comparably) vast distances. Messages between nodes take orders of magnitude more time than messages within a node.

    When you set out to build a supercomputing cluster in the asynchronous world, ideally the entire cluster would be within a single die. Then the latency between nodes would be reduced to microseconds or nanoseconds, and nodes could split work more effectively. The high-speed buses and complex arbitration schemes required for asynchronous computing will be equally useful for designing massively parallel clusters-on-a-chip.

    1. Re:Beowulf redundant once you have async chips by Christopher+Thomas · · Score: 2

      In this context, your notions of parallel computing will change greatly. Currently, individual nodes in a cluster are islands of computation, separated by (comparably) vast distances. Messages between nodes take orders of magnitude more time than messages within a node.

      When you set out to build a supercomputing cluster in the asynchronous world, ideally the entire cluster would be within a single die.


      This would be nice, but in order to fit a thousand-node cluster on one die, we'd need a thousand times our current transistor density.

      And asynchronous computation isn't required to do this - look up "CMP" (Chip Multi-Processing) to see synchronous multi-core designs that have been studied (and built, in the Power4's case).

      Asynchronous logic affects low-level circuit implementation. Often this has significant consequences, but the high-level structure of a computer system doesn't change.

    2. Re:Beowulf redundant once you have async chips by Xeger · · Score: 2

      I think I may have confused the issues somewhat; having been recently introduced to the hot new buzzword "grid computing," my dreams have been filled with visions of large processor cores with no fixed pipeline that can reconfigure themselves for different tasks, and have several operations in progress at once, taking several pathways through the core.

      Contrast this to my real-life experience with asynchronous circuits--a single undergrad course that involved hours of checking for race conditions, twiddling bits, and verifying timing--and you can see why my romantic side got carried away!

      I suppose, for the immediate future, that asynchronous logic elements will simply augment current processor designs as you (and others) have outlined in this discussion. How long, then, until we reach a paradigm shift and start designing our processors in a fundamentally different way?

  14. Asynchronous logic vs radiation ? by renoX · · Score: 4, Interesting

    I'm wondering how asynchronous logic stand up against transiant errors induced by a cosmic ray?

    On a synchronous circuit most of the time such glitch won't do anything because it won't occur at the same time the clock "ring" so the incorrect transient value will be ignored.

    As the "drawing size" of circuits gets lower and lower, every circuit must be hardened against radiations, not only circuits which must go on space or in planes..

    1. Re:Asynchronous logic vs radiation ? by Xeger · · Score: 2

      You could mitigate this problem somewhat by including redunant computation as part of your asynchronous workload. If radiation only causes local transients, then any sensitive operations could be performed by two different units, and their results compared in a third unit.

      The disadvantage is that a glitch in any of the three units would result in a computation being detected as invalid. And, of course, it adds even more complexity to an already staggeringly complex intra-unit communication problem.

      The advantage is that you don't need to spend as much time radiation-hardening your chips. Also, they become more naturally fault tolerant. For the longest time, system design in the space exploration field has been dominated by multiple redundancy; I think they would really dig multiple redundancy within a single chip.

    2. Re:Asynchronous logic vs radiation ? by brejc8 · · Score: 3, Informative

      There are two factors here.
      Firstly the on a glitch the synchronous part will take a certain period to return a wire low/high and resume its operation. By then it would be too late as the clock has gone. A asynchronous property called Delay Insensitivety which some designs have allows any wire to have any delay to rise or fall. So you can pick of any wire from your lets say ALU reeroute it outside the chip through a a telephone line to the other side of the world and back to the inside of the chip and the design would still work (maybe 1 ips but never the less the result would be correct)
      Secondly async releases much less EMI. The inside of your computer is riddled with radiations much nastyer than cosmic rays. Most chips are composed of millions of arials which pickup all these rays and make your chip malfunction. Fine you can slow down your clock and hope for the best but its better not to create them in the first place.

    3. Re:Asynchronous logic vs radiation ? by pmz · · Score: 2

      I'm wondering how asynchronous logic stand up against transiant errors induced by a cosmic ray?

      What about ECC on each internal bus? It works well for external busses (RAM, etc.).

    4. Re:Asynchronous logic vs radiation ? by Christopher+Thomas · · Score: 2

      I'm wondering how asynchronous logic stand up against transiant errors induced by a cosmic ray?

      On a synchronous circuit most of the time such glitch won't do anything because it won't occur at the same time the clock "ring" so the incorrect transient value will be ignored.


      Yes and no. The setup and hold times for registered logic is a significant fraction of the clock cycle, leaving much opportunity for data corruption from transient events. An upset within a register also stands a chance of flipping a bit value even while holding.

      Synchronous chips already have error-correction measures built in to handle transient faults. Many other mechanisms have been studied over the years, ready for the day that chips are complex enough to need them. Most of these can be applied to asynchronous chips/logic as well.

      As the "drawing size" of circuits gets lower and lower, every circuit must be hardened against radiations, not only circuits which must go on space or in planes.

      Actually, smaller linewidth makes faults less likely (or so says my father, who did an extensive study of radiation effects). Smaller features mean less of a chance of a ray hitting any given gate. A design with a constant number of gates actually improves in reliability as it is shrunk.

      If you scale linewidth but hold chip area constant, then you'll have the same number of radiation events per second, of course. But you have more transistors to allocate to error correction, and the probability of an event per clock cycle still goes down (as event rate stays constant but clock frequency increases).

      It's an interesting problem, and not a new one (look up "alpha particles" in the Jargon File some time).

  15. ok, but... by Anonymous Coward · · Score: 1, Insightful

    ... where are the designn tools?

    We all know about the advantages async logic has in many respects to clocked one. The problems is, the async logic *design* tools are nowhere as good or as many as the tools available for designing clocked logic.

    Chicken and egg problem? Maybe, or maybe just another untapped opportunity for those crazy software people...

  16. Asynchronous Logic by Anonymous Coward · · Score: 0

    Ready? Not right now.

  17. Re:Some further information by Milican · · Score: 1, Informative

    Because posting without giving credit to original author is wrong.

    JOhn

  18. More info: by slamden · · Score: 5, Informative

    There was an article in Scientific American about this just recently...

  19. What if? by bunyip · · Score: 5, Insightful

    I'm sure that many /. readers, like me, are wondering if asynchronous chips get faster if you pour liquid nitrogen on them.

    Seriously though, does the temperature affect the switching time? Or does the liquid nitrogen trick just prevent meltdown of an overclocked chip?

    1. Re:What if? by brejc8 · · Score: 3, Funny

      Yes they do. We had a demonstration board where if you sprayed some CFC sprey then it would increase in speed. Only a little because it was plastic packaging but it was quite cool.
      When testing it I left it running a dhrystone test overnight logging the results and as the office would cool down at night the chip went a little bit faster. as slow down by the morning. I think i might have invented the most complex thermomiter ever.

    2. Re:What if? by twfry · · Score: 3, Informative
      Yes, temperature does effect switching time, although not nearly as much as voltage for sub-micron channels. Lower temperature translates into slightly faster switching times. But if you really wanted to speed up a path, a slightly higher voltage will perform the job better. Also, in the field its easier to have control over voltage than temperature.

      As a result of this, one of the newer hardware design ideas it to provide multiple voltage levels within a chip. Higher performace logic is driven by a larger voltage difference than logic where performance is not as much of a concern.

    3. Re:What if? by Si_Cowboy_03 · · Score: 2, Informative

      Asynchronous circuits inherently run at the fastest possible speed, given the conditions (i.e. temperature, operating voltage), because they are self-timed, not timed by an external source. Transistors change state faster in lower temperatures and higher voltages. Since the transistors trigger each other to change states, that automatically happens as fast as possible. In synchrounous logic, the clock time is the assumed ammount of time of the worst case of the slowest transistor combination.

  20. Read the article by Animats · · Score: 5, Informative
    Read the cited article: "Asynchronous Logic Use -- Provisional, Cautious, and Limited". The applications being considered aren't high-end CPUs. Most of the stuff being discussed involves low-duty-cycle external asynchronous signals. Think networking devices and digital radios, not CPUs.

    In synchronous circuits, there are power spikes as most of the gates transition at the clock edge. It's interesting that this issue is becoming a major one. ICs are starting to draw a zillion amps at a few millivolts and dissipate it in a small space while using a clock rate so high that speed of light lag across the chip is an issue. Off-chip filter capacitors are too far from the action, and on-chip filter capacitors take up too much real estate. Just delivering clean DC to all the gates is getting difficult. But async circuitry is not a panacea here. Just because on average, the load is constant doesn't help if there are occasional spikes that cause errors.

    One of the designers interviewed writes: "I suspect that if the final solution is asynchronous, it will be driven by a well-defined design methodology and by CA tools that enforce the methodology." That's exactly right. Modern digital design tools prevent the accidental creation of race conditions. For synchronous logic, that's not hard. For async logic, the toolset similarly has to enforce rules that eliminate the possibility of race conditions. This requires some formal way of dealing with these issues.

    If only programmers thought that way.

    1. Re:Read the article by naasking · · Score: 2

      For synchronous logic, that's not hard. For async logic, the toolset similarly has to enforce rules that eliminate the possibility of race conditions. This requires some formal way of dealing with these issues.

      aka, Design Patterns.

  21. asynchronous logic? by snatchitup · · Score: 2, Interesting

    Sounds like my wife.

    But seriously, isn't that an oxymoron?

    At first, I thought it meant that we take a program, break it up into logic elements and scramble them like an egg. That won't work.

    But after reading, I see it means that everything isn't pulsed by the same clock. So, if a circuit of 1,000 transistors only needs 3 picoseconds to do it's job, while another 3000 transistors actually need 5 picoseconds, then entire 4000 transistors are turned on for5 picoseconds. So, 3000 transistors are needlessly powered for 2 picoseconds.

    This adds up when we're talking 4 million transistors and living in the age of the Gigahertz.

  22. am i ready? by cheesyfru · · Score: 4, Funny

    Am I ready for asynchronous logic? It doesn't really matter -- it can come along whenever it wants, and I'll come use it when I have some spare cycles.

    1. Re:am i ready? by Anonymous Coward · · Score: 0

      hehe.. uh, well.. i think the important thing is to contact congress and tell them critters to make sure we got free pr0n and some dole checks in the wings here state side.. actually there is some delicious irony in their failed synchronous state machine - looks like a collectivist plutocracy doesn't actually scale very well.

  23. re: Ready for it? by tomhudson · · Score: 3, Funny
    Definitions for the real world: Asynchronous logic: anything you think about before your first cup of coffee...

    Second real-world definition: When someone else (usually of the opposite sex) answers your question with an accusation that's completely off-topic.

    Third real-world definition: Many slashdot posts (sort of including this one :-)

  24. 1963 PDP-6 had it, surely? by dpbsmith · · Score: 4, Funny

    Surely Digital Equipment Corporation's PDP-6 had it in 1963?

    Or is this modern "asynchronous" logical some totally different concept?

    1. Re:1963 PDP-6 had it, surely? by Anonymous Coward · · Score: 0

      WOW!! 36 bits! It must have kicked the ass off a 486!

    2. Re:1963 PDP-6 had it, surely? by Slashamatic · · Score: 2

      Um 1962, the ATLAS had it.

    3. Re:1963 PDP-6 had it, surely? by Anonymous Coward · · Score: 0

      The instruction set was sure a lot prettier.

  25. Notice the article title? by GlobalEcho · · Score: 2

    For those who may have missed it (as I did the first time)...the article title itself is a bit playful.

  26. No by Catskul · · Score: 2

    Thats synchronus dislogic

    --

    Im not here now... Im out KILLING pepperoni
  27. Re:Some further information by Anonymous Coward · · Score: 0

    I've said it before, I'll say it again. Shut up! I don't know who you're trying to impress. Your comments don't add to the discussion. If I want to know about your research (mentioned twice in the past week I believe!) I'll go to your friggin homepage. You seem to post on every 5th story! Looking up that much information on the net to copy and paste into a slashdot comment must take up an enormous amount of time. Do yourself (and us) a favor and use this time to search for a girlfriend or at least go buy a fleshlight (warning, not safe for work or kids.)

  28. UARTs? by Florian+Weimer · · Score: 2

    Isn't an UART at least partly an asynchronous chip? So you probably have got one your PC today...

    And Chuck Moore's description of an asynchronous Forth chip is available in Google's cache (I don't know why he pulled it from the web site).

    1. Re:UARTs? by default+luser · · Score: 2, Informative

      As I explained above, RS-232 ( which uses a UART ), is an asynchronous communications standard. The chip itself is clocked.

      There is no clock shared between the two points of communication. Each end "agrees" on a clock speed, but there is no guarantee how accurately each end produces said clock speed.

      A receiver detects a new packet when it receives the start bit, and it samples the incoming serial stream using it's own local clock. This is the asynchronous part of the communications, the receiver really has no idea if it's sampling right, and clock skew between the sender and receiver can produce errors.

      --

      Man is the animal that laughs.
      And occasionally whores for Karma.

  29. Sun likes this area. by AtariDatacenter · · Score: 2

    Sun has talked quite a bit about async logic in their own designs. I forget if it is in their current generation of chips or not, but they've talked about putting 'islands' of async logic into their chips, with an eventual goal of using it throughout.

    The article as embedded.com talks about 'security'. What they really mean here is like, for example, in those smart access cards in a DirecTV. They say a clockless design is harder to figure out what is going on. So, it is a DRM monster, they say.

  30. Re:Some further information by dgmartin98 · · Score: 2, Insightful
    This guy has been plagiarizing for a while, I looked at a few of his posts, did a Google search on the text of his post, and found that this isn't the first example of his cut and paste job. If he really is at Imperial College, he'd know that plagiarizing without giving credit is frowned upon in the academic community, and would probably get you expelled (if you're a student) or demoted (if you're staff).

    BTW, he goes by different names, usually those with the word "Physics" in it.

    Here's another example of his copy and pasting:
    This post: http://developers.slashdot.org/comments.pl?sid=426 99&cid=4486740
    is copied from this web page:
    http://www.intuitor.com/moviephysics/mpmain.html

    Take a look for yourself at his post history, the wide range of topics, and supposed knowledge.

    Dave

    --
    FPGA, Wireless, ASIC, Verilog, VHDL, HW, 10yr exp, Team Lead, Ottawa (More? Email above. slashdotusername=dgmartin98 )
  31. Re:Some further information by JayBat · · Score: 4, Insightful

    Those of us that have been around the block more than twice know that asynchronous design has been the technology of the future for a long, long time. My personal experience goes back to the mid-seventies, but I'm sure there were asynch he-men doing their thing with vacuum tubes and RTL. :-)

    The catch, then as now, is that asynch logic is just plain more difficult for our tiny little human brains to grok. This was true back in the days when humans designed their own logic, and it is even more true now when 99%+ of all logic is designed not by humans, but by logic synthesis software (Synopsys DC and Cadence PKS).

    That said, there are always folks out there doing Cool Stuff w/asynch circuits. Hope that Ivan Sutherlands's group at Sun Labs survives Sun's recent massive layoffs.

  32. Re:Some further information by Milican · · Score: 1, Offtopic

    Its not about English class, we don't need a MLA style credit here. A simple URL with a couple of quotes will do. Its not cool to copy-n-paste and not give credit and its straight up misrepresentation to do so. Misrepresentation should not be encouraged or tolerated on this forum or any other.

    Also, I agree how its rather funny we got modded down. Do your worst moderators, my Karma is still excellent and these small posts won't hurt it!!

    JOhn

  33. Ready Am I by istartedi · · Score: 3, Funny

    No problem asynchronous logic will be. To program some say difficult but they weak minded people are. Excuse me, I have to post a response to the story on Slashdot about logic asynchronous now.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  34. Re:Some further information by Anonvmous+Coward · · Score: 2
    "2. Because asynchronous components only begin processing data when it becomes available they will only consume dynamic power when doing useful work; as compared with a clocked system which consumes dynamic power on every clock cycle regardless of the work done. This reduces system power consumption which is especially important for portable equipment."


    That rung a bell with me. When I heard about 'clockless computing' a couple of years ago, one of the first examples was the microprocessor inside of a pager. They wanted to go clockless (which I assume is the same type of processor here, polite corrections invited...) so they could have a lower power processor. The idea? Make pagers last longer on a single battery.

    I'd say it worked. However, from that same article, it'll be quite a while before desktop PC's use a processor like that. I should probably go read the article heh.
  35. This is *New*?!?!?! by Chiggy_Von_Richtoffe · · Score: 2, Funny

    Aww hell, My SO has been doing this for *Years*, i mean she is the queen of one-sided logic for ages ;-)
    p.s. Kylie if your reading, j/k love ya!
    ~what was that? I dunno, but you've got it's license plate number stamped on your forhead ~*ouch*~

  36. MiniMips, Philips Pager by darn · · Score: 5, Informative

    The largest ascynchronous project (to my knowledge)is the MiniMips that was developed at Caltech 1997 and has 1.5 M transistors. It was modelled after the R3000 mips architecture.
    The best selling larg scale asynchronous circuit seems to be a micro controler that Philips developed and used in a pager series.

    1. Re:MiniMips, Philips Pager by kelnos · · Score: 1

      one of my profs here at cornell was on the team at caltech that designed the minimips. i've taken a couple classes he's taught, and the man is amazing, and very passionate about his work. the latest class i took was mainly on async desgin techniques, which were mostly developed by him and his team at caltech. really fascinating stuff. it seems like async is the future, assuming that it can be made to work well on a large scale (not quite there yet...).

      --
      Xfce: Lighter than some, heavier than others. Just right.
  37. Code samples? by rocjoe71 · · Score: 2
    All I want to know is:
    1. how this would change the appearance of code that I can write?
    2. Would there be any difference at all?
    3. Would I need an entirely new programming language, replete with syntax to leverage asynchronous logic?
    4. Are there (sensible) examples of this for me to gawk at?
    This really sounds interesting but being just a dumb programmer, I'd be interested in seeing this concept in terms I can understand (if it exists...).
    --
    Height: 38U, Weight: 0 Newtons, Eyes: #0000FF, OS: Gray Matter 1.0 (Alpha)
    1. Re:Code samples? by brejc8 · · Score: 2

      1. it doesnt. The processor might be async but the code is just your original code. Amulet have been making asynchronous ARMs and I made an async MIPS with no need to alter the code.
      2. Well it would use less power if thats what you want. Or go fatser or if the chip dentects a freese instruction it will staticly sit there waiting for an interrupt.
      3. nope
      4. C

  38. Are you confused? by Jhan · · Score: 2

    Eh... "Asynchronous" means "without synchronization" (ie. "without clock"). It has nothing to do with serial vs. parallell operation.

    HIBT?

    --

    I choose to remain celibate, like my father and his father before him.

  39. Async research group at Caltech by mfago · · Score: 3, Interesting

    Here at Caltech the CS department is into this kind of thing.

    They've even built a nearly complete MIPS 3000 compatible processor using async logic.

    Seems pretty cool, but I'm waiting for some company to expend the resources to implement a more current processor (such as the PowerPC 970 perhaps) in this fashion.

    1. Re:Async research group at Caltech by brejc8 · · Score: 2

      Here at Manchester in the CS department is into this kind of thing.

      They've even built a complete ARM compatible processors using async logic.

      We did make one with an external company to use in their products.

      I am currently working on making a nice fast MIPS design myself

  40. Excellent Overview article in Scientific American by MarkedMan · · Score: 0, Redundant
  41. Pipelining by Andy+Dodd · · Score: 5, Informative

    In most modern CPUs, all of those occur independently in different units in the pipeline.

    But they still do their function once per global clock cycle. After that, they pass their results on to the next stage.

    As a result, the clock rate is limited by the longest propagation time across a given pipeline stage. A solution that allows for higher clock speeds is to increase the number of pipeline stages. This means that each stage has to do less. (The P4 one-ups this by having stages that are the equivalent of a NOP just to propagate the signal across the chip. But they're still globally clocked and synchronous.)

    P4 has (I believe) a 20-stage pipeline. (It's in that ballpark) - The Athlon is sub-10, as are almost all other CPUs. This is why the P4 can achieve such a high clockrate, but it's average performance often suffers. (Once you have a 20-stage pipeline, you have to make guesses when branching as to WHICH branch you're going to go on. Mispredict and you have to start over again, paying a clock cycle penalty.)

    Shorter pipelines can get around the branch misprediction issue by simply dictating that certain instruction orders are invalid. (For example, the MIPS architecture states that the instruction in memory after a branch instruction will always be executed, removing the main pipeline dependency issue in MIPS CPUs.)

    With asynch logic, each stage can operate independently. I see a MAJOR boon in ALU performance - Adds/subtracts/etc. take up FAR less propagation time than multiplies/divides - but in synch logic the ALU has to operate at the speed of the slowest instruction.

    Most important is the issue of power consumption - CMOS logic consumes almost no power when static (i.e. not changing its state), power consumption is almost exactly a linear function of how often the state changes, i.e. how fast the clock is going. With async logic, if there's no need for a state change (i.e. a portion of the CPU is running idle), almost no power consumed. It is possible to get some advantages in power consumption simply by changing the clock speed. (e.g. Intel SpeedStep allows you to change between two clock multiplier values dynamically, Transmeta's LongRun gives you FAR more control points and saves even more power, many Motorola microcontrollers such as the DragonBall series can adjust their clock speed in small steps - One Moto uC can adjust from 32 kHz to 16 MHz with a software command.)

    --
    retrorocket.o not found, launch anyway?
    1. Re:Pipelining by Anonymous Coward · · Score: 0
      With asynch logic, each stage can operate independently. I see a MAJOR boon in ALU performance - Adds/subtracts/etc. take up FAR less propagation time than multiplies/divides - but in synch logic the ALU has to operate at the speed of the slowest instruction.
      I'm not a hardware/assembly expert, but my understanding concerning a typical syncronous CPU is that ADDs typically require 1 clock cycle while DIVs can require in the neighborhood of 16 clock cycles.

      I could be wrong, but I believe this all works via the intamate relationship between the hardware and the assembler: the assembler knows how long to wait afer doing a DIV, and thus, knows how many intrustions (or noops if necessary) to insert before reading the result.

      Point being that all ALU operations are not as slow as the slowest ALU operation.

    2. Re:Pipelining by MechaStreisand · · Score: 1

      "I see a MAJOR boon in ALU performance - Adds/subtracts/etc. take up FAR less propagation time than multiplies/divides - but in synch logic the ALU has to operate at the speed of the slowest instruction."

      That is technically true, but I've never heard of any chip that does multiplies synchronous with additions. All CISC designs implement them in microcode, and it was my understanding that RISC designs usually don't implement them at all, leaving that to the programmer. Those RISC designs that do implement them have the multiply instructions take longer... just like with CISC chips. See the PA-RISC, for instance.

      --
      Disclaimer: IANAL. This post is, however, legal advice, and creates an attorney-client relationship.
    3. Re:Pipelining by Anonymous Coward · · Score: 0

      Microcode are not used anymore. Sometimes people refer to the transformations done in instruction decode as 'microcode' because one instruction can decode into two or more. But this 'microcode' would be reordered by the reorderbuffer.
      Even CISC MPUs like x86-32 do this.
      The traditional 6500, 6800 or 8051 (and many more) way of using microcode to control datapaths are not used any more...

      The problem is that when doing processor design, the frequency is determined by the longest path (temporally) between registers (aka flipflops or flops). But this logic path might be one that is only used when a value is forwarded from one functional unit to another while in debug mode and when an interrupt is pending...
      Async designs would allow the design to run with a 'frequency' corresponding to the longest relevant logic path. Which would often be WAY shorter than the longest path.
      Thus you could optimize the design for the common case while leaving the special cases slow. And you would see an average speedup - until you run in debug mode with interrupts :)

    4. Re:Pipelining by Hast · · Score: 2
      With asynch logic, each stage can operate independently. I see a MAJOR boon in ALU performance - Adds/subtracts/etc. take up FAR less propagation time than multiplies/divides - but in synch logic the ALU has to operate at the speed of the slowest instruction.

      Yes, that's why modern CPU architectures are super-scalar. I.e. they have multiple ALU, often two for add, sub (and other fast ops) one for mul, one for div and yet more for floating point ops. Sometimes (Like with the P4.) the ALU units are clocked faster than the rest of the chip to ensure that they finish in time. (The P4 clocks at least the add sub ALU's at double clock rate.) And some units, like FP, mul and div typically take multiple clock cycles. This is legal for a syncronous chip. But all states have to be updated before next clock tick, otherwise you're screwed.

      For more info I'd recommend you to browse the Ars Technica articles on CPU tech. Or to get some Patterson&Hennesey books. (Or just take courses in computer architecture.)

      And just to point out one thing. There is /no/ way that you're going to create an entirely async CPU. Not with todays tools.
  42. Windows... by Anonymous Coward · · Score: 0

    Since Windows sometimes seems asynchronous, perhaps it would crash less on such a machine?

  43. Read the article... by Andy+Dodd · · Score: 3, Informative

    You'll notice that Cadence (one of the big EDA software companies) is cooperating with/heavily investing in one of the async hardware companies. It's not an untapped opportunity - They're tapping it as we post. :)

    --
    retrorocket.o not found, launch anyway?
  44. Just one thing... by Andy+Dodd · · Score: 3, Informative

    In CMOS logic, power consumption is not related too much to the static state of the chips, i.e. "transistor is on for 5 ps".

    It's related to how often the state change occurs.

    A good example of where async logic might be useful:
    ALU multiply operation takes 20 pS, LOTS of transistors
    ALU add/subtract op takes 5, FAR fewer transistors
    In current designs, this usually means that add/subtract ops have to run at a clock rate that is slow enough to accomodate that 20 pS clock
    In an async design, the add/subtract instructions can run 4 times as fast. But since the multiply/divide stage is not clocked, those transistors aren't doing anything so overall power usage is less. (The add/subtract stage uses 4x the power it did before, but the mult/div stage was probably using 10x or more the power the add/sub stage was using)

    --
    retrorocket.o not found, launch anyway?
    1. Re:Just one thing... by Christopher+Thomas · · Score: 2

      A good example of where async logic might be useful:

      ALU multiply operation takes 20 pS, LOTS of transistors

      ALU add/subtract op takes 5, FAR fewer transistors

      In current designs, this usually means that add/subtract ops have to run at a clock rate that is slow enough to accomodate that 20 pS clock

      In an async design, the add/subtract instructions can run 4 times as fast.


      Actually, this turns out to be much less of a problem than you're painting it.

      This is why pipelining exists. If your shortest functional unit time is 5 ps, then you build a chip that has (for the sake of argument) a 5 ps cycle time, and make a multiply take four pipeline stages.

      In practice, register overhead reduces the benefit somewhat, but you'll still never have a discrepancy that large (at least if the functional units are your rate-limiting step; doing an add in 5 ps doesn't help if your dependency interlock logic needs 10 ps).

  45. In case it hasn't been said... by Anonymous Coward · · Score: 0

    Imagine a beowulf cluster of these!

    Or, as an asynchronous machine might say...

    Iamgien boewulf a culstre of thees!

  46. FYI by Andy+Dodd · · Score: 2

    One of the guys heavily involved in that project is no longer at Caltech, but is a professor at Cornell University now.

    http://vlsi.cornell.edu/~rajit/

    One of the best (albeit toughest) profs I've ever had. This guy knows his stuff, and is very good at passing the knowledge on. :)

    Happens to be responsible for Cornell's only FreeBSD lab, which the CS students prefer to the CS department's own systems. Many of them continue using the CSL lab long after finishing ECE/CS 314. (Req'd for all ECE and CS majors.)

    --
    retrorocket.o not found, launch anyway?
  47. Public Papers & Presentations by kelleher · · Score: 2
    Here's a link to a list of papers & presentations on the topic.

    It's not new, company's like Sun have been pursuing this for years. Here's info on the FLEETzero prototype async chip they were showing off at the ASYNC 2001 conference last year.

  48. NORAD used it. by Anonymous Coward · · Score: 0

    From a friend of mine, who should know, because he used to fix it...

    In the Big Mountain (where the Stargate is ;), NORAD used to have an asynch. computer as part of the defense system. They also had an old pneumatic mail tube system which passed right over it. The static electricity generated by the mail tubes would f**k up the timing signals. I suprised we didn't start WW III.

  49. Re:Some further information by Anne+Thwacks · · Score: 2, Informative
    The main problem with asynchronous logic is that it is impossible to PROVE, even by testing, that it will meet any worst case spec.

    Seymour Cray tried it after the 7600 and before making the Cray-1. He decided that regardless of the performance advantage, people wanted a computer that was KNOWN to work.

    In this, like in most other things he did Cray was right

    --
    Sent from my ASR33 using ASCII
  50. Cute example of Asynchronous logic? by brejc8 · · Score: 3, Interesting

    This is my favorite example of asynchronnous logic.
    As the rat speeds up or slows down the chip compensates for it.
    Not often that you cant play with toy mice and call it research.

  51. Something that might work by Anonymous Coward · · Score: 0

    The only real use I can see is to ignore clock
    skew. If the amount of power consumed by the clock has been steadily increasing, I expect that sooner or later the chip will be segmented off into "asynchronous" sections where the clock skew is expected to be unknown (but hopefully constant.

    Of course, since the (not so) latest Xilinx FPGAs have a simpler (for the designer) approach (use PLLs to generate corrected clocks), I expect that this is either old hat or wrong.

    I agree about the technology of the future part, though I might also put it in the "watch this technology when Moore's law ends". If it's featured in slashdot coming from Sun, its probably in this catagory.

    Scott

  52. Re:Some further information by brejc8 · · Score: 2

    This was back in the times when we didnt have decent enoufgh software to proove the chips would work yet.

  53. Re:Some further information by brejc8 · · Score: 2

    The thing is that async can nowdays be just as easily designed as sync. I have a great sync to async converter which improves speed by 30%.

  54. Ivan Sutherland does it for years by n2n · · Score: 1

    Here is Sun Lab page for all of this stuff please note, that Ivan Sutherland does it for years

    --
    If we cannot be free, at least we can be cheap -- FZ
    1. Re:Ivan Sutherland does it for years by n2n · · Score: 1

      Ooops, here it is http://research.sun.com/async/ --

      --
      If we cannot be free, at least we can be cheap -- FZ
  55. Yes! Absolutely! by tswinzig · · Score: 2

    Am I ready for asynchronous logic?

    --

    "And like that ... he's gone."
  56. The Vax 8600 CPU by Tjp($)pjT · · Score: 3, Informative

    Is the earliest example I can think of. Roughly 50 ECL 10000 Gate Arrays. It was only syncronous at the "edges" like buss interfaces. Circa 1983. I was on the simulation tool design team. Loads of fun on the skew analysis portion of the simulation. You have to account for all the "local" varieties of skew (within a cell, within a quadrant of the chip, and within the chip overall, and more), and the lead and trace generated skew as well.

    --
    - Tjp

    I am in wallow with my inner money grubbing capitalistic pig. ... Oink!

  57. Just Say No to Asynchronous Designs! by cruelworld · · Score: 2

    Dear god people, do you have any idea how impossible asynchronous circuits are to debug?!!?

    I spend several hours a day with a hair dryer and go through many cans of freeze spray debugging many many stupid little asynchronous designs that engineers think are "cool" or "sweet". Yeah, and they work on the FPGA on their desk and none other.

    Please please please, if you don't want to listen to me then goto http://www.chipcenter.com/pld/pldf030.htm
    and read what Xilinx's Director of Applicatons Engineering has to say.

    quote "Asynchronous design methods may ruin your project, your career and your health"

    1. Re:Just Say No to Asynchronous Designs! by Anonymous Coward · · Score: 0

      He was talking mainly about board level designs, and a style of asynchronous design that nobody doing serious work in the field would even consider.

      In any complex system, logic signals have to be synchronized, one way or another. You can do it with a clock, or you can do it with explicit handshaking signals. The latter is the asynchronous logic approach. What the Xilinx guy was decrying was something else entirely: trying to save flops by sampling data at a point when you "know" it will be good, without paying the overhead of formal handshaking to guarantee it.

  58. Why poll? by oliverthered · · Score: 2

    I am done now here you go is better than are you done yet???? or am I Missing something really big?

    --
    thank God the internet isn't a human right.
  59. Aysnch Design by seigel · · Score: 1

    About time...I was trying to get my prof to go for this when I was doing my elec eng masters thesis back in 95...grrrrr..

    oh well...

  60. Cheap fusion or reliable asynchronous logic? by Neurotensor · · Score: 4, Informative

    I'm studying chip design and my supervisor scoffs at asynchronous logic. I don't have any real input of my own, but his view is that we've been waiting for commercially viable asynchronous designs for as long as cheap fusion, and neither has happened yet despite many loud enthusiasts.

    One of the real problems of asynchronous logic is in testing. With synchronous logic your design is partitioned into registers and combinational logic. The combinational stuff can be tested at production by use of every possible test vector, while registers are rather easy to test. Together these two tests virtually guarantee that the state machine works. Do that for every state machine and you're done.

    Asynchronous state machines, however, have no obvious way to break them down. You have to give them sequences of inputs and check their sequential outputs. Even if you think it's working you can never be sure, and what happens when the temperature changes? Race conditions can result in the state machine breaking under changing temperatures.

    Synchronous design is a very mature field. Nowadays you can be sure that a design works before fabrication (well, almost.. =) and then synthesise it into gates that ought to work first go. If they didn't then AMD and Intel would go under pretty soon!

    Asynchronous design is hard and my hat goes off to the people who do it for a living. But the same amount of effort would result in far more development using standard techniques. I guess you really have to want to do it.

    Yes, synchronous logic has serious issues with clock distribution, but it's still the most commercially viable design technique. The fact that your CPU is fully synchronous is testament to that.

    So, which will come first: cheap fusion or reliable asynchronous logic?

    1. Re:Cheap fusion or reliable asynchronous logic? by kbielefe · · Score: 1
      Your boss is holding your company back. What if he was running things when the electronics industry switched from vacuum tubes to transistors, from transistors to integrated circuits, or from TTL to CMOS?

      Just because a technology is not used now does not mean it isn't a viable commercial technology for the future.

      --
      This space intentionally left blank.
    2. Re:Cheap fusion or reliable asynchronous logic? by Christopher+Thomas · · Score: 2

      So, which will come first: cheap fusion or reliable asynchronous logic?

      My money's on reliable asynch logic. A hybrid synch/asynch design can gain many of the benefits of asynch while being almost as easily tested as synch, and can be built _now_. Much work is underway on verification tools for more complex asynch, and especially if we trade off speed for testability, the problem is tractable.

      Most of all, though, the barrier to research is lower. Asynch design verification can be studied for the cost of employing a few graduate students, with the multi-billion-dollar fabs required already built. Fusion research usually involves building similarly expensive pieces of equipment from scratch.

  61. Article in Engineering Magizine by Anonymous Coward · · Score: 1, Interesting

    In an article in Engineering magazine (it is distributed to all engineers at Kansas State University and probably many others) and Intel representative (I can't recall the name) claimed that anyone who came up with a completely asynchronous x86 solution would have a significant advantage. He is right for several reasons.

    1) Power usage and heat are important in many devices. The Via Cyrix chips do reasonably well, even without the power of Intel and AMD designs.

    2) Fully asynchronous chips do have the capacity to perform far better than synchronous designs.

    The article also discusses various designs for asynchronous chips. A good read, if you can find it. The magazine came out some time towards the end of 2000 (I am thinking November), but not for sure.

  62. Re:What's wrong with synchronous? (Clarification) by dingfwen · · Score: 1
    You're mostly on target with your information. However, here are some clarifications:

    As stated in the article, in an asynchronous system, the clocks are divided up on a modular basis

    First of all, in a purely asynchronous system, there are no clocks at all. For example, if you wanted you had a circuit that did this:

    x = (a AND b) OR c

    Assuming this consists of an AND circuit and an OR circuit, x would be invalid while it waited for (a AND b) to finish. Once (a AND b) finished, x would become a valid result. In a synchronous system, x would be valid in time for the next clock cycle. No other circuit would operate using invalid value in x b/c they would be waiting for the clock first before looking at x.

    In an asynchronous circuit, other circuits can operate on x whenever they want (no clocks), including any invalid values currently stored in x. Therefore, a handshake signal is usally used to signify when x is valid. When other circuits see this signal, they can then start treating x as if it were valid. You can see how this is difficult to time when each stage is so dependant on the previous one.

    Sometimes, a hybrid approach is taken where asynchronous results are stored in a clocking circuit. This practice is in more common use I believe.

    and only the modules that are running need power at all.

    As for power saving, asynchronous circuitry is not the same as power saving circuitry. In the ALU, for example, often times it will perform many or all operations on any data handed to it in parallel (i.e. x AND y, x XOR y, at the same time). Then, if the operation asked for x AND y, it will return the value of x AND y and throw away the value for x XOR y. If this is the case, power consumption is not reduced because all circuits are being used regardless.

  63. AMULET by Anonymous Coward · · Score: 1, Informative

    The AMULET group at the University of Manchester has been doing research and implementation for asynchronous processing (based around an asynchronous ARM design) for many years. They have a bunch of good information available on their projects, and the subject in general.

  64. AMULET by Anonymous Coward · · Score: 0

    The AMULET group at the University of Manchester has been doing research and implementation for asynchronous processing (based around an asynchronous ARM design) for many years. They have a bunch of good information available on their projects, and the subject in general.

  65. What goes around comess around.... by Slashamatic · · Score: 2
    Certainly some of the early computers had to work asynchrnously. They were so physically big that it was quite difficult to synchronize things, so the designs tended to be asynchonous. A good example is the Ferranti Atlas Computer, a beautiful bit of kit that lacked a central clock. Just in case someone doesn't click on the link and find they information, I'll quote Aspinall on this paper:
    The machine, unlike its predecessors, did not have a clock in the central processor. It was felt that to tie down everything to the slowest operation, which was implied by the use of a clock, would be against the principle of the machine. Instead a single Pre-Pulse wandered round the various elements of the machine where it would initiate an action and wait for the self timing of the action to complete before wandering off to the next element. Occasionally it would initiate an action and move on to another element that could operate concurrently. For example the floating-point arithmetic unit would be completing a division operation whilst the program would be executing several fixed-point operations. Also there was a pipeline between the processor and the main core store.
    The system had other minor innovations like paging, two level backing store and so on. The Grandfather of C, BCPL was also developed on this system.

    Kudos to Ferranti, Plessey and the University of Manchester who did a lot of the design work.

  66. Asynch Logic broken down by Si_Cowboy_03 · · Score: 2, Informative
    I just happened to check out a textbook on the subject of asynchronous circuit design and so far its been pretty good (1st part of chapter 1) Anyway it gives the benefits of asynchronous design:
    1. Elemination of clock skew problems - the clock is a timing signal, but it takes a certain amount of time for the clock signal to propogate around the chip, so as the clock frequency goes up, this becomes a huge problem
    2. Average-case Performance Synchronous circuits must be timed to the worst performing elements. Asynchronous circuits have dynamic speeds.
    3. Adaptivity to processing and environmental variations Dynamic speed here againg. If temp goes down, circuit speeds up. If supply voltage goes up, speed goes up. Adapts to fastest possible speed for given conditions
    4. Component modularity and reuse easier interface because difficulty with timing issues are avoided (handshake signals used instead).
    5. Lower system power requirements it takes alot of power to propogate the clock signal, plus spurios transistor transistions are avoided. (MOSFETS only use considerable power when they change states).
    6. Reduced noise All activity is locked into a single frequency in synchronous, so big current spikes cause large ammounts of noise. Good analogy is the noise of 50 marching soldiers vs. the noise of 50 people walking at their own pace. The synchronous nature of the soldiers causes the magnitude of the noise to be much greater.
    Major drawback: Not enough designers with experience and lack of asynchronous design tools. So far the book is a great read, but pretty technical (good for an EE or com sci person who's had a basic digital logic class).

    The book is "Asynchronous Circuit Design" by Chris J Myers from the University of Utah.

    Also I wrote a paper about this for my computer architecture class:
    http://ee.okstate.edu/madison/asynch.pdf
  67. Re:Some further information by davros74 · · Score: 1

    Precisely. There is literally decades of research on the design and testability of synchronously clocked designs, whereas there is very little on asynchronous designs. All the EDA tools available for testing chips today (processors, ASICs, what have you) are all based on synchronous design principles. To change to asynchronous design requires an entire paradigm shift, from functional design, to testability, to producing vendor tools to work the flow. Synchronous designs have been based on stuck at fault testing for decades, and greatly simplifies the task of proving 10 million transistors are doing what they are supposed to. One basically only has to check for a 1 or a 0 in the right place during the right clock cycle. Asynchronous designs basically require verifying the timing and path delays from every gate in the chip to every other gate. There is no predictable time when things will happen, or when things will get there, since timing delays are dependent on fabrication process and variation.

    For now, asynchronous logic works best in small pieces of a much larger, synchronous design, and where it makes sense - interfacing with things that are asynchronous (UARTs, ADCs, RF receivers, etc). Usually, one can verify with great confidence of achieving over 99% fault coverage on the synchronous portion, while resorting to just functional tests to see if the async logic works right. Writing functional tests for an entire chip these days however is almost insurmountable, unless you have all the time and money in the world to burn. Because synchronous designs have more structure and follow rigid design criteria, structural testing is far far easier.

    The drawbacks of synchronous designs is of course, clock tree synthesis and controlling skew. Power can be dealt with these days by gating off clocks to unused regions, using lower power FFs, etc. However, controlling the clock skew on a single clock chip can be the largest hurdle during layout and fabrication. Even so, it is not an impossible task, and verifying full scan synchronous designs via ATPG and/or BIST outweighs most benefits of purely asynchronous designs.

    A fully asynchronous processor or chip will not become economically feasible until more research is done. A chip that cannot be tested is worth nothing at all.

  68. There are companies that do this sort of thing by streak · · Score: 1

    There is a company called Fulcrum Microsystems which grew out of Caltech's VLSI program and does primarily ASYNC stuff.

  69. Async did catch on. Then Sync caught on better. by Ungrounded+Lightning · · Score: 2

    Isn't this where the idea of digital logic really got started?

    Yes.

    At least its how it was taught when I was in school. We even did some design work in async. Cool stuff. Easy to do, fast as hell...

    Never did figure out why it never caught on.


    It DID catch on. But the chips kept getting bigger.

    It's easier to design silicon compilers for synchronous designs than for asynchronous - and when you've got millions of gates per chip you REALLY want compiler assist, rather than to lay out all the circuit details by human effort.

    It's also easier to make automated TEST program generators for synchronous designs, to run the machines that test the chips when they come out of fabrication and reject the ones that are broken. You NEVER get high-90s coverage with human-generated "functional" tests - but a compiler can get there easily:
    - Add muxes in front of the flops to string 'em into "scan chains" - big shift registers connected either to the regular pins or a "JTAG" controller. Then on the tester you'll:
    - "Scan in" a random starting state.
    - Step the chip a few times.
    - "Scan out" the result and see if it matches expected, simultaneously scanning in a different starting condition.

    The test generation program becomes essentially a random-number generator, chip simulator, and fault-tested-so-far counter, with a few finesses for things like getting things reset properly, testing gates with big fanin, making sure busses aren't floating, rejecting patterns that don't test anything new, working around flops that weren't on the scan chain because they were on a critical path, avoiding logic loops that become implied RS flops or ring oscilators (depending on whether the loop has an even or odd number of inversions), identifying logic circuits that have untestable failure modes, and the like.

    But full-scan and partial-scan don't work if the flops aren't tied to a small number of clock domains that can be tied together or otherwise controlled directly by the tester. Asynchronous logic elements (such as ripple counters or other circuitry where a flop's clock is driven from another flop's output, or other logic that's something other than a clock distribution and switching system) just don't scan well.

    There IS a way to get the same sort of massive observability and controllability over asynchronous designs - the Cross Check array - along with automatic test program generation systems to work with it. (Think of DRAM- or active-matrix-LCD-style cross-point addressing of test-points and signal-injection points - about one for every four regular transistors on the chip.) It tests async designs just fine, and gives better coverage than full scan with about half the silicon overhead.

    But it's patented. The company that made it never got much market penetration in the US fabs. It has since merged and the product may be completely gone at this point. Except for Sony, which had an unlimited license from funding them when they were a startup, their own software, and (as of a few years back at least) used it in all of their consumer chips.

    --
    Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
  70. Asynchronous Logic boxes by Anonymous Coward · · Score: 0

    Imagine a Beowolf Cluster of THESE!!!

  71. Re:What's wrong with synchronous? (Clarification) by anonymous+loser · · Score: 2

    While what you say is true, the systems described are not purely asynchronous. Rather, they seem to be a collection of individually synchronized (and possibly purely asynchronous) modules that use handshaking to communicate between each other.

  72. The price you pay by Anonymous Coward · · Score: 0

    4X silicon die size and glitch issue.
    I once work as assistant for this product on 1996,
    my boss got his degree and I don't see any further application since then.

  73. My asynchronous thoughts Re:Kurzweil by ASeed · · Score: 1

    First:

    evidence that biological brains are heavily chaotic, which ANNs traditionally are not.


    I think that even traditional and simplest ANN have chaotics properties due to their non-linear nature. But there are also more recent and complex models that use more chaotic elements...


    Second, brains are extremely recurrent in ways that could never be simulated by traditional computers -- there are simply too many links.


    Never say never, again ;)
    Tradicional computers are growing fast (Moore's law) and according to Kurzweil, in the year 2019 a $1000 computer will have a capacity similar to a human brain (only the capacity, that is, the hardware... maybe not the algorithms.)

    Furthermore, you don't need to simulate one brain with one computer... you could try to simulate one brain with -say- 10000 computers that are connected and communicate asynchronously

    My own estimations indicate that NOW all the computers, joined together by the Internet, have more capacity than a single human brain (in computing power and memory).

    I started a project (InterSAINT.org) to develop the algorithms for that: ANN and distributed/grid computing.


    Third, the human brain is not based merely on reward and punishment. When I sit in a chair at night, pondering whether I agree or not with what Bush has done today, there's no clear source of reward or punishment. Yet, at the end of the day, my brain has changed. ANNs have no ability to self-contemplate and change in this way.


    Are you sure? Maybe when you sit on a chair you do it because you have learnt that that chair is not broken (it doesn't have a punishment). Maybe you sit because your body wants resting for a while (it has a reward). Meanwhile you can think about Bush or anything else... but surely everything you think is for a reward (including sometimes the reward of thinking).


    Fourth, when an ANN is trained, every weight in the network is changed. In a biological brain, particular links form and are destroyed, but learning is not a global process. I'm not a neuroscientist, so if I'm wrong, someone please point that out.


    AFAIK, more than form and destroy links, the links are just reorganized, that is, instead of connecting to one neuron, the link moves and connects to other neuron. That process happens mostly in the first 6 or 7 years of life and I don't think it is the main process in learning. Other processes like the one that changes the weights of the links are more important and they are always present (not just before we are 7 years old).

    In addition, the learning process in ANN is based mainly in changing weights but there are also models that change the network structure (moving links like the biological model but also creating and destroying links)


    Fifth, you can ask a human why he/she came to a particular conclusion.


    As another poster said, you learnt that.
    You learnt how to change the weights in your brain to save some "thoughts" and how to recall those thoughts when somebody asks...

    I don't see anything that a machine couldn't do.


    although they are extremely valuable computational tools, they are not a magic wand. Many pattern recognition and data organization tasks can be much better performed by traditional symbolic algorithms.


    I agree very very much.
    But, symbolic algorithms are quite useless when you want something that has self-organization, learning, fault tolerance properties... especially if it is also very complex.

    --

    --
    ACid
  74. I don't understand asynchronous chip design by chegosaurus · · Score: 2

    But hey, at least I'm honest!

  75. Re: Ready for it? by hopews · · Score: 1

    This is very off topic, but in reference to your signature. Have you heard of screen? Its very nice. As many virtual terminals as you can shake your fist at, and it works over telnet and ssh and whatnot.

    $ man screen

  76. Re: Ready for it? by tomhudson · · Score: 2

    What if you want to be logged in as different users, access priv., etc. Then screen just doesn't cut it.

  77. synchronous, asynchronous, and hybrid designs by Christopher+Thomas · · Score: 2

    Within the space of a single clock cycle, the Pentium (or other designs) might make use of asynchronous logic, but (and this is the important bit) the asynchronicity only exists within the domain of the CPU. The external interface to the CPU is still governed by a clock: you supply the CPU with inputs, trigger its clock, and a short (fixed) while later it supplies you with outputs. Asynchronous logic removes the clock entirely.

    Not strictly true - that's just asynchronous logic taken to its extreme.

    A more practical approach, which I'm told has already been used here and there, is to build functional units that are asynchronous, while keeping the chip as a whole synchronous. Either the functional unit takes a varying number of cycles to produce its result, or the rest of the chip assumes that it will take the longest possible time, but the (multi-stage, multi-cycle) calculation is performed without the need for internal clocking.

    Even an entirely asynchronous chip would have to have synchronous I/O if it was to be used in any conventional system. Redesigning all parts of a computer system from scratch would be a vast amount of work and result in a system that was far more expensive than necessary.

    The feature of asynchronous logic that distinguishes it from a big block of arbitrary combinational logic is that asynchronous circuits have a way of indicating when computation has completed. This allows you to string them together in more complicated patterns without fear of race conditions, and means you don't have to always assume it will take the longest possible time to complete.

    While asynchronous logic has yet to show a substantial speed benefit over well-designed synchronous logic, it tends to consume considerably less power, as you don't have to propagate clock signals to all parts of a functional unit. Clock gating only buys you so much.

    The disadvantage is that it's often somewhat larger than the equivalent synchronous logic, and that verifying the correctness of an asynchronous design is a nightmare (a more difficult mathematical problem, and one with less background research at present). It's also hard to assess maximum power dissipation (you have to prove that no pathological one-in-a-trillion state transition that can cause vast amounts of current to be shunted can exist).

  78. Paradigm shifts in processor design. by Christopher+Thomas · · Score: 2

    my dreams have been filled with visions of large processor cores with no fixed pipeline that can reconfigure themselves for different tasks, and have several operations in progress at once, taking several pathways through the core.

    To some extent, this is done already.

    Any superscalar processor will at least potentially have multiple operations being performed at once, in different pipelines as well as the same pipeline. The pipeline typically forks manyfold after the fetch/decode stages and recombines when results are ready to be committed and instructions retired. Under ideal conditions, most or all of the functional unit pathways in a processor could be busy at the same time (though code that does this is very rare - usually you're limited by data availability and by mismatch between the processor's facilities and the resources needed by the code).

    As for self-reconfiguring processors, there is much work yet to be done. I've seen a handful of papers on partly reconfigurable processors; a few are on my prof's page. However, reconfigurable functional units suffer from the twin problems of being slower than a hard-wired functional unit at a specific task, and being extremely difficult to produce optimized code for (generally, the more ways you can use something to change the workings of a program, the harder it is to find an optimal use for it).

    It's still an interesting idea with potential in several types of situation, though.

    Asynchronous logic also doesn't affect the reconfigurability of a block of logic. Reconfigurability happens at a higher level of the design.

    I suppose, for the immediate future, that asynchronous logic elements will simply augment current processor designs as you (and others) have outlined in this discussion. How long, then, until we reach a paradigm shift and start designing our processors in a fundamentally different way?

    Pulling a number out of a hat, I get 10-15 years. Superscalar, highly-pipelined architectures have almost reached the limits of extendability without a major breakthrough in design, but there are still performance-enhancing tweaks to be made. CMP - multiple cores on one die - is the way of the future, but the number of cores involved will be small for the next few linewidth shrinks. Beyond a certain point, though, we're going to have to change from using conventional cores on a fast crossbar-type interconnect to something that more closely resembles the larger parallel machines of today. It is at that point that new opportunities for optimization and design changes will arise, which may (or may not) lead to significant changes in the way individual processor cores are designed (as the place of a core in the system will have changed).

    It's also possible that there never will be a drastic paradigm shift. Modern superscalar processors represent a fairly mature solution that matches the nature of most computing problems fairly well. Only time will tell whether something radically better will come along.

    In the meantime, asynchronous logic may very well replace synchronous logic for the low-level implementation of processor circuitry.