rename_impl.hh (7649:a6a6177a5ffa) rename_impl.hh (7720:65d338a8dba4)
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;

--- 577 unchanged lines hidden (view full) ---

586
587 assert(!insts_to_rename.empty());
588
589 inst = insts_to_rename.front();
590
591 insts_to_rename.pop_front();
592
593 if (renameStatus[tid] == Unblocking) {
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;

--- 577 unchanged lines hidden (view full) ---

586
587 assert(!insts_to_rename.empty());
588
589 inst = insts_to_rename.front();
590
591 insts_to_rename.pop_front();
592
593 if (renameStatus[tid] == Unblocking) {
594 DPRINTF(Rename,"[tid:%u]: Removing [sn:%lli] PC:%#x from rename "
595 "skidBuffer\n",
596 tid, inst->seqNum, inst->readPC());
594 DPRINTF(Rename,"[tid:%u]: Removing [sn:%lli] PC:%s from rename "
595 "skidBuffer\n", tid, inst->seqNum, inst->pcState());
597 }
598
599 if (inst->isSquashed()) {
596 }
597
598 if (inst->isSquashed()) {
600 DPRINTF(Rename, "[tid:%u]: instruction %i with PC %#x is "
601 "squashed, skipping.\n",
602 tid, inst->seqNum, inst->readPC());
599 DPRINTF(Rename, "[tid:%u]: instruction %i with PC %s is "
600 "squashed, skipping.\n", tid, inst->seqNum,
601 inst->pcState());
603
604 ++renameSquashedInsts;
605
606 // Decrement how many instructions are available.
607 --insts_available;
608
609 continue;
610 }
611
612 DPRINTF(Rename, "[tid:%u]: Processing instruction [sn:%lli] with "
602
603 ++renameSquashedInsts;
604
605 // Decrement how many instructions are available.
606 --insts_available;
607
608 continue;
609 }
610
611 DPRINTF(Rename, "[tid:%u]: Processing instruction [sn:%lli] with "
613 "PC %#x.\n",
614 tid, inst->seqNum, inst->readPC());
612 "PC %s.\n", tid, inst->seqNum, inst->pcState());
615
616 // Handle serializeAfter/serializeBefore instructions.
617 // serializeAfter marks the next instruction as serializeBefore.
618 // serializeBefore makes the instruction wait in rename until the ROB
619 // is empty.
620
621 // In this model, IPR accesses are serialize before
622 // instructions, and store conditionals are serialize after

--- 88 unchanged lines hidden (view full) ---

711
712 while (!insts[tid].empty()) {
713 inst = insts[tid].front();
714
715 insts[tid].pop_front();
716
717 assert(tid == inst->threadNumber);
718
613
614 // Handle serializeAfter/serializeBefore instructions.
615 // serializeAfter marks the next instruction as serializeBefore.
616 // serializeBefore makes the instruction wait in rename until the ROB
617 // is empty.
618
619 // In this model, IPR accesses are serialize before
620 // instructions, and store conditionals are serialize after

--- 88 unchanged lines hidden (view full) ---

709
710 while (!insts[tid].empty()) {
711 inst = insts[tid].front();
712
713 insts[tid].pop_front();
714
715 assert(tid == inst->threadNumber);
716
719 DPRINTF(Rename, "[tid:%u]: Inserting [sn:%lli] PC:%#x into Rename "
720 "skidBuffer\n", tid, inst->seqNum, inst->readPC());
717 DPRINTF(Rename, "[tid:%u]: Inserting [sn:%lli] PC: %s into Rename "
718 "skidBuffer\n", tid, inst->seqNum, inst->pcState());
721
722 ++renameSkidInsts;
723
724 skidBuffer[tid].push_back(inst);
725 }
726
727 if (skidBuffer[tid].size() > skidBufferMax)
728 {
729 typename InstQueue::iterator it;
730 warn("Skidbuffer contents:\n");
731 for(it = skidBuffer[tid].begin(); it != skidBuffer[tid].end(); it++)
732 {
733 warn("[tid:%u]: %s [sn:%i].\n", tid,
719
720 ++renameSkidInsts;
721
722 skidBuffer[tid].push_back(inst);
723 }
724
725 if (skidBuffer[tid].size() > skidBufferMax)
726 {
727 typename InstQueue::iterator it;
728 warn("Skidbuffer contents:\n");
729 for(it = skidBuffer[tid].begin(); it != skidBuffer[tid].end(); it++)
730 {
731 warn("[tid:%u]: %s [sn:%i].\n", tid,
734 (*it)->staticInst->disassemble(inst->readPC()),
732 (*it)->staticInst->disassemble(inst->instAddr()),
735 (*it)->seqNum);
736 }
737 panic("Skidbuffer Exceeded Max Size");
738 }
739}
740
741template <class Impl>
742void

--- 539 unchanged lines hidden (view full) ---

1282
1283 DynInstPtr serial_inst = serializeInst[tid];
1284
1285 renameStatus[tid] = Unblocking;
1286
1287 unblock(tid);
1288
1289 DPRINTF(Rename, "[tid:%u]: Processing instruction [%lli] with "
733 (*it)->seqNum);
734 }
735 panic("Skidbuffer Exceeded Max Size");
736 }
737}
738
739template <class Impl>
740void

--- 539 unchanged lines hidden (view full) ---

1280
1281 DynInstPtr serial_inst = serializeInst[tid];
1282
1283 renameStatus[tid] = Unblocking;
1284
1285 unblock(tid);
1286
1287 DPRINTF(Rename, "[tid:%u]: Processing instruction [%lli] with "
1290 "PC %#x.\n",
1291 tid, serial_inst->seqNum, serial_inst->readPC());
1288 "PC %s.\n", tid, serial_inst->seqNum, serial_inst->pcState());
1292
1293 // Put instruction into queue here.
1294 serial_inst->clearSerializeBefore();
1295
1296 if (!skidBuffer[tid].empty()) {
1297 skidBuffer[tid].push_front(serial_inst);
1298 } else {
1299 insts[tid].push_front(serial_inst);

--- 68 unchanged lines hidden ---
1289
1290 // Put instruction into queue here.
1291 serial_inst->clearSerializeBefore();
1292
1293 if (!skidBuffer[tid].empty()) {
1294 skidBuffer[tid].push_front(serial_inst);
1295 } else {
1296 insts[tid].push_front(serial_inst);

--- 68 unchanged lines hidden ---