1/* 2 * Copyright (c) 2004-2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 35 unchanged lines hidden (view full) --- 44class LSQ { 45 public: 46 typedef typename Impl::Params Params; 47 typedef typename Impl::FullCPU FullCPU; 48 typedef typename Impl::DynInstPtr DynInstPtr; 49 typedef typename Impl::CPUPol::IEW IEW; 50 typedef typename Impl::CPUPol::LSQUnit LSQUnit; 51 |
52 /** SMT policy. */ |
53 enum LSQPolicy { 54 Dynamic, 55 Partitioned, 56 Threshold 57 }; 58 59 /** Constructs an LSQ with the given parameters. */ 60 LSQ(Params *params); --- 4 unchanged lines hidden (view full) --- 65 /** Sets the pointer to the list of active threads. */ 66 void setActiveThreads(std::list<unsigned> *at_ptr); 67 /** Sets the CPU pointer. */ 68 void setCPU(FullCPU *cpu_ptr); 69 /** Sets the IEW stage pointer. */ 70 void setIEW(IEW *iew_ptr); 71 /** Sets the page table pointer. */ 72// void setPageTable(PageTable *pt_ptr); |
73 /** Switches out the LSQ. */ |
74 void switchOut(); |
75 /** Takes over execution from another CPU's thread. */ |
76 void takeOverFrom(); 77 78 /** Number of entries needed for the given amount of threads.*/ 79 int entryAmount(int num_threads); 80 void removeEntries(unsigned tid); 81 /** Reset the max entries for each thread. */ 82 void resetEntries(); 83 /** Resize the max entries for a thread. */ --- 8 unchanged lines hidden (view full) --- 92 /** Inserts a load into the LSQ. */ 93 void insertLoad(DynInstPtr &load_inst); 94 /** Inserts a store into the LSQ. */ 95 void insertStore(DynInstPtr &store_inst); 96 97 /** Executes a load. */ 98 Fault executeLoad(DynInstPtr &inst); 99 |
100 /** Executes a store. */ 101 Fault executeStore(DynInstPtr &inst); 102 103 /** 104 * Commits loads up until the given sequence number for a specific thread. 105 */ 106 void commitLoads(InstSeqNum &youngest_inst, unsigned tid) 107 { thread[tid].commitLoads(youngest_inst); } --- 216 unchanged lines hidden --- |