On Fri, 22 May 2015, Giacomo Gabrielli wrote:


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/2828/#review6384
-----------------------------------------------------------


Hi, I'm Giacomo and I've been working on ARMv8 support in the past (including NEON), and I'd like to share some thoughts on this patch. In general, I like the idea of adding a vector type, as it's going to be a more future-proof solution, and ARMv8 code could benefit as well from that... but I have a few concerns regarding this code as it stands currently:

The patches have been put up so as to get a discussion going. I am personally confident that an std::array of some size is enough for purposes. The size may need to be adjusted with time though.


1. The patch doesn't address the problem of overlapping registers (for
   now it's only xmm's & ymm's, but zmm's are likely to join the party
   soon); in this context, it's not clear to me if we'd need something
   fundamentally different already at this stage to address that - the
   risk is to upstream this code and then later discover that we need a
   different strategy for overlapping. Maybe just having a plan on how
   to address that in the future could be enough at this stage?

I am working on overlapping xmm and ymm registers. Again, these patches were put together to get a discussion going on vector operations. I am willing to making extensive changes to these patches. Currently I am trying to rewrite SSE instructions in gem5 so that they use vector registers. As of now, I think it is just putting in enough time into the activity. I do not see any major problems arising. These patches (other than the decoder) would not be committed till we have at leaset SSE instructions working with vector registers.

2. In the interim we would have broken SSE-AVX/AVX-2 interworking. Now
   here I'm not sure where the gem5 community draws the line in terms of
   ISA correctness vs. getting code out of the door for early
   experiments, etc. :) At least it would be good to have some thoughts
   from the wider gem5 community here...

As I wrote above, we would not commit the patches till we have everything working at least of the instructions that already exist in gem5. But I do want people to know the direction that we are taking.


3. I guess adding vectors could enable implementing AVX-512, and
   potentially it could also enable research into more wacky
   "vector-style" architectures, which means that potentially the
   vectors could be REALLY wide. For this reason, I'm a bit concerned
   about passing around all those vectors by value. How about changing
   the register access API to return by ref when accessing vectors? (not
   quite sure about the implications of that on the rest of the code
   base though, but I think we'd need to somehow address the efficiency
   problem).


I agree with you that we should not be passing these wide values by copying them. I would try to change the api.


--
Nilay
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to