Discussion:
[gem5-users] Adding new flags at decoder
Abhishek Singh
2018-11-15 01:07:58 UTC
Permalink
Hello Everyone,

I have added new instructions in SE x86 ISA, this instructions are same as
MOV instructions in x86 and use the similar mnemonic defined in
/arch/x86/isa/microops/ldstop.isa i.e. Ld and St

For example:

defineMicroLoadOp('*Ldnew*', 'Data = merge(Data, Mem, dataSize);', 'Data =
Mem & mask(dataSize * 8);')


defineMicroStoreOp('*Stnew*', 'Mem = pick(Data, 2, dataSize);')


I have added a new flag "SPECIAL" in src/mem/request.hh, and also added

bool *isSpecial*() const { return _flags.isSet(SPECIAL); } in same file to
identify this instructions in different cache levels.


I want to set this flag when I see this new mov instruction so I modify
ldstop.isa lines as


defineMicroLoadOp('Ldnew', 'Data = merge(Data, Mem, dataSize);', 'Data =
Mem & mask(dataSize * 8);*'mem_flags="Request::Special”*)


defineMicroStoreOp('Stnew', 'Mem = pick(Data, 2, dataSize);'
*mem_flags="Request::Special”*)




*My question is:*


1. Are this steps enough to set a flag and use it in caches?
2. Will this flag be deleted on own on response path(recvTimingResp in
src/mem/cache/base.cc) i.e. on a cold miss to load when pkt is
traversing from LLC to Dcache, will I be able to see this flag again in
when pkt is the response?








Best regards,

Abhishek
Abhishek Singh
2018-11-16 13:59:39 UTC
Permalink
Hello everyone and Gabe,

Do you have any information on this question?

---------- Forwarded message ---------
From: Abhishek Singh <***@gmail.com>
Date: Wed, Nov 14, 2018 at 8:07 PM
Subject: Adding new flags at decoder
To: gem5 users mailing list <gem5-***@gem5.org>


Hello Everyone,

I have added new instructions in SE x86 ISA, this instructions are same as
MOV instructions in x86 and use the similar mnemonic defined in
/arch/x86/isa/microops/ldstop.isa i.e. Ld and St

For example:

defineMicroLoadOp('*Ldnew*', 'Data = merge(Data, Mem, dataSize);', 'Data =
Mem & mask(dataSize * 8);')


defineMicroStoreOp('*Stnew*', 'Mem = pick(Data, 2, dataSize);')


I have added a new flag "SPECIAL" in src/mem/request.hh, and also added

bool *isSpecial*() const { return _flags.isSet(SPECIAL); } in same file to
identify this instructions in different cache levels.


I want to set this flag when I see this new mov instruction so I modify
ldstop.isa lines as


defineMicroLoadOp('Ldnew', 'Data = merge(Data, Mem, dataSize);', 'Data =
Mem & mask(dataSize * 8);*'mem_flags="Request::Special”*)


defineMicroStoreOp('Stnew', 'Mem = pick(Data, 2, dataSize);'
*mem_flags="Request::Special”*)




*My question is:*


1. Are this steps enough to set a flag and use it in caches?
2. Will this flag be deleted on own on response path(recvTimingResp in
src/mem/cache/base.cc) i.e. on a cold miss to load when pkt is
traversing from LLC to Dcache, will I be able to see this flag again in
when pkt is the response?








Best regards,

Abhishek
Gabe Black
2018-11-16 22:42:29 UTC
Permalink
I think you're missing some commas in defineMicroLoadOp and
defineMicroStoreOp, but otherwise that looks reasonable. That flag will be
set in the request object, not the packet object. Requests live through the
life or a request, where packets may only go between two peers in the
memory system, although they may be re-used beyond that.

Gabe

On Fri, Nov 16, 2018 at 5:59 AM Abhishek Singh <
Post by Abhishek Singh
Hello everyone and Gabe,
Do you have any information on this question?
---------- Forwarded message ---------
Date: Wed, Nov 14, 2018 at 8:07 PM
Subject: Adding new flags at decoder
Hello Everyone,
I have added new instructions in SE x86 ISA, this instructions are same as
MOV instructions in x86 and use the similar mnemonic defined in
/arch/x86/isa/microops/ldstop.isa i.e. Ld and St
defineMicroLoadOp('*Ldnew*', 'Data = merge(Data, Mem, dataSize);', 'Data
= Mem & mask(dataSize * 8);')
defineMicroStoreOp('*Stnew*', 'Mem = pick(Data, 2, dataSize);')
I have added a new flag "SPECIAL" in src/mem/request.hh, and also added
bool *isSpecial*() const { return _flags.isSet(SPECIAL); } in same file
to identify this instructions in different cache levels.
I want to set this flag when I see this new mov instruction so I modify
ldstop.isa lines as
defineMicroLoadOp('Ldnew', 'Data = merge(Data, Mem, dataSize);', 'Data =
Mem & mask(dataSize * 8);*'mem_flags="Request::Special”*)
defineMicroStoreOp('Stnew', 'Mem = pick(Data, 2, dataSize);'
*mem_flags="Request::Special”*)
*My question is:*
1. Are this steps enough to set a flag and use it in caches?
2. Will this flag be deleted on own on response path(recvTimingResp in
src/mem/cache/base.cc) i.e. on a cold miss to load when pkt is
traversing from LLC to Dcache, will I be able to see this flag again in
when pkt is the response?
Best regards,
Abhishek
Loading...