Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize transactron eager_deterministic_cc_scheduler #13

Open
xThaid opened this issue May 22, 2024 · 0 comments
Open

Optimize transactron eager_deterministic_cc_scheduler #13

xThaid opened this issue May 22, 2024 · 0 comments

Comments

@xThaid
Copy link

xThaid commented May 22, 2024

The circuit generated by eager_deterministic_cc_scheduler can be improved a bit. Consider a set of transactions in which every transaction conflicts with every other. This in fact can happen quite often - when all transactions call the same method (ManyToOneConnectTrans). The scheduler would create for each transaction:

conflicts = [ccl[j].grant for j in range(k) if ccl[j] in gr[transaction]]
noconflict = ~Cat(conflicts).any()
m.d.comb += transaction.grant.eq(transaction.request & transaction.runnable & noconflict)

Thus, grant signal of the last transaction would form a critical path of the linear size.

In the case of a clique of conflicts, we could simply choose the first bit set (a la a priority encoder) - logarithmic length of the critical path.

In general, for any given graph of conflicts, we could find a clique cover and then for every clique make a priority encoder.

Having said that, I am not sure (and I don't have data) if this is worth doing at all.

@xThaid xThaid changed the title Optimize transactron eager_deterministic_cc_scheduler Optimize transactron eager_deterministic_cc_scheduler May 22, 2024
@tilk tilk transferred this issue from kuznia-rdzeni/coreblocks Nov 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant