您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 中南大学计算机体系结构实验报告
计算机体系结构实验报告学院:信息科学与工程学院专业班级:高赛文的小仙女指导老师:雷向东姓名:igot7目录实验1对指令操作码进行霍夫曼编码........................3一、实验目的................................................................................................3二、实验内容................................................................................................3三、实验过程................................................................................................3四、实验结果..............................................................................................14实验2使用LRU方法更新Cache..........................15一、实验目的..............................................................................................15二、实验内容............................................................................................15三、实验过程..............................................................................................15四、实验结果..............................................................................................18实验3通道处理过程模拟.................................20一、实验目的..............................................................................................20二、实验内容..............................................................................................20三、实验过程..............................................................................................21四、实验结果..............................................................................................22实验4单功能流水线调度机构模拟.........................23一、实验目的..............................................................................................23二、实验内容..............................................................................................23三、实验过程..............................................................................................23四、运行结果............................................................................................24实验总结.................................................24实验1对指令操作码进行霍夫曼编码一、实验目的1.了解和掌握指令编码的基本要求和基本原理二、实验内容1.使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。问题描述以及问题分析:我们举例说明此问题,例如:有一组指令的操作码共分七类,它们出现概率如下表所示:P1P2P3P4P5P6P70.450.300.150.050.030.010.01对此组指令进行HUFFMAN编码正如下图所示:最后得到的HUFFMAN编码如下表所示:最短编码长度为:H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95.要对指令的操作码进行HUFFMAN编码,只要根据指令的各类操作码的出现概率构造HUFFMAN树再进行HUFFAM编码。此过程的难点构造HUFFMAN树,进行HUFFAM编码只要对你所生成的HUFFMAN树进行中序遍历即可完成编码工作。三、实验过程观察上图1,不难看出构造HUFFMAN树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则HUFFAN树构造完毕,否则继续做2的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN树节点、HUFFMAN编码表节点。具体如下://huff_mantreepoint;classhuff_p{public:huff_p*r_child;//大概率的节点,即右子节点;huff_p*l_child;//小概率的节点,即左子节点;charop_mask[3];//指令标号;floatp;//指令使用概率;};//worklinkpointclassf_min_p{public:f_min_p*next;charop_mask[3];//指令标号;floatp;//指令使用概率;huff_p*huf_p;};/huff_mancodepointclasshuff_code{public:huff_code*next;floatp;charop_mask[3];charcode[N];//huffman编码;};函数说明:f_min_p*input_instruct_set();//输入指令集子模块;huff_p*creat_huffman_tree(f_min_p*head);//构造huffman树;f_min_p*fin_min(f_min_p*h);//在工作链表中寻找最小概率节点函数。f_min_p*del_min(f_min_p*h,f_min_p*p);//在工作链表中删除最小概率节点函数。voidinsert_n(f_min_p*h,f_min_p*p);//在工作链表中插入两个最小概率节点生成的节点函数。huff_p*creat_huffp(f_min_p*p);//生成HUFFMAN节点。voidcreat_huffman_code(huff_p*h1,huff_code*h);//生成huffman编码;voidr_find(huff_p*p1,charcode[],inti,huff_code*h);//遍历HUFFMAN树生成指令操作码的HUFFMAN编码。voidoutput_huffman(huff_code*head);//输出huffman编码;voidcal_sort_length(huff_code*head);//计算指令用huffman编码的平均编码字长程序清单及注释:#includeiostream.h#includemath.h#defineN8//findtwominprogram;//huff_mantreepont;classhuff_p{public:huff_p*r_child;//大概率的节点;huff_p*l_child;//小概率的节点;charop_mask[3];//指令标号;floatp;//指令使用概率;};classf_min_p{public:f_min_p*next;charop_mask[3];//指令标号;floatp;//指令使用概率;huff_p*huf_p;};//huff_mancodeclasshuff_code{public:huff_code*next;floatp;charop_mask[3];charcode[N];//huffman编码;};f_min_p*input_instruct_set();//输入指令集子模块;huff_p*creat_huffman_tree(f_min_p*head);//构造huffman树;f_min_p*fin_min(f_min_p*h);f_min_p*del_min(f_min_p*h,f_min_p*p);voidinsert_n(f_min_p*h,f_min_p*p);huff_p*creat_huffp(f_min_p*p);voidcreat_huffman_code(huff_p*h1,huff_code*h);//生成huffman编码;voidr_find(huff_p*p1,charcode[],inti,huff_code*h);voidoutput_huffman(huff_code*head);//输出huffman编码;voidcal_sort_length(huff_code*head);//计算指令用huffman编码的平均编码字长voidmain(){f_min_p*h,*h1;huff_p*root;huff_code*head,*pl;inth=input_instruct_set();/*p1=h;while(p1){coutp1-p',';p1=p1-next;}*/h1=h;root=creat_huffman_tree(h1);head=newhuff_code;head-next=NULL;creat_huffman_code(root,head);output_huffman(head);cal_sort_length(head);pl=head-next;while(pl){deletehead;head=pl;pl=pl-next;}}f_min_p*input_instruct_set(){f_min_p*head;f_min_p*h;h=newf_min_p;h-next=NULL;h-huf_p=NULL;head=h;intn;cout请输入指令数:;cinn;cout请输入指令标号:;cinh-op_mask;cout请输入指令的使用概率:;cinh-p;intf_min_p*point;f_min_p*p1=head;for(;in-1;i++){point=newf_min_p;cout请输入指令标号:;cinpoint-op_mask;point-op_mask[2]='\0';cout请输入指令的使用概率:;cinpoint-p;point-huf_p=NULL;point-next=p1-next;p1-next=point
本文标题:中南大学计算机体系结构实验报告
链接地址:https://www.777doc.com/doc-3516429 .html