I have a fairly limited knowledge in EE, however I have been wondering why we can't have a microprocessor that isn't operated by a clock. Obviously there are 2 problems that wind up being encountered, one of which is synchronization, and the other is heat. To take care of heat, it could simply be cooled by liquid nitrogen, liquid hydrogen, or liquid helium like quantum processors are. As far as synchronization goes, obviously an architect such as x86 wouldn't work naturally, since the instructions require synchronization for most of the instructions, but why couldn't you have a architect like this work:
movrex 8FA0 ; move 8FA0 into REX
movmem F00 ; move F00 into a special register called 'mem'
movram 32 ; move 32 into the memory address stored in 'mem'
addmr ; add value in mem with value in register 'DEST', store in register called DEST
movrexm ; move value from mem into REX
While this shows a limited amount of commands, and a limited amount of registers, it seems that this could be expanded into a larger command/register set (note, that was pseudo code, and not designed to be fully efficient, or completely working in a larger instruction set). For things that require a clock, it could be an actual instruction, and would be a separate part of the processor that would call an interrupt at a specified label point after a time has passed (the time would be contained in a certain register). To make sure the clock doesn't interrupt the processor while an instruction is being carried out, the clock could simply mark a flag in the processor. This flag would be checked at the beginning of each command cycle. If the flag is true, the processor checks to see what label it should jump to, then it jumps to it.
Then again, maybe I greatly misunderstand how processors currently work, and this is how they work...
Anyways, just 'thinking out loud', hoping for some insight : ).