Abhishek Singh
2018-11-15 01:07:58 UTC
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
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