一种CPU的指令集兼容方法及其终端技术

技术编号:14642176 阅读:277 留言:0更新日期:2017-02-15 22:09
本发明专利技术公开了一种CPU的指令集兼容方法及其终端,解决了目前的部分AMD CPU不兼容SSSE3指令集的应用,使得很多应用程序无法运行,而导致的用户体验性低的技术问题。本发明专利技术的CPU的指令集兼容方法包括:获取到AMD CPU运行SSSE3指令应用的命令,通过捕获SSSE3指令应用运行后的异常信号;调用预置异常handler函数,并进行异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟SSSE3指令,使得SSSE3指令应用成功运行。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种CPU的指令集兼容方法及其终端
技术介绍
AMDCPU是唯一能与Intel抗衡的CPU厂商,应用非常广泛。Intel采用x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3(SuperSSE3),SSE4.1,SSE4.2,AVX指令集。AMD主要是x86,x86-64,SSE、3D-Now!指令集。SSE(StreamingSIMDExtensions)是英特尔在其计算机芯片PentiumIII中引入的指令集,是MMX的超集。AMD后来在AthlonXP中加入了对这个指令集的支持。这个指令集增加了对8个128位寄存器XMM0-XMM7的支持。SSE2是Intel在P4的最初版本中引入的,但是AMD后来在Opteron和Athlon64中也加入了对它的支持。这个指令集添加了对64位双精度浮点数的支持。SSSE3是Intel命名的SSE3指令集的扩充,包含了16个新的不同于SSE3的指令,每一个都能运作于64位元的MMX暂存器或是128位元XXM暂存器之中,SSSE3指令集增强了CPU的多媒体、图形图像处理、多媒体编码、整数运行和Internet等方面的处理能力。现在很多PC和Android手机端的应用很多采用了SSSE3指令集来加强其在多媒体、音视频的动画效果和性能,提升用户体验。但是大部分AMDCPU如主流的速龙系列AMDAthlon(tm)IIX4640、AMDAthlon(tm)IIX4641、AMDAthlon(tm)IIX4605e、AMDAthlon(tm)IIX2250、闪龙系列AMDSempronX2180和羿龙系列AMDPhenom(tm)IIx4955、A8-7650k并不兼容SSSE3指令集的应用,使得很多应用程序无法运行,从而导致了用户体验性低的技术问题。
技术实现思路
本专利技术实施例提供的一种CPU的指令集兼容方法及其终端,解决了目前的部分AMDCPU不兼容SSSE3指令集的应用,使得很多应用程序无法运行,而导致的用户体验性低的技术问题。本专利技术实施例提供的一种CPU的指令集兼容方法包括:获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号;调用预置异常handler函数,并进行所述异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟所述SSSE3指令,使得所述SSSE3指令应用成功运行。可选地,获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号之前还包括:进行内核初始化处理,注册所述预置异常handler函数。可选地,获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号具体包括:获取到所述AMDCPU运行SSSE3指令应用的命令,通过捕获SSSE3非法指令X86_TRAP_UD;根据所述SSSE3非法指令X86_TRAP_UD发送所述SSSE3指令应用运行后的异常信号给所述AMDCPU。可选地,调用预置异常handler函数,并进行所述异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟所述SSSE3指令,使得所述SSSE3指令应用成功运行具体包括:调用预置异常handler函数,添加若干个用于处理所述SSSE3指令的处理指令,并进行所述异常信号是否为所述SSSE3指令,若是,则执行分析当前所述SSSE3指令的指令格式步骤;所述分析当前所述SSSE3指令的指令格式步骤具体包括:通过get指令读取源操作数SRC;判断所述源操作数SRC是存储在寄存器或是内存中,若存储在所述寄存器,则先读取所述寄存器的所述源操作数SRC到内存中;当读取所述寄存器的所述源操作数SRC到内存中,或若判断所述源操作数SRC是存储在所述内存中,则通过所述预置SSE1指令和所述预置SSE2指令通过内存算法模拟所述SSSE3指令;将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中,使得所述SSSE3指令应用成功运行。可选地,将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中,使得所述SSSE3指令应用成功运行具体包括:将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中;将所述内存或所述寄存器中的地址进行指向下一条所述处理指令;根据指向下一条所述处理指令后通过调用预置异常handler函数获取到返回的所述异常信号,进行所述异常信号是否为所述SSSE3指令,若是,则执行所述分析当前所述SSSE3指令的指令格式步骤,直到若干个所述处理指令处理完毕。本专利技术实施例提供的一种CPU的指令集兼容终端,包括:获取捕获单元,用于获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号;模拟指令单元,用于调用预置异常handler函数,并进行所述异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟所述SSSE3指令,使得所述SSSE3指令应用成功运行。可选地,CPU的指令集兼容终端还包括:注册单元,用于进行内核初始化处理,注册所述预置异常handler函数。可选地,获取捕获单元具体包括:获取捕获子单元,用于获取到所述AMDCPU运行SSSE3指令应用的命令,通过捕获SSSE3非法指令X86_TRAP_UD;异常信号子单元,用于根据所述SSSE3非法指令X86_TRAP_UD发送所述SSSE3指令应用运行后的异常信号给所述AMDCPU。可选地,模拟指令单元具体包括:调用判断子单元,用于调用预置异常handler函数,添加若干个用于处理所述SSSE3指令的处理指令,并进行所述异常信号是否为所述SSSE3指令的判断,若是,则触发格式分析子单元;所述格式分析子单元具体包括:源操作数读取模块,用于通过get指令读取源操作数SRC;判断模块,用于判断所述源操作数SRC是存储在寄存器或是内存中,若存储在所述寄存器,则先读取所述寄存器的所述源操作数SRC到内存中;内存算法模拟模块,用于当读取所述寄存器的所述源操作数SRC到内存中,或若判断所述源操作数SRC是存储在所述内存中,则通过所述预置SSE1指令和所述预置SSE2指令通过内存算法模拟所述SSSE3指令;写回模块,用于将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中,使得所述SSSE3指令应用成功运行。可选地,写回模块具体包括:写回子模块,用于将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中;指向子模块,用于将所述内存或所述寄存器中的地址进行指向下一条所述处理指令;处理指令执行子模块,用于根据指向下一条所述处理指令后通过调用预置异常handler函数获取到返回的所述异常信号,进行所述异常信号是否为所述SSSE3指令,若是,则触发所述格式分析子单元,直到若干个所述处理指令处理完毕。从以上技术方案可以看出,本专利技术实施例具有以下优点:本专利技术实施例提供的一种CPU的指令集兼容方法及其终端,通过获取到AMDCPU运行SSSE3指令应用的命令,通过捕获SSSE3指令应用运行后的异常信号;调用预置异常han本文档来自技高网
...
一种CPU的指令集兼容方法及其终端

【技术保护点】
一种CPU的指令集兼容方法,其特征在于,包括:获取到AMD CPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号;调用预置异常handler函数,并进行所述异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟所述SSSE3指令,使得所述SSSE3指令应用成功运行。

【技术特征摘要】
1.一种CPU的指令集兼容方法,其特征在于,包括:获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号;调用预置异常handler函数,并进行所述异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟所述SSSE3指令,使得所述SSSE3指令应用成功运行。2.根据权利要求1所述的CPU的指令集兼容方法,其特征在于,获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号之前还包括:进行内核初始化处理,注册所述预置异常handler函数。3.根据权利要求1所述的CPU的指令集兼容方法,其特征在于,获取到AMDCPU运行SSSE3指令应用的命令,通过捕获所述SSSE3指令应用运行后的异常信号具体包括:获取到所述AMDCPU运行SSSE3指令应用的命令,通过捕获SSSE3非法指令X86_TRAP_UD;根据所述SSSE3非法指令X86_TRAP_UD发送所述SSSE3指令应用运行后的异常信号给所述AMDCPU。4.根据权利要求1至3中任意一项所述的CPU的指令集兼容方法,其特征在于,调用预置异常handler函数,并进行所述异常信号是否为SSSE3指令的判断,若是,则通过预置SSE1指令和预置SSE2指令模拟所述SSSE3指令,使得所述SSSE3指令应用成功运行具体包括:调用预置异常handler函数,添加若干个用于处理所述SSSE3指令的处理指令,并进行所述异常信号是否为所述SSSE3指令,若是,则执行分析当前所述SSSE3指令的指令格式步骤;所述分析当前所述SSSE3指令的指令格式步骤具体包括:通过get指令读取源操作数SRC;判断所述源操作数SRC是存储在寄存器或是内存中,若存储在所述寄存器,则先读取所述寄存器的所述源操作数SRC到内存中;当读取所述寄存器的所述源操作数SRC到内存中,或若判断所述源操作数SRC是存储在所述内存中,则通过所述预置SSE1指令和所述预置SSE2指令通过内存算法模拟所述SSSE3指令;将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中,使得所述SSSE3指令应用成功运行。5.根据权利要求4所述的CPU的指令集兼容方法,其特征在于,将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中,使得所述SSSE3指令应用成功运行具体包括:将模拟所述SSSE3指令之后的模拟结果写回所述内存或所述寄存器中;将所述内存或所述寄存器中的地址进行指向下一条所述处理指令;根据指向下一条所述处理指令后通过调用预置异常handler函数获取到返回的所述异常信号,进行所...

【专利技术属性】
技术研发人员:贺灏唐杏
申请(专利权)人:广州华多网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1