Navigation Menu

Skip to content
This repository has been archived by the owner on Mar 20, 2024. It is now read-only.

Relax constraint on vl exceeding register group effective VLEN. #527

Open
David-Horner opened this issue Jul 9, 2020 · 3 comments
Open
Labels
Resolve after v1.0 Does not need to be resolved for v1.0 draft

Comments

@David-Horner
Copy link
Contributor

With the two significant changes of
a) V0.9 register structure moving from vertical to horizontal widening and
b) eliminating SLEN
element width structural dependencies are eliminated.

As a consequence maintaining SEW/LMUL ratio is also removed.

This allows software to address a register groups operated as two or more consecutive but separate register groups..

Currently a vsetvl[i] instruction would be needed to set a lower LMUL.
However, it would be advantageous to allow a lower than LMUL aligned register group to execute when vl > EMUL/EEW.
In this case only the first EMUL/EEW elements are processed.

This would be especially useful in transforming a fully populated LMUL=8 register group two LMUL=4 groups with the lower elements remaining unchanged and the upper being volatile. (more valid combinations are possible)

The drops a run time alignment check that is a worthwhile trade-off to provide the functionality.

I believe this is a viable post V1.0 relaxation.
So, I believe it should also be consciously assessed for V1.0.

This is complimentary to #523

table of valid combinations

LMUL r r+1 r+2 r+3 r+4 r+5 r+6 r+7
8 8 1 2 1 4 1 2 1
4 4 1 2 1
2 2 1
@David-Horner David-Horner changed the title Relax constraint on vl exceed register group effective VLEN. Relax constraint on vl exceeding register group effective VLEN. Jul 9, 2020
@David-Horner
Copy link
Contributor Author

#397 Allow widening and narrowing instructions to execute in LMUL=8
can be incorporated into this request. The concerns are similar and we thus need not re-open #397 that was closed primarily based on SLEN concerns.

@David-Horner
Copy link
Contributor Author

from #397

To me the only compelling argument for excluding limited LMUL=16 was SLEN complexities which are now removed.

I agree that burdening all implementations with limited LMUL=16 support is undesirable.
However, we appear to be now a base "V" that targets unix/application use.
Specific configurations for it (such as VLEN>=128) are irrelevant for other domains that may have a minimal Vminus implementation.
Just as VLEN=256/512 have diminishing returns for LMUL=16, VLEN=64 and VLEN=32 have increasing value for it.

To have such usage supported by compilers and vtype-tracking assemblers, with compile time tags and warnings respectively, helps to provide the broad platform support that was intended/envisioned.

The same is also true for the other relaxation I request here.

It need not be part of V but may well be in a V+ addendum that we anticipate other platform "profiles" to adopt.
To the extent that the Software Eco System keeps such in mind, the better the overall product might be and the more extendable its base may become. This is, after all, what I understood to also be one of our primary goals.

@kasanovic kasanovic added the Resolve after v1.0 Does not need to be resolved for v1.0 draft label Aug 7, 2020
@David-Horner
Copy link
Contributor Author

Can we add to the V addendum #530 these to be resolved after V1.0 issues?
That would help give guidance on what parts of the design are being considered for relaxation and will allow ecosystem builders the possibility to retain flexibility, rather than hard-coding to the V1.0 spec.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Resolve after v1.0 Does not need to be resolved for v1.0 draft
Projects
None yet
Development

No branches or pull requests

2 participants