体系结构实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 1 计算机体系结构 实验报告 学号:************ 专业班级:********* 学院:*********** 指导老师:******* 实验日期:******* 目 录 实验1 对指令操作码进行霍夫曼编码3 实验2 使用LRU方法更新Cache15 实验3 单功能流水线调度机构模拟19 实验总结22 参考文献22 实验1 对指令操作码进行霍夫曼编码 一、实验目的 1. 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 问题描述以及问题分析: 我们举例说明此问题,例如: 有一组指令的操作码共分七类,它们出现概率如 P1 P2 P3 P4 P5 P6 P7 0.45 0.30 0.15 0.05 0.03 0.01 0.01 对此组指令进行HUFFMAN编码正如下图所示: 最后得到的HUFFMAN编码如下表所示: P1 P2 P3 P4 P5 P6 P7 0 10 110 1110 11110 111110 111111 1 2 3 4 5 6 6 最短编码长度为: 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_man tree point; class huff_p{ public: huff_p* r_child; //大概率的节点,即右子节点; huff_p* l_child; //小概率的节点,即左子节点; char op_mask[3]; //指令标号; float p; //指令使用概率; }; //work link point class f_min_p{ public: f_min_p* next; char op_mask[3]; //指令标号; float p; //指令使用概率; huff_p* huf_p; }; /huff_man code point class huff_code{ public: huff_code* next; float p; char op_mask[3]; char code[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);//在工作链表中删除最小概率节点函数。 void inser void insert_n(f_min_p* h,f_min_p* p);// 在工作链表中插入两个最小概率节点生成的节点函数。 huff_p* creat_huffp(f_min_p* p);//生成HUFFMAN节点。 void creat_huffman_code(huff_p* h1,huff_code* h);//生成huffman编码; void r_find(huff_p* p1,char code[],int i,huff_code* h); //遍历HUFFMAN树生成指令操作码的HUFFMAN编码。 void output_huffman(huff_code* head);//输出huffman编码; void cal_sort_length(huff_code* head);//计算指令用huffman编码的平均编码

文档评论(0)

细雨滴梧桐 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档