Ok, I took your example with 9 inputs and tried to solve a binary tree problem with 75% of binary operators.
I call the inputs a,b,c,d,e,f,g,h,i
. To distinguish the input values ββin time, I will add a check mark after a.
a' = a at time 1 a''' = a at time 3 (ab)' = result of a' and b'
9 inputs require 8 binary operations. I limit my processing scheme to 6 operators, so it uses 75% of the necessary operators. Each line in the following diagram represents one statement.
time 1 time 2 time 3 time 4 | time 1+4 a'b' (abcd)'(efgh)' (ab)''(cd)'' e'''f''' | a'b' c'd' (abcdefgh)'i' (ef)''(gh)'' g'''h''' | c'd' e'f' a''b'' (abcd)''(efgh)'' (ab)'''(cd)''' | e'f' g'h' c''d'' (abcdefgh)''i'' (ef)'''(gh)''' | g'h' (ab)'(cd)' e''f'' a'''b''' (abcd)'''(efgh)''' | (ab)'(cd)' (ef)'(gh)' g''h'' c'''d''' (abcdefgh)'''i''' | (ef)'(gh)'
After 4 cycles, the pattern repeats. Thus, processing 3 input sets requires 4 clock cycles:
=> 33% overhead.
This circuit can be sorted so that each line only processes 2 different inputs:
=> the input can be multiplexed by a 2: 1 multiplexer.
time 1 time 2 time 3 time 4 | time 1+4 a'b' a''b'' a'''b''' (ab)'''(cd)''' | a'b' c'd' c''d'' c'''d''' (ef)'''(gh)''' | c'd' e'f' e''f'' (ab)''(cd)'' e'''f''' | e'f' g'h' g''h'' (ef)''(gh)'' g'''h''' | g'h' (ab)'(cd)' (abcd)'(efgh)' (abcd)''(efgh)'' (abcd)'''(efgh)''' | (ab)'(cd)' (ef)'(gh)' (abcdefgh)'i' (abcdefgh)''i'' (abcdefgh)'''i''' | (ef)'(gh)'
If I made no mistakes, this should be a working network:

(Interactive)
source share