CN117271437A - 一种处理器 - Google Patents
一种处理器 Download PDFInfo
- Publication number
- CN117271437A CN117271437A CN202311558772.2A CN202311558772A CN117271437A CN 117271437 A CN117271437 A CN 117271437A CN 202311558772 A CN202311558772 A CN 202311558772A CN 117271437 A CN117271437 A CN 117271437A
- Authority
- CN
- China
- Prior art keywords
- bits
- remaining number
- instruction
- processor
- system data
- 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
- 238000004364 calculation method Methods 0.000 claims description 16
- 230000000295 complement effect Effects 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000000151 deposition Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 3
- 230000009897 systematic effect Effects 0.000 claims 1
- 238000007792 addition Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 3
- 101000711744 Homo sapiens Non-secretory ribonuclease Proteins 0.000 description 2
- 101000667595 Homo sapiens Ribonuclease pancreatic Proteins 0.000 description 2
- 102100034217 Non-secretory ribonuclease Human genes 0.000 description 2
- 102100039832 Ribonuclease pancreatic Human genes 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开提供了一种处理器。该处理器包括:剩余数系统数据寄存器,被配置为存放按照剩余数系统格式表示的数;剩余数系统控制寄存器,耦合到剩余数系统数据寄存器,并且被配置为控制剩余数系统数据寄存器存放按照剩余数系统格式表示的数的存放方式;以及运算电路,耦合到剩余数系统数据寄存器和剩余数系统控制寄存器,并且被配置为基于剩余数系统运算指令,根据剩余数系统控制寄存器指定的存放方式,对存放于剩余数系统数据寄存器中的、按照剩余数系统格式表示的操作数执行运算。
Description
技术领域
本公开概括而言涉及计算设备的领域,更具体而言,涉及一种处理器。
背景技术
随着私密计算、加密和安全应用的快速发展,越来越广泛的使用诸如4096比特整数加法和乘法之类的大数计算。剩余数系统(Residue Number System,RNS)使用剩余数的集合来表示二进制数。通过经由模集中的每个模数将大数转换成一组小的剩余数,RNS尤其能够降低加法器和乘法器的进位传递链的长度。由于剩余数的无进位特性,可以并行地执行对一组剩余数的计算。因此,RNS在执行诸如加法、减法和乘法之类的大数计算方面比传统二进制数系统性能更加优越。与传统的数字表示方法相比,RNS提供了低时延、以及面积成本以及功耗的降低。在第五代精简指令集计算机(RISC-V)中,使用K扩展来增强加密应用的性能。K扩展包括标量、向量和熵源指令,然而并未触及大数计算。
发明内容
本公开的实施例提供了一种处理器。该处理器包括:剩余数系统数据寄存器,被配置为存放按照剩余数系统格式表示的数;剩余数系统控制寄存器,耦合到剩余数系统数据寄存器,并且被配置为控制剩余数系统数据寄存器存放按照剩余数系统格式表示的数的存放方式;以及运算电路,耦合到剩余数系统数据寄存器和剩余数系统控制寄存器,并且被配置为基于剩余数系统运算指令,根据剩余数系统控制寄存器指定的存放方式,对存放于剩余数系统数据寄存器中的、按照剩余数系统格式表示的操作数执行运算。
附图说明
将参考附图来描述根据本公开的各种示例,在附图中:
图1示出了自然数及其对应剩余数的一个示例。
图2示出了根据本公开实施例的处理器的示例框图。
图3示出了根据本公开实施例的RNS控制寄存器的具体结构的示例框图。
图4示出了根据本公开实施例的按照RNS控制寄存器的第二字节LMUL和第三字节SEW对RNS数据寄存器进行分组并划分元素的示意图。
图5示出了根据本公开实施例的第一组RNS运算指令。
图6示出了根据本公开实施例的第二组RNS运算指令。
图7示出了根据本公开实施例的第三组RNS运算指令。
图8示出了根据本公开实施例的第四组RNS运算指令。
图9示出了根据本公开各种实施例的处理器可以用在其中的示例计算设备的框图。
具体实施方式
将使用本领域技术人员常用的术语来描述说明性实施例的各个方面,以将本公开的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说显而易见的是,可以使用所描述的方面的部分来实施许多替代实施例。出于解释的目的,给出了具体的数字、材料、和配置,以便提供对说明性实施例的透彻理解。然而,对于本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下实施替代实施例。在其它实例中,为了避免模糊说明性实施例,可以省略或简化公知特征。
此外,以最有助于理解说明性实施例的方式,将各种操作依次描述为多个离散操作;然而,不应将描述顺序解释为暗示这些操作必须是顺序相关的。特别地,这些操作不需要按照呈现的顺序来执行。
本文中重复使用短语“在实施例中”、“在一个实施例中”、和“在一些实施例中”。这些短语通常不指代相同的实施例;然而,它们也可以指代相同的实施例。除非上下文另有规定,否则术语“包含”、“具有”、和“包括”是同义词。短语“A或B”和“A/B”的意思是“(A)、(B)、或(A和B)”。
随着私密计算、加密和安全应用的快速发展,越来越广泛的使用诸如4096比特整数加法和乘法之类的大数计算。目前使用被称为GNU MP Bignum库(GMP)的开源数学运算库来进行大数计算。但是,GMP 库是用标量C/C++来编写的,从而是低效的。
本公开提出了在现有的RISC-V指令集体系结构(ISA)中针对剩余数系统(RNS)进行扩展,以适用于大数计算,有助于为RISC-V的安全应用创建更好的生态系统。
本公开的实施例提供了一种处理器,该处理器包括用来支持剩余数系统(RNS)的RNS控制寄存器和RNS数据寄存器。另外,本公开的实施例还提供了用来使得RNS能够与计算机中现有的数的表示(例如,反码、补码等)兼容的指令,以及对以RNS格式表示的数进行运算的指令。
为了更好地说明本公开的实施例,图1示出了自然数及其对应剩余数的一个示例。在图1的示例中(2, 3, 5, 7)表示剩余数系统的初始化模集,也称为质数基。在其他示例中,剩余数系统的初始化模集可以包括不同的、更多的或更少的质数基,例如,(2, 5, 7)、(2, 3, 7, 11)、(2, 3, 5, 7, 11)等等,以表示更大或更小的自然数范围,本文对此不做限定。
图2示出了根据本公开实施例的处理器200的示例框图。如图2所示,根据本公开实施例的处理器200(例如,RISC处理器)包括RNS控制寄存器210以及耦合到该RNS控制寄存器210的多个RNS数据寄存器220。RNS数据寄存器220可被配置为存放按照RNS格式表示的数。RNS控制寄存器210可被配置为控制RNS数据寄存器220存放按照RNS格式表示的数的存放方式。
优选地,针对RISC-V规范,处理器200包括32个RNS数据寄存器220,例如,分别被表示为RNS_0、RNS_1、RNS_2、……、 RNS_31,并且RNS控制寄存器210是32比特寄存器。
图3示出了根据本公开实施例的RNS控制寄存器210的具体结构的示例框图。如图所示,RNS控制寄存器210包括四个字节,依次表示为VLEN、LMUL、SEW和SIGN 。
第一字节VLEN可以表明相关联的硬件的向量长度,这个字节是只读的,软件通过读取该字节来了解硬件的有关信息。例如,每个RNS数据寄存器220可以具有2^VLEN个比特。
RNS数据寄存器220可被分组以扩展按照RNS格式表示的数中的数字的数量,从而扩展按照RNS格式表示的数的范围。第二字节LMUL可以表明要将多少个RNS数据寄存器分成一组来存放按照RNS格式表示的数。例如,2^LMUL个RNS数据寄存器220可被分成一个RNS数据寄存器组,每个RNS数据寄存器组用来存放一个按照RNS格式表示的数。例如,当LMUL=2时,4个RNS数据寄存器被分成一个RNS数据寄存器组,与LMUL=0(即不对RNS数据寄存器220进行分组),按照RNS格式表示的数的范围翻了两番。具体地,在RISC-V处理器的实施例中,LMUL取值为0、1、2、3之一,以确保所分成的RNS数据寄存器组的数量能够大于或等于3。每个RNS数据寄存器组可以由,例如,该组中最小的组成员来索引。例如,当LMUL=2时,包括RNS数据寄存器RNS_0、RNS_1、RNS_2和RNS_3的RNS数据寄存器组由RNS_0来索引。
每个RNS数据寄存器组被划分为多个元素,每个元素用来存放一个按照RNS格式表示的数中的一个数字。第三字节SEW表明用于每个RNS数据寄存器组划分为多个元素的选定元素宽度。例如,每个元素可以具有2^SEW个比特,从而每个RNS数据寄存器组中的元素的数量为2^(VLEN+LMUL-SEW)。例如,在图1的示例中,按照RNS格式表示的数中的最大的数字为6,其二进制表示为110,占用三个比特,如此一来,可以通过软件将SEW的值设置为2,即每个元素具有4个比特,来用于存放,按照RNS格式表示的数中的一个数字。
图4示出了根据本公开实施例的按照第二字节LMUL和第三字节SEW对RNS数据寄存器进行分组并划分元素的示意图。在图4中,2^LMUL个RNS数据寄存器220被分成一个RNS数据寄存器组,假设该RNS数据寄存器组中最小的组成员为RNS_n(n等于2^LMUL的整数倍),那么该RNS数据寄存器组包括RNS_n、RNS_(n+1)、……、RNS_(n+2^LMUL-2)、RNS_(n+2^LMUL-1),每个RNS数据寄存器的宽度为2^VLEN比特。然后,该RNS数据寄存器组被划分为2^(VLEN+LMUL-SEW)个元素,每个元素的宽度为2^SEW比特,每个元素用来存放一个按照RNS格式表示的数中的一个数字。具体地,针对该RNS数据寄存器组中的一个组成员,例如,RNS数据寄存器RNS_n,被划分为2^( LMUL-SEW)个元素,被标记为Element_0、Element_1、Element_2、……、Element_[2^( LMUL-SEW)- 1]。
第四字节SIGN表明要进行的RNS计算针对无符号模式还是有符号模式。例如,当SIGN的最低有效位被设置为0时,要进行的RNS计算针对无符号模式(即,每个剩余数对应于非负整数),并且当SIGN的的最低有效位被设置为1时,要进行的RNS计算针对有符号模式(即,每个剩余数对应于负整数、零和正整数),或反之亦然。
返回图2,处理器200还包括耦合到RNS数据寄存器220和RNS控制寄存器210的运算电路230(例如,算术逻辑单元(ALU))。该运算电路230可被配置为基于RNS运算指令(例如,从内存中读取而来),根据RNS控制寄存器210指定的存放方式,对存放于RNS数据寄存器220中的、按照RNS格式表示的操作数执行运算。运算电路230执行的运算例如包括诸如加密/解密计算之类的大数计算。
下面介绍RNS运算指令的几个示例。
图5示出了根据本公开实施例的第一组RNS运算指令。第一组RNS运算指令包括:加载指令(LOAD),用于将一系列二进制原始比特从存储器(如,内存)复制到RNS数据寄存器中;存储指令(STORE),用于将一系列二进制原始比特RNS数据寄存器复制到存储器中;以及移动指令(MOVE),用于将内容从RNS数据寄存器中的一个RNS数据寄存器复制到另一个RNS数据寄存器。
加载指令(LOAD)还用于加载RNS的初始化模集(例如,在图1的示例中,初始化模集为(2, 3, 5, 7))。例如,在开始任何转换或者计算之前,通过加载指令(LOAD)向RNS 数据寄存器(例如,RNS_0)加载初始化模集。
在图5的实施例中,第一组RNS运算指令具有32个比特,32个比特中的第1到7比特是表明RNS的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符(RNSOPCODE)。RNS OPCODE的具体值可以由RISC-V规范委员会来定义。
此外,加载指令、存储指令和移动指令的32个比特中的第13到15比特表明具体的运算类型(例如,以“000”表示LOAD、以“001”表示STORE、以“100”表示MOVE),第8到12比特和第16到20比特分别表明运算涉及的存储器地址(例如,以“RS1”表示存储器基地址)或RNS数据寄存器地址(例如,以“RNS”表示RNS数据寄存器地址),并且第21到32比特被预留。
图6示出了根据本公开实施例的第二组RNS运算指令。第二组RNS运算指令包括:第一转换指令(CVTRNS),用于将整数从补码格式转换到RNS格式;和第二转换指令(CVT2CC),用于将整数从RNS格式转换到补码格式。
在图6的实施例中,第二组RNS运算指令具有32个比特,32个比特中的第1到7比特是表明RNS的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符(RNSOPCODE)。RNS OPCODE的具体值可以由RISC-V规范委员会来定义。
此外,第一转换指令和所述第二转换指令的32个比特中的第13到15比特表明具体的运算类型(例如,以“010”表示CVTRNS、以“011”表示CVT2CC),第8到12比特表明运算涉及的RNS数据寄存器地址(例如,以“RNS”表示RNS数据寄存器地址),第16到20比特表明以补码格式存储的整数的存储器基地址(例如,以“RS1”表示存储器基地址),第21到25比特表明以补码格式存储的整数的比特长度(例如,以“RS2”表示比特长度),并且第26到32比特被预留。
整数通常被以补码格式存储在存储器中,因此通过以“RS1”和“RS2”索引的通用RISC-V寄存器来表明其补码的基地址和比特长度。
在无符号模式中,整数总是正的,而在有符号模式中,整数可以是负的。在有符号模式中,RNS数据寄存器RNS_2^LMUL可以被具体初始化并用作剩余数范围的“分割点”。以图1所示的自然数及其对应剩余数的示例为例来说明“分割点”的含义,质数基为(2, 3, 5,7)的剩余数系统,可以表示范围为0~209的自然数,可以表示 -1~208的整数,也可以表示 -104~105的整数,等等。这样的具体范围可以根据对应关系来确定。比如,可以规定一个“分割点(division point)”,这个点指的是一个正数(标记为D)。当剩余数系统对应的自然数(标记为N)比D大的时候,表示的是一个负数 (D-N)。例如,对于图1的质数基为(2, 3, 5,7)的剩余数系统,当D=15的时候,该系统可以表示-194~15范围内的整数。
图7示出了根据本公开实施例的第三组RNS运算指令。第二组RNS运算指令包括:加法指令(ADD),用于对指定的两个RNS数据寄存器中存放的按照RNS格式表示的数执行加法运算;减法指令(SUB),用于对指定的两个RNS数据寄存器中存放的按照RNS格式表示的数执行减法运算;以及乘法指令(MUL),用于对指定的两个RNS数据寄存器中存放的按照RNS格式表示的数执行乘法运算。
在图7的实施例中,第三组RNS运算指令具有32个比特,32个比特中的第1到7比特是表明RNS的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符(RNSOPCODE)。RNS OPCODE的具体值可以由RISC-V规范委员会来定义。
此外,加法指令、减法指令和乘法指令的32个比特中的第26到32比特表明具体的运算类型(例如,以“000000”表示ADD、以“000001”表示SUB、以“000010”表示MUL),第8到12比特表明用于存放运算的结果的RNS数据寄存器地址(例如,以“RNSd”表示),第16到20比特和第21到25比特分别表明用于存放运算的操作对象的RNS数据寄存器地址(例如,分别以“RNS1”和“RNS2”表示),并且第13到15比特被预留。
图8示出了根据本公开实施例的第四组RNS运算指令。第四组RNS运算指令包括:第一比较指令(CMPGT),用于比较指定的第一RNS数据寄存器中存放的按照RNS格式表示的数是否大于指定的第二RNS数据寄存器中存放的按照RNS格式表示的数;第二比较指令(CMPEQ),用于比较指定的第一RNS数据寄存器中存放的按照RNS格式表示的数是否等于指定的第二RNS数据寄存器中存放的按照RNS格式表示的数;以及第三比较指令(CMPLT),用于比较指定的第一RNS数据寄存器中存放的按照RNS格式表示的数是否小于指定的第二RNS数据寄存器中存放的按照RNS格式表示的数。
在图8的实施例中,第四组RNS运算指令具有32个比特,32个比特中的第1到7比特是表明RNS的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符(RNSOPCODE)。RNS OPCODE的具体值可以由RISC-V规范委员会来定义。
此外,第一比较指令、第二比较指令和第三比较指令的32个比特中的第26到32比特表明具体的运算类型(例如,以“100000”表示CMPGT、以“100001”表示CMPEQ、以“100010”表示CMPLT),第8到12比特表明比较的结果(例如,以“RSd”表示,比如RSd=1表明设定的比较成立),第16到20比特和第21到25比特分别表明用于存放比较运算的操作对象的RNS数据寄存器地址(例如,分别以“RNS1”和“RNS2”表示),并且第13到15比特被预留。
根据本公开实施例的处理器在RISC-V ISA的基础上通过RNS控制寄存器和RNS控制寄存器来支持RNS运算并且定义了专门适用于RNS运算的指令,显著提高了大数计算的效率,从而有助于为RISC-V的安全应用创建更好的生态系统。
下面以全同态加密(FHE)的中大数模乘为例来说明本公开的有益技术效果。
大数模乘是FHE中最昂贵/关键的功能单元之一。它占用超过20%的计算时间。下文对在具有或不具有本公开所提出的针对RNS的ISA扩展的情况下用于完成大数模乘的指令进行比较。
假设使用多项式次数为16384的Brakerski、Gentry和Vaikuntanathan (BGV)方案,大模数Q 的比特长度应当小于438比特。假设Q 是8的素模数(q0 - q7)的乘积。那么,每个438比特的大数可被表示为8个剩余的55比特的数。FHE 模乘包括16384次大数模乘:假设使用多项式次数为16384的Brakerski、Gentry和Vaikuntanathan (BGV)方案,大模数Q 的比特长度应当小于438比特。假设Q 是8的素模数(q0 - q7)的乘积。那么,每个438比特的大数可被表示为8个剩余的55比特的数。FHE 模乘包括16384次大数模乘:,i为自然数。
在使用本文提出的针对RNS的RISC-V ISA扩展的情况下,需要执行以下指令来完成FHE 模乘运算:
LOAD<q_0, q_1, ... , q_7>RNS_0
For i = 0 ~ 16383
CVTRNS&a_i 512 RNS_1
CVTRNS&b_i 512 RNS_2
MUL RNS_1 RNS_2 RNS_3
CVT2CC RNS_3&c_i。
而在不使用本文提出的针对RNS的RISC-V ISA扩展的情况下,需要执行16384次大数模乘。根据蒙哥马利(Montgomery)算法,一次大数模乘包含9次大数乘法(MUL)、4次大数加法(ADD)、4次按比特移位(BIT_SHIFT)和4次按比特与(BIT_AND)。
对于64比特系统,512比特乘法要求至少64个乘法(MUL)指令和49个加法(ADD)指令,512比特乘法要求至少8个加法(ADD)指令(在不考虑溢出的情况下)。基于上述分析,如以下代码所示,一次大数模乘需要576次乘法(MUL)指令、288次加法(ADD)指令、4次按比特移位(BIT_SHIFT)指令和4次按比特与(BIT_AND)指令。
根据以上分析比较,可以得出,在使用本文提出的针对RNS的RISC-V ISA扩展的情况下,FHE密钥功能单元(模乘)的指令复杂度会降低2~3个数量级。
图9示出了根据本公开各种实施例的处理器可以用在其中的示例计算设备900的框图。具体地,图9所示的计算设备900包括一个或多个处理器(或处理器核)910(例如,包括本申请参照图2所描述的处理器200)、一个或多个存储器/存储设备920、和一个或多个通信资源930,其中,这些处理器、存储器/存储设备、和通信资源中的每一者可以经由总线940或其他接口电路通信地耦合。对于利用节点虚拟化(例如,网络功能虚拟化(NFV))的实施例,可以执行管理程序902以提供一个或多个网络切片/子切片的执行环境从而利用计算设备900的硬件资源。
处理器910可以包括例如,处理器912和处理器914。处理器910可以是例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、诸如基带处理器的数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、射频集成电路(RFIC)、另一处理器(包括本文讨论的那些处理器)、或其任何合适的组合。
存储器/存储设备920可以包括主存储器、磁盘存储设备、或其任何适当组合。存储器/存储设备920可以包括但不限于任何类型的易失性、非易失性、或半易失性存储器,例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、固态存储器等。
通信资源930可包括互连或网络接口控制器、组件、或其他合适的设备,以经由网络908与一个或多个外围设备904或一个或多个数据库906或其他网络元件通信。例如,通信资源930可以包括有线通信组件(例如,用于经由USB、以太网等进行耦合)、蜂窝通信组件、近场通信(NFC)组件、Bluetooth®(或Bluetooth®低能量)组件、Wi-Fi®组件、和其他通信组件。
指令950可以包括软件、程序、应用程序、小程序、应用程序、或其他可执行代码,用于使处理器910中的至少任意一个处理器执行各种处理过程。指令950可例如包括本申请结合图5到图8所描述的RNS运算指令,比如,LOAD、STORE、MOVE、CVTRNS、CVT2CC、ADD、SUB、MUL、CMPGT、CMPEQ、CMPLT等。指令950可以全部或部分驻留在处理器910(例如,在处理器的高速缓存中)、存储器/存储设备920、或其任何适当组合中的至少一者内。此外,指令950的任意部分可以从外围设备904或数据库906的任意组合传送到计算设备900的硬件资源。因此,处理器910的存储器、存储器/存储设备920、外围设备904、和数据库906是计算机可读和机器可读介质的示例。
以下提供了根据本申请实施例的附加示例和说明。
示例1. 一种处理器,包括:剩余数系统数据寄存器,被配置为存放按照剩余数系统格式表示的数;剩余数系统控制寄存器,耦合到所述剩余数系统数据寄存器,并且被配置为控制所述剩余数系统数据寄存器存放按照剩余数系统格式表示的数的存放方式;以及运算电路,耦合到所述剩余数系统数据寄存器和所述剩余数系统控制寄存器,并且被配置为基于剩余数系统运算指令,根据所述剩余数系统控制寄存器指定的所述存放方式,对存放于所述剩余数系统数据寄存器中的、按照剩余数系统格式表示的操作数执行运算。
示例2. 如示例1所述的处理器,其中,所述剩余数系统数据寄存器包括32个剩余数系统数据寄存器。
示例3. 如示例2所述的处理器,其中,所述剩余数系统控制寄存器包括四个字节,其中,第一字节VLEN表明相关联的硬件的向量长度,第二字节LMUL表明要将多少个所述剩余数系统数据寄存器分成一个剩余数系统数据寄存器组来存放所述按照剩余数系统格式表示的数,第三字节SEW表明用于将每个剩余数系统数据寄存器组划分为多个元素的选定元素宽度,并且第四字节SIGN表明要进行的剩余数系统计算针对无符号模式还是有符号模式。
示例4. 如示例3所述的处理器,其中,每个所述剩余数系统数据寄存器具有2^VLEN个比特。
示例5. 如示例3所述的处理器,其中,2^LMUL个所述剩余数系统数据寄存器被分成一个剩余数系统数据寄存器组,每个剩余数系统数据寄存器组用来存放一个所述按照剩余数系统格式表示的数。
示例6. 如示例5所述的处理器,其中,每个剩余数系统数据寄存器组由其中最小的组成员来索引。
示例7. 如示例5所述的处理器,其中,将每个剩余数系统数据寄存器组划分为的多个元素中的每个元素具有2^SEW个比特,用来存放一个所述按照剩余数系统格式表示的数中的一个数字。
示例8. 如示例7所述的处理器,其中,每个剩余数系统数据寄存器组被划分为2^(VLEN+LMUL-SEW)个元素。
示例9. 如示例3所述的处理器,其中,当所述第四字节SIGN的最低有效位被设置为0时,所述要进行的剩余数系统计算针对所述无符号模式,并且当所述第四字节SIGN的的最低有效位被设置为1时,所述要进行的剩余数系统计算针对所述有符号模式。
示例10. 如示例1所述的处理器,其中,所述运算电路执行的运算包括大数计算。
示例11. 如示例1所述的处理器,其中,所述剩余数系统运算指令包括:加载指令,用于将一系列二进制原始比特从存储器复制到所述剩余数系统数据寄存器中;存储指令,用于将一系列二进制原始比特从所述剩余数系统数据寄存器复制到存储器中;以及移动指令,用于将内容从所述剩余数系统数据寄存器中的一个剩余数系统数据寄存器复制到另一个剩余数系统数据寄存器。
示例12. 如示例11所述的处理器,其中,所述加载指令还用于加载所剩余数系统的初始化模集。
示例13. 如示例11所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且所述加载指令、所述存储指令和所述移动指令的32个比特中的第13到15比特表明具体的运算类型,第8到12比特和第16到20比特分别表明运算涉及的存储器地址或剩余数系统数据寄存器地址,并且第21到32比特被预留。
示例14. 如示例1所述的处理器,其中,所述基于剩余数系统运算指令包括:第一转换指令,用于将整数从补码格式转换到所述剩余数系统格式;和第二转换指令,用于将整数从所述剩余数系统格式转换到所述补码格式。
示例15. 如示例14所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且所述第一转换指令和所述第二转换指令的32个比特中的第13到15比特表明具体的运算类型,第8到12比特表明运算涉及的剩余数系统数据寄存器地址,第16到20比特表明以补码格式存储的整数的存储器基地址,第21到25比特表明以补码格式存储的整数的比特长度,并且第26到32比特被预留。
示例16. 如示例1所述的处理器,其中,所述基于剩余数系统运算指令包括:加法指令,用于对指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数执行加法运算;减法指令,用于对指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数执行减法运算;以及乘法指令,用于对指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数执行乘法运算。
示例17. 如示例16所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且所述加法指令、所述减法指令和所述乘法指令的32个比特中的第26到32比特表明具体的运算类型,第8到12比特表明用于存放运算的结果的剩余数系统数据寄存器地址,第16到20比特和第21到25比特分别表明用于存放运算的操作对象的剩余数系统数据寄存器地址,并且第13到15比特被预留。
示例18. 如示例1所述的处理器,其中,所述基于剩余数系统运算指令包括比较指令,用于比较指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数的大小。
示例19. 如示例18所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且所述比较指令的第26到32比特表明具体的运算类型,第8到12比特表明比较的结果,第16到20比特和第21到25比特分别表明用于存放比较运算的操作对象的剩余数系统数据寄存器地址,并且第13到15比特被预留。
示例20. 一种计算设备,包括存储器以及如示例1到19中任一项所述的处理器。
以上说明书和附图应当被认为是示例性的,而不是限制性的,显然可能对其作出各种修改和变更,而不脱离如权利要求中阐述的本公开的更宽精神和范围。
Claims (20)
1.一种处理器,包括:
剩余数系统数据寄存器,被配置为存放按照剩余数系统格式表示的数;
剩余数系统控制寄存器,耦合到所述剩余数系统数据寄存器,并且被配置为控制所述剩余数系统数据寄存器存放按照剩余数系统格式表示的数的存放方式;以及
运算电路,耦合到所述剩余数系统数据寄存器和所述剩余数系统控制寄存器,并且被配置为基于剩余数系统运算指令,根据所述剩余数系统控制寄存器指定的所述存放方式,对存放于所述剩余数系统数据寄存器中的、按照剩余数系统格式表示的操作数执行运算。
2.如权利要求1所述的处理器,其中,所述剩余数系统数据寄存器包括32个剩余数系统数据寄存器。
3.如权利要求2所述的处理器,其中,所述剩余数系统控制寄存器包括四个字节,其中,
第一字节VLEN表明相关联的硬件的向量长度,
第二字节LMUL表明要将多少个所述剩余数系统数据寄存器分成一个剩余数系统数据寄存器组来存放所述按照剩余数系统格式表示的数,
第三字节SEW表明用于将每个剩余数系统数据寄存器组划分为多个元素的选定元素宽度,并且
第四字节SIGN表明要进行的剩余数系统计算针对无符号模式还是有符号模式。
4.如权利要求3所述的处理器,其中,每个所述剩余数系统数据寄存器具有2^VLEN个比特。
5.如权利要求3所述的处理器,其中,2^LMUL个所述剩余数系统数据寄存器被分成一个剩余数系统数据寄存器组,每个剩余数系统数据寄存器组用来存放一个所述按照剩余数系统格式表示的数。
6.如权利要求5所述的处理器,其中,每个剩余数系统数据寄存器组由其中最小的组成员来索引。
7.如权利要求5所述的处理器,其中,将每个剩余数系统数据寄存器组划分为的多个元素中的每个元素具有2^SEW个比特,用来存放一个所述按照剩余数系统格式表示的数中的一个数字。
8.如权利要求7所述的处理器,其中,每个剩余数系统数据寄存器组被划分为2^(VLEN+LMUL-SEW)个元素。
9.如权利要求3所述的处理器,其中,当所述第四字节SIGN的最低有效位被设置为0时,所述要进行的剩余数系统计算针对所述无符号模式,并且当所述第四字节SIGN的的最低有效位被设置为1时,所述要进行的剩余数系统计算针对所述有符号模式。
10.如权利要求1所述的处理器,其中,所述运算电路执行的运算包括大数计算。
11.如权利要求1所述的处理器,其中,所述剩余数系统运算指令包括:
加载指令,用于将一系列二进制原始比特从存储器复制到所述剩余数系统数据寄存器中;
存储指令,用于将一系列二进制原始比特从所述剩余数系统数据寄存器复制到存储器中;以及
移动指令,用于将内容从所述剩余数系统数据寄存器中的一个剩余数系统数据寄存器复制到另一个剩余数系统数据寄存器。
12. 如权利要求11所述的处理器,其中,所述加载指令还用于加载所剩余数系统的初始化模集。
13.如权利要求11所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且
所述加载指令、所述存储指令和所述移动指令的32个比特中的第13到15比特表明具体的运算类型,第8到12比特和第16到20比特分别表明运算涉及的存储器地址或剩余数系统数据寄存器地址,并且第21到32比特被预留。
14. 如权利要求1所述的处理器,其中,所述基于剩余数系统运算指令包括:
第一转换指令,用于将整数从补码格式转换到所述剩余数系统格式;和
第二转换指令,用于将整数从所述剩余数系统格式转换到所述补码格式。
15.如权利要求14所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且
所述第一转换指令和所述第二转换指令的32个比特中的第13到15比特表明具体的运算类型,第8到12比特表明运算涉及的剩余数系统数据寄存器地址,第16到20比特表明以补码格式存储的整数的存储器基地址,第21到25比特表明以补码格式存储的整数的比特长度,并且第26到32比特被预留。
16.如权利要求1所述的处理器,其中,所述基于剩余数系统运算指令包括:
加法指令,用于对指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数执行加法运算;
减法指令,用于对指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数执行减法运算;以及
乘法指令,用于对指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数执行乘法运算。
17.如权利要求16所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且
所述加法指令、所述减法指令和所述乘法指令的32个比特中的第26到32比特表明具体的运算类型,第8到12比特表明用于存放运算的结果的剩余数系统数据寄存器地址,第16到20比特和第21到25比特分别表明用于存放运算的操作对象的剩余数系统数据寄存器地址,并且第13到15比特被预留。
18. 如权利要求1所述的处理器,其中,所述基于剩余数系统运算指令包括比较指令,用于比较指定的两个剩余数系统数据寄存器中存放的按照剩余数系统格式表示的数的大小。
19.如权利要求18所述的处理器,其中,所述基于剩余数系统运算指令具有32个比特,所述32个比特中的第1到7比特是表明剩余数系统的第五代精简指令集计算机(RISC-V)指令集体系结构(ISA)扩展的标识符,并且
所述比较指令的第26到32比特表明具体的运算类型,第8到12比特表明比较的结果,第16到20比特和第21到25比特分别表明用于存放比较运算的操作对象的剩余数系统数据寄存器地址,并且第13到15比特被预留。
20.一种计算设备,包括存储器以及如权利要求1到19中任一项所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311558772.2A CN117271437B (zh) | 2023-11-21 | 2023-11-21 | 一种处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311558772.2A CN117271437B (zh) | 2023-11-21 | 2023-11-21 | 一种处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117271437A true CN117271437A (zh) | 2023-12-22 |
CN117271437B CN117271437B (zh) | 2024-02-23 |
Family
ID=89216453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311558772.2A Active CN117271437B (zh) | 2023-11-21 | 2023-11-21 | 一种处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117271437B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125641A1 (en) * | 2003-12-09 | 2005-06-09 | Arm Limited | Data processing apparatus and method for moving data between registers and memory |
CN101158893A (zh) * | 2006-10-03 | 2008-04-09 | Arm有限公司 | 数据处理系统中的寄存器重命名 |
CN102937889A (zh) * | 2011-04-07 | 2013-02-20 | 威盛电子股份有限公司 | 控制寄存器对应于异质指令集架构处理器 |
US20130311532A1 (en) * | 2012-05-19 | 2013-11-21 | Eric B. Olsen | Residue number arithmetic logic unit |
US20150106414A1 (en) * | 2012-05-19 | 2015-04-16 | Eric B. Olsen | System and method for improved fractional binary to fractional residue converter and multipler |
CN105376581A (zh) * | 2015-11-17 | 2016-03-02 | 复旦大学 | 一种适用于hevc标准的基于指针的两级dct系数存储方法 |
CN116204232A (zh) * | 2022-12-30 | 2023-06-02 | 上海芯联芯智能科技有限公司 | 一种数据操作位宽的扩展方法及装置 |
-
2023
- 2023-11-21 CN CN202311558772.2A patent/CN117271437B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125641A1 (en) * | 2003-12-09 | 2005-06-09 | Arm Limited | Data processing apparatus and method for moving data between registers and memory |
CN101158893A (zh) * | 2006-10-03 | 2008-04-09 | Arm有限公司 | 数据处理系统中的寄存器重命名 |
CN102937889A (zh) * | 2011-04-07 | 2013-02-20 | 威盛电子股份有限公司 | 控制寄存器对应于异质指令集架构处理器 |
US20130311532A1 (en) * | 2012-05-19 | 2013-11-21 | Eric B. Olsen | Residue number arithmetic logic unit |
US20150106414A1 (en) * | 2012-05-19 | 2015-04-16 | Eric B. Olsen | System and method for improved fractional binary to fractional residue converter and multipler |
CN105376581A (zh) * | 2015-11-17 | 2016-03-02 | 复旦大学 | 一种适用于hevc标准的基于指针的两级dct系数存储方法 |
CN116204232A (zh) * | 2022-12-30 | 2023-06-02 | 上海芯联芯智能科技有限公司 | 一种数据操作位宽的扩展方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117271437B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2914605T3 (es) | Un procesador informático para cálculos de precisión superior que utiliza una descomposición de operaciones de precisión mixta | |
CN113762490B (zh) | 使用列折叠和挤压的稀疏矩阵的矩阵乘法加速 | |
EP3602278B1 (en) | Systems, methods, and apparatuses for tile matrix multiplication and accumulation | |
CN112069459B (zh) | 用于稀疏-密集矩阵乘法的加速器 | |
CN111630502B (zh) | 用于神经网络处理器的统一存储器组织 | |
CN109791488B (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
RU2637463C2 (ru) | Команда и логика для обеспечения функциональных возможностей цикла защищенного хеширования с шифром | |
CN106575215B (zh) | 处理指令的系统、设备、方法、处理器、介质和电子设备 | |
CN112527396B (zh) | 用于执行指令以转换成16位浮点格式的系统和方法 | |
CN109716290B (zh) | 用于经融合的乘加的系统、装置和方法 | |
CN107924308B (zh) | 数据元素比较处理器、方法、系统和指令 | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
US9760371B2 (en) | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions | |
CN104025502A (zh) | 用于处理blake安全散列算法的指令处理器、方法以及系统 | |
CN108415882B (zh) | 利用操作数基础系统转换和再转换的向量乘法 | |
CN115686633A (zh) | 用于实现链式区块操作的系统和方法 | |
CN104254833A (zh) | 基于向量和标量的模取幂 | |
US11222127B2 (en) | Processor hardware and instructions for SHA3 cryptographic operations | |
EP3623940A2 (en) | Systems and methods for performing horizontal tile operations | |
CN111611202A (zh) | 脉动阵列加速器系统和方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
CN116860334A (zh) | 用于计算两个区块操作数中的半字节的数量积的系统和方法 | |
EP3238091B1 (en) | Fast vector dynamic memory conflict detection | |
US11061675B2 (en) | Vector cross-compare count and sequence instructions | |
US10210137B2 (en) | Binary multiplier for binary vector factorization |
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 |