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.
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.