CN112560086A - 一种用于密码协处理器的配置方法、装置、cpu及电子设备 - Google Patents

一种用于密码协处理器的配置方法、装置、cpu及电子设备 Download PDF

Info

Publication number
CN112560086A
CN112560086A CN202011437344.0A CN202011437344A CN112560086A CN 112560086 A CN112560086 A CN 112560086A CN 202011437344 A CN202011437344 A CN 202011437344A CN 112560086 A CN112560086 A CN 112560086A
Authority
CN
China
Prior art keywords
physical
physical block
scatter
merged
linked list
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
Application number
CN202011437344.0A
Other languages
English (en)
Other versions
CN112560086B (zh
Inventor
李亚斌
顾海华
应志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011437344.0A priority Critical patent/CN112560086B/zh
Publication of CN112560086A publication Critical patent/CN112560086A/zh
Application granted granted Critical
Publication of CN112560086B publication Critical patent/CN112560086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种用于密码协处理器的配置方法、装置、CPU及电子设备,其中方法包括:获取第一聚散链表,所述第一聚散链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到;申请第二聚散链表,所述第二聚散链表具有多个用于填充物理块的空白的条目;将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;将所述合并物理块按序填充到第二聚散链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。本申请实施例可减少scatterlist链表中的物理块数量,减少后续CCP driver解析处理scatterlist链表需要的次数,提升CCP的运算效率。

Description

一种用于密码协处理器的配置方法、装置、CPU及电子设备
技术领域
本申请实施例涉及密码技术领域,具体涉及一种用于密码协处理器的配置方法、装置、CPU及电子设备。
背景技术
随着数据安全和隐私保护需求的不断增加,密码算法得到了越来越广泛的应用;为减轻CPU(Central Processing Unit,中央处理器)的运算负担、提升密码运算效率,计算机体系中可设置独立于CPU的CCP(Cryptographic Co-Processor,密码协处理器)来使用密码算法,即密码协处理器可利用密码算法实现运算功能,以将源数据转换为目标数据,例如将明文转换为密文等。
为在用户层实现调用密码协处理器,CPU的内核(kernel)需要在内核驱动(kerneldirver)中加入对密码协处理器的支持,在此基础上,由于源数据在用户层分配的是连续的虚拟地址,而物理内存是以物理页(page)为单位对应虚拟地址,因此在用户层调用密码协处理器时,内核需要对用户层传递的源数据的虚拟地址进行处理(即将源数据的虚拟地址,解析为物理地址相应的物理页,并对物理页进行组织),从而在进行虚拟地址处理后,密码协处理器再利用密码算法处理物理页,来实现密码协处理器的运算功能。
然而,目前的虚拟地址处理方式,并不利于密码协处理器提升运算效率,因此如何提供改进的用于密码协处理器的配置方案,以至少在处理虚拟地址时,为提升密码协处理器的运算效率提供基础,成为了本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本申请实施例提供一种用于密码协处理器的配置方法、装置、CPU及电子设备,以至少在处理虚拟地址时,为提升密码协处理器的运算效率提供基础。
为实现上述目的,本申请实施例提供如下技术方案:
一种用于密码协处理器的配置方法,包括:
获取第一聚散链表,所述第一聚散链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到;
申请第二聚散链表,所述第二聚散链表具有多个用于填充物理块的空白的条目;
将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;
将所述合并物理块按序填充到第二聚散链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。
本申请实施例还提供一种用于密码协处理器的配置装置,包括:
第一链表获取模块,用于获取第一聚散链表,所述第一聚散链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到;
第二链表申请模块,用于申请第二聚散链表,所述第二聚散链表具有多个用于填充物理块的空白的条目;
合并模块,用于将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;
填充模块,用于将所述合并物理块按序填充到第二聚散链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。
本申请实施例还提供一种CPU,所述CPU具有内核,所述内核被配置为执行如上述所述的用于密码协处理器的配置方法。
本申请实施例还提供一种电子设备,其特征在于,包括如上述所述的CPU。
本申请实施例提供的用于密码协处理器的配置方法,在基于源数据的虚拟地址解析得到物理页,并以一个物理块对应一个物理页的方式组织物理页,得到第一scatterlist(聚散)链表后,为对第一scatterlist链表中的物理块数量进行调整,本申请实施例可申请新的第二scatterlist链表,且所述第二scatterlist链表具有多个用于填充物理块的空白的条目;从而,本申请实施例可将在第一scatterlist链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;进而,将所述合并物理块按序填充到第二scatterlist链表中空白的条目,且一个空白的条目填充一个所述合并物理块,以使得第二scatterlist链表中的一个条目,可填充第一scatterlist链表中所述多个连续物理块合并后的合并物理块,使得第二scatterlist链表中的物理块的数量可小于第一scatterlist链表中的物理块,达到减少scatterlist链表中的物理块数量的目的。由于scatterlist链表中的物理块数量减少,因此后续CCP driver解析处理scatterlist链表需要的次数可相应减少,可为后续提升CCP的运算效率提供基础。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为加密框架的软件架构图;
图2为页表示例结构图;
图3为scatterlist链表的示例结构图;
图4为本申请实施例提供的用于密码协处理器的配置方法的流程图;
图5为合并物理块的示例图;
图6为本申请实施例提供的合并物理块的方法流程图;
图7为第二scatterlist链表的示例图;
图8为VQ的示例图;
图9为scatterlist链表的处理过程图;
图10为本申请实施例提供的scatterlist链表的处理示例图;
图11为本申请实施例提供的用于密码协处理器的配置方法的另一流程图;
图12为本申请实施例提供的用于密码协处理器的配置装置的框图;
图13为本申请实施例提供的用于密码协处理器的配置装置的另一框图;
图14为本申请实施例提供的用于密码协处理器的配置装置的再一框图;
图15为本申请实施例提供的用于密码协处理器的配置装置的又一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
密码协处理器旨在提供硬件加速,以减小操作系统与安全平台所需的各种功能相关的计算负担,其中密码协处理器使用的密码算法并不局限,例如SM2、SM3、SM4等密码算法,密码协处理器均可使用。
由于密码协处理器独立于CPU,因此为在用户层实现调用密码协处理器,CPU的内核需要先在内核驱动(kernel dirver)中加入对密码协处理器的支持;在当前的内核(kernel)中,已经具有较为成熟的加密框架来支持包括密码协处理器在内的硬件,原理如下所示:
在kernel里,一般在crypto(加密)层定义软件算法,在CCP driver(CPP驱动)定义硬件算法,通过将算法的唯一算法名称注册到kernel加密框架里,以实现在kernel加密框架注册算法;从而,用户层调用通用的API(Application Programming Interface,应用程序接口)函数,并进行socket(套接字)系统调用,将希望算法的算法名称传到kernel里,以到kernel的加密框架里寻找用户层传递的算法名称是否注册;如果用户层传递的算法名称已注册,则可在用户层和kernel层之间建立链接,实现在用户层调用对应算法的基础。
具体的,结合图1所示加密框架的软件架构,kernel加密框架的软件架构主要分为用户层、kernel层、硬件层;在此加密框架的软件架构下,若需在kernel的CCP driver里加入对某一密码协处理器(CCP)的支持,即若需根据CCP的硬件协议要求和kernel加密框架的函数接口要求,在CCP driver里加入对某一CCP的支持,则在启动阶段,可按照PCI(Peripheral Component Interconnect,外设部件互连标准)设备的启动流程,调用CCP的相关driver函数,完成对CCP的初始化,并把CPP相关算法的唯一算法名称(如sm2-CCP、sm3-CCP等),注册到kernel加密框架结构里;
从而在用户层,进程可调用通用的API函数(如图1所示用户空间加密API,其英文表达为User Space crypto APIs),并进行socket系统调用,把CCP的算法名称传到kernel的crypto层(如图1所示Linux加密架构,其英文表达为Linux crypto Architecture);若在kernel加密框架结构里寻找到了与用户层传入的算法名称对应的加密算法,则用户层和kernel层可建立链接,实现在用户层调用使用该加密算法的CCP的基础;在此基础上,在用户层调用CCP时,用户层可通过kernel的crypto层,将CCP的调用传递到CCP对应的CCPcrypto driver(CCP加密驱动)和CCP driver(CPP驱动),以通过driver启动对应的CCP,来实现CCP的功能调用。
在内核驱动加入CCP的支持后,用户层可通过调用CCP,来实现CCP的例如加密、解密、签名、验签等运算功能,以实现将源数据转换为目标数据;具体的,用户层可通过API函数,将源数据地址、目标数据地址、数据长度等信息传到kernel里,从而kernel的CCPcrypto driver和CCP driver可启动CCP,以通过CCP的运算功能,将源数据转换为目标数据;例如,以加密为例,源数据指明文,通过调用CCP得到的目标数据可以是加密数据,即密文;以解密为例,源数据指密文,通过调用CCP得到的目标数据可以是明文;以签名为例,源数据指需要处理的消息,通过调用CCP得到的目标数据可以是数字签名;以验签为例,源数据可以是数字签名信息,通过调用CCP可得到是否签名通过的结果。
在内核驱动支持CCP后,若用户层调用CCP,由于源数据在用户层分配的是连续的虚拟地址,而目标数据在物理内存中是以物理页(page)为单位,来进行虚拟地址的对应,且多个物理页之间不一定是连续的,因此在用户层调用密码协处理器时,针对用户层传递的源数据的虚拟地址,kernel(具体可以是kernel的crypto层)需通过页表结构,将虚拟地址解析为物理地址相应的物理页;
目前,用户传递的源数据的虚拟地址可通过4级页表结构,转换得到以物理页为单位的物理地址,以图2所示页表示例结构为例,虚拟地址逐级的通过PGD(Page GlobalDirectory,页全局目录)表,PUD(Page Upper Directory,页上级目录)表,PMD(PageMiddle Directory,页中间目录)表和PTE(Page Table Entry,页表项)表并结合虚拟地址中的偏移(offset),可得到物理页(page);也就是说,kernel可根据源数据的虚拟地址和偏移信息(如offset),通过图2所示的页表示例结构,解析得到多个独立的物理页,这些物理页在物理内存中不一定是连续的。
在上述背景下,CCP可进行独立的DMA(Direct Memory Access直接存储器访问)命令协处理,DMA是一种无需CPU的参与就可以让外设与内存之间进行双向数据传输的机制,使用DMA可以使CPU从实际的IO(输入输出)数据传输中解脱出来,从而大大提升系统的吞吐率;但是DMA方式只能处理连续的物理地址,因此针对上述解析得到的不连续的物理页,目前一般使用scatterlist链表(聚散链表)来进行组织管理;
具体的,通过图2所示页表结构得到的多个物理页,可以scatterlist链表的形式组织在一起,结合图3所示scatterlist链表的示例结构,假设源数据的虚拟地址通过图2所示页表结构,解析得到N个物理页(如物理页0至物理页N-1),则这N个物理页的信息可通过图3所示scatterlist链表进行组织,其中,scatterlist链表中的一个entry(条目)表示一个物理页的物理块,物理块可记录物理页的信息,例如记录物理页的物理地址、偏移(offset)、数据长度等信息;如enry0表示物理页0的物理块,记录物理页0的信息,enry1表示物理页1的物理块,记录物理页1的信息,以此类推;scatterlist链表中的next(下一个)信息用于指向下一个scatterlist链表的地址,end表示scatterlist链表解析到此时,kernel已经解析出了scatterlist链表中所有的物理块。
通过上述描述可以看出,用户层调用CCP时,用户层需向kernel传递源数据的虚拟地址,kernel(具体可以是kernel的crypto层)需将虚拟地址通过页表结构,解析为物理地址相应的物理页,并以scatterlist链表组织物理页;从而,kernel(具体是kernel的crypto层)可将scatterlist链表传递给CCP driver,CCP driver解析出scatterlist链表中的每一个物理块后,可依次发送给CCP进行处理,从而实现CCP利用密码算法处理物理页,达成密码协处理器的运算功能。
然而,本申请实施例的发明人发现:目前的虚拟地址处理过程中,若基于源数据的虚拟地址,解析得到N个物理页,则需在scatterlist链表中对应N个物理块;当将scatterlist链表传递给CCP driver时,CCP driver需要针对scatterlist链表中的N个物理块进行N次解析处理,才能依次将N个物理块传递给CCP,这在scatterlist链表中的物理块数量较多时,将导致CCP driver解析处理scatterlist链表需要较多的次数,不利于后续CCP的运算效率提升;可以看出,目前在scatterlist链表中组织物理页时,一个物理页在scatterlist链表中对应一个物理块,这导致后续CCP driver解析处理scatterlist链表需要较多的次数,并不利于CCP提升运算效率。
基于此,本申请实施例考虑提供改进的用于密码协处理器的配置方案,以至少在处理虚拟地址时,对scatterlist链表的组织方式进行调整,即以一个物理页对应一个物理块,在scatterlist链表中组织物理页后,将scatterlist链表中物理空间相链接的相邻物理块合并在一起,从而减少调整后的scatterlist链表中的物理块数量,进而可减少后续CCP driver解析处理scatterlist链表需要的次数,提升后续CCP的运算效率。
基于上述思路,在可选实现中,图4示出了本申请实施例提供的用于密码协处理器的配置方法的可选流程,可选的,该流程可由CPU执行实现,具体可由CPU的kernel(具体可以是kernel的crypto层)执行实现;参照图4,该流程可以包括:
步骤S10、获取第一scatterlist链表,所述第一scatterlist链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到。
可选的,用户层调用CCP时,针对用户层传递的源数据的虚拟地址,kernel可获得第一scatterlist链表;具体来说,kernel可将源数据的虚拟地址,通过页表结构,解析为物理地址相应的物理页,进而kernel以一个物理块对应一个物理页的组织方式,获得第一scatterlist链表;从而,从获得的第一scatterlist链表来看,第一scatterlist链表中的一个物理块对应一个物理页,并且物理页是基于源数据的虚拟地址解析得到。
步骤S11、申请第二scatterlist链表,所述第二scatterlist链表具有多个用于填充物理块的空白的条目。
为对scatterlist链表进行调整,本申请实施例可申请新的第二scatterlist链表,该新的第二scatterlist链表可具有多个用于填充物理块的空白的条目,即通过本申请实施例提供的方案,可将第一scatterlist链表中物理地址相链接的相邻物理块进行合并,并填充到第二scatterlist链表中空白的条目中,以使得第二scatterlist链表中填充的物理块的数量小于第一scatterlist链表,从而降低scatterlist链表的物理块数量,为减少后续CCP driver解析处理scatterlist链表需要的次数,提升后续CCP的运算效率提供可能。
在可选实现中,为使得第二scatterlist链表具有足够数量的空白的条目来填充物理块,本申请实施例所申请的第二scatterlist链表中空白的条目的数量,可与第一scatterlist链表中的物理块数量相对应,如第二scatterlist链表中空白的条目的数量,与第一scatterlist链表中的物理块数量相等;需要说明的是,第二scatterlist链表中空白的条目的数量与第一scatterlist链表中的物理块数量相对应,只是为了保障第二scatterlist链表中具有足够多的空间来填充物理块,实际使用中,由于对第一scatterlist链表中物理地址相链接的相邻物理页进行合并,因此第二scatterlist链表中最后实际填充物理块的条目,小于空白的条目的总数量。
步骤S12、将在第一scatterlist链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块。
在申请第二scatterlist链表后,本申请实施例可将第一scatterlist链表中物理地址相链接的相邻物理块进行合并,以填充到第二scatterlist链表的空白的条目中;在此思路下,在步骤S12,本申请实施例可将在第一scatterlist链表中相邻、且物理地址相链接的多个连续物理块相合并,以得到与所述多个连续物理块对应的合并物理块。
需要解释的是,第一scatterlist链表中的多个物理块能够合并的条件为:
一,该多个物理块在第一scatterlist链表中连续相邻;示例的,以物理块0、物理块1、物理块2和物理块4为例,由于物理块0与物理块1相邻、物理块1与物理块2相邻,因此物理块0至物理块2在第一scatterlist链表中连续相邻,而由于物理块2和物理块4不相邻,因此物理块0、物理块1、物理块2和物理块4不是连续相邻的物理块;需要进一步说明的是,连续相邻的多个物理块的数量可以不小于2个,如物理块0与物理块1、物理块1与物理块2这两组物理块也可以分别认为是连续相邻的物理块;
二、该多个物理块在物理地址上是相链接,即该多个物理块在物理地址上依次相链接;示例的,以连续相邻的物理块0至物理块2为例,如果物理块0与物理块1在物理地址上相链接,而物理块1与物理块2在物理地址上不相链接,则物理块0与物理块1可相合并,但不能与物理块2不可合并;又如,如果物理块0与物理块1在物理地址上相链接,且物理块1与物理块2在物理地址上也是相链接的,则物理块0至物理块2可相合并,当然,如果物理块2的下一物理块3在物理地址上与物理块2相链接,则物理块0至物理块3可相合并,以此同理类推,直至存在物理地址不相链接的下一物理块时,则抛除该物理地址不相链接的下一物理块,将已确定的连续相邻的、且物理地址相链接的多个物理块合并在一起。
步骤S13、将所述合并物理块按序填充到第二scatterlist链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。
在得到合并物理块后,所述合并物理块可按序填充到第二scatterlist链表的空白的条目中,且一个空白的条目填充一个所述合并物理块,以使得第二scatterlist链表的一个空白的条目可填充多个物理块合并后的合并物理块,达到减少第二scatterlist链表中物理块的数量的效果;在可选实现中,本申请实施例可根据第二scatterlist链表中当前已填充物理块的条目的序号,将所述合并物理块填充到第二scatterlist链表中还未填充物理块的下一个条目。
在进一步的可选实现中,第一scatterlist链表中可能存在无法与其他物理块合并的独立物理块,例如一个物理块与相邻的上一个物理块在物理地址上不相链接,且与相邻的下一个物理块也在物理地址上不相链接,则该物理块作为第一scatterlist链表中与前后相邻的物理块均不在物理地址上相链接的独立物理块;针对独立物理块,本申请实施例可将独立物理块,按序独立的填充到第二scatterlist链表中一个空白的条目;在可选实现中,本申请实施例可根据第二scatterlist链表中当前已填充物理块的条目的序号,将所述独立物理块填充到第二scatterlist链表中还未填充物理块的下一个条目。
在一种示例中,以图5示例为例,假设第一scatterlist链表中具有10个物理块(物理块0至物理块9),基于本申请实施例提供的方案,若确定连续相邻的物理块0至物理块5在物理地址上依次相链接,则物理块0与物理块5可合并为新的物理块0,并由新的物理块0表达物理块0至物理块5的整体物理地址;可选的,物理块0与物理块5合并的方式可以迭代的进行,且新的物理块0可填充到第二scatterlist链表中的条目0中,形成第二scatterlist链表中的物理块0,以使得第二scatterlist链表可通过一个条目0(entry0),填充物理块0至物理块5这6个物理块合并后的合并物理块;
若物理块6与物理块5和物理块7均在物理地址上不相链接,则物理块6作为独立物理块,填充到第二scatterlist链表中的条目1(entry1)中,形成第二scatterlist链表中的物理块1;
若连续相邻的物理块7至9在物理地址上依次相链接,则物理块7与物理块9可合并为新的物理块7,并由新的物理块7表达物理块7至物理块9的整体物理地址;从而新的物理块7可填充到第二scatterlist链表中的条目2(entry2)中,形成第二scatterlist链表中的物理块2。
本申请实施例提供的用于密码协处理器的配置方法,在基于源数据的虚拟地址解析得到物理页,并以一个物理块对应一个物理页的方式组织物理页,得到第一scatterlist链表后,为对第一scatterlist链表中的物理块数量进行调整,本申请实施例可申请新的第二scatterlist链表,且所述第二scatterlist链表具有多个用于填充物理块的空白的条目;从而,本申请实施例可将在第一scatterlist链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;进而,将所述合并物理块按序填充到第二scatterlist链表中空白的条目,且一个空白的条目填充一个所述合并物理块,以使得第二scatterlist链表中的一个条目,可填充第一scatterlist链表中所述多个连续物理块合并后的合并物理块,使得第二scatterlist链表中的物理块的数量可小于第一scatterlist链表中的物理块,达到减少scatterlist链表中的物理块数量的目的。由于scatterlist链表中的物理块数量减少,因此后续CCP driver解析处理scatterlist链表需要的次数可相应减少,可为后续提升CCP的运算效率提供基础。
在可选实现中,本申请实施例可通过对第一scatterlist链表中的物理块进行轮询,以将在第一scatterlist链表中相邻、且物理地址相链接的多个连续物理块迭代的进行合并,以实现步骤S12;可选的,图6示出了本申请实施例提供的合并物理块的一种可选方法流程,如图6所示,该流程可以包括:
步骤S20、从第一scatterlist链表中确定当前物理块。
可选的,在轮询第一scatterlist链表中物理块的过程中,当前物理块可以是第一scatterlist链表中的首个物理块(如物理块0);在另一种可选实现中,由于第一scatterlist链表中相邻、且物理地址相链接的多个连续物理块进行合并,因此第一scatterlist链表中已被合并的相邻、且物理地址相链接的多个连续物理块,已在轮询过程中被不断的确定,基于此,步骤S20所确定的当前物理块还可能是第一scatterlist链表中与相邻的上一物理块在物理地址上不相链接的物理块。
示例的,结合图5所示,以第一scatterlist链表中具有10个物理块(物理块0至物理块9)为例,在轮询第一scatterlist链表中物理块的过程中,首次确定的当前物理块为物理块0,由于物理块0至物理块5连续相邻,且在物理地址上依次相链接,因此物理块1至物理块5在合并物理块0至物理块5的过程中已被确定;从而,在确定物理块6时,由于物理块6与上一物理块5在物理地址上不相链接,则可将物理块6再作为当前物理块;进一步,物理块6由于没有可合并的物理块,因此物理块6独立填充到第二scatterlist链表中,而物理块7由于与上一物理块6在物理地址上不相链接,从而可将物理块7再作为当前物理块。
步骤S21、从所述当前物理块开始,按照物理块在第一scatterlist链表中的顺序,至少一次迭代的将物理地址相链接的连续物理块进行合并,得到合并物理块;其中,所述合并物理块在所述当前物理块的物理地址基础上,表达所合并的物理块的整体物理地址。
在确定当前物理块后,本申请实施例可从所述当前物理块开始,按照物理块在第一scatterlist链表中的顺序,迭代的将物理地址相链接的连续物理块进行合并,从而得到合并物理块;此处迭代的意思是指进行一次或者多次的合并,且下一次的合并建立在上一次合并结果的基础上,具体的,从当前物理块开始,若当前物理块与下一相邻的物理块在物理地址上相链接,则将当前物理块与下一相邻的物理块进行合并,若合并后的结果再与下一相邻的物理块在物理地址上相链接,则再次合并,以此同理类推,直至出现上一合并的结果与下一相邻的物理块不在物理地址上相链接时,停止合并,得到合并物理块。
本申请实施例在迭代的进行一次合并或者多次合并的过程中,任一次合并的物理块应在当前物理块的物理地址基础上,表达所合并的物理块的整体物理地址;例如,当前物理块与下一相邻的物理块相合并,则合并的物理块需在当前物理块的物理地址基础上,表达当前物理块与下一相邻的物理块的整体物理地址;
在一种示例中,以当前物理块为物理块0为例,若第一scatterlist链表中,物理块0与下一相邻的物理块1在物理地址上相链接,则物理块0与物理块1合并为新的物理块0(该新的物理块0需在物理块0的物理地址基础上,表达物理块0与物理块1的整体物理地址),若该新的物理块0与下一相邻的物理块2在物理地址上相链接,则该新的物理块0再与下一相邻的物理块2再次合并为下一个新的物理块0(再次合并的新的物理块0需在物理块0的物理地址基础上,表达物理块0、物理块1与物理块2的整体物理地址),以此同理类推,直至上一次合并的新的物理块0与下一相邻的物理块在物理地址上不相链接,则停止合并,得到最终合并的新的物理块0。
进一步的,与最终合并的新的物理块0,在物理地址上不相链接的下一相邻物理块,可作为步骤S20确定的下一个当前物理块,按照上述物理块的合并方式同理进行处理,得到下一合并物理块,或者,下一个当前物理块在不存在可合并的物理块时,作为独立物理块填充到第二scatterlist链表中。
在可选实现中,scatterlist链表中的一个物理块可以表达相应物理页的物理地址(address),相对物理地址的偏移(offset)以及数据长度(length);在此基础上,判断当前物理块与下一相邻的物理块是否在物理地址上相链接可以是:
判断当前物理块对应的物理地址(address),偏移(offset)以及数据长度(length)的和,是否与下一相邻的物理块的物理地址(address)相等;若是,则当前物理块与下一相邻的物理块在物理地址上相链接,若否,则当前物理块与下一相邻的物理块不在物理地址上相链接。
示例的,以判断第一scatterlist链表中的物理块0(表示为entry0)与物理块1(表示为entry1)是否在物理地址上相链接为例,则可通过判断以下等式1是否成立来实现:
entry0.address+entry0.offset+entry0.length==entry1.address(等式1);其中,entry0.address表示物理块0相应的物理地址,entry0.offset表示物理块0相应的偏移,entry0.length表示物理块0相应的数据长度,entry1.address表示物理块1相应的物理地址;
如果上述等式1不成立,则第一scatterlist链表的entry0表示的物理块0作为独立物理块,物理块0的信息填充进第二scatterlist链表的entry0;从而第一scatterlist链表中的entry1作为下一个当前物理块,以上述方式同理判断,如后续可针对第一scatterlist链表中的entry1与entry2,判断上述相应的等式是否成立,并基于不同结果进行不同处理;
如果上述entry0与entry1的等式1成立,则entry0与entry1作为第一scatterlist链表中相邻且物理地址相链接的物理块,可进行合并,从而得到新的entry0,新的entry0可在entry0的物理地址上,表达entry0与entry1的整体物理地址,例如,新的entry0中的信息可以调整为entry0.address,entry0.offset,以及entry0.length+entry1.length,即新的entry0的数据长度调整为合并的entry0与entry1的数据长度的和;也就是说,合并物理块的物理地址可以是所合并的物理块中第一个物理块的物理地址,合并物理块的偏移可以是所合并的物理块中第一个物理块的偏移,合并物理块的数据长度可以是所合并的物理块的数据长度的和;
进一步,得到新的entry0表示经过一次迭代得到了合并的物理块,本申请实施例可判断下一次迭代是否能够进行,即新的entry0与第一scatterlist链表中的entry2可按照上述等式1同理进行比较,如判断以下等式2是否成立:
新entry0.address+新entry0.offset+(entry0.length+entry1.length)==entry2.address(等式2);
若比较等式2成立,则新的entry0与第一scatterlist链表中的entry2再次合并,即经过第二次迭代再次得到了合并的物理块,然后再次合并的物理块与第一scatterlist链表中的entry3再按照上述等式同理进行比较,以此类推,直至第一scatterlist链表中的下一entry,与已合并得到的物理块不满足等式关系时,停止合并;也就是说,若在比较新entry0与entry1时,等式2不成立,则新entry0可填充到scatterlist链表中空白的条目。
在一种示例中,填充物理块的第二scatterlist链表的示例结构可参照图7所示,第二scatterlist链表虽然具有与第一scatterlist链表的物理块数量相应的空白条目(如entry0至entryN),但是通过将第一scatterlist链表中的物理块合并后填充到第二scatterlist链表,第二scatterlist链表中实际填充物理块的条目仅是L个,如第二scatterlist链表中的entry0至entryL-1,其中第二scatterlist链表中entryL-1的后一条目填充表示结束的end(结束)信息;相比于第一scatterlist链表中的N个物理块,本申请实施例提供的第二scatterlist链表可减少N-L个物理块,从而后续CCP driver解析处理第二scatterlist链表需要的次数也能减少N-L次,可提升后续CCP的运算效率。
在可选实现中,基于本申请实施获得的第二scatterlist链表,kernel(具体可以是kernel的crypto层)可将第二scatterlist链表传递给CCP driver,CCP driver解析出第二scatterlist链表中的每一个物理块并依次发给CCP,从而由CCP处理每一个物理块相应的物理页,进而CCP每处理完一个物理页,可触发一次中断,通知到CCP driver,CCP driver再把第二scatterlist链表中解析的下一个物理块发给CCP,直到第二scatterlist链表中所有物理块均解析完成,即解析到第二scatterlist链表的entry带有end(结束)信息。
可以看出,本申请实施例通过将原先的第一scatterlist链表中物理空间相链接的相邻物理页合并在一起,并填充到新的第二scatterlist链表中,可减少scatterlist链表中的物理块数量;从而将第二scatterlist链表传递给CCP driver解析处理,可减少CCPdriver解析处理scatterlist链表需要的次数,可提升CCP的运算效率。
在可选实现中,CCP可对外提供了一定长度(如256bit长度)的结构体(cmd),该结构体包含了src(源数据物理地址)、dst(目标数据物理地址)、len(数据长度)等信息,从而CCP driver解析出scatterlist链表中的一个物理块时,可将物理块的信息(即物理块对应的物理页的信息)写入该结构体中,以实现CCP driver将scatterlist链表中解析出的物理块,发送给CCP;示例的,结合图8所示,每个CCP可在硬件结构上包含多个VQ(VirtualQueue,虚拟队列),VQ的具体数量可根据实际情况而定,本申请实施例并不局限,每个VQ对应一个可容纳多个结构体(cmd)的队列buffer(缓冲),如图8所示,一个VQ可对应一个最多可以容纳65536个cmd(cmd0至cmd65535)的队列buffer;图8中first(起始)标志、last(结束)标志分别标识VQ中cmd的起始和结束位置;当CCP driver解析scatterlist链表中的一个物理块,可将该物理块的信息封装进结构体(cmd),再将封装后的cmd放入CCP的VQ后,由于VQ中的cmd发生更新,因此可更新last标志的位置,然后启动CCP进行处理,从而CCP可根据VQ中first标志和last标志完成对cmd的处理,CCP处理结束后,可触发中断通知到CCPdriver,进而CCP driver再将scatterlist链表中解析的下一个物理块的信息封装进结构体(cmd)中,以此类推;可选的,scatterlist链表的一种可选处理过程可以如图9所示,包括:
步骤S30、CCP driver判断scatterlist链表是否轮询结束,若是,结束流程,若否,执行步骤S31。
CCP driver可按照scatterlist链表中物理块的顺序,轮询scatterlist链表,如果CCP driver判断scatterlist链表轮询结束,则说明scatterlist链表中的所有物理块均已解析,可结束流程;如果CCP driver判断scatterlist链表未轮询结束,则可针对从scatterlist链表中当前搜索到的物理块进行后续处理。
步骤S31、CCP driver从scatterlist链表解析出当前搜索的物理块,将解析的物理块的信息封装进结构体。
步骤S32、CCP driver将封装后的结构体放入CCP的VQ中,并更新VQ中的last标志。
步骤S33、CCP driver启动CCP,以使CCP处理VQ中封装后的结构体。
在封装后的结构体放入CCP的VQ中,并且更新了VQ中的last标志后,CCP driver可启动CCP,从而CCP可基于VQ中更新的last标志,对VQ中放入的封装后的结构体进行处理,如CCP可基于封装后的结构体中写入的物理块的信息,对物理块相应的物理页进行处理,以实现将物理页中的数据转换至部分或全部目标数据。
步骤S34、CCP处理封装后的结构体后,触发中断通知给CCP driver,以使CCPdriver返回执行步骤S30。
通过上述过程可以看出,CCP driver每从scatterlist链表中解析出一个物理块,则将物理块的信息封装进结构体并放入VQ中,并启动一次CCP进行处理;也就是说,CCPdriver每从scatterlist链表中解析出一个物理块,则启动一次CCP进行处理,这导致CCP的启动次数与scatterlist链表中的物理块数量相应,并不利于CCP的运算效率提升;
为解决上述问题,本申请实施例进一步考虑在CCP driver解析出scatterlist链表中所有的物理块,并将解析出的各物理块的信息分别封装进结构体后,将封装后的结构体统一放入选中的CCP的VQ中,然后再启动CCP进行处理;即将CCP driver每从scatterlist链表中解析出一个物理块需启动一次CCP,转变为:CCP driver从scatterlist链表中解析出所有物理块后,只需启动一次CCP进行处理,以充分利用CCP处理大数据性能方面的优势。
具体的,与软件算法相比,CCP处理比较大的数据时更能发挥性能优势,并且CCP可通过硬件支持容纳多个结构体(cmd)的VQ,如图8所示,一个VQ最多可以容纳65536个cmd(cmd0至cmd65535),因此可实现支持将多个结构体(cmd)一次统一的放入VQ中,从而后续启动一次CCP处理即可;
在更为具体的可选实现中,CCP driver可从scatterlist链表中解析出所有的物理块,将解析出的各物理块的信息分别封装进结构体中,得到多个封装后的结构体,其中,一个物理块的信息封装进一个结构体中;从而,CCP driver可将多个封装后的结构体统一放入CCP的VQ中,并在VQ中多个封装后的结构体中第一个结构体的位置,设置first(起始)标志,在VQ中多个封装后的结构体中最后一个结构体的位置,设置last(结束)标志;进而,CCP driver可启动CCP,以使CCP根据VQ中的first(起始)标志和last(结束)标志,依序对VQ中放入的封装后的结构体进行处理,从而实现CCP的运算功能;
在一种示例中,结合图10所示,CCP driver可从scatterlist链表中解析出N个物理块(如物理块M至物理块M+N-1),从而CCP driver可将该N个物理块的信息分别封装进结构体(cmd)中,得到N个封装后的结构体(如cmd M至cmd M+N-1),进而CCP driver可将该N个封装后的结构体统一放入CCP的VQ中,并在VQ的第一个封装后的结构体cmd M的位置设置first(起始)标志,在VQ的最后一个封装后的结构体cmd M+N-1的位置设置last(结束)标志,然后CCP driver启动CCP,CCP即可根据VQ中的first标志和last标志,依次对cmd M到cmd M+N-1进行处理。
可以看出,相比于CCP driver遍历scatterlist链表,每解析出一个物理块则启动一次CCP进行处理的方式,本申请实施例通过遍历scatterlist链表,并在解析出所有物理块后,将各物理块分别封装进结构体并统一放入VQ中,然后再启动一次CCP进行处理,更能发挥CCP的优势,提升CPP的运算效率。
需要说明的是,本申请实施例所指的scatterlist链表可以是上述所述的第一scatterlist链表,也可以是本申请实施例提供的第二scatterlist链表。
进一步需要说明的是,Linux kernel里CCP driver和CCP之间一般通过中断的方式进行交互,但中断存在中断延迟的问题,即从CPP产生中断到CPU(具体是CPU的kernel中的CCP driver)开始响应中断需要一定的时间;而CCP driver除了通过获取CCP的中断通知,来确定CCP处理VQ结束外,还可设置CCP在处理VQ结束时,调整设定寄存器的状态位,从而CCP driver可通过查询方式来确定CCP是否处理VQ结束,如CCP driver可通过查询设定寄存器的状态位,来确定CCP否处理VQ结束;
本申请实施例的发明人在对CCP driver的响应时间进行测试后,发现CCP driver对于设定字节以内的数据(设定字节如8K字节,具体数值可根据实际测试情况而定),例如对于设定字节以内的scatterlist链表(第一scatterlist链表或第二scatterlist链表),CCP driver使用查询方式对应的响应时间低于中断方式对应的响应时间;例如,针对8K字节以内的scatterlist链表,CCP driver使用查询方式确定CCP是否处理VQ结束时,CCPdriver在5s(秒)以内即可完成响应,而CCP driver获取中断通知时,则CCP driver至少需要40s以上的时间才能完成响应;可以看出,针对设定字节以内的scatterlist链表,采用查询方式确定CCP处理VQ结束,和采用中断方式确定CCP处理VQ结束,CCP driver在响应时间的差别较大,并且通过工具查看,这两种方式在CPU的占用率方面基本没有差别;
基于此,在本申请实施例中,如果scatterlist链表(第一scatterlist链表或第二scatterlist链表)小于设定字节(如8K字节),则CCP driver可设置CCP在处理VQ结束时,调整设定寄存器的状态位,从而CCP driver可通过查询设定寄存器的状态位,来确定CCP是否处理VQ结束;而如果scatterlist链表不小于设定字节(如8K字节),则CCP driver可设置CCP在处理VQ结束时,采用中断方式通知CCP driver。
在可选实现中,图11示出了本申请实施例提供的用于密码协处理器的配置方法的另一可选流程,结合图11所示,该流程可以包括:
步骤S40、CCP driver判断scatterlist链表的大小是否小于设定字节,若否,执行步骤S41,若是,执行步骤S42。
可选的,步骤S40所指的scatterlist链表可以是第一scatterlist链表,也可以是第二scatterlist链表。
步骤S41、设置结构体中ioc(通知方式标志)的数值为第一值,以指示CCP在处理VQ结束时,使用中断方式通知CCP driver。
本申请实施例在scatterlist链表的大小不小于设定字节时,配置CCP在处理VQ结束时,采用中断方式通知CCP driver;在可选实现中,结构体(cmd)中的ioc(通知方式标志)可表示CCP在处理VQ结束时,通知CCP的方式;从而本申请实施例可在scatterlist链表不小于设定字节时,通过将结构体中ioc的数值调整为第一值(如1),以配置CCP在处理VQ结束时,采用中断方式通知CCP driver。
步骤S42、设置结构体中ioc的数值为第二值,以指示CCP在处理VQ结束时,调整设定寄存器的状态位为预设状态位。
可选的,本申请实施例可在scatterlist链表小于设定字节时,通过将结构体中ioc的数值调整为第二值(如0),以配置CCP在处理VQ结束时,调整设定寄存器的状态位为预设状态位,来通知CCP driver。其中第一值不同于第二值,如第一值为1,第二值为0等。
步骤S43、CCP driver将从scatterlist链表中解析的物理块,封装进结构体中,将封装后的结构体放入CCP的VQ中。
可选的,CCP driver可遍历scatterlist链表,每解析出一个物理块则封装对应的结构体,并将结构体放入VQ中,以启动一次CCP进行处理,来实现步骤S43;在另一种可选实现中,CCP driver也可通过遍历scatterlist链表,在解析出所有物理块后,将各物理块分别封装进结构体,然后再统一放入VQ中,以实现步骤S43。
步骤S44、CCP driver启动CCP处理VQ。
步骤S45、在CCP处理VQ结束后,CCP判断结构体中ioc的数值是否为第一值,若是,执行步骤S46,若否,执行步骤S47。
步骤S46、CCP向CCP driver发送中断通知,以在CCP driver获取所述中断通知时,确定CCP处理VQ结束。
步骤S47、CCP将设定寄存器的状态位调整为预设状态位,以在CCP driver查询设定寄存器的状态位为预设状态位时,确定CCP处理VQ结束。
CCP处理VQ结束后,需通知CCP driver,以使CCP driver知道CCP已处理VQ结束,在本申请实施例中,CCP处理VQ结束时,可判断结构体中ioc的数值是否为第一值,若ioc为第一值,则CCP以中断方式通知CCP driver,从而CCP可向CCP driver发送中断通知,以便CCPdriver获取所述中断通知后,可确定CCP处理VQ结束;若ioc不为第二值,则CCP需将设定寄存器的状态位调整为预设状态位,以便CCP driver查询设定寄存器的状态位为预设状态位时,确定CCP处理VQ结束。可选的,预设状态位的具体形式可根据实际情况设定,本申请实施例并不设限。
本申请实施例可在kernel driver里增加对查询方式的支持,从而在scatterlist链表小于设定字节(如8K字节)时,使用查询方式来确定CCP处理VQ结束;而在scatterlist链表不小于设定字节时,使用中断方式来确定CCP处理VQ结束,从而可针对scatterlist链表的不同大小,采用适应的能够降低响应时间的方式,来确定CCP处理结束,进一步提升CCP的处理性能。
本申请实施例可将scatterlist链表中物理空间相链接的相邻物理块合并在一起,并填充到新的scatterlist链表中,降低新的scatterlist链表中的物理块数量,进而可减少后续CCP driver解析处理scatterlist链表需要的次数,提升后续CCP的运算效率;
进一步,本申请实施例在CCP driver解析处理scatterlist链表时,可将scatterlist链表中所有的物理块分别封装进结构体,再将封装后的结构体统一放入选中的CCP的VQ中,然后再启动CCP进行处理,从而充分利用了CCP处理大数据的性能优势;
更进一步的,在scatterlist链表小于设定字节时,CCP处理VQ结束时,可调整设定寄存器的状态位,以使得CCP driver通过查询设定寄存器的状态位的方式,来确定CCP处理VQ结束,从而极大降低响应时间。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
下面对本申请实施例提供的用于密码协处理器的配置装置进行介绍,下文描述的装置内容可以认为是CPU(具体可以是CPU中的内核kernel),为实现本申请实施例提供的用于密码协处理器的配置方法,所需设置的功能模块。下文描述的装置内容,可与上文描述内容相互对应参照。
在可选实现中,图12示出了本申请实施例提供的用于密码协处理器的配置装置的可选框图,该装置可应用于CPU(具体可以是CPU中的kernel),如图12所示,该装置可以包括:
第一链表获取模块100,用于获取第一聚散(scatterlist)链表,所述第一聚散链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到;
第二链表申请模块110,用于申请第二聚散链表,所述第二聚散链表具有多个用于填充物理块的空白的条目;
合并模块120,用于将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;
填充模块130,用于将所述合并物理块按序填充到第二聚散链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。
可选的,合并模块120,用于将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块,具体包括:
从第一聚散链表中确定当前物理块,其中,所述当前物理块为所述第一聚散链表中的首个物理块,或者,第一聚散链表中与相邻的上一物理块在物理地址上不相链接的物理块;
从所述当前物理块开始,按照物理块在第一聚散链表中的顺序,至少一次迭代的将物理地址相链接的连续物理块进行合并,得到合并物理块;其中,所述合并物理块在所述当前物理块的物理地址基础上,表达所合并的物理块的整体物理地址。
可选的,合并模块120,用于从所述当前物理块开始,按照物理块在第一聚散链表中的顺序,至少一次迭代的将物理地址相链接的连续物理块进行合并,得到合并物理块,具体包括:
从当前物理块开始,若当前物理块与下一相邻的物理块在物理地址上相链接,则将当前物理块与下一相邻的物理块进行合并;若合并后的结果与下一相邻的物理块在物理地址上相链接,则再次合并,直至出现上一合并的结果与下一相邻的物理块不在物理地址上相链接时,停止合并,得到所述合并物理块。
可选的,所述物理块表达相应物理页的物理地址,偏移以及数据长度;
所述当前物理块与下一相邻的物理块在物理地址上相链接,具体为:
所述当前物理块对应的物理地址,偏移以及数据长度的和,与下一相邻的物理块的物理地址相等。
可选的,所述合并物理块在所述当前物理块的物理地址基础上,表达所合并的物理块的整体物理地址,具体为:
所述合并物理块的物理地址为所合并的物理块中第一个物理块的物理地址,偏移为所合并的物理块中第一个物理块的偏移,数据长度为所合并的物理块的数据长度的和。
可选的,进一步,填充模块130,还用于将第一聚散链表中与前后相邻的物理块均不在物理地址上相链接的独立物理块,按序独立的填充到第二聚散链表中的一个空白的条目。
可选的,填充模块130,用于将所述合并物理块按序填充到第二聚散链表中空白的条目包括:
根据第二聚散链表中当前已填充物理块的条目的序号,将所述合并物理块填充到第二聚散链表中还未填充物理块的下一个条目。
可选的,所述第一聚散链表以及所述第二聚散链表中,最后一个物理块的后一条目填充表示结束的结束信息。
可选的,图12所示的功能模块可以具体是由CPU的kernel的crypto层实现。
可选的,进一步,图13示出了本申请实施例提供的用于密码协处理器的配置装置的另一可选框图,结合图12和图13所示,该装置还可以包括:
链表第一处理模块140,用于:
从第一聚散链表或第二聚散链表中解析出所有的物理块,将解析出的各物理块的信息分别封装进结构体中,得到多个封装后的结构体,其中,一个物理块的信息封装进一个结构体中;
将多个封装后的结构体统一放入密码协处理器的虚拟队列中,并在所述虚拟队列中的第一个结构体的位置设置起始标志,在所述虚拟队列中最后一个结构体的位置设置结束标志,以使密码协处理器启动后,根据所述虚拟队列中的起始标志和所述结束标志,依次处理所述多个封装后的结构体。
可选的,图14示出了本申请实施例提供的用于密码协处理器的配置装置的再一可选框图,结合图12和图14所示,该装置还可以包括:
链表第二处理模块150,用于:
从第一聚散链表或第二聚散链表中每解析出一个物理块,将解析出的物理块的信息封装进结构体中;
将一个封装后的结构体放入密码协处理器的虚拟队列中,并在所述虚拟队列中所述封装后的结构体的位置设置起始标志和结束标志,以使密码协处理器启动后,处理所述封装后的结构体。
可选的,图13所示链表第一处理模块140,和图14所示链表第二处理模块150可择一使用。
可选的,图15示出了本申请实施例提供的用于密码协处理器的配置装置的又一可选框图,结合图13和图15所示,该装置还可以包括:
通知方式设置模块160,用于:
判断第一聚散链表或第二聚散链表的大小,是否小于设定字节;
若否,设置密码协处理器在处理虚拟队列结束时,发送中断通知,以通过所述中断通知,确定密码协处理器处理虚拟队列结束;
若是,设置密码协处理器在处理虚拟队列结束时,调整设定寄存器的状态位为预设状态位,以通过查询设定寄存器的状态位,确定密码协处理器处理虚拟队列结束。
可选的,通知方式设置模块160也可设置于图14所示结构中。
可选的,所述结构体包括源数据物理地址、目标数据物理地址、数据长度以及通知方式标志;
相应的,通知方式设置模块160,用于设置密码协处理器在处理虚拟队列结束时,发送中断通知,以通过所述中断通知,确定密码协处理器处理虚拟队列结束包括:
设置结构体中通知方式标志的数值为第一值;
通知方式设置模块160,用于设置密码协处理器在处理虚拟队列结束时,调整设定寄存器的状态位为预设状态位,以通过查询设定寄存器的状态位,确定密码协处理器处理虚拟队列结束包括:
设置结构体中通知方式标志的数值为第二值,第一值不同于第二值。
在可选实现中,上述所示的链表第一处理模块140,链表第二处理模块150,通知方式设置模块160可以具体是由CPU的kernel的CCP driver实现。
本申请实施例还提供一种CPU,该CPU可以具有内核(kernel),所述内核可通过装载上述所述的密码协处理器的配置装置,以实现本申请实施例提供的用于密码协处理器的配置方法。相应的,本申请实施例提供一种CPU,该CPU具有内核,所述内核可被配置为执行本申请实施例提供的用于密码协处理器的配置方法。
本申请实施例还提供一种电子设备,该电子设备可以包括上述所述的CPU。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (18)

1.一种用于密码协处理器的配置方法,其特征在于,包括:
获取第一聚散链表,所述第一聚散链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到;
申请第二聚散链表,所述第二聚散链表具有多个用于填充物理块的空白的条目;
将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;
将所述合并物理块按序填充到第二聚散链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。
2.根据权利要求1所述的用于密码协处理器的配置方法,其特征在于,所述将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块包括:
从第一聚散链表中确定当前物理块,其中,所述当前物理块为所述第一聚散链表中的首个物理块,或者,第一聚散链表中与相邻的上一物理块在物理地址上不相链接的物理块;
从所述当前物理块开始,按照物理块在第一聚散链表中的顺序,至少一次迭代的将物理地址相链接的连续物理块进行合并,得到合并物理块;其中,所述合并物理块在所述当前物理块的物理地址基础上,表达所合并的物理块的整体物理地址。
3.根据权利要求2所述的用于密码协处理器的配置方法,其特征在于,所述从所述当前物理块开始,按照物理块在第一聚散链表中的顺序,至少一次迭代的将物理地址相链接的连续物理块进行合并,得到合并物理块包括:
从当前物理块开始,若当前物理块与下一相邻的物理块在物理地址上相链接,则将当前物理块与下一相邻的物理块进行合并;若合并后的结果与下一相邻的物理块在物理地址上相链接,则再次合并,直至出现上一合并的结果与下一相邻的物理块不在物理地址上相链接时,停止合并,得到所述合并物理块。
4.根据权利要求3所述的用于密码协处理器的配置方法,其特征在于,所述物理块表达相应物理页的物理地址,偏移以及数据长度;
所述当前物理块与下一相邻的物理块在物理地址上相链接,具体为:
所述当前物理块对应的物理地址,偏移以及数据长度的和,与下一相邻的物理块的物理地址相等。
5.根据权利要求4所述的用于密码协处理器的配置方法,其特征在于,所述合并物理块在所述当前物理块的物理地址基础上,表达所合并的物理块的整体物理地址,具体为:
所述合并物理块的物理地址为所合并的物理块中第一个物理块的物理地址,偏移为所合并的物理块中第一个物理块的偏移,数据长度为所合并的物理块的数据长度的和。
6.根据权利要求1-5任一项所述的用于密码协处理器的配置方法,其特征在于,还包括:
将第一聚散链表中与前后相邻的物理块均不在物理地址上相链接的独立物理块,按序独立的填充到第二聚散链表中的一个空白的条目。
7.根据权利要求1所述的用于密码协处理器的配置方法,其特征在于,所述将所述合并物理块按序填充到第二聚散链表中空白的条目包括:
根据第二聚散链表中当前已填充物理块的条目的序号,将所述合并物理块填充到第二聚散链表中还未填充物理块的下一个条目。
8.根据权利要求1所述的用于密码协处理器的配置方法,其特征在于,所述第一聚散链表以及所述第二聚散链表中,最后一个物理块的后一条目填充表示结束的结束信息。
9.根据权利要求1所述的用于密码协处理器的配置方法,其特征在于,还包括:
从第一聚散链表或第二聚散链表中解析出所有的物理块,将解析出的各物理块的信息分别封装进结构体中,得到多个封装后的结构体,其中,一个物理块的信息封装进一个结构体中;
将多个封装后的结构体统一放入密码协处理器的虚拟队列中,并在所述虚拟队列中的第一个结构体的位置设置起始标志,在所述虚拟队列中最后一个结构体的位置设置结束标志,以使密码协处理器启动后,根据所述虚拟队列中的起始标志和所述结束标志,依次处理所述多个封装后的结构体。
10.根据权利要求1所述的用于密码协处理器的配置方法,其特征在于,还包括:
从第一聚散链表或第二聚散链表中每解析出一个物理块,将解析出的物理块的信息封装进结构体中;
将一个封装后的结构体放入密码协处理器的虚拟队列中,并在所述虚拟队列中所述封装后的结构体的位置设置起始标志和结束标志,以使密码协处理器启动后,处理所述封装后的结构体。
11.根据权利要求9或10所述的用于密码协处理器的配置方法,其特征在于,还包括:
判断第一聚散链表或第二聚散链表的大小,是否小于设定字节;
若否,设置密码协处理器在处理虚拟队列结束时,发送中断通知,以通过所述中断通知,确定密码协处理器处理虚拟队列结束;
若是,设置密码协处理器在处理虚拟队列结束时,调整设定寄存器的状态位为预设状态位,以通过查询设定寄存器的状态位,确定密码协处理器处理虚拟队列结束。
12.根据权利要求11所述的用于密码协处理器的配置方法,其特征在于,所述结构体包括源数据物理地址、目标数据物理地址、数据长度以及通知方式标志。
13.根据权利要求12所述的用于密码协处理器的配置方法,其特征在于,所述设置密码协处理器在处理虚拟队列结束时,发送中断通知,以通过所述中断通知,确定密码协处理器处理虚拟队列结束包括:
设置结构体中通知方式标志的数值为第一值;
所述设置密码协处理器在处理虚拟队列结束时,调整设定寄存器的状态位为预设状态位,以通过查询设定寄存器的状态位,确定密码协处理器处理虚拟队列结束包括:
设置结构体中通知方式标志的数值为第二值,第一值不同于第二值。
14.一种用于密码协处理器的配置装置,其特征在于,包括:
第一链表获取模块,用于获取第一聚散链表,所述第一聚散链表中的一个物理块对应一个物理页,其中,所述物理页基于源数据的虚拟地址解析得到;
第二链表申请模块,用于申请第二聚散链表,所述第二聚散链表具有多个用于填充物理块的空白的条目;
合并模块,用于将在第一聚散链表中相邻、且物理地址相链接的多个连续物理块相合并,得到与所述多个连续物理块对应的合并物理块;
填充模块,用于将所述合并物理块按序填充到第二聚散链表中空白的条目,其中,一个空白的条目填充一个所述合并物理块。
15.根据权利要求14所述的用于密码协处理器的配置装置,其特征在于,还包括:
链表第一处理模块,用于:
从第一聚散链表或第二聚散链表中解析出所有的物理块,将解析出的各物理块的信息分别封装进结构体中,得到多个封装后的结构体,其中,一个物理块的信息封装进一个结构体中;
将多个封装后的结构体统一放入密码协处理器的虚拟队列中,并在所述虚拟队列中的第一个结构体的位置设置起始标志,在所述虚拟队列中最后一个结构体的位置设置结束标志,以使密码协处理器启动后,根据所述虚拟队列中的起始标志和所述结束标志,依次处理所述多个封装后的结构体。
16.根据权利要求15所述的用于密码协处理器的配置装置,其特征在于,还包括:
通知方式设置模块,用于:
判断第一聚散链表或第二聚散链表的大小,是否小于设定字节;
若否,设置密码协处理器在处理虚拟队列结束时,发送中断通知,以通过所述中断通知,确定密码协处理器处理虚拟队列结束;
若是,设置密码协处理器在处理虚拟队列结束时,调整设定寄存器的状态位为预设状态位,以通过查询设定寄存器的状态位,确定密码协处理器处理虚拟队列结束。
17.一种中央处理器CPU,其特征在于,所述CPU具有内核,所述内核被配置为执行如权利要求1-13任一项所述的用于密码协处理器的配置方法。
18.一种电子设备,其特征在于,包括如权利要求17所述的中央处理器CPU。
CN202011437344.0A 2020-12-11 2020-12-11 一种用于密码协处理器的配置方法、装置、cpu及电子设备 Active CN112560086B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011437344.0A CN112560086B (zh) 2020-12-11 2020-12-11 一种用于密码协处理器的配置方法、装置、cpu及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011437344.0A CN112560086B (zh) 2020-12-11 2020-12-11 一种用于密码协处理器的配置方法、装置、cpu及电子设备

Publications (2)

Publication Number Publication Date
CN112560086A true CN112560086A (zh) 2021-03-26
CN112560086B CN112560086B (zh) 2022-11-08

Family

ID=75060397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011437344.0A Active CN112560086B (zh) 2020-12-11 2020-12-11 一种用于密码协处理器的配置方法、装置、cpu及电子设备

Country Status (1)

Country Link
CN (1) CN112560086B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485948A (zh) * 2021-06-29 2021-10-08 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601223B1 (en) * 2006-09-19 2013-12-03 Nvidia Corporation Techniques for servicing fetch requests utilizing coalesing page table entries
CN103761193A (zh) * 2013-12-17 2014-04-30 记忆科技(深圳)有限公司 抑制逻辑页碎片产生的方法及系统
CN105468542A (zh) * 2014-09-03 2016-04-06 杭州华为数字技术有限公司 地址分配方法及装置
CN105518631A (zh) * 2014-08-08 2016-04-20 华为技术有限公司 内存管理方法、装置和系统、以及片上网络
CN106201774A (zh) * 2016-06-28 2016-12-07 中国人民解放军61660部队 一种nand flash存储芯片数据存储结构分析方法
CN108139981A (zh) * 2016-08-11 2018-06-08 华为技术有限公司 一种页表缓存tlb中表项的访问方法,及处理芯片
CN109426624A (zh) * 2017-08-24 2019-03-05 Arm有限公司 用于高效利用地址转换缓存的装置和方法
CN110046106A (zh) * 2019-03-29 2019-07-23 海光信息技术有限公司 一种地址转换方法、地址转换模块及系统
CN110688330A (zh) * 2019-09-23 2020-01-14 北京航空航天大学 一种基于内存映射相邻性的虚拟内存地址翻译方法
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备
CN111124606A (zh) * 2019-12-12 2020-05-08 海光信息技术有限公司 基于安全处理器的虚拟机数据处理方法、装置、cpu芯片及服务器
CN111949572A (zh) * 2020-08-24 2020-11-17 海光信息技术有限公司 页表条目合并方法、装置及电子设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601223B1 (en) * 2006-09-19 2013-12-03 Nvidia Corporation Techniques for servicing fetch requests utilizing coalesing page table entries
CN103761193A (zh) * 2013-12-17 2014-04-30 记忆科技(深圳)有限公司 抑制逻辑页碎片产生的方法及系统
CN105518631A (zh) * 2014-08-08 2016-04-20 华为技术有限公司 内存管理方法、装置和系统、以及片上网络
CN105468542A (zh) * 2014-09-03 2016-04-06 杭州华为数字技术有限公司 地址分配方法及装置
CN106201774A (zh) * 2016-06-28 2016-12-07 中国人民解放军61660部队 一种nand flash存储芯片数据存储结构分析方法
CN108139981A (zh) * 2016-08-11 2018-06-08 华为技术有限公司 一种页表缓存tlb中表项的访问方法,及处理芯片
CN109426624A (zh) * 2017-08-24 2019-03-05 Arm有限公司 用于高效利用地址转换缓存的装置和方法
CN110046106A (zh) * 2019-03-29 2019-07-23 海光信息技术有限公司 一种地址转换方法、地址转换模块及系统
CN110688330A (zh) * 2019-09-23 2020-01-14 北京航空航天大学 一种基于内存映射相邻性的虚拟内存地址翻译方法
CN111124606A (zh) * 2019-12-12 2020-05-08 海光信息技术有限公司 基于安全处理器的虚拟机数据处理方法、装置、cpu芯片及服务器
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备
CN111949572A (zh) * 2020-08-24 2020-11-17 海光信息技术有限公司 页表条目合并方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485948A (zh) * 2021-06-29 2021-10-08 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件
CN113485948B (zh) * 2021-06-29 2023-11-14 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件

Also Published As

Publication number Publication date
CN112560086B (zh) 2022-11-08

Similar Documents

Publication Publication Date Title
US11178260B2 (en) Methods and apparatus for dynamic packet pool configuration in networking stack infrastructures
CN107515775B (zh) 一种数据传输方法及装置
WO2018006872A1 (zh) 一种混合云的接口调用方法及装置
WO2021218018A1 (zh) 网页端实现跨域请求的数据处理方法、装置及相关设备
CN112948871A (zh) 在计算环境中保护计算数据的技术
WO2016101288A1 (zh) 一种远程直接数据存取方法、设备和系统
US11606302B2 (en) Methods and apparatus for flow-based batching and processing
CN109951546B (zh) 基于智能合约的事务请求处理方法、装置、设备和介质
US8458366B2 (en) Method and system for onloading network services
CN1306748C (zh) 改进短操作的des硬件吞吐量
CN110597751A (zh) 一种pci密码卡访问方法、系统、存储介质及计算机设备
US8938072B2 (en) Cryptographic key derivation device and method therefor
CN112560086B (zh) 一种用于密码协处理器的配置方法、装置、cpu及电子设备
WO2020173126A1 (zh) 基于区块链的会话数据处理方法、装置、设备及介质
CN116455559A (zh) 软硬协同高速密码设备实现方法、装置及电子设备
US7373504B1 (en) Kernel-level cryptographic kernel interface
CN111163102B (zh) 数据处理方法及装置、网络设备、可读存储介质
CN116070240B (zh) 多芯片调用机制的数据加密处理方法及装置
US20230205715A1 (en) Acceleration framework to chain ipu asic blocks
CN115795522A (zh) 多核并发的高速密码引擎数据处理方法及装置
CN116628717A (zh) 数据处理方法、装置、电子设备及存储介质
WO2022095179A1 (zh) 数据处理系统、方法、电子设备及存储介质
CN113098685B (zh) 一种基于云计算的安全验证方法、装置及电子设备
CN111031055B (zh) 一种IPsec加速装置及实现方法
US20100217946A1 (en) Indirectly-accessed, hardware-affine channel storage in transaction-oriented dma-intensive environments

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