1/* |
2 * Copyright (c) 2011-2012 ARM Limited |
3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 63 unchanged lines hidden (view full) --- 74 /** Returns the name of the LSQ. */ 75 std::string name() const; 76 77 /** Registers statistics of each LSQ unit. */ 78 void regStats(); 79 80 /** Sets the pointer to the list of active threads. */ 81 void setActiveThreads(std::list<ThreadID> *at_ptr); |
82 83 /** Perform sanity checks after a drain. */ 84 void drainSanityCheck() const; 85 /** Has the LSQ drained? */ 86 bool isDrained() const; |
87 /** Takes over execution from another CPU's thread. */ 88 void takeOverFrom(); 89 90 /** Number of entries needed for the given amount of threads.*/ 91 int entryAmount(ThreadID num_threads); 92 void removeEntries(ThreadID tid); 93 /** Reset the max entries for each thread. */ 94 void resetEntries(); --- 114 unchanged lines hidden (view full) --- 209 /** Returns if the LSQ is full (either LQ or SQ is full). */ 210 bool isFull(); 211 /** 212 * Returns if the LSQ is full for a specific thread (either LQ or SQ is 213 * full). 214 */ 215 bool isFull(ThreadID tid); 216 |
217 /** Returns if the LSQ is empty (both LQ and SQ are empty). */ 218 bool isEmpty() const; 219 /** Returns if all of the LQs are empty. */ 220 bool lqEmpty() const; 221 /** Returns if all of the SQs are empty. */ 222 bool sqEmpty() const; 223 |
224 /** Returns if any of the LQs are full. */ 225 bool lqFull(); 226 /** Returns if the LQ of a given thread is full. */ 227 bool lqFull(ThreadID tid); 228 229 /** Returns if any of the SQs are full. */ 230 bool sqFull(); 231 /** Returns if the SQ of a given thread is full. */ --- 27 unchanged lines hidden (view full) --- 259 bool willWB(); 260 /** Returns if the LSQ of a specific thread will write back to memory this 261 * cycle. 262 */ 263 bool willWB(ThreadID tid) 264 { return thread[tid].willWB(); } 265 266 /** Returns if the cache is currently blocked. */ |
267 bool cacheBlocked() const |
268 { return retryTid != InvalidThreadID; } 269 270 /** Sets the retry thread id, indicating that one of the LSQUnits 271 * tried to access the cache but the cache was blocked. */ 272 void setRetryTid(ThreadID tid) 273 { retryTid = tid; } 274 275 /** Debugging function to print out all instructions. */ --- 88 unchanged lines hidden --- |