From 0782d92286ded450b7e615fefbd5d6d5e738c8cd Mon Sep 17 00:00:00 2001 From: Binh Pham Date: Sat, 21 Jun 2014 10:26:43 -0700 Subject: o3: split load & store queue full cases in rename Check for free entries in Load Queue and Store Queue separately to avoid cases when load cannot be renamed due to full Store Queue and vice versa. This work was done while Binh was an intern at AMD Research. --- src/cpu/o3/cpu.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/cpu/o3/cpu.cc') diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc index ac003bc24..4f48e29d9 100644 --- a/src/cpu/o3/cpu.cc +++ b/src/cpu/o3/cpu.cc @@ -1009,12 +1009,18 @@ FullO3CPU::activateWhenReady(ThreadID tid) "IQ entries.\n", tid); ready = false; - } else if (iew.ldstQueue.numFreeEntries() >= + } else if (iew.ldstQueue.numFreeLoadEntries() >= iew.ldstQueue.entryAmount(activeThreads.size() + 1)) { DPRINTF(O3CPU,"[tid:%i] Suspending thread due to not enough " - "LSQ entries.\n", + "LQ entries.\n", tid); ready = false; + } else if (iew.ldstQueue.numFreeStoreEntries() >= + iew.ldstQueue.entryAmount(activeThreads.size() + 1)) { + DPRINTF(O3CPU,"[tid:%i] Suspending thread due to not enough " + "SQ entries.\n", + tid); + ready = false; } if (ready) { -- cgit v1.2.3