[gem5-dev] Re: de-templating the O3 CPU
Thanks, Giacomo. Also thank you for making a clear effort to get some of my other patches reviewed in the last few weeks. It's noticed and appreciated! :-) Gabe On Mon, Mar 22, 2021 at 8:02 AM Giacomo Travaglini < giacomo.travagl...@arm.com> wrote: > Hi Gabe, > > That's probably because making a release has caught everyone's attention. > I am definitely gonna have a look at it in about a week time, I promise π > > Kind Regards > > Giacomo > > > > -Original Message- > > From: Gabe Black > > Sent: 22 March 2021 03:20 > > To: Jason Lowe-Power > > Cc: gem5 Developer List ; Giacomo Travaglini > > > > Subject: Re: [gem5-dev] Re: de-templating the O3 CPU > > > > People seemed pretty enthusiastic for this series of CLs, but I haven't > been > > able to get reviews for it... > > > > https://gem5-review.googlesource.com/c/public/gem5/+/42094 > > > > > > On Wed, Mar 3, 2021 at 9:15 AM Gabe Black > <mailto:gabe.bl...@gmail.com> > wrote: > > > > > > Series of 28 CLs, ends here: > > > > > > > > https://gem5-review.googlesource.com/c/public/gem5/+/42120 > > > > > > On Mon, Mar 1, 2021 at 8:50 AM Jason Lowe-Power > > mailto:ja...@lowepower.com> > wrote: > > > > > > Hey Gabe, > > > > I love this idea! It would be nice if you could document the > > code as you go, too. It could serve as a good learning tool in the > future. > > > > Cheers, > > Jason > > > > > > On Mon, Mar 1, 2021 at 7:56 AM Giacomo Travaglini via gem5- > > dev mailto:gem5-dev@gem5.org> > wrote: > > > > > > +2, +1, Merged > > > > π > > > > Giacomo > > > > > -Original Message- > > > From: Gabe Black via gem5-dev > d...@gem5.org <mailto:gem5-dev@gem5.org> > > > > Sent: 27 February 2021 10:13 > > > To: gem5 Developer List > <mailto:gem5-dev@gem5.org> > > > > Cc: Gabe Black > <mailto:gabe.bl...@gmail.com> > > > > Subject: [gem5-dev] de-templating the O3 CPU > > > > > > Hi folks. The O3 CPU uses templates pretty heavily, > > I think nominally to make it > > > possible to switch in different parts of the CPU to > > change how, for example, a > > > pipeline stage is implemented. > > > > > > Realistically, the different parts of the CPU are > > probably too interdependent > > > for that to actually work, and all the templates and > > indirection make the code a > > > lot more complicated than it really needs to be. > > > > > > Also, there is a pseudo-generic dynamic instruction > > base class in > > > cpu/base_dyn_inst.hh which could, again > > theoretically, be used as a base class > > > for other CPUs to reuse. Unfortunately that too is > > probably too tied to its only > > > consumer, the O3 CPU, to be realistically reusable. > > > > > > I would like to merge the base dynamic instruction > > class into the O3 version, > > > and then de-templatize the whole O3 CPU. I think > > that will make the code a lot > > > easier to work on, and I think our ability to maintain > > and update O3 is > > > something we need to improve in at least the > > medium term. > > > > > > Any thoughts? Objections? Votes of support? > > > > > > Gabe > > IMPORTANT NOTICE: The contents of this email and > > any attachments are confidential and may also be privileged. If you are > not > > the intended recipient, please notify the sender immediately and do not > > disclose the contents to any other person, use it for any purpose, or > store or > > copy the information in any medium. Thank you. > > > > ___ > > gem5-dev mailing list -- gem5-dev@gem5.org > > <mailto:gem5-dev@gem5.org> > > To unsubscribe send an email to gem5-dev- > > le...@gem5.org <mailto:gem5-dev-le...@gem5.org> > > > > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s > > IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
Hi Gabe, That's probably because making a release has caught everyone's attention. I am definitely gonna have a look at it in about a week time, I promise π Kind Regards Giacomo > -Original Message- > From: Gabe Black > Sent: 22 March 2021 03:20 > To: Jason Lowe-Power > Cc: gem5 Developer List ; Giacomo Travaglini > > Subject: Re: [gem5-dev] Re: de-templating the O3 CPU > > People seemed pretty enthusiastic for this series of CLs, but I haven't been > able to get reviews for it... > > https://gem5-review.googlesource.com/c/public/gem5/+/42094 > > > On Wed, Mar 3, 2021 at 9:15 AM Gabe Black <mailto:gabe.bl...@gmail.com> > wrote: > > > Series of 28 CLs, ends here: > > > > https://gem5-review.googlesource.com/c/public/gem5/+/42120 > > > On Mon, Mar 1, 2021 at 8:50 AM Jason Lowe-Power > mailto:ja...@lowepower.com> > wrote: > > > Hey Gabe, > > I love this idea! It would be nice if you could document the > code as you go, too. It could serve as a good learning tool in the future. > > Cheers, > Jason > > > On Mon, Mar 1, 2021 at 7:56 AM Giacomo Travaglini via gem5- > dev mailto:gem5-dev@gem5.org> > wrote: > > > +2, +1, Merged > > π > > Giacomo > > > -Original Message- > > From: Gabe Black via gem5-dev d...@gem5.org <mailto:gem5-dev@gem5.org> > > > Sent: 27 February 2021 10:13 > > To: gem5 Developer List <mailto:gem5-dev@gem5.org> > > > Cc: Gabe Black <mailto:gabe.bl...@gmail.com> > > > Subject: [gem5-dev] de-templating the O3 CPU > > > > Hi folks. The O3 CPU uses templates pretty heavily, > I think nominally to make it > > possible to switch in different parts of the CPU to > change how, for example, a > > pipeline stage is implemented. > > > > Realistically, the different parts of the CPU are > probably too interdependent > > for that to actually work, and all the templates and > indirection make the code a > > lot more complicated than it really needs to be. > > > > Also, there is a pseudo-generic dynamic instruction > base class in > > cpu/base_dyn_inst.hh which could, again > theoretically, be used as a base class > > for other CPUs to reuse. Unfortunately that too is > probably too tied to its only > > consumer, the O3 CPU, to be realistically reusable. > > > > I would like to merge the base dynamic instruction > class into the O3 version, > > and then de-templatize the whole O3 CPU. I think > that will make the code a lot > > easier to work on, and I think our ability to maintain > and update O3 is > > something we need to improve in at least the > medium term. > > > > Any thoughts? Objections? Votes of support? > > > > Gabe > IMPORTANT NOTICE: The contents of this email and > any attachments are confidential and may also be privileged. If you are not > the intended recipient, please notify the sender immediately and do not > disclose the contents to any other person, use it for any purpose, or store or > copy the information in any medium. Thank you. > > ___ > gem5-dev mailing list -- gem5-dev@gem5.org > <mailto:gem5-dev@gem5.org> > To unsubscribe send an email to gem5-dev- > le...@gem5.org <mailto:gem5-dev-le...@gem5.org> > > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
People seemed pretty enthusiastic for this series of CLs, but I haven't been able to get reviews for it... https://gem5-review.googlesource.com/c/public/gem5/+/42094 On Wed, Mar 3, 2021 at 9:15 AM Gabe Black wrote: > Series of 28 CLs, ends here: > > https://gem5-review.googlesource.com/c/public/gem5/+/42120 > > On Mon, Mar 1, 2021 at 8:50 AM Jason Lowe-Power > wrote: > >> Hey Gabe, >> >> I love this idea! It would be nice if you could document the code as you >> go, too. It could serve as a good learning tool in the future. >> >> Cheers, >> Jason >> >> On Mon, Mar 1, 2021 at 7:56 AM Giacomo Travaglini via gem5-dev < >> gem5-dev@gem5.org> wrote: >> >>> +2, +1, Merged >>> >>> π >>> >>> Giacomo >>> >>> > -Original Message- >>> > From: Gabe Black via gem5-dev >>> > Sent: 27 February 2021 10:13 >>> > To: gem5 Developer List >>> > Cc: Gabe Black >>> > Subject: [gem5-dev] de-templating the O3 CPU >>> > >>> > Hi folks. The O3 CPU uses templates pretty heavily, I think nominally >>> to make it >>> > possible to switch in different parts of the CPU to change how, for >>> example, a >>> > pipeline stage is implemented. >>> > >>> > Realistically, the different parts of the CPU are probably too >>> interdependent >>> > for that to actually work, and all the templates and indirection make >>> the code a >>> > lot more complicated than it really needs to be. >>> > >>> > Also, there is a pseudo-generic dynamic instruction base class in >>> > cpu/base_dyn_inst.hh which could, again theoretically, be used as a >>> base class >>> > for other CPUs to reuse. Unfortunately that too is probably too tied >>> to its only >>> > consumer, the O3 CPU, to be realistically reusable. >>> > >>> > I would like to merge the base dynamic instruction class into the O3 >>> version, >>> > and then de-templatize the whole O3 CPU. I think that will make the >>> code a lot >>> > easier to work on, and I think our ability to maintain and update O3 is >>> > something we need to improve in at least the medium term. >>> > >>> > Any thoughts? Objections? Votes of support? >>> > >>> > Gabe >>> IMPORTANT NOTICE: The contents of this email and any attachments are >>> confidential and may also be privileged. If you are not the intended >>> recipient, please notify the sender immediately and do not disclose the >>> contents to any other person, use it for any purpose, or store or copy the >>> information in any medium. Thank you. >>> ___ >>> gem5-dev mailing list -- gem5-dev@gem5.org >>> To unsubscribe send an email to gem5-dev-le...@gem5.org >>> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s >> >> ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
Series of 28 CLs, ends here: https://gem5-review.googlesource.com/c/public/gem5/+/42120 On Mon, Mar 1, 2021 at 8:50 AM Jason Lowe-Power wrote: > Hey Gabe, > > I love this idea! It would be nice if you could document the code as you > go, too. It could serve as a good learning tool in the future. > > Cheers, > Jason > > On Mon, Mar 1, 2021 at 7:56 AM Giacomo Travaglini via gem5-dev < > gem5-dev@gem5.org> wrote: > >> +2, +1, Merged >> >> π >> >> Giacomo >> >> > -Original Message- >> > From: Gabe Black via gem5-dev >> > Sent: 27 February 2021 10:13 >> > To: gem5 Developer List >> > Cc: Gabe Black >> > Subject: [gem5-dev] de-templating the O3 CPU >> > >> > Hi folks. The O3 CPU uses templates pretty heavily, I think nominally >> to make it >> > possible to switch in different parts of the CPU to change how, for >> example, a >> > pipeline stage is implemented. >> > >> > Realistically, the different parts of the CPU are probably too >> interdependent >> > for that to actually work, and all the templates and indirection make >> the code a >> > lot more complicated than it really needs to be. >> > >> > Also, there is a pseudo-generic dynamic instruction base class in >> > cpu/base_dyn_inst.hh which could, again theoretically, be used as a >> base class >> > for other CPUs to reuse. Unfortunately that too is probably too tied to >> its only >> > consumer, the O3 CPU, to be realistically reusable. >> > >> > I would like to merge the base dynamic instruction class into the O3 >> version, >> > and then de-templatize the whole O3 CPU. I think that will make the >> code a lot >> > easier to work on, and I think our ability to maintain and update O3 is >> > something we need to improve in at least the medium term. >> > >> > Any thoughts? Objections? Votes of support? >> > >> > Gabe >> IMPORTANT NOTICE: The contents of this email and any attachments are >> confidential and may also be privileged. If you are not the intended >> recipient, please notify the sender immediately and do not disclose the >> contents to any other person, use it for any purpose, or store or copy the >> information in any medium. Thank you. >> ___ >> gem5-dev mailing list -- gem5-dev@gem5.org >> To unsubscribe send an email to gem5-dev-le...@gem5.org >> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s > > ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
Hey Gabe, I love this idea! It would be nice if you could document the code as you go, too. It could serve as a good learning tool in the future. Cheers, Jason On Mon, Mar 1, 2021 at 7:56 AM Giacomo Travaglini via gem5-dev < gem5-dev@gem5.org> wrote: > +2, +1, Merged > > π > > Giacomo > > > -Original Message- > > From: Gabe Black via gem5-dev > > Sent: 27 February 2021 10:13 > > To: gem5 Developer List > > Cc: Gabe Black > > Subject: [gem5-dev] de-templating the O3 CPU > > > > Hi folks. The O3 CPU uses templates pretty heavily, I think nominally to > make it > > possible to switch in different parts of the CPU to change how, for > example, a > > pipeline stage is implemented. > > > > Realistically, the different parts of the CPU are probably too > interdependent > > for that to actually work, and all the templates and indirection make > the code a > > lot more complicated than it really needs to be. > > > > Also, there is a pseudo-generic dynamic instruction base class in > > cpu/base_dyn_inst.hh which could, again theoretically, be used as a base > class > > for other CPUs to reuse. Unfortunately that too is probably too tied to > its only > > consumer, the O3 CPU, to be realistically reusable. > > > > I would like to merge the base dynamic instruction class into the O3 > version, > > and then de-templatize the whole O3 CPU. I think that will make the code > a lot > > easier to work on, and I think our ability to maintain and update O3 is > > something we need to improve in at least the medium term. > > > > Any thoughts? Objections? Votes of support? > > > > Gabe > IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > ___ > gem5-dev mailing list -- gem5-dev@gem5.org > To unsubscribe send an email to gem5-dev-le...@gem5.org > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
+2, +1, Merged π Giacomo > -Original Message- > From: Gabe Black via gem5-dev > Sent: 27 February 2021 10:13 > To: gem5 Developer List > Cc: Gabe Black > Subject: [gem5-dev] de-templating the O3 CPU > > Hi folks. The O3 CPU uses templates pretty heavily, I think nominally to make > it > possible to switch in different parts of the CPU to change how, for example, a > pipeline stage is implemented. > > Realistically, the different parts of the CPU are probably too interdependent > for that to actually work, and all the templates and indirection make the > code a > lot more complicated than it really needs to be. > > Also, there is a pseudo-generic dynamic instruction base class in > cpu/base_dyn_inst.hh which could, again theoretically, be used as a base class > for other CPUs to reuse. Unfortunately that too is probably too tied to its > only > consumer, the O3 CPU, to be realistically reusable. > > I would like to merge the base dynamic instruction class into the O3 version, > and then de-templatize the whole O3 CPU. I think that will make the code a lot > easier to work on, and I think our ability to maintain and update O3 is > something we need to improve in at least the medium term. > > Any thoughts? Objections? Votes of support? > > Gabe IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
Hi Nathanael, I intend to split it into multiple steps, if nothing else just to make reviewing the changes more feasible. Gabe On Mon, Mar 1, 2021 at 1:51 AM Nathanael Premillieu < nathanael.premill...@huawei.com> wrote: > Hi Gabe, > > > > I totally agree with you on this. > > I think itβs also quite a blocker when learning gem5 as it makes the code > difficult to follow and understand. > > Do you intend to do it as one big patch or split that into several steps > (if thatβs possible)? > > > > Thanks, > > Nathanael > > > > *From:* Gabe Black via gem5-dev [mailto:gem5-dev@gem5.org] > *Sent:* Saturday, February 27, 2021 11:13 AM > *To:* gem5 Developer List > *Cc:* Gabe Black > *Subject:* [gem5-dev] de-templating the O3 CPU > > > > Hi folks. The O3 CPU uses templates pretty heavily, I think nominally to > make it possible to switch in different parts of the CPU to change how, for > example, a pipeline stage is implemented. > > > > Realistically, the different parts of the CPU are probably too > interdependent for that to actually work, and all the templates and > indirection make the code a lot more complicated than it really needs to be. > > > > Also, there is a pseudo-generic dynamic instruction base class in > cpu/base_dyn_inst.hh which could, again theoretically, be used as a base > class for other CPUs to reuse. Unfortunately that too is probably too tied > to its only consumer, the O3 CPU, to be realistically reusable. > > > > I would like to merge the base dynamic instruction class into the O3 > version, and then de-templatize the whole O3 CPU. I think that will make > the code a lot easier to work on, and I think our ability to maintain and > update O3 is something we need to improve in at least the medium term. > > > > Any thoughts? Objections? Votes of support? > > > > Gabe > ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Re: de-templating the O3 CPU
Hi Gabe, I totally agree with you on this. I think itβs also quite a blocker when learning gem5 as it makes the code difficult to follow and understand. Do you intend to do it as one big patch or split that into several steps (if thatβs possible)? Thanks, Nathanael From: Gabe Black via gem5-dev [mailto:gem5-dev@gem5.org] Sent: Saturday, February 27, 2021 11:13 AM To: gem5 Developer List Cc: Gabe Black Subject: [gem5-dev] de-templating the O3 CPU Hi folks. The O3 CPU uses templates pretty heavily, I think nominally to make it possible to switch in different parts of the CPU to change how, for example, a pipeline stage is implemented. Realistically, the different parts of the CPU are probably too interdependent for that to actually work, and all the templates and indirection make the code a lot more complicated than it really needs to be. Also, there is a pseudo-generic dynamic instruction base class in cpu/base_dyn_inst.hh which could, again theoretically, be used as a base class for other CPUs to reuse. Unfortunately that too is probably too tied to its only consumer, the O3 CPU, to be realistically reusable. I would like to merge the base dynamic instruction class into the O3 version, and then de-templatize the whole O3 CPU. I think that will make the code a lot easier to work on, and I think our ability to maintain and update O3 is something we need to improve in at least the medium term. Any thoughts? Objections? Votes of support? Gabe ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s