Hi,
I am seeking to generate multiple trace files for multi-threaded workloads
that run in FS (Full-System simulation mode). My plan is to configure the
simulation to have multiple cores, boot the image, run the workload, and
record the traces of instructions that run on each core, such that each
core/thread has its own trace file. My end goal is to have a number of
trace files, each represent a core or a thread.
Questions:
Looking forward to your answer.
Thanks,
~Abdelrahman
--
Best,Abdelrahman Hussein
Hi Abdelrahman,
Thank you for your questions on the mailing list. I will try to answer them
as best as I can.
Cheers,
Jason
On Fri, Sep 8, 2023 at 5:19 PM Abdelrahman S. Hussein via gem5-users <
gem5-users@gem5.org> wrote:
Hi,
I am seeking to generate multiple trace files for multi-threaded workloads
that run in FS (Full-System simulation mode). My plan is to configure the
simulation to have multiple cores, boot the image, run the workload, and
record the traces of instructions that run on each core, such that each
core/thread has its own trace file. My end goal is to have a number of
trace files, each represent a core or a thread.
Questions:
- Is gem5 capable of generating multiple trace files?
- I am checking the Trace CPU Model page on gem5
<https://www.gem5.org/documentation/general_docs/cpu_models/TraceCPU>
website. It has this statement "The traces have been developed for
single-threaded benchmarks simulating in both SE and FS mode". Does this
mean generating multiple trace files for different threads/cores
is unsupported by gem5?
- Is the O3 CPU capable of recording such traces? The goal is to
generate traces using an Out-of-Order superscalar CPU.
- I may have to add a few more fields to the instruction class, such
as a boolean variable to check if the instruction is a branch for example.
which file(s) should I look at?
Looking forward to your answer.
Thanks,
~Abdelrahman
--
Best,Abdelrahman Hussein
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org
Hi again,
I am working on this flow already, such that I generate traces for x86
64-bit (i.e., x64) binaries in FS mode using O3 CPU, and I have a few
follow-up questions.
*(Q1) * How can I access the instruction hexadecimal representation? For
example, if I have the following instructions:
mov rdi,rsp
I would like to be able to get this:
48 89 e7
I am doing this in the commit.cc file where after the rob head instruction
is read, I would like to get this data. The head_inst is declared as a
dynamic instruction, which has staticInst field. From there, my attempts
were not successful to access the hexadecimal representation of the
instruction.
(Q2) If I would like to get the number of operands (either 0, 1, or 2)
for any addressing mode, is it the sum of the return values of numSrcRegs
and numDestRegs?
(Q3) I tried the disassemble function under the StaticInst class to
disassemble the rob head instruction at the commit stage "head_inst->
staticInst->disassemble(head_inst->physEffAddr)". However, this ended up
giving some confusing instructions, such as mov rdi, rdi, rsp. My
understanding is that MOV takes only two operands. Not sure where the third
came from. Also, limm t1, 0xffffffffffa0f77b, which I cannot recognize as
x86 instruction. So, how does this function actually work?
Thanks,
--
Best,Abdelrahman Hussein
On Tue, Sep 12, 2023 at 12:06 PM Jason Lowe-Power jason@lowepower.com
wrote:
Hi Abdelrahman,
Thank you for your questions on the mailing list. I will try to answer
them as best as I can.
Cheers,
Jason
On Fri, Sep 8, 2023 at 5:19 PM Abdelrahman S. Hussein via gem5-users <
gem5-users@gem5.org> wrote:
Hi,
I am seeking to generate multiple trace files for multi-threaded
workloads that run in FS (Full-System simulation mode). My plan is to
configure the simulation to have multiple cores, boot the image, run the
workload, and record the traces of instructions that run on each core, such
that each core/thread has its own trace file. My end goal is to have a
number of trace files, each represent a core or a thread.
Questions:
- Is gem5 capable of generating multiple trace files?
- I am checking the Trace CPU Model page on gem5
<https://www.gem5.org/documentation/general_docs/cpu_models/TraceCPU>
website. It has this statement "The traces have been developed for
single-threaded benchmarks simulating in both SE and FS mode". Does this
mean generating multiple trace files for different threads/cores
is unsupported by gem5?
- Is the O3 CPU capable of recording such traces? The goal is to
generate traces using an Out-of-Order superscalar CPU.
- I may have to add a few more fields to the instruction class, such
as a boolean variable to check if the instruction is a branch for example.
which file(s) should I look at?
Looking forward to your answer.
Thanks,
~Abdelrahman
--
Best,Abdelrahman Hussein
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org