Hi Tao: Thanks for your reply. :)
Shuchang 2013/1/28 Tao Zhang <[email protected]> > ** > Hi Shuchang, > > If we assume the memory space in both host machine and simulator is > continuous, then we can calculate the row address as follows. > > unsigned myRowSize = pkt->getSize() * linesPerRow; > > uint8_t* myRowAddr = pmemAddr + (pkt->getAddr() - range.start) / myRowSize > * myRowSize; > > or > > uint8_t* myRowAddr = pmemAddr + (pkt->getAddr() - pkt->getAddr() % > myRowSize) - range.start; > > -Tao > > > On 01/28/2013 03:18 AM, 单书畅 wrote: > > Hi Tao, thanks for your quickly reply. > > I have read the codes of function access(PacketPtr pkt) in > abstract_mem.cc. The main difference is that, in the given function > access(), the operation is the granularity of a cache line (64-Byte, > actually it is a specified column of a whole row; while for my codes, I > want to copy the whole row in to data structure row_data (That's why I need > to multiply another 64. Here the 64 equals the parameter > linesPerRowBuffer). > > In other words, in the function access(), memory access is to only one > column of a row, while I want to access the entire row. > > My concern is that, whether myHostAddr can point to the start address of > the row (given pkt->getAddr)? > > > *=======================================================================* > *uint8_t *myHostAddr = pmemAddr + (pkt->getAddr() - pkt->getAddr() > % linesPerRow) - range.start;* > *=======================================================================* > * > * > Regards, > Shuchang > > 2013/1/28 Tao Zhang <[email protected]> > >> Hi Shuchang, >> >> >> >> In my opinion, your code are almost correct expect that the >> pkt->getSize() does return the cacheline size (64 in byte). You don’t need >> to multiply another 64 again. >> >> >> >> In fact, AbstractMemory has the function “access(PacketPtr pkt)” in which >> the data is also copied. You can read the code between line 352 and 372 in >> abstract_mem.cc to see how the data is copied. It does almost the same >> thing as you do. As a result, you can simply extend the AbstractMemory and >> use the access() to make sure the data is in pkt->getPtr<uint8_t>(); What >> you only need to do is to copy this data to your raw data pointer. >> >> >> >> -Tao >> >> >> >> *From:* [email protected] [mailto:[email protected]] >> *On Behalf Of *单书畅 >> *Sent:* Sunday, January 27, 2013 6:31 AM >> *To:* [email protected] >> *Subject:* [gem5-users] question about reading out a whole DRAM row data >> >> >> >> Hi all, >> >> >> >> >> >> I am trying to modify the SimpleDRAM module to profile the data contents >> in phymem. >> >> >> >> In simple_dram.cc, the *docodeAddr()* function shows how to get the rank >> and the bank addresses for given request *pkt*. >> >> I wonder, given* pkt->getAddr()*, how to calculate the row address? >> >> It seems that, a dram row contains 64 (linesPerRow = 64) 64-Byte data >> blocks, and I want to read out the whole row data into a self-defined data >> structure ( namely row_data). >> >> >> >> The detailed codes are like this: >> >> >> >> *uint8_t *myHostAddr = pmemAddr + (pkt->getAddr() - pkt->getAddr() >> % linesPerRow) - range.start;* >> >> >> >> *int row_size = pkt->getSize()*64;* >> >> *uint8_t row_data[row_size];* >> >> *memcpy(row_data, myHostAddr , row_size ); // read the whole MEM row >> data out into the array structure: row_data* >> >> >> >> >> >> I am not sure whether the calculation of the row address is right. Any >> advice will be appreciated. >> >> >> >> Regards, >> >> shuchang >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> gem5-users mailing list >> [email protected] >> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >> > > > _______________________________________________ > gem5-users mailing > [email protected]http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > > > _______________________________________________ > gem5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >
_______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
