From: Korey Sewell Date: Mon, 20 Jun 2011 01:43:38 +0000 (-0400) Subject: inorder: don't stall after stores X-Git-Tag: stable_2012_02_02~236 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e8082a28c8ee36d6e7e1982952fc545224eb33e7;p=gem5.git inorder: don't stall after stores once a ST is sent off, it's OK to keep processing, however it's a little more complicated to handle the packet acknowledging the store is completed --- diff --git a/src/cpu/inorder/resources/cache_unit.cc b/src/cpu/inorder/resources/cache_unit.cc index 83eb617aa..c627466a1 100644 --- a/src/cpu/inorder/resources/cache_unit.cc +++ b/src/cpu/inorder/resources/cache_unit.cc @@ -240,17 +240,17 @@ CacheUnit::removeAddrDependency(DynInstPtr inst) inst->unsetMemAddr(); // Erase from Address List - vector::iterator vect_it = find(addrList[tid].begin(), + std::list::iterator list_it = find(addrList[tid].begin(), addrList[tid].end(), mem_addr); - assert(vect_it != addrList[tid].end() || inst->splitInst); + assert(list_it != addrList[tid].end() || inst->splitInst); - if (vect_it != addrList[tid].end()) { + if (list_it != addrList[tid].end()) { DPRINTF(AddrDep, "[tid:%i]: [sn:%i] Address %08p removed from dependency " - "list\n", inst->readTid(), inst->seqNum, (*vect_it)); + "list\n", inst->readTid(), inst->seqNum, (*list_it)); - addrList[tid].erase(vect_it); + addrList[tid].erase(list_it); // Erase From Address Map (Used for Debugging) addrMap[tid].erase(addrMap[tid].find(mem_addr)); diff --git a/src/cpu/inorder/resources/cache_unit.hh b/src/cpu/inorder/resources/cache_unit.hh index 7daf5f4a0..dd6fa7638 100644 --- a/src/cpu/inorder/resources/cache_unit.hh +++ b/src/cpu/inorder/resources/cache_unit.hh @@ -187,9 +187,9 @@ class CacheUnit : public Resource bool cachePortBlocked; - std::vector addrList[ThePipeline::MaxThreads]; + std::list addrList[ThePipeline::MaxThreads]; - std::map addrMap[ThePipeline::MaxThreads]; + m5::hash_map addrMap[ThePipeline::MaxThreads]; public: int cacheBlkSize;