Date: | Fri, 27 Apr 2007 12:53:17 +0200 |
---|---|
From: | "Rubén Titos" <rtitos@xxxxxxxxxxx> |
Subject: | [Gems-users] IFETCHs and the store buffer |
Hi everyone, Taking a look at doRequest in ruby/system/Sequencer.C, I just came across this code that totally confused me (after the fast path checking). Assuming TSO consistency, the store buffer is checked to see if the load (LD) can be entirely satisfied from it. Since Sequencer::makeRequest is the only one that inserts into the store buffer (by calling insertStore), and it does so only with writes (ST, ST_XACT, LOG_ST, LDX_XACT, ATOMIC), why are IFETCHs also meaningful here? Cheers, Rubén ______ bool Sequencer::doRequest(const CacheMsg& request) { // Check the fast path [...] if (TSO && (request.getType() == CacheRequestType_LD || request.getType() == CacheRequestType_IFETCH)) { // See if we can satisfy the load entirely from the store buffer SubBlock subblock(line_address(request.getAddress()), request.getSize()); if (m_chip_ptr->m_L1Cache_storeBuffer_vec[m_version]->trySubBlock(subblock)) { DataBlock dummy; hitCallback(request, dummy, GenericMachineType_NULL); // Call with an 'empty' datablock, since the data is in the store buffer return true; } } |
[← Prev in Thread] | Current Thread | [Next in Thread→] |
---|---|---|
|
Previous by Date: | [Gems-users] Help needed in Compiling Ruby, Sreenivasan Padmanabhan |
---|---|
Next by Date: | Re: [Gems-users] IFETCHs and the store buffer, Dan Gibson |
Previous by Thread: | Re: [Gems-users] How to make "sarek2-solaris9.craff" ?, Thomas De Schampheleire |
Next by Thread: | Re: [Gems-users] IFETCHs and the store buffer, Dan Gibson |
Indexes: | [Date] [Thread] |