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

Operand size description within the specification is vague. #22

Open
m-kru opened this issue Sep 18, 2021 · 2 comments
Open

Operand size description within the specification is vague. #22

m-kru opened this issue Sep 18, 2021 · 2 comments

Comments

@m-kru
Copy link

m-kru commented Sep 18, 2021

Operand size description within the specification is vague. How does it relate with the port size? What is the point of the operand size? Why having both operand size and port size? I doubt anyone can answer these questions solely after reading the specification and not referring back to the history.

All snippets come from the current B3.1 if not specified otherwise.

Page 15
image

Page 15
image

Page 16
image

Page 22
image

Page 47
image

Revision B4, page 101:
image

  1. All snippets except the one from the page 22 suggest that: operand size >= port size >= granularity. The one from page 22 suggests that the operand size can be smaller than the port size.
  2. Nowhere in the specification one can find what is the point of the operand size? Why having both the operand size and the port size? I can think of an architecture 20 years ago where the operand size was indeed greater than the port size and transferring single operand required more than one transfer. However, do we still have such use cases today? I think it is rather the other way. Today the operand size is rather smaller than the port size, and such case is already handled by the granularity and SEL_O().
  3. Operand size definition. "largest single unit of data" defined by who/what? One can always do one transfer more and have "largest single unit of data + 1".

I think the operand size concept should be reworked. It either should be improved to leave no room for guesses or it should be removed.

Personally I would try to remove the concept of the operand from the specification. The operand has nothing to do with the bus itself (except the fact that it is transferred via it). How long is the operand is always determined by the entity capable of doing an operation on the operand. Whether it is longer or shorter than the port size is irrelevant as long as the bus supports multiple transfers or selection. Even if the selection is not supported, the operating entity can always mask.

@rherveille
Copy link
Collaborator

rherveille commented Sep 18, 2021 via email

@m-kru
Copy link
Author

m-kru commented Sep 19, 2021

And yes, operand >= port size >= granularity.

Then isn't there a mistake in the point number 9 on page 22?

Should not it be:

If the maximum operand size is unknown, then the maximum operand size shall be the same as the port size.

Instead of:

If the maximum operand size is unknown, then the maximum operand size shall be the same as the granularity.

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

2 participants