lsq.hh (9440:fdc91cab5760) | lsq.hh (9444:ab47fe7f03f0) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2011 ARM Limited | 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); | 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 /** Switches out the LSQ. */ 83 void switchOut(); | 82 83 /** Perform sanity checks after a drain. */ 84 void drainSanityCheck() const; 85 /** Has the LSQ drained? */ 86 bool isDrained() const; |
84 /** Takes over execution from another CPU's thread. */ 85 void takeOverFrom(); 86 87 /** Number of entries needed for the given amount of threads.*/ 88 int entryAmount(ThreadID num_threads); 89 void removeEntries(ThreadID tid); 90 /** Reset the max entries for each thread. */ 91 void resetEntries(); --- 114 unchanged lines hidden (view full) --- 206 /** Returns if the LSQ is full (either LQ or SQ is full). */ 207 bool isFull(); 208 /** 209 * Returns if the LSQ is full for a specific thread (either LQ or SQ is 210 * full). 211 */ 212 bool isFull(ThreadID tid); 213 | 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 |
|
214 /** Returns if any of the LQs are full. */ 215 bool lqFull(); 216 /** Returns if the LQ of a given thread is full. */ 217 bool lqFull(ThreadID tid); 218 219 /** Returns if any of the SQs are full. */ 220 bool sqFull(); 221 /** Returns if the SQ of a given thread is full. */ --- 27 unchanged lines hidden (view full) --- 249 bool willWB(); 250 /** Returns if the LSQ of a specific thread will write back to memory this 251 * cycle. 252 */ 253 bool willWB(ThreadID tid) 254 { return thread[tid].willWB(); } 255 256 /** Returns if the cache is currently blocked. */ | 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. */ |
257 bool cacheBlocked() | 267 bool cacheBlocked() const |
258 { return retryTid != InvalidThreadID; } 259 260 /** Sets the retry thread id, indicating that one of the LSQUnits 261 * tried to access the cache but the cache was blocked. */ 262 void setRetryTid(ThreadID tid) 263 { retryTid = tid; } 264 265 /** Debugging function to print out all instructions. */ --- 88 unchanged lines hidden --- | 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 --- |