[gem5-users] Re: Reading from memory in Gem5
Hello Jason, It is for a debug-only read and I want to see what is in the main memory only not in the cache. Thanks for your email, I really appreciate that. From: Jason Lowe-Power Sent: Friday, August 7, 2020 5:52 PM To: ABD ALRHMAN ABO ALKHEEL Cc: gem5 users mailing list Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, Is this a debug-only read or are you trying to simulate the timing for the read? Do you want to see what's in the main memory or do you want to see the up-to-date values in the caches? The answers to these questions will drive what type of access you want to make and what object you want to use to make the access. Generally, you can simply construct a packet and send a request of any size to any object. See http://www.gem5.org/documentation/learning_gem5/part2/simplecache/ for details on how to send/receive memory requests. Cheers, Jason PS: There is no need to send multiple emails. People will either respond or they won't. Spamming the list (and individuals) will *decrease* the chance of a response due to causing people to get frustrated. Please don't stop asking questions! But it's important to be polite when asking them :). On Thu, Aug 6, 2020 at 12:44 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, I want to clarify what I want to do; I want to run a program on gem5 (in SE mode) for 1M instructions and I want to save the memory addresses that every LD instruction loads data from ( I can get those addresses from the pushRequest method in the lsq) http://doxygen.gem5.org/release/current/classLSQ.html and saving those addresses in a table (map). After a specific time for example (every100k instructions), I want to access the memory to read the data from those addresses. For instance, let us assume that the address that load instruction loads data from it is (0x78226e68), can I read the content of this memory address? Also can I read the 256 bytes of this address (0x78226e00-0x78226eff)? If so, how? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Tuesday, August 4, 2020 4:41 PM To: ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>>; gem5 users mailing list mailto:gem5-users@gem5.org>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, First of all, please reply to the users list, not directly to the person who responded. This allows everyone to see answers and/or chime in and help. Second, the page you linked is out of date. Please use the main gem5 website for all of the up to date documentation (e.g., http://doxygen.gem5.org/release/current/classLSQUnit.html) Third, I still don't fully understand what your goals are. However, you can use the system port (actually, I think I was wrong before, you should use the "getPort" function, not "getSystemPort") to make functional (or debug) accesses to the memory. You can create a `Packet` with a `Request` and send a functional request across the port (i.e., call sendFunctional(pkt)). You can use either virtual (in SE mode) or physical address (in both modes). I am sure there are some caveats to using virtual addresses, but I don't know exactly what they are. If you're trying to make new timing accesses, then you should use the main "dcache_port" and "icache_port" that are connected to the CPU. Again, you can construct a Packet object with a Request and send it across the port (e.g., sendTimingReq(pkt)). You may want to read up on the details of how gem5's memory objects work: http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ Cheers, Jason On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, Thanks for your email. What I want to do is finding the memory address that the LD instruction loads data from ( I can get the physical and virtual address from the Read method in the lsqunit)http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving those addresses. After a specific time, I want to access the memory to read the data from those addresses. Can I use getSystemPort function to access the memory and read the data from those addresses? If so, should I use the virtual address or the physical address? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Monday, August 3, 2020 3:26 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>> Cc: gem5-users mailto:gem5-users-boun...@gem5.org>>; ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, This sounds like you probably want to use "functional" accesses. These are built for introspection and debugging, which is what it sounds like you want to do. Using the System ob
[gem5-users] Re: Reading from memory in Gem5
Hi Jason, Thanks for your email. I am sorry about that, I sent the second email in order to update the first one about reading the memory with 256 bytes size of the data not to make any spamming. Thanks From: Jason Lowe-Power Sent: Friday, August 7, 2020 5:52 PM To: ABD ALRHMAN ABO ALKHEEL Cc: gem5 users mailing list Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, Is this a debug-only read or are you trying to simulate the timing for the read? Do you want to see what's in the main memory or do you want to see the up-to-date values in the caches? The answers to these questions will drive what type of access you want to make and what object you want to use to make the access. Generally, you can simply construct a packet and send a request of any size to any object. See http://www.gem5.org/documentation/learning_gem5/part2/simplecache/ for details on how to send/receive memory requests. Cheers, Jason PS: There is no need to send multiple emails. People will either respond or they won't. Spamming the list (and individuals) will *decrease* the chance of a response due to causing people to get frustrated. Please don't stop asking questions! But it's important to be polite when asking them :). On Thu, Aug 6, 2020 at 12:44 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, I want to clarify what I want to do; I want to run a program on gem5 (in SE mode) for 1M instructions and I want to save the memory addresses that every LD instruction loads data from ( I can get those addresses from the pushRequest method in the lsq) http://doxygen.gem5.org/release/current/classLSQ.html and saving those addresses in a table (map). After a specific time for example (every100k instructions), I want to access the memory to read the data from those addresses. For instance, let us assume that the address that load instruction loads data from it is (0x78226e68), can I read the content of this memory address? Also can I read the 256 bytes of this address (0x78226e00-0x78226eff)? If so, how? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Tuesday, August 4, 2020 4:41 PM To: ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>>; gem5 users mailing list mailto:gem5-users@gem5.org>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, First of all, please reply to the users list, not directly to the person who responded. This allows everyone to see answers and/or chime in and help. Second, the page you linked is out of date. Please use the main gem5 website for all of the up to date documentation (e.g., http://doxygen.gem5.org/release/current/classLSQUnit.html) Third, I still don't fully understand what your goals are. However, you can use the system port (actually, I think I was wrong before, you should use the "getPort" function, not "getSystemPort") to make functional (or debug) accesses to the memory. You can create a `Packet` with a `Request` and send a functional request across the port (i.e., call sendFunctional(pkt)). You can use either virtual (in SE mode) or physical address (in both modes). I am sure there are some caveats to using virtual addresses, but I don't know exactly what they are. If you're trying to make new timing accesses, then you should use the main "dcache_port" and "icache_port" that are connected to the CPU. Again, you can construct a Packet object with a Request and send it across the port (e.g., sendTimingReq(pkt)). You may want to read up on the details of how gem5's memory objects work: http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ Cheers, Jason On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, Thanks for your email. What I want to do is finding the memory address that the LD instruction loads data from ( I can get the physical and virtual address from the Read method in the lsqunit)http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving those addresses. After a specific time, I want to access the memory to read the data from those addresses. Can I use getSystemPort function to access the memory and read the data from those addresses? If so, should I use the virtual address or the physical address? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Monday, August 3, 2020 3:26 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>> Cc: gem5-users mailto:gem5-users-boun...@gem5.org>>; ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, This sounds like you probably want to use "functional" accesses. These are built for introspection and debugging, which is what it sou
[gem5-users] Re: Reading from memory in Gem5
Hello, Is this a debug-only read or are you trying to simulate the timing for the read? Do you want to see what's in the main memory or do you want to see the up-to-date values in the caches? The answers to these questions will drive what type of access you want to make and what object you want to use to make the access. Generally, you can simply construct a packet and send a request of any size to any object. See http://www.gem5.org/documentation/learning_gem5/part2/simplecache/ for details on how to send/receive memory requests. Cheers, Jason PS: There is no need to send multiple emails. People will either respond or they won't. Spamming the list (and individuals) will *decrease* the chance of a response due to causing people to get frustrated. Please don't stop asking questions! But it's important to be polite when asking them :). On Thu, Aug 6, 2020 at 12:44 PM ABD ALRHMAN ABO ALKHEEL < abdkeel...@hotmail.com> wrote: > Hi Jason, > > I want to clarify what I want to do; I want to run a program on gem5 (in > SE mode) for 1M instructions and I want to save the memory addresses that > every LD instruction loads data from ( I can get those addresses from the > pushRequest method in the lsq) > http://doxygen.gem5.org/release/current/classLSQ.html and saving those > addresses in a table (map). After a specific time for example (every100k > instructions), I want to access the memory to read the data from those > addresses. For instance, let us assume that the address that load > instruction loads data from it is (0x78226e68), can I read the content > of this memory address? Also can I read the 256 bytes of this address ( > 0x78226e00-0x78226eff)? If so, how? > > Thanks > > > -- > *From:* Jason Lowe-Power > *Sent:* Tuesday, August 4, 2020 4:41 PM > *To:* ABD ALRHMAN ABO ALKHEEL ; gem5 users > mailing list > *Subject:* Re: [gem5-users] Re: Reading from memory in Gem5 > > Hello, > > First of all, please reply to the users list, not directly to the person > who responded. This allows everyone to see answers and/or chime in and help. > > Second, the page you linked is out of date. Please use the main gem5 > website for all of the up to date documentation (e.g., > http://doxygen.gem5.org/release/current/classLSQUnit.html) > > Third, I still don't fully understand what your goals are. However, you > can use the system port (actually, I think I was wrong before, you should > use the "getPort" function, not "getSystemPort") to make functional (or > debug) accesses to the memory. You can create a `Packet` with a `Request` > and send a functional request across the port (i.e., call > sendFunctional(pkt)). You can use either virtual (in SE mode) or physical > address (in both modes). I am sure there are some caveats to using virtual > addresses, but I don't know exactly what they are. > > If you're trying to make new timing accesses, then you should use the main > "dcache_port" and "icache_port" that are connected to the CPU. Again, you > can construct a Packet object with a Request and send it across the port > (e.g., sendTimingReq(pkt)). > > You may want to read up on the details of how gem5's memory objects work: > http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ > > Cheers, > Jason > > > > On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL < > abdkeel...@hotmail.com> wrote: > > Hi Jason, > > Thanks for your email. > > What I want to do is finding the memory address that the LD instruction > loads data from ( I can get the physical and virtual address from the Read > method in the lsqunit) > http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving > those addresses. After a specific time, I want to access the memory to read > the data from those addresses. Can I use getSystemPort function to access > the memory and read the data from those addresses? If so, should I use the > virtual address or the physical address? > > Thanks > > > -- > *From:* Jason Lowe-Power > *Sent:* Monday, August 3, 2020 3:26 PM > *To:* gem5 users mailing list > *Cc:* gem5-users ; ABD ALRHMAN ABO ALKHEEL < > abdkeel...@hotmail.com> > *Subject:* Re: [gem5-users] Re: Reading from memory in Gem5 > > Hello, > > This sounds like you probably want to use "functional" accesses. These are > built for introspection and debugging, which is what it sounds like you > want to do. Using the System object, there is a `getSystemPort` > function that will return a gem5 port that you can use with functional > accesses to "backdoor" into the memory. See > http://doxygen.gem5.org/release/current/classSyste
[gem5-users] Re: Reading from memory in Gem5
Hi Jason, I want to clarify what I want to do; I want to run a program on gem5 (in SE mode) for 1M instructions and I want to save the memory addresses that every LD instruction loads data from ( I can get those addresses from the pushRequest method in the lsq) http://doxygen.gem5.org/release/current/classLSQ.html and saving those addresses in a table (map). After a specific time for example (every100k instructions), I want to access the memory to read the data from those addresses. For instance, let us assume that the address that load instruction loads data from it is (0x78226e68), can I read the content of this memory address? Also can I read the 256 bytes of this address (0x78226e00-0x78226eff)? If so, how? Thanks From: Jason Lowe-Power Sent: Tuesday, August 4, 2020 4:41 PM To: ABD ALRHMAN ABO ALKHEEL ; gem5 users mailing list Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, First of all, please reply to the users list, not directly to the person who responded. This allows everyone to see answers and/or chime in and help. Second, the page you linked is out of date. Please use the main gem5 website for all of the up to date documentation (e.g., http://doxygen.gem5.org/release/current/classLSQUnit.html) Third, I still don't fully understand what your goals are. However, you can use the system port (actually, I think I was wrong before, you should use the "getPort" function, not "getSystemPort") to make functional (or debug) accesses to the memory. You can create a `Packet` with a `Request` and send a functional request across the port (i.e., call sendFunctional(pkt)). You can use either virtual (in SE mode) or physical address (in both modes). I am sure there are some caveats to using virtual addresses, but I don't know exactly what they are. If you're trying to make new timing accesses, then you should use the main "dcache_port" and "icache_port" that are connected to the CPU. Again, you can construct a Packet object with a Request and send it across the port (e.g., sendTimingReq(pkt)). You may want to read up on the details of how gem5's memory objects work: http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ Cheers, Jason On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, Thanks for your email. What I want to do is finding the memory address that the LD instruction loads data from ( I can get the physical and virtual address from the Read method in the lsqunit)http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving those addresses. After a specific time, I want to access the memory to read the data from those addresses. Can I use getSystemPort function to access the memory and read the data from those addresses? If so, should I use the virtual address or the physical address? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Monday, August 3, 2020 3:26 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>> Cc: gem5-users mailto:gem5-users-boun...@gem5.org>>; ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, This sounds like you probably want to use "functional" accesses. These are built for introspection and debugging, which is what it sounds like you want to do. Using the System object, there is a `getSystemPort` function that will return a gem5 port that you can use with functional accesses to "backdoor" into the memory. See http://doxygen.gem5.org/release/current/classSystem.html#a5ecbd1eaa3e0d19f4640bb71a0b59d64. Cheers, Jason On Sun, Aug 2, 2020 at 7:01 AM ABD ALRHMAN ABO ALKHEEL via gem5-users mailto:gem5-users@gem5.org>> wrote: Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks From: ABD ALRHMAN ABO ALKHEEL Sent: Saturday, August 1, 2020 3:19 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>>; gem5-users mailto:gem5-users-boun...@gem5.org>> Subject: Reading from memory in Gem5 Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks ___ gem5-users mailing list -- gem5-users@gem5.org<mailto:gem5-users@gem5.org> To unsubscribe send an email to gem5-users-le...@gem5.org<mailto:gem5-users-le...@gem5.org> %(web_page_url)slistinfo%(cg
[gem5-users] Re: Reading from memory in Gem5
Hi Jason, I want to clarify what I want to do; I want to run a program on gem5 (in SE mode) for 1M instructions and I want to save the memory addresses that every LD instruction loads data from ( I can get those addresses from the pushRequest method in the lsq) http://doxygen.gem5.org/release/current/classLSQ.html and saving those addresses in table (map). After a specific time for example (every100k instructions), I want to access the memory to read the data from those addresses. For instance, let us assume that the address that load instruction loads data from it is (0x78226e68), can I read the content of this memory address? If so, how? Thanks gem5: Out of order CPU model<https://www.gem5.org/documentation/general_docs/cpu_models/O3CPU> Memory Order Misspeculation. The InstructionQueue has a MemDepUnit to track memory order dependence. The IQ will not schedule an instruction if MemDepUnit states there is dependency. In LSQUnit::read(), the LSQ will search for possible aliasing store and forward if possible.Otherwise, the load is blocked and rescheduled for when the blocking store completes by notifying the MemDepUnit. www.gem5.org Thanks From: Jason Lowe-Power Sent: Tuesday, August 4, 2020 4:41 PM To: ABD ALRHMAN ABO ALKHEEL ; gem5 users mailing list Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, First of all, please reply to the users list, not directly to the person who responded. This allows everyone to see answers and/or chime in and help. Second, the page you linked is out of date. Please use the main gem5 website for all of the up to date documentation (e.g., http://doxygen.gem5.org/release/current/classLSQUnit.html) Third, I still don't fully understand what your goals are. However, you can use the system port (actually, I think I was wrong before, you should use the "getPort" function, not "getSystemPort") to make functional (or debug) accesses to the memory. You can create a `Packet` with a `Request` and send a functional request across the port (i.e., call sendFunctional(pkt)). You can use either virtual (in SE mode) or physical address (in both modes). I am sure there are some caveats to using virtual addresses, but I don't know exactly what they are. If you're trying to make new timing accesses, then you should use the main "dcache_port" and "icache_port" that are connected to the CPU. Again, you can construct a Packet object with a Request and send it across the port (e.g., sendTimingReq(pkt)). You may want to read up on the details of how gem5's memory objects work: http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ Cheers, Jason On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, Thanks for your email. What I want to do is finding the memory address that the LD instruction loads data from ( I can get the physical and virtual address from the Read method in the lsqunit)http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving those addresses. After a specific time, I want to access the memory to read the data from those addresses. Can I use getSystemPort function to access the memory and read the data from those addresses? If so, should I use the virtual address or the physical address? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Monday, August 3, 2020 3:26 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>> Cc: gem5-users mailto:gem5-users-boun...@gem5.org>>; ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, This sounds like you probably want to use "functional" accesses. These are built for introspection and debugging, which is what it sounds like you want to do. Using the System object, there is a `getSystemPort` function that will return a gem5 port that you can use with functional accesses to "backdoor" into the memory. See http://doxygen.gem5.org/release/current/classSystem.html#a5ecbd1eaa3e0d19f4640bb71a0b59d64. Cheers, Jason On Sun, Aug 2, 2020 at 7:01 AM ABD ALRHMAN ABO ALKHEEL via gem5-users mailto:gem5-users@gem5.org>> wrote: Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks From: ABD ALRHMAN ABO ALKHEEL Sent: Saturday, August 1, 2020 3:19 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>>; gem5-users mailto:gem5-users-boun...@gem5.org>> Subject: Reading from memory in Gem5 Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a sp
[gem5-users] Re: Reading from memory in Gem5
Ok. Thank you very much for your email. From: Jason Lowe-Power Sent: Tuesday, August 4, 2020 4:41 PM To: ABD ALRHMAN ABO ALKHEEL ; gem5 users mailing list Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, First of all, please reply to the users list, not directly to the person who responded. This allows everyone to see answers and/or chime in and help. Second, the page you linked is out of date. Please use the main gem5 website for all of the up to date documentation (e.g., http://doxygen.gem5.org/release/current/classLSQUnit.html) Third, I still don't fully understand what your goals are. However, you can use the system port (actually, I think I was wrong before, you should use the "getPort" function, not "getSystemPort") to make functional (or debug) accesses to the memory. You can create a `Packet` with a `Request` and send a functional request across the port (i.e., call sendFunctional(pkt)). You can use either virtual (in SE mode) or physical address (in both modes). I am sure there are some caveats to using virtual addresses, but I don't know exactly what they are. If you're trying to make new timing accesses, then you should use the main "dcache_port" and "icache_port" that are connected to the CPU. Again, you can construct a Packet object with a Request and send it across the port (e.g., sendTimingReq(pkt)). You may want to read up on the details of how gem5's memory objects work: http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ Cheers, Jason On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> wrote: Hi Jason, Thanks for your email. What I want to do is finding the memory address that the LD instruction loads data from ( I can get the physical and virtual address from the Read method in the lsqunit)http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving those addresses. After a specific time, I want to access the memory to read the data from those addresses. Can I use getSystemPort function to access the memory and read the data from those addresses? If so, should I use the virtual address or the physical address? Thanks From: Jason Lowe-Power mailto:ja...@lowepower.com>> Sent: Monday, August 3, 2020 3:26 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>> Cc: gem5-users mailto:gem5-users-boun...@gem5.org>>; ABD ALRHMAN ABO ALKHEEL mailto:abdkeel...@hotmail.com>> Subject: Re: [gem5-users] Re: Reading from memory in Gem5 Hello, This sounds like you probably want to use "functional" accesses. These are built for introspection and debugging, which is what it sounds like you want to do. Using the System object, there is a `getSystemPort` function that will return a gem5 port that you can use with functional accesses to "backdoor" into the memory. See http://doxygen.gem5.org/release/current/classSystem.html#a5ecbd1eaa3e0d19f4640bb71a0b59d64. Cheers, Jason On Sun, Aug 2, 2020 at 7:01 AM ABD ALRHMAN ABO ALKHEEL via gem5-users mailto:gem5-users@gem5.org>> wrote: Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks From: ABD ALRHMAN ABO ALKHEEL Sent: Saturday, August 1, 2020 3:19 PM To: gem5 users mailing list mailto:gem5-users@gem5.org>>; gem5-users mailto:gem5-users-boun...@gem5.org>> Subject: Reading from memory in Gem5 Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks ___ gem5-users mailing list -- gem5-users@gem5.org<mailto:gem5-users@gem5.org> To unsubscribe send an email to gem5-users-le...@gem5.org<mailto: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] Re: Reading from memory in Gem5
Hello, First of all, please reply to the users list, not directly to the person who responded. This allows everyone to see answers and/or chime in and help. Second, the page you linked is out of date. Please use the main gem5 website for all of the up to date documentation (e.g., http://doxygen.gem5.org/release/current/classLSQUnit.html) Third, I still don't fully understand what your goals are. However, you can use the system port (actually, I think I was wrong before, you should use the "getPort" function, not "getSystemPort") to make functional (or debug) accesses to the memory. You can create a `Packet` with a `Request` and send a functional request across the port (i.e., call sendFunctional(pkt)). You can use either virtual (in SE mode) or physical address (in both modes). I am sure there are some caveats to using virtual addresses, but I don't know exactly what they are. If you're trying to make new timing accesses, then you should use the main "dcache_port" and "icache_port" that are connected to the CPU. Again, you can construct a Packet object with a Request and send it across the port (e.g., sendTimingReq(pkt)). You may want to read up on the details of how gem5's memory objects work: http://www.gem5.org/documentation/learning_gem5/part2/memoryobject/ Cheers, Jason On Mon, Aug 3, 2020 at 1:15 PM ABD ALRHMAN ABO ALKHEEL < abdkeel...@hotmail.com> wrote: > Hi Jason, > > Thanks for your email. > > What I want to do is finding the memory address that the LD instruction > loads data from ( I can get the physical and virtual address from the Read > method in the lsqunit) > http://pages.cs.wisc.edu/~swilson/gem5-docs/classLSQUnit.html and saving > those addresses. After a specific time, I want to access the memory to read > the data from those addresses. Can I use getSystemPort function to access > the memory and read the data from those addresses? If so, should I use the > virtual address or the physical address? > > Thanks > > > -- > *From:* Jason Lowe-Power > *Sent:* Monday, August 3, 2020 3:26 PM > *To:* gem5 users mailing list > *Cc:* gem5-users ; ABD ALRHMAN ABO ALKHEEL < > abdkeel...@hotmail.com> > *Subject:* Re: [gem5-users] Re: Reading from memory in Gem5 > > Hello, > > This sounds like you probably want to use "functional" accesses. These are > built for introspection and debugging, which is what it sounds like you > want to do. Using the System object, there is a `getSystemPort` > function that will return a gem5 port that you can use with functional > accesses to "backdoor" into the memory. See > http://doxygen.gem5.org/release/current/classSystem.html#a5ecbd1eaa3e0d19f4640bb71a0b59d64 > . > > Cheers, > Jason > > On Sun, Aug 2, 2020 at 7:01 AM ABD ALRHMAN ABO ALKHEEL via gem5-users < > gem5-users@gem5.org> wrote: > > Hi All, how to read data from memory in Gem5 ? Can I read data from memory > in Gem5 for a specific addresses? If so, should I use the virtual address > or physical address? For example, how load instructions read the data from > memory? Any help would be appreciated. Thanks > > -- > *From:* ABD ALRHMAN ABO ALKHEEL > *Sent:* Saturday, August 1, 2020 3:19 PM > *To:* gem5 users mailing list ; gem5-users < > gem5-users-boun...@gem5.org> > *Subject:* Reading from memory in Gem5 > > Hi All, how to read data from memory in Gem5 ? Can I read data from memory > in Gem5 for a specific addresses? If so, should I use the virtual address > or physical address? For example, how load instructions read the data from > memory? Any help would be appreciated. Thanks > ___ > 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] Re: Reading from memory in Gem5
Hello, This sounds like you probably want to use "functional" accesses. These are built for introspection and debugging, which is what it sounds like you want to do. Using the System object, there is a `getSystemPort` function that will return a gem5 port that you can use with functional accesses to "backdoor" into the memory. See http://doxygen.gem5.org/release/current/classSystem.html#a5ecbd1eaa3e0d19f4640bb71a0b59d64 . Cheers, Jason On Sun, Aug 2, 2020 at 7:01 AM ABD ALRHMAN ABO ALKHEEL via gem5-users < gem5-users@gem5.org> wrote: > Hi All, how to read data from memory in Gem5 ? Can I read data from memory > in Gem5 for a specific addresses? If so, should I use the virtual address > or physical address? For example, how load instructions read the data from > memory? Any help would be appreciated. Thanks > > -- > *From:* ABD ALRHMAN ABO ALKHEEL > *Sent:* Saturday, August 1, 2020 3:19 PM > *To:* gem5 users mailing list ; gem5-users < > gem5-users-boun...@gem5.org> > *Subject:* Reading from memory in Gem5 > > Hi All, how to read data from memory in Gem5 ? Can I read data from memory > in Gem5 for a specific addresses? If so, should I use the virtual address > or physical address? For example, how load instructions read the data from > memory? Any help would be appreciated. Thanks > ___ > 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] Re: Reading from memory in Gem5
Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks From: ABD ALRHMAN ABO ALKHEEL Sent: Saturday, August 1, 2020 3:19 PM To: gem5 users mailing list ; gem5-users Subject: Reading from memory in Gem5 Hi All, how to read data from memory in Gem5 ? Can I read data from memory in Gem5 for a specific addresses? If so, should I use the virtual address or physical address? For example, how load instructions read the data from memory? Any help would be appreciated. Thanks ___ 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