一种cpu的硬件优化方法

文档序号:6513640阅读:172来源:国知局
一种cpu的硬件优化方法
【专利摘要】一种CPU的硬件优化方法,包括下列步骤:(1)设计系统的硬件:所述的系统包括:总控制器、存储控制器、外部总线接口等模块;(2)设定burst区域:通过burst地址编辑器,可以简单的设定内存中的burst区和不可burst区;(3)使用burst模式:当数据长度大于32位时,即可启用burst模式。其优点是:和X86指令集完全兼容,burst读写区完全可配置,对数据读写进行分段优化;对硬件设计而言,不增加外围电路,CPU逻辑门增加数极少,对系统成本没有影响;大大缩短了指令的执行时间,减少了CPU的总线访问次数;可推广到其它CISC或RISC指令集的CPU设计中,应用范围大。
【专利说明】—种CPU的硬件优化方法
【技术领域】
[0001]本发明涉及处理器的硬件设计领域,尤其涉及CPU (中央处理器)数据传输的硬 件优化设计。
【背景技术】
[0002]数据传输部件一直是CPU的重要组成部分,对它的优化工作一直是处理器设计中 性能优化的重点之一。国内处理器设计中对数据传输部件设计的优化主要通过提高Cache (高速缓存器)执行效率、解决读写相关、增加DMAC (直接内存访问控制器)部件等方式来进 行,对数据传输指令的执行流程的优化极少提及。以32位X86指令集的数据传输指令为 例,执行流程全部是按照传统的逐一传输的方式,将byte (字节),word (字)或double word (双字)一个个顺序从源地址传到目的地址。这类指令会大量占据总线,造成CPU流水线的 停顿和总线带宽负载的增加。
[0003]以32位X86指令为例,图一和图二分别是存储器到存储器数据传输的典型指令 REP MOVS (串传输指令)和存储器到寄存器传输的典型指令POPA (出栈指令)的流程图。对 于REP MOVS而言,假设ECX值为100,则此指令需要重复一百次步骤1-步骤5才能完成。 可以看出这类指令执行效率低下,对总线带宽负载较高。
[0004]本智力成果通过对X86指令集的数据传输指令进行详细分析,提出了针对其中的 连续数据传输指令进行硬件优化的方法,减少数据传输指令的执行周期和CPU对总线访问 (特别是写访问)的次数,有效提高了 CPU的指令执行速度。

【发明内容】

[0005]本发明在于提供一种数据传输指令的硬件优化方法,旨在提高数据传输指令的执 行效率,进而提升处理器的性能。其地址参数设定简单,可以仅在系统初始化(例如BIOS设 定)时设定一次,也可以根据客户需要在系统执行过程中更改参数设定;性能提高明显,优 化后的数据传输指令通常有一倍以上的效率提升。
[0006]本发明一种CPU的硬件优化方法,包括:
(I)、设计系统的硬件:系统由总控制器、存储控制器、外部总线接口等模块构成:其 中,总控制器为系统的主体部分,是能够针对不同访存地址执行不同方式的存储操作的 CPU,具体来说,这种CPU能够通过BIOS程序或者设置内部寄存器值的方式来设定可burst 地址区,对于可burst区访存按优化后的指令方案执行,不可burst区按原指令方案执行, 存储控制器通过接收总控制器数据信息和控制信息,对存储器进行读写操作,能够支持 burst读写和非burst读写。外部总线接口则用于CPU内部和外部的数据通信。硬件优化后 的信息包括:数据传输的源地址信息、目的地址信息、数据长度信息、控制信息、数据信息。
[0007](2)、设定burst区域。通过burst地址编辑器,可以简单的设定内存中的burst 区和不可burst区。可burst区和不可burst区是根据用户的内存分配方式决定的可配置 区域。可burst区和不可burst区并不要求完全连续,系统的内存地址可以分配为多个可burst区和多个不可burst区。是否采用burst模式可以通过硬件和软件两种方式配置。外 部可以通过单个开关开启或关闭burst模式,内部可以通过设置特定寄存器值决定是否开 启burst模式。除了使用burst编辑器以外,用户还可以通过特定程序设定可burst区。通 常在系统初始化时通过BIOS设定一次即可,也可以根据需要在程序运行时重新设定burst 区。执行的数据传输指令的源地址、目的地址处于burst区域中时,启用优化的指令方案。
[0008](3)、使用burst模式。当数据长度大于32位时,即可启用burst模式。Burst模 式不依赖于是否开启cache功能,最多可支持一条cache行大小的数据的内存读写。一次 burst最多支持一条cache行大小的数据这一要求并非固定的,在本智力成果中之所以选 择一个cache行的大小作为最大值,是方便开cache模式下和cache模块进行数据交换, burst实际可取最大字节数并无硬性要求。当CPU的内部和外部进行数据传输时,读取内存 时,可以一次将一条cache行的数据读到数据传输单元的burst寄存器中,然后进行寄存器 赋值等操作;写入内存时,首先将需要写入的数据暂存在数据传输单元的burst寄存器中, 然后一次性地写入内存。开启cache功能对burst读写功能有很大的帮助,能够有效提高 CPU执行效率。
[0009]通过burst读写减少了 CPU总线访问的次数,传统的指令执行流程被缩短,对特定 指令(如REP M0VSB)优化后指令流程可减少至传统流程的1/16 (依cache行所含字节数而 定)。
[0010]这种优化方法不仅限于X86结构的指令集中,其它CISC或者RISC指令集也可适 用。以RISC指令集为例,应用的非常广泛的ARM指令中有一个指令为LDMIA,可以完成多个 寄存器值的传送,最多可传送16个通用寄存器的值。ARM的做法是逐一执行加载/存储操 作后,存储单元地址按字长度增加。若使用本专利中的burst读写和赋值方式,可以一次性 将寄存器的值全部读出再一次性全部赋值给16个通用寄存器,性能的提升是显而易见的。
[0011]本发明一种CPU的硬件优化方法的优点是:和X86指令集完全兼容,操作系统和应 用软件无需任何改动;
本发明的burst读写区完全可配置,用户可根据自己的需要划分burst读写区,对数据 读写进行分段优化;
对硬件设计而言,不增加外围电路,CPU逻辑门增加数极少,对系统成本没有影响;
进一步,通过对数据传输指令进行深入分析,本智力成果对X86的部分数据传输指令 的执行流程进行了优化,大大缩短了指令的执行时间,减少了 CPU的总线访问次数,对于特 定指令(如REP MOVSB指令)总线访问次数可减少至1/16 (依cache行所含字节数而定)。 由于总线访问更集中,所以总线的带宽负载也有很大的降低;
可推广到其它CISC或RISC指令集的CPU设计中,应用范围大。
[0012]【专利附图】

【附图说明】:
图1为存储器到存储器数据传输的典型指令REP MOVS传统执行流程图。
[0013]图2为存储器到寄存器传输的典型指令POPA传统执行流程图。
[0014]图3为数据传输指令优化前后通用执行流程对比图。
[0015]图4为REP MOVS指令优化后的执行流程图。
[0016]图5为POPA指令优化后的执行流程图。
[0017]【具体实施方式】:椐图1?图5所示,一种CPU的硬件优化方法,其步骤如下:
1.通过burst地址编辑器配置burst区域
对CPU中某两个通用寄存器进行赋值,使其值对应burst区域的下地址和上地址。再 对EFLAG的某一保留位进行置一操作,将这两个地址赋值到CPU的burst配置寄存器组中, 再对EFLAG的该保留位执行置零操作,以便进行下一次burst区域配置。多次重复此步骤 以配置多个burst区域。
[0018]2.通过硬件优化加速内存到内存的传输指令
以REP MOVS指令为例,首先通过硬件判断DS =ESI和ES =EDI的地址是否均处于burst 区域中。若处于burst区域,执行优化逻辑,否则执行原逻辑。优化逻辑中,判断ECX值是 否大于burst_num(根据操作数大小M的区别,burst_num可以为4,8,16等),若大于操作数 大小,贝1J从DS:ESI通过一次read burst取出N个字节(N代表cache行字节数)的数据暂 存在内部burst寄存器中,然后通过一次write burst写入ES:EDI,并将ESI/ EDI减去或 加上(加或是减取决于DF的值)N,将ECX减去burst_num ;若小于burst_num,则从DS:ESI 通过一次read burst取出(ECX*M)个字节的数据暂存在内部burst寄存器中,然后通过一 次write burst写入ES:EDI,并将ESI/ EDI减去或加上ECX*M,并将ECX置O。
[0019]3.通过硬件优化加速寄存器到内存的传输指令
以P0PA/PUSHA指令为例,先判断SS:ESP是否处于burst区域中。若处于burst区域, 执行优化逻辑,否则执行原逻辑。优化逻辑中,对于POPA:将N个字节的堆栈数据读出并 暂存在内部burst寄存器中,依次赋值给D1、S1、BP等CPU的通用寄存器。对于PUSHA:将 D1、S1、BP等CPU的通用寄存器的值组合赋值给内部burst寄存器,然后一次性通过write burst写出。
[0020]除了上述实施例外,还可以在其它类型数据传输技术中用上本发明的方法写出多 个实施例,在此不一一赘述。
【权利要求】
1.一种CPU的硬件优化方法,其特征在于:包括下列步骤:(1)设计系统的硬件:所述的系统包括:总控制器、存储控制器、外部总线接口等模块;(2)设定burst区域:通过burst地址编辑器,可以简单的设定内存中的burst区和不 可burst区;(3)使用burst模式:当数据长度大于32位时,即可启用burst模式,Burst模式不依 赖于是否开启cache功能,最多可支持一条cache行大小的数据的内存读写;一次burst最 多支持一条cache行大小的数据这一要求并非固定的,之所以选择一个cache行的大小作 为最大值,是方便开cache模式下和cache模块进行数据交换,burst实际可取最大字节数 并无硬性要求。
2.根椐权利要求1所述的一种CPU的硬件优化方法,其特征在于:系统包括:总控制 器、存储控制器、外部总线接口模块;其中,总控制器为系统的主体部分,是能够针对不同访 存地址执行不同方式的存储操作的CPU,具体来说,这种CPU能够通过BIOS程序或者设置 内部寄存器值的方式来设定可burst地址区,对于可burst区访存按优化后的指令方案执 行,不可burst区按原指令方案执行,存储控制器通过接收总控制器数据信息和控制信息, 对存储器进行读写操作,能够支持burst读写和非burst读写;外部总线接口则用于CPU内 部和外部的数据通信;硬件优化后的信息包括:数据传输的源地址信息、目的地址信息、数据长度信息、控制 信息、数据信息。
3.根椐权利要求1所述的一种CPU的硬件优化方法,其特征在于:所述的设定burst区 域是通过burst地址编辑器,可以简单的设定内存中的burst区和不可burst区;可burst 区和不可burst区是根据用户的内存分配方式决定的可配置区域,可burst区和不可burst 区并不要求完全连续,系统的内存地址可以分配为多个可burst区和多个不可burst区;是 否采用burst模式可以通过硬件和软件两种方式配置;外部可以通过单个开关开启或关闭 burst模式,内部可以通过设置特定寄存器值决定是否开启burst模式;除了使用burst编 辑器以外,用户还可以通过设定内部寄存器值来设定可burst区;通常在系统初始化时通 过BIOS设定一次即可,也可以根据需要在程序运行时重新设定burst区;执行的数据传输 指令的源地址、目的地址处于burst区域中时,启用优化的指令方案。
4.根椐权利要求1所述的一种CPU的硬件优化方法,其特征在于:所述的使用burst 模式是当数据长度大于32位时,即可启用burst模式;Burst模式不依赖于是否开启cache 功能,最多可支持一条cache行大小的数据的内存读写;一次burst最多支持一条cache行 大小的数据这一要求并非固定的,在本智力成果中之所以选择一个cache行的大小作为最 大值,是方便开cache模式下和cache模块进行数据交换,burst实际可取最大字节数并无 硬性要求;当CPU的内部和外部进行数据传输时,读取内存时,可以一次将一条cache行的 数据读到数据传输单元的burst寄存器中,然后进行寄存器赋值等操作;写入内存时,首先 将需要写入的数据暂存在数据传输单元的burst寄存器中,然后一次性地写入内存。
【文档编号】G06F9/445GK103500107SQ201310450768
【公开日】2014年1月8日 申请日期:2013年9月29日 优先权日:2013年9月29日
【发明者】朱钟琦, 曾田, 阮航, 王炜 申请人:中国船舶重工集团公司第七0九研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1