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

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

?? iqueue.cc

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? CC
字號:
/* * 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 <climits>#include "base/statistics.hh"#include "encumbered/cpu/full/cpu.hh"#include "encumbered/cpu/full/create_vector.hh"#include "encumbered/cpu/full/dep_link.hh"#include "encumbered/cpu/full/iq/iqueue.hh"#include "encumbered/cpu/full/reg_info.hh"#include "encumbered/cpu/full/rob_station.hh"#include "sim/param.hh"#include "sim/stats.hh"using namespace std;//==========================================================================////  These functions are common to all IQ types//////////==========================================================================BaseIQ::BaseIQ(const string &name)    : SimObject(name)   // base class{    last_cycle_add = 0;    last_cycle_issue = 0;    lastFullMark = 0;    //  no caps here...    cap_values.reserve(SMT_MAX_THREADS);    for (int i = 0; i < SMT_MAX_THREADS; ++i)	cap_values[i] = UINT_MAX;}BaseIQ::BaseIQ(const string &name, bool caps_valid, vector<unsigned> caps)    : SimObject(name)   // base class{    last_cycle_add = 0;    last_cycle_issue = 0;    lastFullMark = 0;    cap_values.reserve(SMT_MAX_THREADS);    for (int i = 0; i < SMT_MAX_THREADS; ++i) {	if (caps_valid) {	    //  fill in values... empty & zeros => large positive numbers	    if (i < caps.size() && caps[i] != 0)		cap_values[i] = caps[i];	    else		cap_values[i] = UINT_MAX;  // very large positive number	} else {	    cap_values[i] = UINT_MAX;  // very large positive number	}    }}ClusterSharedInfo *BaseIQ::buildSharedInfo(){    return new ClusterSharedInfo;}voidBaseIQ::registerLSQ(iterator &p, iterator &lsq) {	p->lsq_entry = lsq;}BaseIQ::CacheMissEvent::CacheMissEvent(ROBStation *rob, BaseIQ *iq)    : Event(&mainEventQueue){    iq_ptr = iq;    rob_entry = rob;    pc = rob_entry->inst->PC;    hm_prediction = rob_entry->hm_prediction;    // When this event gets processed, or squashed, delete it.    setFlags(AutoDelete);}voidBaseIQ::CacheMissEvent::process(){    iq_ptr->cachemissevent_handler(pc, hm_prediction,				   rob_entry, squashed(), annotation());    rob_entry->cache_event_ptr = 0;}const char *BaseIQ::CacheMissEvent::description(){    return "cache miss notification";}//==========================================================================voidBaseIQ::pre_tick(){    avail_add_bw = local_dispatch_width;    avail_issue_bw = local_issue_width;}//  Add an instruction to the queueBaseIQ::iteratorBaseIQ::add(DynInst *inst, InstSeqNum seq, ROBStation *rob,	    RegInfoElement *ri, NewChainInfo *new_chain){    BaseIQ::iterator rv;    //  if dispatch_width is zero, don't worry about it...    if (avail_add_bw > 0 || local_dispatch_width == 0) {	//	//  basic initialization of register info	//	if (ri != 0) {	    for (unsigned i = 0; i < rob->num_outputs; ++i) {		ri[i].clear();		ri[i].setProducer(rob);	    }	}	//  call the virtual function that is specific for this IQ type	rv = add_impl(inst, seq, rob, ri, new_chain);	if (rv.notnull())	    --avail_add_bw;    } else {//	panic("BaseIQ: out of add bandwidth");	rv = 0;    }    return rv;}//  Issue an instruction...BaseIQ::rq_iteratorBaseIQ::issue(BaseIQ::rq_iterator &inst){    BaseIQ::rq_iterator rv;    //  if issue_width is zero, don't worry about it    if (avail_issue_bw > 0 || local_issue_width == 0) {	//  call the virtual function that is specific for this IQ type	rv = issue_impl(inst);	if (rv.notnull())	    --avail_issue_bw;    } else	panic("BaseIQ: out of issue bandwidth");    return rv;}//==========================================================================/* link RS onto the output chain number of whichever operation will next   create the architected register value IDEP_NAME */// This would be more natural as an IQStation method rather than an// IQ method, but that's not as easy as it sounds...TickBaseIQ::link_idep(BaseIQ::iterator &i, TheISA::RegIndex reg){    int number = i->num_ideps++;    i->idep_reg[number] = reg;    /* locate creator of operand */    CVLink producer = cpu->create_vector[i->thread_number()].entry(reg);    /* any creator? */    if (!producer.rs) {	/* no active creator, use value available in architected reg file,	 * indicate the operand is ready for use */	i->idep_ready[number] = true;	i->idep_ptr[number] = NULL;	return curTick;    }    /* else, creator operation will make this value sometime in the future */    /* indicate value will be created sometime in the future, i.e., operand     * is not yet ready for use */    i->idep_ready[number] = false;    /* link onto the top of the creator's output list of dependant operand */    i->idep_ptr[number] = new DepLink(producer.rs, producer.odep_num,				      i, number, queue_num);    return producer.rs->pred_wb_cycle;}TickBaseIQ::link_idep(BaseIQ::iterator &i){    int number = i->num_ideps++;    i->idep_reg[number] = (TheISA::RegIndex)-1;    i->idep_ready[number] = false;    i->idep_ptr[number] = NULL;    return curTick;}// =========================================================================voidBaseIQ::regStats(unsigned threads){    using namespace Stats;    //  First, register the stats common to all IQ models    string prefix(name() + ":");    occ_dist	.init(threads, 0, max_num_insts, 2)	.name(prefix + "occ_dist")	.desc("IQ Occupancy per cycle")	.flags(total | cdf)	;    inst_count	.init(threads)	.name(prefix + "cum_num_insts")	.desc("Total occupancy")	.flags(total)	;    peak_inst_count	.init(threads)	.name(prefix + "peak_occupancy")	.desc("Peak IQ occupancy")	.flags(total)	;    current_count	.name(prefix + "current_count")	.desc("Occupancy this cycle")	;    empty_count	.name(prefix + "empty_count")	.desc("Number of empty cycles")	;    fullCount	.name(prefix + "full_count")	.desc("Number of full cycles")	;    regModelStats(threads);}voidBaseIQ::regFormulas(unsigned threads){    using namespace Stats;//  First, register the stats common to all IQ models    string prefix(name() + ":");    occ_rate	.name(prefix + "occ_rate")	.desc("Average occupancy")	.flags(total)	;    occ_rate = inst_count / cpu->numCycles;    avg_residency	.name(prefix + "avg_residency")	.desc("Average IQ residency")	.flags(total)	;    avg_residency = occ_rate / cpu->issue_rate;    empty_rate	.name(prefix + "empty_rate")	.desc("Fraction of cycles empty")	;    empty_rate = 100 * empty_count / cpu->numCycles;    full_rate	.name(prefix + "full_rate")	.desc("Fraction of cycles full")	;    full_rate = 100 * fullCount / cpu->numCycles;    regModelFormulas(threads);}voidBaseIQ::tick_stats(){    // only useful with ptrace...    current_count = count();    // First, tick any common stats...    if (count() == 0) {	++empty_count;	for (int i = 0; i < cpu->number_of_threads; ++i)	    occ_dist[i].sample(0);    } else {	for (int i = 0; i < cpu->number_of_threads; ++i) {	    unsigned c = count(i);	    inst_count[i] += c;	    occ_dist[i].sample(c);	    if (c > peak_inst_count[i].value())		peak_inst_count[i] = c;	}    }    // Finally, tick the model-specific stats    tick_model_stats();}//==========================================================================//// need to declare this here since there is no concrete BaseIQ type// that can be constructed (i.e., no REGISTER_SIM_OBJECT() macro call,// which is where these get declared for concrete types).//DEFINE_SIM_OBJECT_CLASS_NAME("BaseIQ", BaseIQ)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91浏览器入口在线观看| 精品一二线国产| 亚洲欧洲av一区二区三区久久| 7777精品伊人久久久大香线蕉最新版| 成人一区二区三区视频在线观看 | 日韩一级欧美一级| 欧美军同video69gay| 欧美日韩激情一区二区| 欧美日韩中字一区| 欧美电影在哪看比较好| 欧美精品成人一区二区三区四区| 欧美老人xxxx18| 6080国产精品一区二区| 欧美一级黄色大片| 久久先锋资源网| 国产欧美一区二区在线观看| 国产精品色一区二区三区| 国产精品私房写真福利视频| 国产精品美女视频| 亚洲三级电影全部在线观看高清| 日韩毛片视频在线看| 夜夜精品视频一区二区| 日日噜噜夜夜狠狠视频欧美人| 免费美女久久99| 国产不卡免费视频| 91麻豆精东视频| 欧美一区二区三区公司| 久久久久国产免费免费| 亚洲少妇30p| 奇米四色…亚洲| 国产一区二区在线视频| av在线播放不卡| 在线播放国产精品二区一二区四区| 911精品国产一区二区在线| 欧美精品一区二区三区高清aⅴ| 中文字幕高清一区| 亚洲午夜激情av| 国产乱人伦精品一区二区在线观看| www.成人在线| 欧美一级高清片在线观看| 国产精品灌醉下药二区| 视频一区中文字幕国产| 成人免费高清视频| 日韩一区二区在线播放| 国产精品成人一区二区艾草| 日韩电影免费在线| 99精品视频中文字幕| 日韩一级高清毛片| 亚洲精品伦理在线| 国产高清在线观看免费不卡| 在线视频欧美精品| 中文子幕无线码一区tr| 蜜桃av噜噜一区二区三区小说| 91日韩在线专区| 亚洲精品在线免费播放| 午夜在线电影亚洲一区| 成年人网站91| 久久久久久免费网| 日本不卡不码高清免费观看| 91色|porny| 中文字幕一区二区三区精华液| 久久99精品国产91久久来源| 欧美在线你懂得| 亚洲视频在线观看一区| 国产91精品入口| 久久久久久久久97黄色工厂| 蜜桃av一区二区三区| 欧美日韩一本到| 亚洲毛片av在线| 99精品视频一区| 国产精品少妇自拍| 成人一区二区三区在线观看| 精品久久一区二区三区| 久久成人久久鬼色| 欧美成人a∨高清免费观看| 日韩av中文在线观看| 在线观看欧美精品| 亚洲在线中文字幕| 欧美亚洲国产怡红院影院| 亚洲免费资源在线播放| 色综合久久久久综合| 亚洲欧美日韩系列| 欧美亚洲综合在线| 视频一区免费在线观看| 欧美一区二区视频在线观看2020| 亚洲一区二区三区自拍| 在线播放国产精品二区一二区四区| 亚洲在线一区二区三区| 欧美精品黑人性xxxx| 日韩精品亚洲一区| 精品欧美一区二区三区精品久久| 久久99精品一区二区三区三区| 精品久久人人做人人爰| 国内精品久久久久影院薰衣草| 欧美tickle裸体挠脚心vk| 韩国女主播一区二区三区| 久久婷婷国产综合精品青草| 成人午夜激情影院| 亚洲午夜av在线| 欧美一区二区视频在线观看2020| 激情文学综合插| 国产精品另类一区| 在线一区二区三区| 麻豆国产91在线播放| 欧美经典一区二区三区| 在线观看免费亚洲| 欧美aⅴ一区二区三区视频| 久久久久久久精| 色欧美88888久久久久久影院| 午夜影视日本亚洲欧洲精品| 日韩欧美一级片| 不卡av电影在线播放| 午夜成人免费电影| 国产精品久久午夜| 欧美精品一级二级三级| 夫妻av一区二区| 日韩国产在线一| 中文字幕一区二区在线观看| 88在线观看91蜜桃国自产| 波多野结衣精品在线| 人人精品人人爱| 日韩一区在线免费观看| 欧美成人a在线| 欧洲av在线精品| 成人综合激情网| 日韩国产欧美一区二区三区| 亚洲欧洲国产专区| 久久一日本道色综合| 欧美日本国产一区| av在线这里只有精品| 奇米精品一区二区三区在线观看一 | 精品日产卡一卡二卡麻豆| 日本乱码高清不卡字幕| 成人深夜视频在线观看| 麻豆91免费观看| 日韩综合小视频| 亚洲一区二区三区不卡国产欧美 | 成人97人人超碰人人99| 韩国成人在线视频| 日韩国产欧美三级| 亚洲成人精品在线观看| 日韩一区在线看| 日本一区二区三区高清不卡| 欧美大黄免费观看| 在线播放国产精品二区一二区四区| 色综合色综合色综合| 成人激情视频网站| 国产**成人网毛片九色| 极品少妇一区二区三区精品视频 | 精品国产免费一区二区三区四区| 精品视频1区2区| 欧美又粗又大又爽| 在线免费亚洲电影| 一本到高清视频免费精品| 99久久精品99国产精品| 99re视频精品| 91网站黄www| 91成人网在线| 欧美日韩精品欧美日韩精品一| 色综合咪咪久久| 欧美系列在线观看| 欧美精品黑人性xxxx| 91精品国产免费| 久久影院午夜论| 国产精品色在线| 亚洲柠檬福利资源导航| 亚洲综合一区二区精品导航| 夜夜精品浪潮av一区二区三区| 一区二区三区四区在线| 亚洲一二三专区| 免费观看一级特黄欧美大片| 精品一区二区三区蜜桃| 国产成人精品一区二区三区四区| 成人蜜臀av电影| 成人国产一区二区三区精品| 色屁屁一区二区| 337p亚洲精品色噜噜| 精品国产乱码久久久久久影片| 国产亚洲美州欧州综合国| 国产精品久久久久7777按摩| 亚洲欧美日韩国产综合在线| 亚洲精品菠萝久久久久久久| 爽好久久久欧美精品| 国产一区美女在线| 91理论电影在线观看| 欧美一卡二卡在线观看| 国产欧美一区在线| 亚洲成人av免费| 国产福利电影一区二区三区| 色诱亚洲精品久久久久久| 日韩一区二区三区在线观看 | 中文字幕亚洲欧美在线不卡| 亚洲一区二区高清| 国产精品123| 欧美综合一区二区三区| 久久欧美一区二区| 亚洲成人在线网站| 成人开心网精品视频| 3atv一区二区三区| 亚洲欧美一区二区视频|