CN112764810A - 一种应用于处理器的寄存器控制simd指令扩展方法 - Google Patents
一种应用于处理器的寄存器控制simd指令扩展方法 Download PDFInfo
- Publication number
- CN112764810A CN112764810A CN202110075334.5A CN202110075334A CN112764810A CN 112764810 A CN112764810 A CN 112764810A CN 202110075334 A CN202110075334 A CN 202110075334A CN 112764810 A CN112764810 A CN 112764810A
- Authority
- CN
- China
- Prior art keywords
- simd
- field
- bits
- control
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000006870 function Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 abstract description 5
- 238000013461 design Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910052734 helium Inorganic materials 0.000 description 1
- 239000001307 helium Substances 0.000 description 1
- SWQJXJOGLNCZEY-UHFFFAOYSA-N helium atom Chemical compound [He] SWQJXJOGLNCZEY-UHFFFAOYSA-N 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
Abstract
本发明公开了一种应用于处理器的寄存器控制SIMD指令扩展方法,基于寄存器控制的SIMD指令扩展,通过在处理器中增加一个存储器映射的控制寄存器,实现对处理器SIMD操作的控制,SIMD控制寄存器为32位,所述SIMD控制寄存器中的高16位保留,可以自行定义其功能,如设计为掩码位等;所述低16位为实际控制位,分别包含了对整数操作的SIMD控制与浮点操作的SIMD控制;实现了基于寄存器控制的SIMD指令扩展,通过在处理器中增加一个存储器映射的控制寄存器,实现对处理器SIMD操作的控制;本发明将处理器的SIMD指令中对SIMD控制的部分全部取出,交由上述控制寄存器进行控制,因此可以实现在不改动处理器指令和汇编编译器的情况下实现处理器对SIMD指令的支持。
Description
技术领域
本发明涉及处理器指令扩展领域,具体涉及一种应用于处理器的寄存器控制SIMD指令扩展方法。
背景技术
当今处理器所需处理的数据量和复杂性均快速增长,对微处理器的要求也越来越高。同时,通过提高时钟频率来提升处理器性能会受到功耗,工艺的限制,流水线级数的增加也会带来一定的负面影响,因此,不同等级的并行操作被引入到处理器中。单指令多数据(SIMD)即为数据级并行,它通过允许对多个数据元素并行执行基本操作而减少指令数量,可以提升应用程序性能。
在现代处理器中SIMD扩展指令相当重要。以目前主流的X86指令集架构为例,从其诞生到现在的四十余年时间里,逐渐发展出了诸多的扩展指令集。其中既有扩展64位支持的X86-64指令集,又有用于并行数据计算与多媒体任务的MMX、SSE、AVX和FMA等指令集,也有用于加密的AES和SHA指令集,以及用于虚拟化的VT-x指令集等等,这些扩展指令集可以在特定场景极大地加速处理器的执行速度。此外,上述指令集中绝大多数都是SIMD扩展指令集。而在ARM阵营,则从ARMv7-A指令集架构开始支持Neon技术。Neon技术是一种用于Cortex-A系列和Cortex-R52处理器的用于加速数字信号处理的SIMD架构扩展,ARMv8.2-A指令集架构中则添加了可伸缩向量扩展指令集SVE,此外,ARM还有用于Armv8.1-M架构的Helium扩展。
随着嵌入式芯片处理能力和功能的快速发展,多媒体已成为嵌入式系统的重要应用之一,并且需要具备高品质播放、低功耗和灵活扩展等特点。为了满足这些要求,目前的方案大多采用基于可编程媒体处理器的硬件架构。由于媒体处理算法具有小位宽和高并行的特点,适合采用并行硬件体系结构,近年来,嵌入式媒体处理器中越来越多地采用RISC和SIMD的混合架构来解决处理器在媒体处理能力方面的瓶颈。
为了实现指令扩展,需要对新指令进行编码,由于指令编码空间有限,因此扩展的SIMD指令会挤占未来其他指令的空间。当扩展的SIMD指令操作数较多时,32位处理器的指令长度可能无法满足编码要求,需要单独设计更长的指令。更长的指令会导致处理器中的译码模块设计更加复杂,同时也会增加指令cache的压力,扩展新的指令需要增加处理器译码部分的规模,而且扩展的指令越多,译码单元的复杂度也会更高。扩展新指令需要对编译器进行修改,且扩展指令越多对编译器的修改也越多,否则编译器将无法编译出支持所扩展指令的程序。
发明内容
本发明所要解决的技术问题是传统解决处理器SIMD指令扩展需要增加新的指令、需要增加处理器译码模块规模和需要修改汇编编译器的技术问题,目的在于提供一种应用于处理器的寄存器控制SIMD指令扩展方法,适用于单线程、单发射处理器,通过在处理器中增加一个存储器映射的控制寄存器,实现对处理器SIMD操作的控制。
本发明通过下述技术方案实现:
一种应用于处理器的寄存器控制SIMD指令扩展方法,基于在单发射顺序执行处理器中增加一个和存储器映射的SIMD控制寄存器,所述SIMD控制寄存器与处理器中的执行单元、控制单元和访存单元相连接;其中,执行单元受SIMD控制寄存器的控制执行相应的SIMD运算;同时,执行单元也可修改SIMD控制寄存器内的值以变更SIMD模式;所述访存单元受SIMD控制寄存器的控制以执行相应的访存操作,所述控制单元向SIMD控制寄存器发送处理异常的信号,SIMD控制寄存器为32位,所述SIMD控制寄存器中的高16位保留,可以自行定义其功能,如设计为掩码位等;
进一步,所述低16位为实际控制位,分别包含了对整数操作的SIMD控制与浮点操作的SIMD控制;所述SIMD控制寄存器的高16位保留或自行定义功能,所述SIMD控制寄存器的低16位为实际控制位,所述控制寄存器的低16位包括八个字段:0位为INT_SIMD_ENA字段、1-3位为INT_SIMD_CTL字段、4位为FP_SIMD_ENA字段、5-7位为FP_SIMD_CTL字段、8-10位为SIMD_CNT字段、11-12位为TARGET_WIDTH字段、13-14位为SIMD_WIDTH字段和15位为EXCEPTION字段;所述INT_SIMD_ENA字段为整数SIMD的使能字段,所述字段长度为一位;当INT_SIMD_ENA字段中的值为1时,INT_SIMD_CTL位有效;所述INT_SIMD_CTL字段为整数SIMD的控制字段,所述字段长度为三位;所述FP_SIMD_ENA字段和FP_SIMD_CTL字段用于控制浮点SIMD操作;所述SIMD_CNT字段为计数字段,当需要执行SIMD指令时,SIMD_CNT字段将SIMD指令置数,所述SIMD_CNT字段中的数据在每个SIMD操作完成后减1,当SIMD_CNT字段中的数据从非0跳变到全0时,执行模块将清除浮点和整数SIMD使能字段,当SIMD_CNT字段中的数据保持为0时,执行模块不做任何操作;所述TARGET_WIDTH字段用于设置软件期望的SIMD数据位宽;所述SIMD_WIDTH字段用于设置处理器的SIMD总数据位宽;所述EXCEPTION字段与处理器中的控制单元连接,当处理异常时EXCEPTION字段即EXCEPTION位置1,所述SIMD控制功能无效,所有操作按非SIMD指令处理;当中断处理完成退出时,清零此位。
进一步,实现对处理器SIMD操作的控制;本发明将处理器的SIMD指令中对SIMD控制的部分全部取出,交由上述控制寄存器进行控制,因此可以实现在不改动指令的情况下实现处理器对SIMD指令的支持。因此可以实现在不改动处理器指令和汇编编译器的情况下实现处理器对SIMD指令的支持,因本发明的实现对具有指令级并行能力的处理器性能有一定影响,因此更适合单线程、单发射的处理器。
进一步,所述第二个字段INT_SIMD_CTL字段中的低2位负责控制SIMD数据类型,0-3分别代表8位、16位、32位和64位的SIMD数据长度;控制位中的第三位为可选功能,负责控制访存指令。
进一步,当第二个字段INT_SIMD_CTL的第三位置1时,表示开启SIMD访存模式;在第三位置1且访存指令为load时,若当前的SIMD总数据位宽为a,访存数据位宽为b,SIMD数据位宽为c;其中,a≥b≥c,则访存单元将从存储设备中取出a/c*b位数据,并将其中每b位数据中取出低c位,拼接成长度为a位的数据;在第三位置1且访存指令为store时,其操作过程为第三位置1访存指令load的逆操作。
进一步,所述SIMD控制寄存器作为标准存储器读写指令访问,所述SIMD控制寄存器控制执行单元和访存单元,为实现SIMD指令,需要将原有计算单元修改为SIMD运算单元。同时,支持SIMD运算的单元需要有两个控制信号,分别为SIMD_ENA和SIMD_CTL,两个控制信号分别与SIMD控制寄存器对应的字段相连,由该寄存器直接控制。对于运算单元,控制信号可以仅为两位,连接SIMD_CTL字段中的低2位。如果需要连续访存功能,则对应的访存单元也应当做修改,并将SIMD控制寄存器中的SIMD_CTL的最高位及SIMD_ENA与之相连。此外,在处理器集成中应当注意SIMD控制寄存器仅可对运算与访存指令产生影响,分支指令,系统指令以及对SIMD控制寄存器本身的访存等不应当受其控制。
本发明与现有技术相比,具有如下的优点和有益效果:
本发明一种使用寄存器控制的SIMD指令扩展方法,本发明主要实现了基于寄存器控制的SIMD指令扩展,通过在处理器中增加一个存储器映射的控制寄存器,实现对处理器SIMD操作的控制。本发明将处理器的SIMD指令中对SIMD控制的部分全部取出,交由上述控制寄存器进行控制,因此可以实现在不改动处理器指令和汇编编译器的情况下实现处理器对SIMD指令的支持,因本发明的实现对具有指令级并行能力的处理器性能有一定影响,因此更适合单线程、单发射的处理器。
附图说明
在附图中:
图1是本发明SIMD控制寄存器低16位字段示意图;
图2是五级流水线的处理器核中模块示意图;
图3是软件实现SIMD指令流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
在以下描述中,为了提供对本发明的透彻理解阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的结构、电路、材料或方法。
在整个说明书中,对“一个实施例”、“实施例”、“一个示例”或“示例”的提及意味着:结合该实施例或示例描述的特定特征、结构或特性被包含在本发明至少一个实施例中。因此,在整个说明书的各个地方出现的短语“一个实施例”、“实施例”、“一个示例”或“示例”不一定都指同一实施例或示例。此外,可以以任何适当的组合和、或子组合将特定的特征、结构或特性组合在一个或多个实施例或示例中。此外,本领域普通技术人员应当理解,在此提供的示图都是为了说明的目的,并且示图不一定是按比例绘制的。这里使用的术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。
在本发明的描述中,需要理解的是,术语“前”、“后”、“左”、“右”、“上”、“下”、“竖直”、“水平”、“高”、“低”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。
实施例一
如图1所示,本发明一种应用于处理器的寄存器控制SIMD指令扩展方法,传统的设计为了实现处理器的SIMD指令扩展,需要增加新的指令,通过译码模块将指令译为控制信号与操作数,再交由相应的运算器进行运算或者进行访存操作。本专利通过将SIMD控制部分与指令解耦,将SIMD控制部分交给一个单独的SIMD控制寄存器完成,可以在运算,访存单元基本与传统设计方法保持一致的情况下减少所需要增加的指令数量,降低译码模块的复杂程度,同时也可以在不对编译器进行修改或仅进行少量修改的情况下,实现包含有SIMD指令的程序的运行。本专利的实现方式对于单发射顺序执行处理器所带来的性能损失最小,因此适合需要以较低的成本实现对较为简单的嵌入式处理器核的SIMD指令扩展的情形。
本发明主要实现了基于寄存器控制的SIMD指令扩展,通过在处理器中增加一个存储器映射的控制寄存器,实现对处理器SIMD操作的控制。
1.SIMD控制寄存器的字段:
本设计中的SIMD控制寄存器有32位,其中低16位为实际控制位,分别包含了对整数操作的SIMD控制与浮点操作的SIMD控制。SIMD控制寄存器的低16位字段如图1所示。
此寄存器中第一个字段INT_SIMD_ENA为整数SIMD的使能字段,长度为一位。只有当此字段中的值为1时,INT_SIMD_CTL位才有效。寄存器中的第二个字段INT_SIMD_CTL长度为三位,为整数SIMD的控制字段。此字段中的低2位负责控制SIMD数据类型,0-3分别代表8、16、32和64位的SIMD数据长度。控制位中的第三位为可选功能,如果集成此功能,则其负责控制访存指令,当第三位置1时,表示开启SIMD访存模式。在该位置1且访存指令为load时,若当前的SIMD总数据位宽为a,访存数据位宽为b,SIMD数据位宽为c(a≥b≥c),则访存单元将从存储设备中取出a/c*b位数据,并将其中每b位数据中取出低c位,拼接成长度为a位的数据。当访存指令为store且该位置1时,其操作相当于上述load指令的逆操作。FP_SIMD_ENA和FP_SIMD_CTL字段的功能和对应的INT字段相同,但其用于控制浮点SIMD操作。SIMD_CNT位为记数位,当需要执行少数几条SIMD指令时,可将其置数。之后SIMD_CNT中的数据每个SIMD操作完成后减1,当SIMD_CNT中的数据从非0跳变到全0时,将清除浮点和整数SIMD使能字段。当SIMD_CNT中的数据保持为0时,不做任何操作。TARGET_WIDTH字段用于设置软件期望的SIMD数据位宽,0-3分别表示32位、64位、128位和256位。SIMD_WIDTH用于设置处理器的SIMD总数据位宽,0-3分别表示32位、64位、128位和256位,此字段应当硬连线为与处理器SIMD数据总位宽一致的值,无法被修改。SIMD控制寄存器的第16位与处理器的控制单元相连接,当处理异常时此位置1,此时SIMD控制功能无效,所有操作按非SIMD指令处理。当中断处理完成退出时,清零此位。
SIMD控制寄存器中的高16位保留,可以自行定义其功能,如设计为掩码位等。
2.SIMD控制寄存器的硬件集成:
SIMD控制寄存器在核中作为一个存储器映射的寄存器,通过标准存储器读写指令访问。图2展示了一个五级流水线的处理器核中SIMD控制寄存器与各个模块之间的关系。由于此寄存器需要对执行和访存两部分进行控制,为了保证在顺序执行架构中修改SIMD控制寄存器后能对下一条指令立即生效,可以对写入SIMD控制寄存器地址的指令做特别处理,在指令到达执行站后即写入,同时将传入访存站的指令变为空操作。
为实现SIMD指令,需要将原有计算单元修改为SIMD运算单元。同时,支持SIMD运算的单元需要有两个控制信号,分别为SIMD_ENA和SIMD_CTL,两个控制信号分别与SIMD控制寄存器对应的字段相连,由该寄存器直接控制。对于运算单元,控制信号可以仅为两位,连接SIMD_CTL字段中的低2位。如果需要连续访存功能,则对应的访存单元也应当做修改,并将SIMD控制寄存器中的SIMD_CTL的最高位及SIMD_ENA与之相连。此外,在处理器集成中应当注意SIMD控制寄存器仅可对运算与访存指令产生影响,分支指令,系统指令以及对SIMD控制寄存器本身的访存等不应当受其控制。
本专利中SIMD控制寄存器支持64、128、256和512位的SIMD数据,由于实际因素限制,并非所有处理器均能在硬件上实现512位SIMD,因此可利用TARGET_WIDTH和SIMD_WIDTH字段中的数据,实现对超出物理位宽的SIMD操作的支持。当处理器检测到TARGET_WIDTH大于SIMD_WIDTH时,可以在指令发射阶段将指令分拆成多条指令来实现软件期望的操作,分拆后的指令数量为TARGET_WIDTH/SIMD_WIDTH。如果处理器仅希望一个简单的实现,那么可以设计为仅能执行小于等于实际SIMD总数据宽度的指令,此时如果检测到TARGET_WIDTH大于SIMD_WIDTH,则运算指令产生非法指令异常。
如果SIMD软件部分总数据宽度固定,且与处理器硬件的SIMD数据总位宽及标量数据位宽相同,则可以选择不增加新的SIMD寄存器组,而是使用处理器中原本的寄存器以减少数据搬运操作。但是当三者不相等时,则推荐额外增加新的SIMD寄存器组。
3.SIMD指令的软件实现:
在处理器集成SIMD控制寄存器后,原本处理器所支持的运算指令与访存指令即可通过配置SIMD控制寄存器实现标量模式和SIMD模式之间的切换,因此在进行SIMD运算之前和之后,软件需要对SIMD控制寄存器进行修改以实现所需操作。图3所示为软件实现SIMD指令的流程。在软件实现中可将开启SIMD模式和关闭SIMD模式的操作使用汇编编写,作为可调用的函数,在SIMD运算的前和后调用,SIMD运算本身仍可使用高级语言编写。
实施例二
以一个五级流水线处理器核为例,该处理器核实现了64位SIMD操作,其结构如上图2所示,同时在SIMD控制寄存器中的自定义字段的最低位增加了一个水平操作位。假设该处理器核原本为32位,为增加64位SIMD操作仅将其数据宽度,寄存器宽度增加为64,但是没有增加任何新指令。因其最高支持64位的SIMD操作,SIMD控制寄存器的SIMD_WIDTH字段应当硬连线为二进制的01。下面以对一个有十个32位数的数组元素求和为例说明SIMD指令的实现过程。在无SIMD控制寄存器支持的情况下,需要十次访存与九次加法完成计算。在有SIMD控制寄存器支持的情况下,则首先向SIMD控制寄存器中载入控制数据,在此例中为0x280D。载入之后即开启SIMD总长度64位,SIMD每个操作数32位的整数SIMD操作。之后只需要进行5次访存和四次加法即可将最后数据保存在同一个寄存器的高低32位。之后再对SIMD控制寄存器设置水平操作,进行最后一次水平加法即可完成全部操作。
本发明主要实现了基于寄存器控制的SIMD指令扩展,通过在处理器中增加一个存储器映射的控制寄存器,实现对处理器SIMD操作的控制。本发明将处理器的SIMD指令中对SIMD控制的部分全部取出,交由上述控制寄存器进行控制,因此可以实现在不改动处理器指令和汇编编译器的情况下实现处理器对SIMD指令的支持,适合单线程、单发射的处理器。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种应用于处理器的寄存器控制SIMD指令扩展方法,基于在单发射顺序执行处理器中增加一个存储器映射的SIMD控制寄存器,其特征在于,所述SIMD控制寄存器与处理器中的执行单元、控制单元和访存单元相连接;其中,执行单元受SIMD控制寄存器的控制执行相应的SIMD运算;同时,执行单元修改SIMD控制寄存器内的值以变更SIMD模式;所述访存单元受SIMD控制寄存器的控制以执行相应的访存操作,所述控制单元向SIMD控制寄存器发送处理异常的信号。
2.根据权利要求1所述的一种应用于处理器的寄存器控制SIMD指令扩展方法,其特征在于,所述SIMD控制寄存器的位数为32位;
所述SIMD控制寄存器的高16位保留或自行定义功能,所述SIMD控制寄存器的低16位为实际控制位,所述控制寄存器的低16位包括八个字段:0位为INT_SIMD_ENA字段、1-3位为INT_SIMD_CTL字段、4位为FP_SIMD_ENA字段、5-7位为FP_SIMD_CTL字段、8-10位为SIMD_CNT字段、11-12位为TARGET_WIDTH字段、13-14位为SIMD_WIDTH字段和15位为EXCEPTION字段;
所述INT_SIMD_ENA字段为整数SIMD的使能字段,所述字段长度为一位;当INT_SIMD_ENA字段中的值为1时,INT_SIMD_CTL位有效;
所述INT_SIMD_CTL字段为整数SIMD的控制字段,所述字段长度为三位;
所述FP_SIMD_ENA字段和FP_SIMD_CTL字段用于控制浮点SIMD操作;
所述SIMD_CNT字段为计数字段,当需要执行SIMD指令时,SIMD_CNT字段将SIMD指令置数,所述SIMD_CNT字段中的数据在每个SIMD操作完成后减1,当SIMD_CNT字段中的数据从非0跳变到全0时,SIMD控制寄存器将清除浮点和整数SIMD使能字段,当SIMD_CNT字段中的数据保持为0时,SIMD控制寄存器不做任何操作;
所述TARGET_WIDTH字段用于设置软件期望的SIMD数据位宽;
所述SIMD_WIDTH字段用于硬连线为处理器的SIMD总数据位宽;
所述EXCEPTION字段与处理器中的控制单元连接,当处理异常时EXCEPTION字段即EXCEPTION位置1,所述SIMD控制功能无效,所有操作按非SIMD指令处理;当中断处理完成退出时,清零此位。
3.根据权利要求2所述的一种应用于处理器的寄存器控制SIMD指令扩展方法,其特征在于,所述第二个字段INT_SIMD_CTL字段中的低2位负责控制SIMD数据类型,0-3分别代表8位、16位、32位和64位的SIMD数据长度;控制位中的第三位为可选功能,负责控制访存指令。
4.根据权利要求2所述的一种应用于处理器的寄存器控制SIMD指令扩展方法,其特征在于,当第二个字段INT_SIMD_CTL的第三位置1时,表示开启SIMD访存模式;在第三位置1且访存指令为load时,若当前的SIMD总数据位宽为a,访存数据位宽为b,SIMD数据位宽为c;其中,a≥b≥c,则访存单元将从存储设备中取出a/c*b位数据,并将其中每b位数据中取出低c位,拼接成长度为a位的数据;在第三位置1且访存指令为store时,其操作过程为第三位置1访存指令load的逆操作。
5.根据权利要求1所述的一种应用于处理器的寄存器控制SIMD指令扩展方法,其特征在于,所述SIMD控制寄存器作为标准存储器读写指令访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110075334.5A CN112764810B (zh) | 2021-01-20 | 2021-01-20 | 一种应用于处理器的寄存器控制simd指令扩展方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110075334.5A CN112764810B (zh) | 2021-01-20 | 2021-01-20 | 一种应用于处理器的寄存器控制simd指令扩展方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764810A true CN112764810A (zh) | 2021-05-07 |
CN112764810B CN112764810B (zh) | 2022-09-20 |
Family
ID=75703536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110075334.5A Active CN112764810B (zh) | 2021-01-20 | 2021-01-20 | 一种应用于处理器的寄存器控制simd指令扩展方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764810B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002108832A (ja) * | 2000-09-28 | 2002-04-12 | Ricoh Co Ltd | Simdプロセッサにおけるデータ設定装置 |
CN101539851A (zh) * | 2008-03-21 | 2009-09-23 | 富士通株式会社 | 算术运算装置和进行算术运算的方法 |
US20100042808A1 (en) * | 2008-08-15 | 2010-02-18 | Moyer William C | Provision of extended addressing modes in a single instruction multiple data (simd) data processor |
CN101876892A (zh) * | 2010-05-20 | 2010-11-03 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
CN107741861A (zh) * | 2011-12-23 | 2018-02-27 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN108920188A (zh) * | 2018-07-03 | 2018-11-30 | 中国人民解放军国防科技大学 | 一种扩展寄存器堆的方法及装置 |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
CN111459546A (zh) * | 2020-03-30 | 2020-07-28 | 芯来智融半导体科技(上海)有限公司 | 一种实现操作数位宽可变的装置及方法 |
-
2021
- 2021-01-20 CN CN202110075334.5A patent/CN112764810B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002108832A (ja) * | 2000-09-28 | 2002-04-12 | Ricoh Co Ltd | Simdプロセッサにおけるデータ設定装置 |
CN101539851A (zh) * | 2008-03-21 | 2009-09-23 | 富士通株式会社 | 算术运算装置和进行算术运算的方法 |
US20100042808A1 (en) * | 2008-08-15 | 2010-02-18 | Moyer William C | Provision of extended addressing modes in a single instruction multiple data (simd) data processor |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
CN101876892A (zh) * | 2010-05-20 | 2010-11-03 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
CN107741861A (zh) * | 2011-12-23 | 2018-02-27 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
CN108920188A (zh) * | 2018-07-03 | 2018-11-30 | 中国人民解放军国防科技大学 | 一种扩展寄存器堆的方法及装置 |
CN111459546A (zh) * | 2020-03-30 | 2020-07-28 | 芯来智融半导体科技(上海)有限公司 | 一种实现操作数位宽可变的装置及方法 |
Non-Patent Citations (2)
Title |
---|
ZHANG HONGSHENG, JIANG ZEKUN, LI YONG: "Design of a dual-issue RISC-V processor", 《2020 3RD INTERNATIONAL CONFERENCE ON COMPUTER INFORMATION SCIENCE AND ARTIFICIAL INTELLIGENCE》 * |
姜泽坤: "支持DSP指令扩展的RISC-V处理器设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112764810B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6539467B1 (en) | Microprocessor with non-aligned memory access | |
US8032735B2 (en) | Load/move duplicate instructions for a processor | |
KR101854520B1 (ko) | 타이트하게 커플링된 이종 컴퓨팅을 위한 하드웨어 프로세서스들 및 방법들 | |
KR101703743B1 (ko) | 가속된 레인 간 벡터 감축 명령어들 | |
US5922066A (en) | Multifunction data aligner in wide data width processor | |
US6052766A (en) | Pointer register indirectly addressing a second register in the processor core of a digital processor | |
CN109062608B (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
EP1102163A2 (en) | Microprocessor with improved instruction set architecture | |
US6671797B1 (en) | Microprocessor with expand instruction for forming a mask from one bit | |
CN115562729A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
JP6034352B2 (ja) | マルチコアプロセッサ、システムオンチップ、及び、携帯電話機 | |
US9921832B2 (en) | Instruction to reduce elements in a vector register with strided access pattern | |
KR20110055629A (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
EP1512100A2 (en) | A scalar/vector processor | |
US6453405B1 (en) | Microprocessor with non-aligned circular addressing | |
US5787025A (en) | Method and system for performing arithmetic operations with single or double precision | |
US20140095830A1 (en) | Instruction for shifting bits left with pulling ones into less significant bits | |
US6574724B1 (en) | Microprocessor with non-aligned scaled and unscaled addressing | |
CN109213525B (zh) | 具有快捷起始指令的流式传输引擎 | |
US20170161069A1 (en) | Microprocessor including permutation instructions | |
US20080288728A1 (en) | multicore wireless and media signal processor (msp) | |
US6948049B2 (en) | Data processing system and control method | |
US10069512B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
CN112764810B (zh) | 一种应用于处理器的寄存器控制simd指令扩展方法 | |
EP1102165A1 (en) | Microprocessor with execution packet spanning two or more fetch packets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |