基于龙芯平台的Firefox浏览器图形库的向量优化
发布时间:2021-04-27 04:38
通用处理器与其上运行的基础软件是紧密联系的,需要并行发展。然而基础软件的研发会大量涉及处理器硬件相关知识,这给广大开发人员带来一定难度。因此,通常需要处理器厂商提供底层基础软件支持。龙芯处理器是基于MIPS架构的自主可控国产处理器,相比ARM,intel体系结构,目前存在应用不够丰富,软件生态不够健全的突出问题,这无疑会限制龙芯处理器的推广应用。浏览器作为通用处理器桌面应用的核心API软件,是最基础核心的软件平台之一。龙芯平台选择Firefox浏览器作为默认浏览器,当其稳定运行以后,性能问题无疑是下一步工作的重中之重,其在某种程度上决定着桌面的用户体验。为了提高浏览器多媒体应用的性能表现,本文的主要工作与创新之处如下:(1)SIMD技术通过对数据的并行操作来显著提升程序执行的效率,使用编译器intrinsic接口实现了基于MSA指令集的Skia向量优化。针对Skia库中函数特点和MSA指令集的限制,对若干函数进行代码重构便于向量化,同时尽可能的减少分支指令延迟。针对向量浮点异常问题,提出一种方法实现浮点数二进制向十进制的快速转换,易于调试。解决开发中遇到的符号扩展,编译支持等问题。(2...
【文章来源】:安徽大学安徽省 211工程院校
【文章页数】:65 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第一章 绪论
1.1 研究背景
1.2 研究现状与意义
1.3 本人主要工作和创新点
1.4 论文组织
第二章 Firefox52 浏览器架构和龙芯3A目标平台剖析
2.1 Firefox52 浏览器架构
2.1.1 Mozilla Firefox背景
2.1.2 Firefox52 组成
2.1.3 浏览器的主要目录结构
2.1.4 Firefox52 的构建系统
2.2 龙芯3A处理器平台架构
2.2.1 寄存器
2.2.2 指令集
2.2.3 MIPS栈结构
2.2.4 龙芯SIMD技术
2.3 本章总结
第三章 基于MSA指令集的Skia库的向量优化
3.1 Skia介绍
3.2 Skia在龙芯平台上的编译支持
3.3 Intrinsic函数接口优化
3.3.1 Intrinsic函数
3.3.2 函数的intrinsic实现
3.4 重构代码
3.4.1 floor函数优化说明
3.4.2 浮点数绝对值
3.5 符号扩展问题
3.6 浮点异常问题
3.7 移植入Firefox52 浏览器
3.8 本章小结
第四章 基于多媒体指令的LibYUV库的汇编优化
4.1 LibYUV的优化梳理
4.2 YUV与 RGB存储及采样模式
4.2.1 YUV格式
4.2.2 RGB格式
4.3 内嵌汇编优化
4.3.1 优化颜色饱和函数
C函数优化"> 4.3.2 RGB565ToARGBRowC函数优化
4.3.3 YUV与 RGB转码器优化
4.4 Invert模式问题
4.4.1 Invert模式剖析
4.4.2 invert模式问题解决方案
4.5 非对齐访存问题
4.5.1 非对齐地址的影响
4.5.2 龙芯解决方案
4.5.3 自适应择优算法
4.6 二进制兼容
4.6.1 问题需求
4.6.2 解决方案
4.7 区分平台优化代码
4.7.1 非mips平台不包含优化代码
4.7.2 排除编译器默认配置的影响
4.7.3 检测编译器是否支持
4.8 总结
第五章 测试
5.1 skia独立测试
5.1.1 正确性测试
5.1.2 性能测试
5.2 LibYUV独立测试
5.2.1 正确性测试
5.2.2 性能测试
5.3 浏览器canvas测试
5.4 浏览器优酷视频测试
5.5 总结
结论
参考文献
攻读硕士学位期间取得的学术成果
致谢
本文编号:3162784
【文章来源】:安徽大学安徽省 211工程院校
【文章页数】:65 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第一章 绪论
1.1 研究背景
1.2 研究现状与意义
1.3 本人主要工作和创新点
1.4 论文组织
第二章 Firefox52 浏览器架构和龙芯3A目标平台剖析
2.1 Firefox52 浏览器架构
2.1.1 Mozilla Firefox背景
2.1.2 Firefox52 组成
2.1.3 浏览器的主要目录结构
2.1.4 Firefox52 的构建系统
2.2 龙芯3A处理器平台架构
2.2.1 寄存器
2.2.2 指令集
2.2.3 MIPS栈结构
2.2.4 龙芯SIMD技术
2.3 本章总结
第三章 基于MSA指令集的Skia库的向量优化
3.1 Skia介绍
3.2 Skia在龙芯平台上的编译支持
3.3 Intrinsic函数接口优化
3.3.1 Intrinsic函数
3.3.2 函数的intrinsic实现
3.4 重构代码
3.4.1 floor函数优化说明
3.4.2 浮点数绝对值
3.5 符号扩展问题
3.6 浮点异常问题
3.7 移植入Firefox52 浏览器
3.8 本章小结
第四章 基于多媒体指令的LibYUV库的汇编优化
4.1 LibYUV的优化梳理
4.2 YUV与 RGB存储及采样模式
4.2.1 YUV格式
4.2.2 RGB格式
4.3 内嵌汇编优化
4.3.1 优化颜色饱和函数
C函数优化"> 4.3.2 RGB565ToARGBRowC函数优化
4.3.3 YUV与 RGB转码器优化
4.4 Invert模式问题
4.4.1 Invert模式剖析
4.4.2 invert模式问题解决方案
4.5 非对齐访存问题
4.5.1 非对齐地址的影响
4.5.2 龙芯解决方案
4.5.3 自适应择优算法
4.6 二进制兼容
4.6.1 问题需求
4.6.2 解决方案
4.7 区分平台优化代码
4.7.1 非mips平台不包含优化代码
4.7.2 排除编译器默认配置的影响
4.7.3 检测编译器是否支持
4.8 总结
第五章 测试
5.1 skia独立测试
5.1.1 正确性测试
5.1.2 性能测试
5.2 LibYUV独立测试
5.2.1 正确性测试
5.2.2 性能测试
5.3 浏览器canvas测试
5.4 浏览器优酷视频测试
5.5 总结
结论
参考文献
攻读硕士学位期间取得的学术成果
致谢
本文编号:3162784
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/3162784.html