[gem5-users] Re: How does an out of order pipeline implementation handle instructions (cmp, adds,cmn etc.) which update N,Z,C,V?

2022-03-29 Thread tomjosekallooran--- via gem5-users
Hello Jason,
Thank you very much for the quick response. I greatly appreciate it.
I will check the source code mentioned.
Wishing you a great day.
Regards,
Tom
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: How does an out of order pipeline implementation handle instructions (cmp, adds,cmn etc.) which update N,Z,C,V?

2022-03-29 Thread Jason Lowe-Power via gem5-users
Hi Tom,

On Tue, Mar 29, 2022 at 9:39 AM tomjosekallooran--- via gem5-users <
gem5-users@gem5.org> wrote:

> Hi ,
> This may sound very generic, but i want to try some experiments with the
> out of order implementation. I came across few scenarios, which are listed
> below (any input would be helpful):
> 1. lets consider the following set of instructions (an example which was
> made up):
> Address instr  Operands
> 4357136cmp {"x1", "#16"}
> 4357140cmp {"x2", "#16"}
> 4357144bhi   {"4387895"}
>
> So if we have two execution units which can execute integer instructions,
> then both "cmp" instruction (4357136 and 4357140) could be issued to the
> execution unit. But an "cmp" instruction will update N,Z,C,V flags which
> inturn are used for evaluating conditional flags (eq_ne, hi_ls, cs_cc etc).
> So, can these two cmp be issued to execution units in the same cycle? If
> so, are the N,Z,C,V for each cmp only updated after inorder commit? How is
> it handled ? (do we use temp registers for holding each N,Z,C,V value?)
>

If I remember correctly, we rename all of the flag registers on each
instruction, and we increase the number of physical registers such that
this renaming is not a bottleneck. In a real processor, I don't think it
would work this way, but it should be OK performance-wise.


>
> 2. In speculative execution, how are stores implemented? do we place them
> into a store buffer and write it to memory once its commited?
>

I think that's correct, at least for x86. In Arm/RISC-V the stores could go
out of order to memory as well. You can check the code in the lsq_unit
files in src/cpu/o3 and poke around for "tso" to see exactly how it's
handled. Someone else may remember better than I do :).

Cheers,
Jason


>
> Any input would be appreciated.
> Regards,
> Tom
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Upcoming gem5 events! Tutorial, Workshop, and Boot Camp!

2022-03-29 Thread Bobby Bruce via gem5-users
Dear all,

We wish to make the computer architecture research community aware of
several gem5 events occurring over the next 6 months. There will be two
events co-located at ISCA 2022 (held in New York, June 18th) -- a 3 hour
tutorial, and a 3 hour workshop. In July, there will be a "gem5 Boot Camp",
5 days, July 11 to July 15th, for junior computer architecture researchers
to learn how to use gem5 in their projects.

Specific event details are shown below. Please relay these details to
anyone that may be interested.

*ISCA 2022: The gem5 Tutorial*

Date: June 18th 2022 (Morning session)
Location: ISCA, New York City
Webpage: https://www.gem5.org/events/isca-2022#the-4th-gem5-tutorial
Registration: Please keep an eye on the ISCA website for registration
information https://iscaconf.org/isca2022/

The gem5 tutorial is designed to give computer architecture researchers a
"crash course" in using gem5. No prior experience is required and the event
is open to anyone wanting to attend.

The tutorial will be carried out over the course of a 3 hour session with
attendees working from their own laptops. A tentative schedule is shown
here:

- First hour: Getting started with gem5.
This will cover the basics of building a simulation of gem5, from
compilation to building full-system simulations using the gem5 standard
library.

- Second hour: Extending gem5
This will cover how to create your own gem5 simobjects, add your own
components to the library, and running simulations with the components you
have created.

- Third hour: Deeper topics
The last hour will cover more advanced topics such as the gem5 memory
system and ruby.


*ISCA 2022: The gem5 Users' Workshop*

Date: June 18th 2022 (Afternoon session)
Location: ISCA, New York City
Webpage: https://www.gem5.org/events/isca-2022#the-4th-gem5-users-workshop
Registration: Please keep an eye on the ISCA website for registration
information https://iscaconf.org/isca2022/
Presentation proposal link: https://forms.gle/VZxXsWBniUPGBQdw5
Presentation proposal deadline: April 26th (Notifications sent out by May
9th).

The gem5 Users' Workshop will start with a 30 minute keynote presentation
by Prof. Jason Lowe-Power titled "Recent Advancements in Mainline gem5
v20.0 – v21.2". This will be followed by a series of 15 minutes
presentations. These presentations are an opportunity for users of gem5 to
present gem5-related work and foster discussion.

Presentations are solicited on a broad range of topics related to gem5.
Including, but not limited to:

- New gem5 features and models.
- Improved models.
- Validation against real hardware.
- Software Engineering related to gem5.
- Experiences using gem5.
- Tools, visualizations, data analysis tools, etc.

If you wish to present at this year's gem5 Users' workshop, please provide
a presentation proposal (a 1 page PDF) here:
https://forms.gle/VZxXsWBniUPGBQdw5. The deadline for submitting a
presentation proposal is April 26th with acceptance notifications sent out
by May 9th.

Note: this is an in-person event. Presenters must attend the workshop.

*July 2022: The gem5 Boot Camp*

Dates: July 11th to July 15th 2022
Location: Davis, California
Webpage: https://www.gem5.org/events/boot-camp-2022
Application form: https://forms.gle/3wWPsMDfXyaChmQ68
Application Deadline: May 18th (Notifications sent out by June 1st)

The gem5 boot camp is for junior computer architecture researchers,
particularly PhD. students, to learn how to use gem5 in their projects. The
event will be held over 5 days and will take attendees through all aspects
of using the gem5 simulation from setting up basic system simulations,
creating components, learning to interpret gem5 stats, all the through to
running and modifying simulations comparable to real world systems.

This event is free for all accepted attendees. Registration, accommodation
and meals will incur no cost. Travel grants will also be available.

Those wishing to attend should register using the following form:
https://forms.gle/AztSG3mD2BqQ4f967. The deadline for applying is May 18th.
Accepted applicants will be notified by June 1st.

Kind regards,
Bobby
--
Dr. Bobby R. Bruce
Room 3050,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] How does an out of order pipeline implementation handle instructions (cmp, adds,cmn etc.) which update N,Z,C,V?

2022-03-29 Thread tomjosekallooran--- via gem5-users
Hi ,
This may sound very generic, but i want to try some experiments with the out of 
order implementation. I came across few scenarios, which are listed below (any 
input would be helpful):
1. lets consider the following set of instructions (an example which was made 
up):
Address instr  Operands
4357136cmp {"x1", "#16"}
4357140cmp {"x2", "#16"}
4357144bhi   {"4387895"}

So if we have two execution units which can execute integer instructions, then 
both "cmp" instruction (4357136 and 4357140) could be issued to the execution 
unit. But an "cmp" instruction will update N,Z,C,V flags which inturn are used 
for evaluating conditional flags (eq_ne, hi_ls, cs_cc etc). 
So, can these two cmp be issued to execution units in the same cycle? If so, 
are the N,Z,C,V for each cmp only updated after inorder commit? How is it 
handled ? (do we use temp registers for holding each N,Z,C,V value?)

2. In speculative execution, how are stores implemented? do we place them into 
a store buffer and write it to memory once its commited?   

Any input would be appreciated. 
Regards,
Tom
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s