- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用制作SSE4电子相册-体系结构大作业
高等计算机体系结构实验报告
姓名:
学院:软件学院
班级:
学号:
实验内容
制作电子相册,并使用SSE技术实现图片的淡入淡出。
实验原理
MMX与SSE
MMX(MultiMediaExtensions) 多媒体增强指令集实现了单道指令多道数据流(SIMD,single-instruction, multiple-data)的执行模式,是第六代CPU芯片的重要特点。MMX技术是在CPU中加入了特地为视频信号(Video Signal),音频信号(Audio Signal)以及图像处理(Graphical Manipulation)而设计的57条指令,因此,MMX CPU极大地提高了电脑的多媒体(如立体声、视频、三维动画等)处理功能。
MMX采用处理器的80位的浮点寄存器的低64位作为MMX寄存器,一共有8个,从mm0到mm7,因为是“借用”浮点寄存器的低64位所以每次在用完MMX指令后一定要用EMMS指令将寄存器清空,MMX主要是针对整数运算进行优化,一个64位的MMX寄存器可以同时存入8个8位或者4个16位的整数,估计一次性就可以完成8次8位运算或者4次16位运算,要注意的MMX指令不能直接对32位数进行2次运算,但可以把32位拆分成两个16位再进行运算。MMX技术还有一个非常有用的特性是饱和运算,比如两个8位数相加:128+129相加后很明显超过了8位的最大值256,但是进行饱和运算相加的结果将是最大值256,饱和运算将运算结果控制在相应位数的范围内。
SSE(Streaming SIMD Extensions)单指令多数据流式扩展就是扩展了MMX支持的SIMD,它包括70条指令,其中包含单指令多数据浮点计算、以及额外的SIMD整数和高速缓存控制指令。其优势包括:更高分辨率的图像浏览和处理、高质量音频、MPEG2视频、同时MPEG2加解密;语音识别占用更少CPU资源;更高精度和更快响应速度。支持SSE指令集的处理器有八个128位的寄存器XMM0~XMM7。SIMD指令的数据格式分别是:
压缩的64位双精度浮点数*2
压缩8位整形数*16
压缩16位整形数*8
压缩32位整形数*4
压缩64位整形数*2
MMX和SSE都是INTEL开发的基于SIMD(单指令多数据流)的技术。所谓单指令多数据流是指可以用一条指令可以完成多个数据的操作。虽然64位系统已经推出,但是我们大部分都是使用32位系统,所以如果要完成两个128位的相加运算,用普通32位指令很明显要执行4条相加指令,而基于64位的MMX指令只需要执行两次即可完成,更强大的SSE能一次处理128位,故一次就可以完成操作,所以采用MMX及SSE优化能够大幅度提升程序性能。
实验环境
Visual Studio 2012
实验任务
本次实验实现了一个简单的基于MFC的电子相册,利用MMX和SSE多媒体指令加快图像渐变处理。
实验过程
要实现两幅图间的渐变,应该以一种加权平均组合:
Result_pixel=A_pixel*fade +B_pixel*(1-fade)
对A,B两图的每个像素点完成以上计算。当fade值从1逐渐变为0时,则产生一系列的图像帧,实现了由A图像淡化到B图像的过程。
本次实验在VisualStudio2012下完成,利用Windows API和Intel SSE指令内联编译完成。
实验代码如下:
1.利用CImage类,先加载文件到内存
// 加载文件到内存
img1=new CImage();
img2=new CImage();
img3=new CImage();
img4=new CImage();
img5=new CImage();
out1=new CImage();
out2=new CImage();
out3=new CImage();
out4=new CImage();
out5=new CImage();
img1-Load(_T(1.bmp));
img2-Load(_T(2.bmp));
img3-Load(_T(3.bmp));
img4-Load(_T(4.bmp));
img5-Load(_T(5.bmp));
out1-Load(_T(1.bmp));
out2-Load(_T(2.bmp));
out3-Load(_T(3.bmp));
out4-Load(_T(4.bmp));
out5-Load(_T(5.bmp));
2.获得图像基本数据,GetPixelAddress获取制定像素的内存地址,因为每次处理2个像素8个字节,故得循环次数。
3.本次图像渐变分为2
您可能关注的文档
最近下载
- 深基坑工程土方开挖节点验收记录.doc VIP
- 我和我的祖国原版正谱钢琴谱五线谱乐谱.pdf VIP
- 2025年全国大学生职业生涯规划大赛获奖作品鉴赏 .pdf VIP
- 新时代好少年先进主要事迹【7篇】.docx VIP
- 《gkh》教学实录与反思.pptx
- 第2单元第2课《花鸟为伴》第二课时课件-2025-2026学年人美版(2024)美术新教材八年级上册.pptx VIP
- 2024年10月自考14445小学教育管理试题及答案.docx
- 中软国际有限公员工手册内部公开.PDF VIP
- 第2单元第2课《花鸟为伴》第一课时课件-人美版美术新教材八年级上册.pptx VIP
- 店铺押金退还协议.doc VIP
原创力文档


文档评论(0)