Asynchronous Logic: Ready For It? 192
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."
alright, question... (Score:2, Interesting)
MiniMips, Philips Pager (Score:5, Informative)
The best selling larg scale asynchronous circuit seems to be a micro controler that Philips [philips.com] developed and used in a pager series.
The Vax 8600 CPU (Score:3, Informative)
Asynchronous Logic? (Score:5, Funny)
Re:Asynchronous Logic? (Score:5, Funny)
This is your boss...
Please shut off that damn computer and get back to coding!
- Scott's boss
No (Score:2)
timerless design elements in pentium4? (Score:4, Interesting)
Isn't this the same as having a CPU without a timer? (i.e. no MHz/GHz rating).
Re:timerless design elements in pentium4? (Score:4, Informative)
Re:timerless design elements in pentium4? (Score:3, Insightful)
Re:timerless design elements in pentium4? (Score:3, Interesting)
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.
Re:timerless design elements in pentium4? (Score:2, Insightful)
Re:timerless design elements in pentium4? (Score:2)
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.
Re:timerless design elements in pentium4? (Score:2)
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.
Kurzweil (Score:3, Insightful)
Re:Kurzweil (Score:3, Insightful)
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.
Re:Kurzweil (Score:2, Interesting)
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.
Re:Kurzweil (Score:5, Insightful)
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.
Re:Kurzweil (Score:5, Interesting)
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.
Re:Kurzweil (Score:2)
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.
Re:Kurzweil (Score:2)
Re:Kurzweil (Score:2)
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?
Re:Kurzweil (Score:2)
What's wrong with synchronous? (Score:5, Interesting)
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?
Re:What's wrong with synchronous? (Score:4, Funny)
I'll answer that question, right after I look up the answer in memory...
Re:What's wrong with synchronous? (Score:5, Insightful)
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).
Re:What's wrong with synchronous? (Score:3, Informative)
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.
Re:What's wrong with synchronous? (Score:2)
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".
Re:What's wrong with synchronous? (Score:5, Informative)
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.
Re:What's wrong with synchronous? (Score:3, Informative)
Pipelining (Score:5, Informative)
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.)
Re:What's wrong with synchronous? (Score:2)
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.
Why poll? (Score:2)
Re:What's wrong with synchronous? (Score:5, Informative)
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.
Re:What's wrong with synchronous? (Score:2)
It's not that I disagree with the asynchronous design... I see the benifits, just pointing out a little (IMHO) flaw in your logic.
Re:What's wrong with synchronous? (Score:2)
BlackGriffen
Re:What's wrong with synchronous? (Clarification) (Score:2)
Re:What's wrong with synchronous? (Score:2, Informative)
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
Problem with Async (Score:3, Insightful)
Re:Problem with Async (Score:2)
Re:Problem with Async (Score:3, Informative)
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?
Re:Problem with Async (Score:2)
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 [man.ac.uk] for more details of race free computation.
I even made a method of converting synchronous designs into async ones automaticly.
Re:Problem with Async (Score:2)
Re:Problem with Async (Score:2)
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.)
Re:Problem with Async (Score:2)
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.
Cyclic History (Score:5, Interesting)
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.
Re:Cyclic History (Score:4, Interesting)
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.
What goes around comess around.... (Score:2)
Kudos to Ferranti, Plessey and the University of Manchester who did a lot of the design work.
Async did catch on. Then Sync caught on better. (Score:2)
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.
Intel and asynch clocks (Score:4, Interesting)
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"
I've had this for years... (Score:5, Funny)
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!")
Re:I've had this for years... (Score:2)
Doing it already... (Score:2, Informative)
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.
Are you confused? (Score:2)
Eh... "Asynchronous" means "without synchronization" (ie. "without clock"). It has nothing to do with serial vs. parallell operation.
HIBT?
might be a while... (Score:2, Interesting)
Re:might be a while... (Score:2)
Re:might be a while... (Score:2)
Asynchronous logic vs radiation ? (Score:4, Interesting)
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..
Re:Asynchronous logic vs radiation ? (Score:2)
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.
Re:Asynchronous logic vs radiation ? (Score:3, Informative)
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.
Re:Asynchronous logic vs radiation ? (Score:2)
What about ECC on each internal bus? It works well for external busses (RAM, etc.).
More info: (Score:5, Informative)
What if? (Score:5, Insightful)
Seriously though, does the temperature affect the switching time? Or does the liquid nitrogen trick just prevent meltdown of an overclocked chip?
Re:What if? (Score:3, Funny)
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.
Re:What if? (Score:3, Informative)
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.
Re:What if? (Score:2, Informative)
Read the article (Score:5, Informative)
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.
Re:Read the article (Score:2)
aka, Design Patterns.
asynchronous logic? (Score:2, Interesting)
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.
Re:asynchronous logic? (Score:2)
Full-chip synchronized clock-ticks bring the average operation execution time down to the speed of the slowest, every time.
Just one thing... (Score:3, Informative)
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)
am i ready? (Score:4, Funny)
re: Ready for it? (Score:3, Funny)
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 :-)
1963 PDP-6 had it, surely? (Score:4, Funny)
Or is this modern "asynchronous" logical some totally different concept?
Re:1963 PDP-6 had it, surely? (Score:2)
Notice the article title? (Score:2)
UARTs? (Score:2)
And Chuck Moore's description of an asynchronous Forth chip is available in Google's cache [216.239.39.100] (I don't know why he pulled it from the web site).
Re:UARTs? (Score:2, Informative)
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.
Sun likes this area. (Score:2)
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.
Ready Am I (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.
This is *New*?!?!?! (Score:2, Funny)
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*~
Code samples? (Score:2)
Re:Code samples? (Score:2)
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
Async research group at Caltech (Score:3, Interesting)
They've even built a nearly complete MIPS 3000 compatible processor [caltech.edu] 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.
Re:Async research group at Caltech (Score:2)
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
FYI (Score:2)
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.)
Public Papers & Presentations (Score:2)
It's not new, company's like Sun have been pursuing this for years. Here's info [sun.com] on the FLEETzero prototype async chip they were showing off at the ASYNC 2001 conference last year.
Cute example of Asynchronous logic? (Score:3, Interesting)
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.
Yes! Absolutely! (Score:2)
Just Say No to Asynchronous Designs! (Score:2)
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"
Cheap fusion or reliable asynchronous logic? (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?
Asynch Logic broken down (Score:2, Informative)
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 [okstate.edu]
Re:Some further information (Score:4, Informative)
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!!
Re:Some further information (Score:2, Insightful)
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=42
is copied from this web page:
http://www.intuitor.com/moviephysics/mpmain.html [intuitor.com]
Take a look for yourself at his post history, the wide range of topics, and supposed knowledge.
Dave
Re:Some further information (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 [sun.com] at Sun Labs survives Sun's recent massive layoffs. [theregus.com]
Re:Some further information (Score:2)
Re:Some further information (Score:2)
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.
Re:Some further information (Score:2, Informative)
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
Re:Some further information (Score:2)
Beowulf redundant once you have async chips (Score:4, Interesting)
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.
Read the article... (Score:3, Informative)