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

Improvements in resource conflict detection related to slots #305

Draft
wants to merge 7 commits into
base: aie-public
Choose a base branch
from

Conversation

martien-de-jong
Copy link
Collaborator

@martien-de-jong martien-de-jong commented Jan 23, 2025

This started out by the realization that XM is a separate slot from X and M, and that the only mechanism that prevents them from occupying the same bundle is the format table.

ResourceCycle will make a quick check whether there's overlap in the slot bits, but will miss an X XM overlap.

The idea is that we can go through the complete format list and find the implications from XM to X and M (All formats containing XM don't allow X or M)

First, we have simplified the generated tables by removing the target-specific SlotInfo and SlotKind classes. That removes the need for MCFormats.h to include all generated format tables.

Trying to use the denser 'ConflictBits' in the check pointed out a problem, which is the nop slot as used by AIE2 to disambiguate the two stand-alone formats for XM, on in 48 bits and one in 64 bits. The latter one is only used for bundle padding. That nop slot only occurs in the 16 nop format and the 64 bit XM format, and hence is implied by A, B, S, X and M slots.
We added the notion of an artificial slot to be able to exclude it from the conflict bits.

Status

  • The MCFormats simplification is operational.
  • ConflictBits are computed and added to the SlotInfo, but aren't used properly
  • Artificial slots can be specified, but aren't taken into account anywhere yet. The idea is to make a 'real slot mask' available in FormatInterface, and to exclude them from the ConflictBits computation in tablegen
  • The implications from XM to X and M should be accounted for in SlotCounts. For use in ResMII, only the maximum count matters, so we could make XM also add to X and M
  • Each non-artificial slot can be used as a conflict kernel when generating constrains in a solver model. ConflictBits can be used to represent the contribution to these conflicts.

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

Successfully merging this pull request may close these issues.

1 participant