亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ls_queue.cc

?? linux下基于c++的處理器仿真平臺(tái)。具有處理器流水線
?? CC
字號(hào):
/* * Copyright (c) 2001, 2002, 2003, 2004, 2005 * The Regents of The University of Michigan * All Rights Reserved * * This code is part of the M5 simulator, developed by Nathan Binkert, * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions * from Ron Dreslinski, Dave Greene, Lisa Hsu, Kevin Lim, Ali Saidi, * and Andrew Schultz. * * Permission is granted to use, copy, create derivative works and * redistribute this software and such derivative works for any * purpose, so long as the copyright notice above, this grant of * permission, and the disclaimer below appear in all copies made; and * so long as the name of The University of Michigan is not used in * any advertising or publicity pertaining to the use or distribution * of this software without specific, written prior authorization. * * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT, * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH * DAMAGES. */#include <string>#include "encumbered/cpu/full/cpu.hh"#include "encumbered/cpu/full/dep_link.hh"#include "encumbered/cpu/full/dyn_inst.hh"#include "encumbered/cpu/full/iq/iqueue.hh"#include "encumbered/cpu/full/rob_station.hh"class RegInfoElement;using namespace std;//==========================================================================////  The "standard" Load/Store queue implementation//////////==========================================================================load_store_queue::~load_store_queue(){    delete queue;    delete ready_list;}load_store_queue::load_store_queue(FullCPU *_cpu, const string &_name,				   unsigned _size, bool pri)    : BaseIQ(_name.c_str()){    // initialize internals: no dispatch or issue BW limits, only one    // queue    init(_cpu, 0, 0, 0);    set_size(_size);    pri_issue = pri;    queue = new res_list<IQStation>(_size, true, 0);    for (int i = 0; i < SMT_MAX_THREADS; ++i) {	insts[i] = 0;	loads[i] = 0;	stores[i] = 0;    }    total_insts = 0;    total_stores = 0;    total_loads = 0;    string n2(_name);    n2 += "_ReadyQ";    ready_list = new ready_queue_t<IQStation,lsq_readyq_policy>	               (&cpu, n2, _size, pri_issue);};voidload_store_queue::dump(){    cprintf("======================================================\n"	    "%s Dump (cycle %d)\n"	    "------------------------------------------------------\n"	    "  Total instruction: %u\n", name(), curTick, total_insts);    for (int i = 0; i < SMT_MAX_THREADS; ++i)	cprintf("  Thread %d instructions: %u\n", i, insts[i]);    cprintf("------------------------------------------------------\n");    queue->dump();    cprintf("======================================================\n\n");}voidload_store_queue::raw_dump(){    cprintf("======================================================\n"	    "%s RAW Dump (cycle %n)\n"	    "------------------------------------------------------\n"	    "  Total instruction: %u\n", name(), curTick, total_insts);    for (int i = 0; i < SMT_MAX_THREADS; ++i)	cprintf("  Thread %d instructions: %u\n", i, insts[i]);    cprintf("------------------------------------------------------\n");    queue->raw_dump();    cprintf("======================================================\n\n");}voidload_store_queue::rq_dump(){    ready_list->dump();}voidload_store_queue::rq_raw_dump(){    ready_list->raw_dump();}BaseIQ::iteratorload_store_queue::add_impl(DynInst *inst, InstSeqNum seq,			   ROBStation *rob, RegInfoElement *ri,			   NewChainInfo *c){    BaseIQ::iterator p = queue->add_tail();    ++total_insts;    ++insts[inst->thread_number];    if (inst->isLoad()) {	++total_loads;	++loads[inst->thread_number];    } else if (inst->isStore()) {	++total_stores;	++stores[inst->thread_number];    } else {	// shouldn't get here otherwise!	assert(inst->isMemBarrier());    }    p->inst		= inst;    p->in_LSQ		= true;    p->ea_comp		= false;    p->seq		= seq;    p->queued		= false;    p->squashed		= false;    //p->blocked	= false;    p->mem_result	= MA_NOT_ISSUED;    p->head_of_chain	= false;    p->rob_entry	= rob;    p->num_ideps	= 0;    if (!inst->isMemBarrier()) {	// This dummy idep is for the input dependence on the effective	// address computation in the IQ.  By putting it first we	// guarantee that it's at index 0 (MEM_ADDR_INDEX), which is how	// the writeback of the EA computation finds it (ugliness	// inherited from SimpleScalar).	link_idep(p);	// now link in non-EA input deps (if any: should just be store	// data on stores)	StaticInstPtr<TheISA> eff_si = inst->staticInst->memAccInst();	for (int i = 0; i < eff_si->numSrcRegs(); ++i)	    link_idep(p, eff_si->srcRegIdx(i));    }    // This shouldn't be necessary, since we should never look past    // num_ideps in the array, but there are too many loops that go    // all the way to TheISA::MaxNumSrcRegs.    for (int i = p->num_ideps; i < TheISA::MaxInstSrcRegs; ++i) {	p->idep_ptr[i] = 0;	p->idep_reg[i] = 0;	p->idep_ready[i] = true;    }    return p;};////  Walk the output-dependence list for this instruction...////  Only remove those entries which belong to instructions in this//  queue.////  Note that the only instructions that actually get a value here will//  be stores... Effective addresses get updated in rob_station::writeback()//  so this must be the DATA part of an LSQ op...////  We remove those entries from the chain that we handle here so//  that the chain can be applied to the IQ also////  NOTE: IF YOU ARE CHANGING *THIS* ROUTINE, YOU PROBABLY WANT TO//        CHANGE iq_standard::writeback() ALSO!//unsigned load_store_queue::writeback(ROBStation *rob, unsigned ignored){    unsigned consumers = 0;    unsigned const queue_num = 0;    for (int index = 0; index < TheISA::MaxInstDestRegs; ++index) {	DepLink *olink = rob->odep_list[index][queue_num];	DepLink *olink_next;	for (; olink; olink = olink_next) {	    //  grab the next link... we may delete this one	    olink_next = olink->next();	    if (olink->valid()) {		res_list<IQStation>::iterator q_entry = olink->consumer();		//  This instruction is doing writeback into the LSQ...		//  Ignore an IQ entries in the consumer list		if (!q_entry->in_LSQ) {		    continue;		}		++consumers;		if (q_entry->idep_ready[olink->idep_num])		    panic("output dependence already satisfied");		assert(q_entry->inst->isStore());		// input is now ready		q_entry->idep_ready[olink->idep_num] = true;		q_entry->idep_ptr[olink->idep_num] = 0;		// are all the input operands ready?		if (q_entry->ops_ready()) {		    ready_list_enqueue(q_entry);		    q_entry->ready_timestamp = curTick;		}	    }	    //  Remove this link from the chain...	    if (rob->odep_list[index][queue_num] != olink) {		if (olink->prev_dep)		    olink->prev_dep->next_dep = olink->next_dep;		if (olink->next_dep)		    olink->next_dep->prev_dep = olink->prev_dep;	    } else {		// Special handling for first element		rob->odep_list[index][queue_num] = olink->next_dep;		if (olink->next_dep)		    olink->next_dep->prev_dep = 0;	    }	    //  Free link elements that belong to this queue	    delete olink;	}    }    return consumers;}BaseIQ::iterator load_store_queue::squash(BaseIQ::iterator &e){    iterator next;    if (e.notnull()) {	next = e.next();	for (int i = 0; i < TheISA::MaxInstSrcRegs; ++i) {	    if (e->idep_ptr[i]) {		delete e->idep_ptr[i];		e->idep_ptr[i] = 0;	    }	}	--total_insts;	--insts[e->thread_number()];	if (e->inst->isLoad()) {	    --total_loads;	    --loads[e->thread_number()];	} else {	    --total_stores;	    --stores[e->thread_number()];	}	queue->remove(e);	if (e->queued) {	    ready_list->remove(e->rq_entry);	}    }    return next;}voidload_store_queue::regModelStats(unsigned threads){   ready_list->regStats(SimObject::name() + ":RQ", threads);}voidload_store_queue::regModelFormulas(unsigned threads){    ready_list->regFormulas(SimObject::name() + ":RQ", threads);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清不卡一区二区| 中文字幕精品一区二区三区精品| 亚洲国产日韩一区二区| 欧美一区二区三区性视频| 精品在线观看免费| 国产精品久久久久影院老司| 欧美私模裸体表演在线观看| 激情六月婷婷综合| 亚洲一区二区在线免费看| 国产亚洲一区字幕| 欧美巨大另类极品videosbest | 成人高清视频在线| 亚洲成a人v欧美综合天堂| 欧美激情中文字幕一区二区| 久久精品无码一区二区三区| 国产网站一区二区三区| 中国av一区二区三区| 日韩精品中午字幕| 欧美性高清videossexo| 欧美日韩精品欧美日韩精品一| 成人晚上爱看视频| 精品亚洲国产成人av制服丝袜| 精品一区二区精品| 成人激情视频网站| 日本高清不卡视频| 99精品黄色片免费大全| 国产精品一区二区无线| 日韩1区2区3区| 国模无码大尺度一区二区三区| 风间由美性色一区二区三区| 精品一区在线看| 粉嫩aⅴ一区二区三区四区五区| 成人av在线资源| 国产精品你懂的在线| 1000部国产精品成人观看| 久久综合色一综合色88| 91精品国产美女浴室洗澡无遮挡| 日韩一区二区电影在线| 51精品国自产在线| 欧美伦理电影网| 欧美精品一区二区久久久| 日韩一区二区三区观看| 亚洲国产精品传媒在线观看| 一区二区三区日韩精品| 最新日韩在线视频| 视频在线观看一区二区三区| 偷拍日韩校园综合在线| 亚洲成人av一区二区| 国产专区欧美精品| 91传媒视频在线播放| 久久先锋影音av鲁色资源| 亚洲欧洲在线观看av| 免费观看成人av| 精品一区二区综合| 色综合一个色综合| 日本丰满少妇一区二区三区| 日韩三级电影网址| 一区二区三区四区蜜桃| 捆绑调教一区二区三区| 精品亚洲国内自在自线福利| 色94色欧美sute亚洲线路二| 精品国产91乱码一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 亚洲色图视频网站| 亚洲成人综合在线| 成人黄色综合网站| 欧美一区二区视频观看视频| 亚洲伦理在线免费看| 99国产精品国产精品久久| 91精品国产91久久综合桃花 | 麻豆91在线播放免费| 蜜臀久久99精品久久久久宅男 | 成人国产精品免费观看| 欧美成va人片在线观看| 久久精品夜色噜噜亚洲a∨| 亚洲韩国精品一区| 91丨国产丨九色丨pron| 欧美日韩精品免费观看视频| 中文字幕一区二区在线观看| 韩国av一区二区三区四区| 欧美日韩亚洲综合| 2022国产精品视频| 日韩黄色小视频| 欧美色欧美亚洲另类二区| 中文字幕一区二区日韩精品绯色| 激情五月婷婷综合| 日韩一区二区三区在线| 午夜精品在线视频一区| 色美美综合视频| 亚洲天堂av一区| 成人在线一区二区三区| 国产日韩精品一区| 午夜激情综合网| 欧美午夜电影网| 亚洲一二三区在线观看| 在线视频你懂得一区二区三区| 日韩一级片在线观看| 亚洲国产日韩一级| 欧美色图天堂网| 亚洲国产综合91精品麻豆| 色综合久久66| 久久久久国产精品麻豆ai换脸| 亚洲三级免费观看| 色综合天天在线| 一区二区在线免费| 一本大道久久a久久精二百| 亚洲私人影院在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩国产欧美在线观看| 91精品国模一区二区三区| 欧美aa在线视频| 26uuu色噜噜精品一区| 国产一区视频网站| 91精品欧美综合在线观看最新| 亚洲成在线观看| 欧美一级xxx| 国产真实乱子伦精品视频| 国产农村妇女毛片精品久久麻豆| 国产成人自拍在线| 日韩精品中文字幕在线一区| 国产在线不卡一卡二卡三卡四卡| 2023国产精品自拍| 成人综合在线网站| 亚洲精品视频一区二区| 欧美日韩精品一区二区在线播放| 无码av免费一区二区三区试看| 欧美一区二区三区日韩| 国内成人精品2018免费看| 中文字幕乱码一区二区免费| 91色综合久久久久婷婷| 午夜伊人狠狠久久| 精品理论电影在线| 成人黄色免费短视频| 亚洲午夜成aⅴ人片| 精品少妇一区二区三区日产乱码| 国产精品91一区二区| 亚洲日本丝袜连裤袜办公室| 欧美日韩在线播放三区四区| 裸体歌舞表演一区二区| 日本一区二区三区免费乱视频| 91丝袜美女网| 秋霞国产午夜精品免费视频| 久久精品一区四区| 在线观看日韩电影| 久久av老司机精品网站导航| 国产精品理论在线观看| 欧美人妇做爰xxxⅹ性高电影| 激情综合网天天干| 亚洲精品成人精品456| 日韩免费在线观看| 91丝袜高跟美女视频| 日韩av在线播放中文字幕| 国产精品情趣视频| 欧美剧在线免费观看网站 | 欧美mv和日韩mv的网站| 色综合一个色综合亚洲| 久久99精品视频| 亚洲精品va在线观看| 精品国产凹凸成av人导航| 色天天综合色天天久久| 国内外成人在线视频| 亚洲国产中文字幕在线视频综合 | 亚洲伊人色欲综合网| 久久久蜜桃精品| 欧美男女性生活在线直播观看| 国产成人在线观看免费网站| 香蕉影视欧美成人| 亚洲欧洲一区二区三区| 精品美女在线观看| 欧美日韩亚洲国产综合| bt7086福利一区国产| 一片黄亚洲嫩模| 欧美国产综合色视频| 日韩一区二区三区免费看 | 日韩午夜激情电影| 欧洲激情一区二区| 成人动漫av在线| 国产一区二区女| 日本三级韩国三级欧美三级| 亚洲伦理在线免费看| 国产精品视频免费看| 欧美成人video| 欧美精品在线视频| 91福利资源站| 91麻豆免费看| 成人午夜电影网站| 国产伦精品一区二区三区免费迷| 天堂va蜜桃一区二区三区漫画版 | 成人av影院在线| 国产成人免费xxxxxxxx| 久久国产视频网| 男男gaygay亚洲| 日韩精品一级中文字幕精品视频免费观看 | 成人免费一区二区三区在线观看 | 一区二区在线观看av| 国产精品黄色在线观看| 国产精品无圣光一区二区| 久久婷婷成人综合色| 精品久久久久久久人人人人传媒 | 一区二区三区在线播|