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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? floss_reasons.cc

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? CC
?? 第 1 頁 / 共 2 頁
字號:
	if (!counter)	    panic("No threads have their fetch-loss cause set!");	loss_to_blame = (double)(fetch_width - total_fetched) / counter;    }    counter = 0;    for (thread = 0; thread < number_of_threads; thread++) {        //        //  Only process this thread if we set a FLOSS cause        //        if (state->fetch_end_cause[thread] != FLOSS_FETCH_CAUSE_NOT_SET) {	    if (fetch_split > 1) {		loss_to_blame = (fetch_width / fetch_split) -		    num_fetched[thread];	    }       	    assert(loss_to_blame >= 0);#if DEBUG_CAUSES            floss_total += loss_to_blame;            floss_this_cycle++;#endif            //  If we lost slots in this thread...            if (loss_to_blame) {                cause = state->fetch_end_cause[thread];                switch (cause) {		  case FLOSS_FETCH_IMISS:		    floss_icache[thread][state->fetch_mem_result[thread]] 			+= loss_to_blame;		    break;		  case FLOSS_FETCH_QFULL:		    blame_dispatch_stage(this, state, thread, loss_to_blame);		    break;		  default:		    floss_other[thread][cause] += loss_to_blame;		    break;                }            }        }    }#if DEBUG_CAUSES    if (curTick && (curTick % 100) && floss_total != total_floss())	panic("curTick = %\ncolumn doesn't total correctly!", curTick);#endif#if ENABLE_COUNTER_CHECKING    check_counters(this, state);#endif}//------------------------------------------------------------------------#if ENABLE_COUNTER_CHECKINGstatic doubletotal_floss(FullCPU *cpu){    double total = 0;    int i;    for (int t=0; t<cpu->number_of_threads; ++t) {	for (i=0; i<NUM_MEM_ACCESS_RESULTS; ++i) {	    total += (cpu->floss_icache[t][i] 		+ cpu->floss_iqfull_dcache[t][i] 		+ cpu->floss_lsqfull_dcache[t][i] 		+ cpu->floss_robfull_dcache[t][i]);	}	for (i=0; i<Num_OpClasses; ++i) {	    total += cpu->floss_iqfull_deps[t][i]		+ cpu->floss_lsqfull_deps[t][i]		+ cpu->floss_iqfull_fu[t][i]		+ cpu->floss_lsqfull_fu[t][i]		+ cpu->floss_robfull_fu[t][i];	}	for (i=0; i<NUM_ISSUE_END_CAUSES; ++i) {	    total += cpu->floss_iqfull_other[t][i]		+ cpu->floss_lsqfull_other[t][i];	}	for (i=0; i<NUM_COMMIT_END_CAUSES; ++i) {	    total += cpu->floss_robfull_other[t][i];	}	for (i=0; i<NUM_DIS_END_CAUSES; ++i) {	    total += cpu->floss_qfull_other[t][i];	}	for (i=0; i<NUM_FETCH_END_CAUSES; ++i) {	    total += cpu->floss_other[t][i];	}    }    return total;}static voidcheck_counters(FullCPU *cpu, FlossState *state){    /**     * @todo We get the total number fetched from the stats counters     * even though we really shouldn't. stats aren't really meant to     * be used like this.  They can be, but it's more ideal to keep     * track of these values outside of the stats package. (same goes     * for grabbing the number of cycles)     */    double insts_fetched = rint(cpu->fetched_inst.total());    double total_cycles = rint(cpu->numCycles.value());    double total_slots = rint(cpu->fetch_width * total_cycles);    double total_loss  = rint(total_floss(cpu));    if (total_slots != (insts_fetched + total_loss)) {	ccprintf(cerr,		 "Failed Counter Check!:\n"		 "total_cycles=%f\n"		 "     total_slots   = %f\n"		 "     total_fetched = %f\n"		 "     total_loss    = %f\n"		 "didn't account for = %f\n",		 total_cycles, total_slots, insts_fetched, total_loss,		 total_slots - (insts_fetched + total_loss));	state->dump(cpu->number_of_threads);	panic("fix this!");    }}#endif/////////////////////////////////////////////////////////////////////////////////  Debugging....//////voidFlossState::dump(unsigned number_of_threads){    cout << "FETCH End Causes:" << endl;    for (int t = 0; t < number_of_threads; ++t) {	cout << "  " << t << ": ";	int cause = fetch_end_cause[t];	if (cause == -1) {	    cout << "Not Set" << endl;	} else {	    int mem_res = fetch_mem_result[t];	    cout << FetchEndDesc[cause]		 << " Mem=" << MemCmd::memAccessDesc[mem_res]		 << endl;	}    }    cout << "DISPATCH End Cause:" << endl;    if (dispatch_end_cause != -1)	cout << "  " << DisEndDesc[dispatch_end_cause];    else	cout << "  NOT SET!!!!";    cout << endl;    cout << "ISSUE End Causes:" << endl;    for (int t = 0; t < number_of_threads; ++t) {	cout << "  " << t << ": ";	int cause = issue_end_cause[t];	if (cause == -1) {	    cout << "Not Set" << endl;	} else {	    int mem_res = issue_mem_result[t];	    cout << IssueEndDesc[cause]		 << " Mem=" << MemCmd::memAccessDesc[mem_res]		 << " FU=";	    for (int i = 0; i < TheISA::MaxInstSrcRegs; ++i) {		int fu_class = issue_fu[t][i];		cout << opClassStrings[fu_class] << " ";	    }	}	cout << endl;    }    cout << "  End Thread = " << issue_end_thread << endl;    cout << "COMMIT End Causes:" << endl;    for (int t = 0; t < number_of_threads; ++t) {	cout << "  " << t << ": ";	int cause = commit_end_cause[t];	if (cause == COMMIT_CAUSE_NOT_SET) {	    cout << "Not Set" << endl;	} else {	    int mem_res = commit_mem_result[t];	    cout << CommitEndDesc[cause]		 << " Mem=" << MemCmd::memAccessDesc[mem_res]		 << " FU=";	    for (int i = 0; i < TheISA::MaxInstSrcRegs; ++i) {		int fu_class = commit_fu[t][i];		cout << opClassStrings[fu_class] << " ";	    }	}	cout << endl;    }    cout << "  End Thread = " << commit_end_thread << endl;}inline voidinitv(std::vector<std::vector<double> > &vec, int x, int y){    vec.resize(x);    for (int i = 0; i < x; ++i) {	vec[i].resize(y);	for (int j = 0; j < y; ++j)	    vec[i][j] = 0.0;    }}voidFullCPU::flossRegStats(){    using namespace Stats;    FUDesc = (const char **) new char *[Num_OpClasses+1];    // initialize FU labels by copying from opClassStrings[]    for (int i = 0; i < Num_OpClasses; ++i) {	FUDesc[i] = opClassStrings[i];    }    FUDesc[Num_OpClasses] = "No_FU";    string name = this->name() + ".floss";    //    //  I-Cache    //    initv(floss_icache, number_of_threads, NUM_MEM_ACCESS_RESULTS);    stat_floss_icache	.init(number_of_threads, NUM_MEM_ACCESS_RESULTS)	.name(name + ".icache")	.flags(dist)	;    stat_floss_icache.ysubnames(MemCmd::memAccessDesc);    //    //  Queue-full deps    //    initv(floss_iqfull_deps, number_of_threads, Num_OpClasses);    stat_floss_iqfull_deps	.init(number_of_threads, Num_OpClasses)	.name(name + ".iq_full_deps")	.flags(dist)	;    stat_floss_iqfull_deps.ysubnames(FUDesc);    initv(floss_lsqfull_deps, number_of_threads, Num_OpClasses);    stat_floss_lsqfull_deps	.init(number_of_threads, Num_OpClasses)	.name(name + ".lsq_full_deps")	.flags(dist)	;    stat_floss_lsqfull_deps.ysubnames(FUDesc);    //    //  Queue-full FU    //    initv(floss_iqfull_fu, number_of_threads, Num_OpClasses);    stat_floss_iqfull_fu	.init(number_of_threads, Num_OpClasses)	.name(name + ".iq_full_fu")	.flags(dist)	;    stat_floss_iqfull_fu.ysubnames(FUDesc);    initv(floss_lsqfull_fu, number_of_threads, Num_OpClasses);    stat_floss_lsqfull_fu	.init(number_of_threads, Num_OpClasses)	.name(name + ".lsq_full_fu")	.flags(dist)	;    stat_floss_lsqfull_fu.ysubnames(FUDesc);    initv(floss_robfull_fu, number_of_threads, Num_OpClasses);    stat_floss_robfull_fu	.init(number_of_threads, Num_OpClasses)	.name(name + ".rob_full_fu")	.flags(dist)	;    stat_floss_robfull_fu.ysubnames(FUDesc);    //    //  Queue-full D-Cache    //    initv(floss_iqfull_dcache, number_of_threads, NUM_MEM_ACCESS_RESULTS);    stat_floss_iqfull_dcache	.init(number_of_threads, NUM_MEM_ACCESS_RESULTS)	.name(name + ".iq_full_dcache")	.flags(dist)	;    stat_floss_iqfull_dcache.ysubnames(MemCmd::memAccessDesc);    initv(floss_lsqfull_dcache, number_of_threads, NUM_MEM_ACCESS_RESULTS);    stat_floss_lsqfull_dcache	.init(number_of_threads, NUM_MEM_ACCESS_RESULTS)	.name(name + ".lsq_full_dcache")	.flags(dist)	;    stat_floss_lsqfull_dcache.ysubnames(MemCmd::memAccessDesc);    initv(floss_robfull_dcache, number_of_threads, NUM_MEM_ACCESS_RESULTS);    stat_floss_robfull_dcache	.init(number_of_threads, NUM_MEM_ACCESS_RESULTS)	.name(name + ".rob_full_dcache")	.flags(dist)	;    stat_floss_robfull_dcache.ysubnames(MemCmd::memAccessDesc);    //    //  Queue-full Other    //    initv(floss_iqfull_other, number_of_threads, NUM_ISSUE_END_CAUSES);    stat_floss_iqfull_other	.init(number_of_threads, NUM_ISSUE_END_CAUSES)	.name(name + ".iq_full")	.flags(dist)	;    stat_floss_iqfull_other.ysubnames(IssueEndDesc);    initv(floss_lsqfull_other, number_of_threads, NUM_ISSUE_END_CAUSES);    stat_floss_lsqfull_other	.init(number_of_threads, NUM_ISSUE_END_CAUSES)	.name(name + ".lsq_full")	.flags(dist)	;    stat_floss_lsqfull_other.ysubnames(IssueEndDesc);    initv(floss_robfull_other, number_of_threads, NUM_COMMIT_END_CAUSES);    stat_floss_robfull_other	.init(number_of_threads, NUM_COMMIT_END_CAUSES)	.name(name + ".rob_full")	.flags(dist)	;    stat_floss_robfull_other.ysubnames(CommitEndDesc);    //    //  QueueFull causes    //    initv(floss_qfull_other, number_of_threads, NUM_DIS_END_CAUSES);    stat_floss_qfull_other	.init(number_of_threads, NUM_DIS_END_CAUSES)	.name(name + ".qfull")	.flags(dist)	;    stat_floss_qfull_other.ysubnames(DisEndDesc);    //    //  Other random stuff...    //    initv(floss_other, number_of_threads, NUM_FETCH_END_CAUSES);    stat_floss_other	.init(number_of_threads, NUM_FETCH_END_CAUSES)	.name(name + ".fetch")	.flags(dist)	;    stat_floss_other.ysubnames(FetchEndDesc);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一二三在| 欧美日韩一区二区欧美激情 | 日本乱人伦aⅴ精品| 欧美一级艳片视频免费观看| 国产精品大尺度| 久久99深爱久久99精品| 欧美日韩精品高清| 亚洲四区在线观看| 国产成人精品一区二区三区四区| 欧美日韩久久一区| 亚洲柠檬福利资源导航| 国产精品亚洲第一区在线暖暖韩国| 欧美精品一二三| 亚洲一区欧美一区| 色哟哟精品一区| 亚洲乱码中文字幕| 成人高清视频在线| 日本一区免费视频| 91福利资源站| 中文字幕在线免费不卡| 国产不卡视频在线观看| 久久久久久久久久久久久女国产乱 | 国产日产欧美一区二区三区| 日韩成人精品在线观看| 欧美日韩激情一区二区三区| 亚洲国产综合在线| 欧美日韩在线播放三区| 亚洲精品五月天| 91热门视频在线观看| 国产精品护士白丝一区av| 成人黄色大片在线观看| 亚洲欧洲精品一区二区三区| 大白屁股一区二区视频| 国产精品久久久久aaaa| 成人v精品蜜桃久久一区| 国产精品色哟哟| 成人av资源网站| 亚洲日本在线看| 91日韩一区二区三区| 亚洲精品久久嫩草网站秘色| 91丨porny丨蝌蚪视频| 亚洲免费在线观看| 在线观看欧美日本| 丝瓜av网站精品一区二区| 911精品产国品一二三产区 | 亚洲欧洲日韩一区二区三区| 不卡的电影网站| 亚洲精品国产一区二区三区四区在线| 91污在线观看| 日本人妖一区二区| 久久久综合视频| 色综合久久综合网欧美综合网| 亚洲精品国久久99热| 在线播放中文一区| 国产乱码字幕精品高清av| 亚洲区小说区图片区qvod| 欧美精品自拍偷拍| 国产丶欧美丶日本不卡视频| 中文字幕一区二区三区蜜月 | 亚洲高清视频中文字幕| 欧美久久高跟鞋激| 国产精品538一区二区在线| 亚洲精选在线视频| 精品久久久久久久久久久久久久久久久 | 亚洲一区二区不卡免费| 日韩精品综合一本久道在线视频| 国产精品性做久久久久久| 亚洲人吸女人奶水| 欧美电视剧在线观看完整版| 99视频超级精品| 美女国产一区二区三区| 亚洲天堂免费在线观看视频| 日韩精品一区二区三区四区| 99精品一区二区| 久久精品99国产精品| 亚洲欧美在线aaa| 日韩免费福利电影在线观看| 91色婷婷久久久久合中文| 韩国三级中文字幕hd久久精品| 亚洲欧美经典视频| 国产午夜精品一区二区三区嫩草 | 视频一区视频二区中文| 国产欧美一区二区精品秋霞影院| 色哟哟欧美精品| 国产馆精品极品| 日本欧美一区二区在线观看| 综合久久综合久久| 久久综合九色综合97_久久久| 色综合天天综合狠狠| 国产精品亚洲午夜一区二区三区| 日韩国产欧美三级| 午夜精品一区在线观看| 亚洲天堂精品视频| 国产精品嫩草久久久久| 久久这里都是精品| 91精品在线麻豆| 欧美日韩你懂得| 欧洲视频一区二区| 一本大道久久a久久精二百| 国产不卡在线视频| 国产91丝袜在线18| 国产乱码精品一区二区三区忘忧草| 日韩精品电影在线| 日本不卡不码高清免费观看| 亚洲一区av在线| 亚洲午夜一区二区| 香蕉乱码成人久久天堂爱免费| 亚洲欧美色图小说| 日韩理论电影院| 亚洲品质自拍视频网站| 亚洲视频资源在线| 亚洲欧美电影一区二区| 亚洲欧美日韩国产成人精品影院| 国产精品乱子久久久久| 国产精品视频在线看| 国产精品妹子av| 亚洲欧洲国产日韩| 一区二区三区四区精品在线视频| 亚洲日本在线观看| 亚洲一区在线观看免费观看电影高清 | 另类小说综合欧美亚洲| 日韩av成人高清| 色网站国产精品| 欧日韩精品视频| 7777精品伊人久久久大香线蕉经典版下载| 欧美日韩国产综合久久| 日韩精品中文字幕一区| 国产亚洲福利社区一区| 亚洲人成精品久久久久久| 亚洲一区在线看| 久久国产精品99久久人人澡| 国产成人精品综合在线观看| 91污片在线观看| 欧美久久久久久久久| 久久这里只有精品首页| 国产精品美女久久久久久2018 | 91影院在线观看| 欧美综合天天夜夜久久| 欧美一区二区三区精品| 久久精品一区二区三区不卡牛牛| 国产日韩欧美亚洲| 一区av在线播放| 久久精品72免费观看| 99久精品国产| 日韩一卡二卡三卡| 中文字幕在线不卡| 日本怡春院一区二区| 成人app在线| 欧美精品乱码久久久久久| 国产欧美日产一区| 一区二区三区av电影| 久国产精品韩国三级视频| 色综合久久久久| 精品国产一区二区三区久久影院 | 久久久噜噜噜久久人人看| 亚洲欧美在线高清| 精品一区二区久久久| 91视频com| 久久久精品免费观看| 日韩精品亚洲专区| 99久久免费精品高清特色大片| 555www色欧美视频| 17c精品麻豆一区二区免费| 男女视频一区二区| 日本高清免费不卡视频| 欧美国产精品中文字幕| 日韩国产精品久久| 在线观看www91| 国产精品久久久久7777按摩| 久久精品国产秦先生| 色综合久久久久综合| 久久综合精品国产一区二区三区 | 日本成人中文字幕| 在线观看视频一区| 1024成人网色www| 日韩一区二区三区高清免费看看| 中文字幕在线观看一区| 国产精品69毛片高清亚洲| 9191成人精品久久| 亚洲成人一区在线| 91麻豆自制传媒国产之光| 国产人成亚洲第一网站在线播放| 日韩成人一区二区三区在线观看| 色婷婷精品久久二区二区蜜臂av | 91日韩精品一区| 国产精品沙发午睡系列990531| 黄色精品一二区| 久久综合久久鬼色中文字| 免费人成精品欧美精品| 制服丝袜在线91| 日精品一区二区三区| 欧美日韩夫妻久久| 亚洲成a人v欧美综合天堂| 欧美性色黄大片| 亚洲午夜精品久久久久久久久| 欧美午夜精品电影| 三级在线观看一区二区| 777久久久精品| 日韩影院免费视频| 日韩欧美二区三区|