gem5-users@gem5.org

The gem5 Users mailing list

View all threads

How to solve "AttributeError: Can't resolve proxy" error when l1icache is replaced with new module

KS
Khan Shaikhul Hadi
Wed, Aug 16, 2023 8:12 PM

I have my dedicated controller module that have L1Icache as member function
(I want to interfere with all incoming and outgoing request and response
from cache and may modify based on some algorithm) with similler parameter
and port structure.  In PrivateL1SharedL2CacheHierarchy cache hierarchy, I
wanted to change the L1Cache with This Controller module. When I run my
configuration, I encountered this error:

Error in unproxying param 'assoc' of board.cache_hierarchy.l1icaches0.tags
AttributeError: Can't resolve proxy 'assoc' of type 'Int' from
'board.cache_hierarchy.l1icaches0.tags'

Anyone have any idea how I could solve this?

Note: To me it seems like, gem5 trying to create the structure of the
system where the board trying to find the l1icaches0 directory and trying
to get tag value from there. I could not find where it was happening. Also,
I have found some questions where others faced the same type of error ( not
exactly the same error) and creating a subsystem may resolve it. But I
could not find any resources on how this subsystem structure works in gem5
and how to make your own subsystem. Any known resources on that?

Best
Shaikhul

I have my dedicated controller module that have L1Icache as member function (I want to interfere with all incoming and outgoing request and response from cache and may modify based on some algorithm) with similler parameter and port structure. In PrivateL1SharedL2CacheHierarchy cache hierarchy, I wanted to change the L1Cache with This Controller module. When I run my configuration, I encountered this error: Error in unproxying param 'assoc' of board.cache_hierarchy.l1icaches0.tags AttributeError: Can't resolve proxy 'assoc' of type 'Int' from 'board.cache_hierarchy.l1icaches0.tags' Anyone have any idea how I could solve this? Note: To me it seems like, gem5 trying to create the structure of the system where the board trying to find the l1icaches0 directory and trying to get tag value from there. I could not find where it was happening. Also, I have found some questions where others faced the same type of error ( not exactly the same error) and creating a subsystem may resolve it. But I could not find any resources on how this subsystem structure works in gem5 and how to make your own subsystem. Any known resources on that? Best Shaikhul
JL
Jason Lowe-Power
Thu, Aug 17, 2023 6:37 PM

Hi Shaikhul,

I think that you have somehow unset the assoc parameter (or set it to
None) in the cache. Can you provide us the exact script you're running, the
command line that you use to run, the information about the gem5 build
(variant used), the version of gem5 you're using, and any modifications you
have made to gem5?

Thanks,
Jason

On Wed, Aug 16, 2023 at 1:13 PM Khan Shaikhul Hadi via gem5-users <
gem5-users@gem5.org> wrote:

I have my dedicated controller module that have L1Icache as member
function (I want to interfere with all incoming and outgoing request and
response from cache and may modify based on some algorithm) with similler
parameter and port structure.  In PrivateL1SharedL2CacheHierarchy cache
hierarchy, I wanted to change the L1Cache with This Controller module. When
I run my configuration, I encountered this error:

Error in unproxying param 'assoc' of board.cache_hierarchy.l1icaches0.tags
AttributeError: Can't resolve proxy 'assoc' of type 'Int' from
'board.cache_hierarchy.l1icaches0.tags'

Anyone have any idea how I could solve this?

Note: To me it seems like, gem5 trying to create the structure of the
system where the board trying to find the l1icaches0 directory and trying
to get tag value from there. I could not find where it was happening. Also,
I have found some questions where others faced the same type of error ( not
exactly the same error) and creating a subsystem may resolve it. But I
could not find any resources on how this subsystem structure works in gem5
and how to make your own subsystem. Any known resources on that?

Best
Shaikhul


gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org

Hi Shaikhul, I think that you have somehow unset the `assoc` parameter (or set it to None) in the cache. Can you provide us the exact script you're running, the command line that you use to run, the information about the gem5 build (variant used), the version of gem5 you're using, and any modifications you have made to gem5? Thanks, Jason On Wed, Aug 16, 2023 at 1:13 PM Khan Shaikhul Hadi via gem5-users < gem5-users@gem5.org> wrote: > I have my dedicated controller module that have L1Icache as member > function (I want to interfere with all incoming and outgoing request and > response from cache and may modify based on some algorithm) with similler > parameter and port structure. In PrivateL1SharedL2CacheHierarchy cache > hierarchy, I wanted to change the L1Cache with This Controller module. When > I run my configuration, I encountered this error: > > Error in unproxying param 'assoc' of board.cache_hierarchy.l1icaches0.tags > AttributeError: Can't resolve proxy 'assoc' of type 'Int' from > 'board.cache_hierarchy.l1icaches0.tags' > > Anyone have any idea how I could solve this? > > Note: To me it seems like, gem5 trying to create the structure of the > system where the board trying to find the l1icaches0 directory and trying > to get tag value from there. I could not find where it was happening. Also, > I have found some questions where others faced the same type of error ( not > exactly the same error) and creating a subsystem may resolve it. But I > could not find any resources on how this subsystem structure works in gem5 > and how to make your own subsystem. Any known resources on that? > > Best > Shaikhul > _______________________________________________ > gem5-users mailing list -- gem5-users@gem5.org > To unsubscribe send an email to gem5-users-leave@gem5.org >
KS
Khan Shaikhul Hadi
Thu, Aug 17, 2023 9:02 PM

Right now my controller object just intended to work as wrapper for icache
( when I could ensure that I could take request from cpu and send it to
icache and vice versa, I'll start working on my main target).

my simple script:

import librarie

#########  Parameters ##########

#Memory
L1Cache = "32KiB"  # same size data and instruction cache
Asso_L1 = 4        # associativity
Asso_L2 = 8
L2Cache = "256KiB"      # 8 times of L1
L3Cache = "4096KiB"    #16 times of L2
DRAM_size = "2GiB"

config for interconnect netowrk

number_of_cpu = 2
ClkFreq = "3GHz"
isa=ISA.X86

##################################

requires(

isa_required=ISA.X86,
 kvm_required=True,

)

cache_hierarchy =
PrivateL1SharedL2CacheHierarchy(l1d_size=L1Cache,l1i_size=L1Cache,l2_size=L2Cache,l1d_assoc=Asso_L1,l1i_assoc=Asso_L1,l2_assoc=Asso_L2)
memory = SingleChannelDDR3_1600(DRAM_size)
processor = SimpleProcessor( cpu_type=CPUTypes.O3,
num_cores=number_of_cpu,isa=isa)
board = SimpleBoard(clk_freq=ClkFreq, processor=processor, memory=memory,
cache_hierarchy=cache_hierarchy)

#simulation setup

binary = BinaryResource('/path/to/binary')
board.set_se_binary_workload(binary)

#simulation start
simulator = Simulator(board=board)
simulator.run()

In PrivateL1SharedL2CacheHierarchy(), I changed L1ICache with
L1PrivateCtrl() which takes same argument as l1icache

self.l1icaches = [

         L1PrivateCtrl(
             icache_size=self._l1i_size,
             icache_assoc=self._l1i_assoc,
             icache_writeback_clean=False,
         )
         for i in range(board.get_processor().get_num_cores())
     ]

My L1PrivateCtrl is a library for my L1PrivateController simobject which
has CacheParams icache_param as a local variable. For now, it just takes
parameters for cache, assigns them in icache_param manually and
instantiates cache objects with icache_param argument. Right now, I'm just
trying to implement my controller object to work as an intermediary between
cpu and icache.

On Thu, Aug 17, 2023 at 2:37 PM Jason Lowe-Power jason@lowepower.com
wrote:

Hi Shaikhul,

I think that you have somehow unset the assoc parameter (or set it to
None) in the cache. Can you provide us the exact script you're running, the
command line that you use to run, the information about the gem5 build
(variant used), the version of gem5 you're using, and any modifications you
have made to gem5?

Thanks,
Jason

On Wed, Aug 16, 2023 at 1:13 PM Khan Shaikhul Hadi via gem5-users <
gem5-users@gem5.org> wrote:

I have my dedicated controller module that have L1Icache as member
function (I want to interfere with all incoming and outgoing request and
response from cache and may modify based on some algorithm) with similler
parameter and port structure.  In PrivateL1SharedL2CacheHierarchy cache
hierarchy, I wanted to change the L1Cache with This Controller module. When
I run my configuration, I encountered this error:

Error in unproxying param 'assoc' of board.cache_hierarchy.l1icaches0.tags
AttributeError: Can't resolve proxy 'assoc' of type 'Int' from
'board.cache_hierarchy.l1icaches0.tags'

Anyone have any idea how I could solve this?

Note: To me it seems like, gem5 trying to create the structure of the
system where the board trying to find the l1icaches0 directory and trying
to get tag value from there. I could not find where it was happening. Also,
I have found some questions where others faced the same type of error ( not
exactly the same error) and creating a subsystem may resolve it. But I
could not find any resources on how this subsystem structure works in gem5
and how to make your own subsystem. Any known resources on that?

Best
Shaikhul


gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org

Right now my controller object just intended to work as wrapper for icache ( when I could ensure that I could take request from cpu and send it to icache and vice versa, I'll start working on my main target). my simple script: > ## import librarie ######### Parameters ########## > > #Memory > L1Cache = "32KiB" # same size data and instruction cache > Asso_L1 = 4 # associativity > Asso_L2 = 8 > L2Cache = "256KiB" # 8 times of L1 > L3Cache = "4096KiB" #16 times of L2 > DRAM_size = "2GiB" > ## config for interconnect netowrk > number_of_cpu = 2 > ClkFreq = "3GHz" > isa=ISA.X86 > > ################################## requires( > isa_required=ISA.X86, > kvm_required=True, > ) > > cache_hierarchy = > PrivateL1SharedL2CacheHierarchy(l1d_size=L1Cache,l1i_size=L1Cache,l2_size=L2Cache,l1d_assoc=Asso_L1,l1i_assoc=Asso_L1,l2_assoc=Asso_L2) > memory = SingleChannelDDR3_1600(DRAM_size) > processor = SimpleProcessor( cpu_type=CPUTypes.O3, > num_cores=number_of_cpu,isa=isa) > board = SimpleBoard(clk_freq=ClkFreq, processor=processor, memory=memory, > cache_hierarchy=cache_hierarchy) > #simulation setup > binary = BinaryResource('/path/to/binary') > board.set_se_binary_workload(binary) > #simulation start > simulator = Simulator(board=board) > simulator.run() In PrivateL1SharedL2CacheHierarchy(), I changed L1ICache with L1PrivateCtrl() which takes same argument as l1icache self.l1icaches = [ > L1PrivateCtrl( > icache_size=self._l1i_size, > icache_assoc=self._l1i_assoc, > icache_writeback_clean=False, > ) > for i in range(board.get_processor().get_num_cores()) > ] My L1PrivateCtrl is a library for my L1PrivateController simobject which has CacheParams icache_param as a local variable. For now, it just takes parameters for cache, assigns them in icache_param manually and instantiates cache objects with icache_param argument. Right now, I'm just trying to implement my controller object to work as an intermediary between cpu and icache. On Thu, Aug 17, 2023 at 2:37 PM Jason Lowe-Power <jason@lowepower.com> wrote: > Hi Shaikhul, > > I think that you have somehow unset the `assoc` parameter (or set it to > None) in the cache. Can you provide us the exact script you're running, the > command line that you use to run, the information about the gem5 build > (variant used), the version of gem5 you're using, and any modifications you > have made to gem5? > > Thanks, > Jason > > On Wed, Aug 16, 2023 at 1:13 PM Khan Shaikhul Hadi via gem5-users < > gem5-users@gem5.org> wrote: > >> I have my dedicated controller module that have L1Icache as member >> function (I want to interfere with all incoming and outgoing request and >> response from cache and may modify based on some algorithm) with similler >> parameter and port structure. In PrivateL1SharedL2CacheHierarchy cache >> hierarchy, I wanted to change the L1Cache with This Controller module. When >> I run my configuration, I encountered this error: >> >> Error in unproxying param 'assoc' of board.cache_hierarchy.l1icaches0.tags >> AttributeError: Can't resolve proxy 'assoc' of type 'Int' from >> 'board.cache_hierarchy.l1icaches0.tags' >> >> Anyone have any idea how I could solve this? >> >> Note: To me it seems like, gem5 trying to create the structure of the >> system where the board trying to find the l1icaches0 directory and trying >> to get tag value from there. I could not find where it was happening. Also, >> I have found some questions where others faced the same type of error ( not >> exactly the same error) and creating a subsystem may resolve it. But I >> could not find any resources on how this subsystem structure works in gem5 >> and how to make your own subsystem. Any known resources on that? >> >> Best >> Shaikhul >> _______________________________________________ >> gem5-users mailing list -- gem5-users@gem5.org >> To unsubscribe send an email to gem5-users-leave@gem5.org >> >