3 ms·
> Which we run through a synchronizer to bring back into the primary clock domain. Of course we do that. To get speed out of one big synchronous domain we spl
by rstuart4133 7y ago
> Which we run through a synchronizer to bring back into the primary clock domain.
Of course we do that. To get speed out of one big synchronous domain we split it into a whole pile of little domains (each internally synchronous) that talk asynchronously. That allows us to keep the amount of asynchronousity to a minimum, and as you say doing otherwise would be stupid. That does not alter the fact that those domains all operate asynchronously with respect to each other.
And you are not wrong is saying we sometimes go to great lengths to avoid asynchronous systems. The best example is possibly the GPU, which are massively parallel but all threads are in strict lock step. But notice GPU's have to execute at a fairly slow clock rate to pull that stunt off. An execution unit (ALU) in a modern CPU that executes mostly independently of the other execution units are about an order or magnitude faster.
By the by there is a computer that operates on at absurdly slow 1ms "clock", yet is faster at most things it does than the biggest and best computer we can build today. "Clock" is in quotes because there is no clock, 1ms is about delay through one of elements. It gets it's speed through massive yet completely asynchronous parallelism. It is the human brain. Such is the power of being stupidly asynchronous.