CN112256331A - 虚拟机指令解析加速方法、装置和计算机存储介质 - Google Patents

虚拟机指令解析加速方法、装置和计算机存储介质 Download PDF

Info

Publication number
CN112256331A
CN112256331A CN202011528597.9A CN202011528597A CN112256331A CN 112256331 A CN112256331 A CN 112256331A CN 202011528597 A CN202011528597 A CN 202011528597A CN 112256331 A CN112256331 A CN 112256331A
Authority
CN
China
Prior art keywords
instruction
host
read
virtual machine
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
Application number
CN202011528597.9A
Other languages
English (en)
Other versions
CN112256331B (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.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
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 Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN202011528597.9A priority Critical patent/CN112256331B/zh
Publication of CN112256331A publication Critical patent/CN112256331A/zh
Application granted granted Critical
Publication of CN112256331B publication Critical patent/CN112256331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种虚拟机指令解析加速方法、装置和计算机存储介质,该方法包括以下步骤:在宿主机增设加速硬件,并通过专用总线与宿主机的处理器连接;将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到加速硬件的物理地址;当虚拟机写数据时,宿主机的处理器发起专用总线写地址有效,虚拟机的当前待解析指令在加速硬件中转换为宿主机可执行的指令;当宿主机读数据时,宿主机的处理器发起专用总线读地址有效,从加速硬件中读出宿主机可执行的指令。解决了现有技术中软件解析指令操作字段的过程十分缓慢的问题。

Description

虚拟机指令解析加速方法、装置和计算机存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟机指令解析加速方法、装置和计算机存储介质。
背景技术
传统的虚拟机在模拟不同于宿主机架构的微处理器环境时,基本使用软件对客户机指令通过移位屏蔽等方法取出一条指令的操作码、操作数、操作寄存器等字段。例如,在x86或者arm架构上模拟RISC-V32微处理器,解析一条RISC-V32指令的操作字段至少需要拆分成6条宿主机指令,至多需要拆成16条宿主机指令,软件解析指令操作字段的过程十分缓慢。因此,现有技术中存在软件解析指令操作字段的过程十分缓慢的问题。
发明内容
本发明主要目的在于提供一种虚拟机指令解析加速方法、装置和计算机存储介质,旨在解决现有技术中软件解析指令操作字段的过程十分缓慢的问题。
为实现上述目的,本发明提供一种虚拟机指令解析加速方法,所述虚拟机指令解析加速方法包括以下步骤:
在宿主机增设加速硬件,并通过专用总线与宿主机的处理器连接;
将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到所述加速硬件的物理地址;
当虚拟机写数据时,宿主机的处理器发起所述专用总线写地址有效,虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令;
当宿主机读数据时,宿主机的处理器发起所述专用总线读地址有效,从所述加速硬件中读出所述宿主机可执行的指令。
在一实施例中,所述专用总线为AXI总线;所述加速硬件为硬件加速模块,所述硬件加速模块包括写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器。
在一实施例中,所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,包括:
当接收到写传输地址且写地址寄存器非满时,将接收到的写传输信息存入所述写地址寄存器;
当接收到写数据且写数据寄存器非满时,将接收到的待解析指令数据存入所述写数据寄存器;
判断是否接收到传输的最后一笔写数据;
当接收到所述最后一笔写数据时,从所述写地址寄存器读出当前传输的身份信息,返回写响应;
当所述写响应成功后,准备接收下一条写请求。
在一实施例中,还包括:
当未接收到所述最后一笔写数据时,继续接收当前传输的写数据。
在一实施例中,所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,还包括:
读取所述写数据寄存器中的待解析指令数据;
根据所述待解析指令数据的操作码判断指令类型。
在一实施例中,所述指令类型包括R指令类型、I指令类型、S指令类型、B指令类型、U指令类型、J指令类型;所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,包括:
当为R指令类型时,将指令字段拆分为6个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为I指令类型时,将指令字段拆分为5个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为S指令类型时,将指令字段拆分为5个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为B指令类型时,将指令字段拆分为5个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为U指令类型时,将指令字段拆分为3个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为J指令类型时,将指令字段拆分为3个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中。
在一实施例中,所述从所述加速硬件中读出所述宿主机可执行的指令,包括:
当接收到读请求且读地址寄存器非满时,将读传输信息存入所述读地址寄存器中;
当所述读地址寄存器非空时,从所述读地址寄存器读出一笔读传输信息;其中,所述读传输信息包括读传输长度、身份信息;
根据所述读传输长度从所述读数据信息寄存器中读出对应个数长度的数据;
返回读数据表明握手成功一次,统计读数据握手成功次数;
判断所述握手成功次数是否等于读传输长度;
当所述握手成功次数等于所述读传输长度时,当前读传输完成,准备接收下一条读请求。
在一实施例中,还包括:
当所述握手成功次数不等于所述读传输长度时,返回当前传输读数据。
为实现上述目的,本发明还提供一种虚拟机指令解析加速装置,所述装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的虚拟机指令解析加速程序,所述虚拟机指令解析加速程序被所述处理器执行时实现如上所述的虚拟机指令解析加速方法的各个步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有虚拟机指令解析加速程序,所述虚拟机指令解析加速程序被处理器执行时实现如上所述的虚拟机指令解析加速方法的各个步骤。
本发明提供的虚拟机指令解析加速方法、装置和计算机存储介质,在宿主机中增设一个加速硬件,通过专用总线将加速硬件与宿主机的处理器连接;软件将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到加速硬件的物理地址,按照该物理地址进行指令的解析工作;当虚拟机写入数据时,宿主机的处理器(核)发起专用总线写地址有效,经总线仲裁路由至加速硬件中,虚拟机的当前待解析指令在加速硬件中转换为宿主机可执行的指令,加速硬件由写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器组成,分别缓存专用总线的写地址、写数据、写响应、读地址和读数据信息,通过片选的方式快速完成写数据的解析转换;当宿主机读取数据时,宿主机的处理器(核)发起专用总线读地址有效,从加速硬件中读出所述宿主机可执行的指令。利用该加速硬件可以直接通过片选的方式快速实现对指令字段的解析,从而解决了现有技术中软件解析指令操作字段的过程十分缓慢的问题。
附图说明
图1为本发明实施例涉及的装置结构示意图;
图2为本发明虚拟机指令解析加速方法的第一实施例的流程示意图;
图3为加速硬件的示意图;
图4为本发明虚拟机指令解析加速方法的第二实施例的流程示意图;
图5为本发明第一实施例步骤S130的具体流程示意图;
图6为本发明第四实施例步骤S130的具体流程示意图;
图7为本发明虚拟机指令解析加速方法的第三实施例的流程示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:在宿主机中增设一个加速硬件,通过专用总线将加速硬件与宿主机的处理器连接;软件将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到加速硬件的物理地址,按照该物理地址进行指令的解析工作;当虚拟机写入数据时,宿主机的处理器(核)发起专用总线写地址有效,经总线仲裁路由至加速硬件中,虚拟机的当前待解析指令在加速硬件中转换为宿主机可执行的指令,加速硬件由写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器组成,分别缓存专用总线的写地址、写数据、写响应、读地址和读数据信息,通过片选的方式快速完成写数据的解析转换;当宿主机读取数据时,宿主机的处理器(核)发起专用总线读地址有效,从加速硬件中读出所述宿主机可执行的指令。利用该加速硬件可以直接通过片选的方式快速实现对指令字段的解析,从而解决了现有技术中软件解析指令操作字段的过程十分缓慢的问题。
作为一种实现方式,可以如图1所示,图1是本发明实施例方案涉及的装置结构示意图。
处理器1100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1100可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1200,处理器1100读取存储器1200中的信息,结合其硬件完成上述方法的步骤。
可以理解,本发明实施例中的存储器1200可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的 RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器 (Synchlink DRAM,SLDRAM) 和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本发明实施例描述的系统和方法的存储器1200旨在包括但不限于这些和任意其它适合类型的存储器。
对于软件实现,可通过执行本发明实施例所述功能的模块(例如过程、函数等)来实现本发明实施例所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
基于上述结构,提出本发明的实施例。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
参照图2,图2为本发明虚拟机指令解析加速方法的第一实施例,所述虚拟机指令解析加速方法包括以下步骤:
步骤S110,在宿主机增设加速硬件,并通过专用总线与宿主机的处理器连接。
在本实施例中,宿主机是虚拟机的物理基础,虚拟机存在于宿主机中,与宿主机共享使用硬件。宿主机的运行是虚拟机运行的前提与基础。虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。宿主机就是主机,这个概念是相对于子机而言的,比如安装有虚拟机的话,那么相对于虚拟机而言,正在使用的计算机就是宿主机,虚拟机是安装在主机上的,必须在主机上才能运行,主机就是一个“宿主”。指令指的是告诉计算机从事某一特殊运算的代码。
在宿主机增设加速硬件,参照图3,图3为加速硬件的示意图。加速硬件可优选为硬件加速模块10,其中由写地址寄存器(AW_FIFO)11、写数据寄存器(W_FIFO)12、写响应寄存器(B_FIFO)13、读地址寄存器(AR_FIFO)14、读数据信息寄存器(R_FIFO)15组成。然后通过专用总线将加速硬件与宿主机的处理器连接。总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。
专用总线可优选为AXI总线协议,AXI(Advanced eXtensible Interface)高级可拓展接口总线协议,是由ARM公司提出并发展起来的一种高速总线协议。AXI接口是AMBA(Advanced Microcontroller Bus Architecture)3.0规范中定义的第三代AMBA接口标准,该接口定位于高性能、高时钟频率的系统设计中,使其适合高速亚微米的互联。AXI总线协议具有下几个特点:独立的地址/控制和数据传输通道、使用字节选通支持不对齐的数据传输方式、在猝发传输方式中只需要首地址发出即可、支持多outstanding的地址访问方式和带乱序的响应、方便增加寄存器以支持时序收敛等。AXI总线协议不仅丰富了AMBA的总线协议要求,在高性能片上系统中得到广泛的应用。
步骤S120,将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到所述加速硬件的物理地址。
在本实施例中,软件将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到加速硬件即硬件加速模块的物理地址,按照该物理地址进行指令的解析工作。
步骤S130,当虚拟机写数据时,宿主机的处理器发起所述专用总线写地址有效,虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令。
在本实施例中,当虚拟机写入数据时,宿主机的处理器(核)发起专用总线(优选为AXI总线)写地址有效,经总线仲裁路由至加速硬件中,虚拟机的当前待解析指令在加速硬件中转换为宿主机可执行的指令,加速硬件由写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器组成,分别缓存专用总线的写地址、写数据、写响应、读地址和读数据信息,通过片选的方式快速完成写数据的解析转换。片选:单片机学科词汇,可以理解成选片。举个例子,有很多芯片挂在同一总线上(像电脑里很多外设都是挂在总线上),但我们有时候需要对其中特定的某个芯片进行数据、地址或命令的独立传输,此时,我们需要有一个信号来告诉挂在总线上的芯片们,这些数据、地址是传给哪个芯片的。那这样的话,其他芯片就会对这些信号“漠不关心”,而目标芯片就知道这些数据是传给自己的从而做出反应。这个信号就叫做片选信号CS(chip select)或SS(slave select)。片选这个词即由此而来,指通过设置跳线,利用与门、或门、非门的组合来决定到底是哪几部分进入工作状态。
步骤S140,当宿主机读数据时,宿主机的处理器发起所述专用总线读地址有效,从所述加速硬件中读出所述宿主机可执行的指令。
在本实施例中,当宿主机读取数据时,宿主机的处理器(核)发起专用总线(优选为AXI总线)读地址有效,从加速硬件中读出宿主机可执行的指令,加速硬件由写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器组成,分别缓存专用总线的写地址、写数据、写响应、读地址和读数据信息。
在本实施例提供的技术方案中,在宿主机中增设一个加速硬件,通过专用总线将加速硬件与宿主机的处理器连接;软件将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到加速硬件的物理地址,按照该物理地址进行指令的解析工作;当虚拟机写入数据时,宿主机的处理器(核)发起专用总线写地址有效,经总线仲裁路由至加速硬件中,虚拟机的当前待解析指令在加速硬件中转换为宿主机可执行的指令,加速硬件由写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器组成,分别缓存专用总线的写地址、写数据、写响应、读地址和读数据信息,通过片选的方式快速完成写数据的解析转换;当宿主机读取数据时,宿主机的处理器(核)发起专用总线读地址有效,从加速硬件中读出所述宿主机可执行的指令。利用该加速硬件可以直接通过片选的方式快速实现对指令字段的解析,从而解决了现有技术中软件解析指令操作字段的过程十分缓慢的问题。
参照图4,图4为本发明虚拟机指令解析加速方法的第二实施例,包括:
步骤S210,在宿主机增设加速硬件,并通过专用总线与宿主机的处理器连接。
步骤S220,将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到所述加速硬件的物理地址。
与第一实施例相比,第二实施例包含步骤S230,步骤S240,步骤S250,S260,S270,其他步骤与第一实施例相同,不再赘述。
步骤S230,当虚拟机写数据时,宿主机的处理器发起所述专用总线写地址有效;当接收到写传输地址且写地址寄存器非满时,将接收到的写传输信息存入所述写地址寄存器。
在本实施例中,当虚拟机写入数据时,宿主机的处理器(核)发起专用总线(优选为AXI总线)写地址有效,经总线仲裁路由至加速硬件中;加速硬件接收到写请求,当接收到写传输地址且写地址寄存器非满时,将接收到的写传输信息存入写地址寄存器中。
步骤S240,当接收到写数据且写数据寄存器非满时,将接收到的待解析指令数据存入所述写数据寄存器。
在本实施例中,加速硬件接收到写数据且写数据寄存器非满时,将接收到的待解析指令数据存入写数据寄存器中。
步骤S250,判断是否接收到传输的最后一笔写数据。
在本实施例中,判断是否接收到传输的最后一笔数据,加速硬件与宿主机的处理器通过AXI总线连接,通过宿主机的处理器是否继续发送写请求且加速硬件是否接收到最后一次发送的写请求来判断加速硬件是否接收到传输的最后一笔写数据。
步骤S260,当接收到所述最后一笔写数据时,从所述写地址寄存器读出当前传输的身份信息,返回写响应。
在本实施例中,当判断的结果为加速硬件接收到最后一笔写数据时,从写地址寄存器读出当前传输的身份(ID)信息,返回写响应到写响应寄存器。
步骤S270,当所述写响应成功后,准备接收下一条写请求。
在本实施例中,当写响应寄存器接收到写响应成功的信息后,加速硬件准备接收下一条写请求,继续接收AXI写传输。
步骤S280,当宿主机读数据时,宿主机的处理器发起所述专用总线读地址有效,从所述加速硬件中读出所述宿主机可执行的指令。
在本实施例提供的技术方案中,当虚拟机写入数据时,宿主机的处理器(核)发起专用总线(优选为AXI总线)写地址有效,经总线仲裁路由至加速硬件中;加速硬件接收到写请求,当接收到写传输地址且写地址寄存器非满时,将接收到的写传输信息存入写地址寄存器中;加速硬件接收到写数据且写数据寄存器非满时,将接收到的待解析指令数据存入写数据寄存器中;判断是否接收到传输的最后一笔数据,加速硬件与宿主机的处理器通过AXI总线连接,通过宿主机的处理器是否继续发送写请求且加速硬件是否接收到最后一次发送的写请求来判断加速硬件是否接收到传输的最后一笔写数据;
当判断的结果为加速硬件接收到最后一笔写数据时,从写地址寄存器读出当前传输的身份(ID)信息,返回写响应到写响应寄存器;当写响应寄存器接收到写响应成功的信息后,加速硬件准备接收下一条写请求,继续接收AXI写传输,保证了快速完成虚拟机写数据。
上述实施例中,还包括:
当未接收到所述最后一笔写数据时,继续接收当前传输的写数据。
在本实施例中,当判断的结果为加速硬件未接收到最后一笔写数据时,继续接收当前传输的写数据直至接收到当前传输的最后一笔写数据。
参照图5,根据上述在步骤S270之后,所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,还包括:
步骤S310,读取所述写数据寄存器中的待解析指令数据。
在本实施例中,读取写数据寄存器中的待解析指令数据,将待解析指令优选为RISC-V32指令,虚拟机在X86或者ARM架构上模拟RISC-V32微处理器,RISC-V是UC Berkeley大学设计的开源指令集,其设计之初是用于支持计算机体系结构研究和教学。后来他们希望 RISC-V 能成为一种对工业界开放的指令集,又对该指令集进行了扩展与优化,设计出一种实用的开源指令集。该指令集的特性如下:对学术界和工业界完全开源;可以直接在硬件上实现,而不仅仅用于模拟;可适用于任何微体系结构及工艺;包含标准的整数指令集和可选的扩展指令集;支持修订的 2008 IEEE754 浮点标准;支持丰富的用户级指令扩展,可设计专用指令;支持32-bit及64-bit的地址空间;支持高度并行的多核、众核处理器实现,包括异构多核处理器设计;支持虚拟化。
ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作AcornRISC Machine,是一个32位精简指令集(RISC)处理器架构。还有基于ARM设计的派生产品,重要产品包括Marvell的XScale架构和德州仪器的OMAP系列。ARM家族占比所有32位嵌入式处理器的75%,成为占全世界最多数的32位架构。ARM处理器广泛使用在嵌入式系统设计,低耗电节能,非常适用移动通讯领域。消费性电子产品,例如可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机),电脑外设(硬盘、桌上型路由器),甚至导弹的弹载计算机等军用设施。X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。
步骤S320,根据所述待解析指令数据的操作码判断指令类型。
在本实施例中,根据上述将待解析指令优选为RISC-V32指令,则根据待解析RISC-V32指令数据的操作码判断指令类型。
在本实施例提供的技术方案中,读取写数据寄存器中的待解析指令数据,将待解析指令优选为RISC-V32指令,则根据待解析RISC-V32指令数据的操作码判断指令类型。
参照图6,根据上述在步骤S320之后,所述指令类型包括R指令类型、I指令类型、S指令类型、B指令类型、U指令类型、J指令类型;所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,包括:
步骤S410,当为R指令类型时,将指令字段拆分为6个扩展字段;按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中。
在本实施例中,当根据操作码判断的结果为R指令类型时,则将RISC-V32指令拆解为6个扩展指令字段,ins0取ins[6:0],ins1取ins[11:7],ins2取ins[14:12],ins3取ins[19:15],ins4取ins[24:20],ins5取ins[31:25],全部无符号扩展至32bit位宽;按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中。
步骤S420,当为I指令类型时,将指令字段拆分为5个扩展字段;按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中。
在本实施例中,当根据操作码判断的结果为I指令类型时,则将RISC-V32指令拆解为5个扩展指令字段,ins0取ins[6:0],ins1取ins[11:7],ins2取ins[14:12],ins3取ins[19:15],ins4取ins[31:20],ins0~ins3无符号扩展至32bit位宽,ins4根据功能码做扩展无符号或者有符号扩展至32bit位宽;按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中。
步骤S430,当为S指令类型时,将指令字段拆分为5个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
在本实施例中,当根据操作码判断的结果为S指令类型时,则将RISC-V32指令拆分为5个扩展指令字段,ins0取ins[6:0],ins1取{ins[31:25],ins[11:7]},ins2取ins[14:12],ins3取ins[19:15],ins4取ins[24:20],ins1根据功能码做无符号或者有符号扩展至32bit位宽,其他按无符号扩展至32bit位宽;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
步骤S440,当为B指令类型时,将指令字段拆分为5个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
在本实施例中,当根据操作码判断的结果为B指令类型时,则将RISC-V32指令拆分为5个扩展指令字段,ins0取 ins[6:0],ins1取{ins[31],ins[7],ins[30:25],ins[11:8]},ins2取ins[14:12],ins3取ins[19:15],ins4取ins[24:20], ins1根据功能码做无符号或者有符号扩展至32bit位宽,其他按无符号扩展至32bit位宽;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
步骤S450,当为U指令类型时,将指令字段拆分为3个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
在本实施例中,当根据操作码判断的结果为U指令类型时,则将RISC-V32指令拆分为3个扩展指令字段,ins0取ins[6:0],ins1取ins[11:7],ins2取[31:12],全部无符号扩展至32bit位宽;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
步骤S460,当为J指令类型时,将指令字段拆分为3个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
在本实施例中,当根据操作码判断的结果为J指令类型时,则将RISC-V32指令拆分为3个扩展指令字段,ins0取ins[6:0],ins1取ins[11:7],ins3取{ins[31],ins[19:12],ins[20],ins[30:21]},全部无符号扩展至32bit位宽;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
在本实施例提供的技术方案中,根据判断结果为R指令类型时,将指令字段拆分为6个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令将存入读数据信息寄存器中;
根据判断结果为I指令类型时,将指令字段拆分为5个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中;根据判断结果为S指令类型时,将指令字段拆分为5个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中;根据判断结果为B指令类型时,将指令字段拆分为5个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中;根据判断结果为U指令类型时,将指令字段拆分为3个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中;根据判断结果为J指令类型时,将指令字段拆分为3个扩展字段;按宿主机指令格式转换为宿主机指令,解析后的指令存入读数据信息寄存器中。
参照图7,图7为本发明虚拟机指令解析加速方法的第三实施例,包括:
步骤S510,在宿主机增设加速硬件,并通过专用总线与宿主机的处理器连接。
步骤S520,将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到所述加速硬件的物理地址。
步骤S530,当虚拟机写数据时,宿主机的处理器发起所述专用总线写地址有效,虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令。
与第一实施例相比,第二实施例包含步骤S540,步骤S550,步骤S560,S570,S580,S590,S5100,其他步骤与第一实施例相同,不再赘述。
步骤S540,当宿主机读数据时,宿主机的处理器发起所述专用总线读地址有效;当接收到读请求且读地址寄存器非满时,将读传输信息存入所述读地址寄存器中。
在本实施例中,当宿主机读取数据时,宿主机的处理器(核)发起专用总线(优选为AXI总线)读地址有效;当加速硬件接收到读请求且读地址寄存器非满时,将读传输信息存储读地址寄存器中。
步骤S550,当所述读地址寄存器非空时,从所述读地址寄存器读出一笔读传输信息;其中,所述读传输信息包括读传输长度、身份信息。
在本实施例中,当上一笔读传输完成且读地址寄存器非空时,从读地址寄存器中读出一笔读传输信息;其中,读传输信息包括读传输长度、身份信息。
步骤S560,根据所述读传输长度从所述读数据信息寄存器中读出对应个数长度的数据。
在本实施例中,从读数据信息寄存器中读出拆分扩展后的指令字段,返回AXI读响应,根据读传输长度从读数据信息寄存器中读出对应个数长度的数据。
步骤S570,返回读数据表明握手成功一次,统计读数据握手成功次数。
在本实施例中,返回读数据表明握手成功一次,统计读数据握手成功次数,可利用计数器cnt来计数。
步骤S580,判断所述握手成功次数是否等于读传输长度。
在本实施例中,判断握手成功次数是否等于读传输长度,利用计数器cnt和读传输长度rlen来判断。
步骤S590,当所述握手成功次数等于所述读传输长度时,当前读传输完成,准备接收下一条读请求。
在本实施例中,当握手成功次数等于读传输长度时,表明当前读传输完成,加速硬件准备接收下一条读请求。
在本实施例提供的技术方案中,在本实施例中,当宿主机读取数据时,宿主机的处理器(核)发起专用总线(优选为AXI总线)读地址有效;当加速硬件接收到读请求且读地址寄存器非满时,将读传输信息存储读地址寄存器中;当上一笔读传输完成且读地址寄存器非空时,从读地址寄存器中读出一笔读传输信息;其中,读传输信息包括读传输长度、身份信息;从读数据信息寄存器中读出拆分扩展后的指令字段,返回AXI读响应,根据读传输长度从读数据信息寄存器中读出对应个数长度的数据;返回读数据表明握手成功一次,统计读数据握手成功次数,可利用计数器cnt来计数;当握手成功次数等于读传输长度时,表明当前读传输完成,加速硬件准备接收下一条读请求。保证了快速完成宿主机读数据,完成指令的快速解析。
上述实施例中,还包括:
当所述握手成功次数不等于所述读传输长度时,返回当前传输读数据。
在本实施例中,当握手成功次数等于读传输长度时,表明当前读传输未完成,则继续从读数据信息中读出扩展指令字段,返回AXI读响应,根据读传输长度从读数据信息寄存器中读出对应个数长度的数据,直至握手成功次数等于读传输长度。
本发明还提供一种虚拟机指令解析加速装置,所述装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的虚拟机指令解析加速程序,所述虚拟机指令解析加速程序被所述处理器执行时实现如上所述的虚拟机指令解析加速方法的各个步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有虚拟机指令解析加速程序,所述虚拟机指令解析加速程序被处理器执行时实现如上所述的虚拟机指令解析加速方法的各个步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种虚拟机指令解析加速方法,其特征在于,所述虚拟机指令解析加速方法包括以下步骤:
在宿主机增设加速硬件,并通过专用总线与宿主机的处理器连接;
将运行于宿主机的虚拟机中保存待解析指令的缓存区域地址映射到所述加速硬件的物理地址;
当虚拟机写数据时,宿主机的处理器发起所述专用总线写地址有效,虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令;
当宿主机读数据时,宿主机的处理器发起所述专用总线读地址有效,从所述加速硬件中读出所述宿主机可执行的指令。
2.如权利要求1所述的虚拟机指令解析加速方法,其特征在于,所述专用总线为AXI总线;所述加速硬件为硬件加速模块,所述硬件加速模块包括写地址寄存器、写数据寄存器、写响应寄存器、读地址寄存器、读数据信息寄存器。
3.如权利要求2所述的虚拟机指令解析加速方法,其特征在于,所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,包括:
当接收到写传输地址且写地址寄存器非满时,将接收到的写传输信息存入所述写地址寄存器;
当接收到写数据且写数据寄存器非满时,将接收到的待解析指令数据存入所述写数据寄存器;
判断是否接收到传输的最后一笔写数据;
当接收到所述最后一笔写数据时,从所述写地址寄存器读出当前传输的身份信息,返回写响应;
当所述写响应成功后,准备接收下一条写请求。
4.如权利要求3所述的虚拟机指令解析加速方法,其特征在于,还包括:
当未接收到所述最后一笔写数据时,继续接收当前传输的写数据。
5.如权利要求4所述的虚拟机指令解析加速方法,其特征在于,所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,还包括:
读取所述写数据寄存器中的待解析指令数据;
根据所述待解析指令数据的操作码判断指令类型。
6.如权利要求5所述的虚拟机指令解析加速方法,其特征在于,所述指令类型包括R指令类型、I指令类型、S指令类型、B指令类型、U指令类型、J指令类型;所述虚拟机的当前待解析指令在所述加速硬件中转换为宿主机可执行的指令,包括:
当为R指令类型时,将指令字段拆分为6个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为I指令类型时,将指令字段拆分为5个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为S指令类型时,将指令字段拆分为5个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为B指令类型时,将指令字段拆分为5个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为U指令类型时,将指令字段拆分为3个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中;
当为J指令类型时,将指令字段拆分为3个扩展字段,按宿主机指令格式转换为宿主机可执行的指令,解析后的指令存入读数据信息寄存器中。
7.如权利要求6所述的虚拟机指令解析加速方法,其特征在于,所述从所述加速硬件中读出所述宿主机可执行的指令,包括:
当接收到读请求且读地址寄存器非满时,将读传输信息存入所述读地址寄存器中;
当所述读地址寄存器非空时,从所述读地址寄存器读出一笔读传输信息;其中,所述读传输信息包括读传输长度、身份信息;
根据所述读传输长度从所述读数据信息寄存器中读出对应个数长度的数据;
返回读数据表明握手成功一次,统计读数据握手成功次数;
判断所述握手成功次数是否等于读传输长度;
当所述握手成功次数等于所述读传输长度时,当前读传输完成,准备接收下一条读请求。
8.如权利要求7所述的虚拟机指令解析加速方法,其特征在于,还包括:
当所述握手成功次数不等于所述读传输长度时,返回当前传输读数据。
9.一种虚拟机指令解析加速装置,其特征在于,所述装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的虚拟机指令解析加速程序,所述虚拟机指令解析加速程序被所述处理器执行时实现如权利要求1-8任一项所述的虚拟机指令解析加速方法的各个步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有虚拟机指令解析加速程序,所述虚拟机指令解析加速程序被处理器执行时实现如权利要求1-8任一项所述的虚拟机指令解析加速方法的各个步骤。
CN202011528597.9A 2020-12-22 2020-12-22 虚拟机指令解析加速方法、装置和计算机存储介质 Active CN112256331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011528597.9A CN112256331B (zh) 2020-12-22 2020-12-22 虚拟机指令解析加速方法、装置和计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011528597.9A CN112256331B (zh) 2020-12-22 2020-12-22 虚拟机指令解析加速方法、装置和计算机存储介质

Publications (2)

Publication Number Publication Date
CN112256331A true CN112256331A (zh) 2021-01-22
CN112256331B CN112256331B (zh) 2021-04-27

Family

ID=74225297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011528597.9A Active CN112256331B (zh) 2020-12-22 2020-12-22 虚拟机指令解析加速方法、装置和计算机存储介质

Country Status (1)

Country Link
CN (1) CN112256331B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115659290A (zh) * 2022-11-07 2023-01-31 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统架构、芯片及电子设备
WO2024074008A1 (zh) * 2022-10-08 2024-04-11 山东云海国创云计算装备产业创新中心有限公司 一种总线的安全防护方法、装置及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020129225A1 (en) * 1997-10-02 2002-09-12 U.S. Philips Corporation Processing device for executing virtual machine instructions
CN101145109A (zh) * 2007-11-01 2008-03-19 上海交通大学 利用中间指令集的二进制翻译方法
CN101295239A (zh) * 2007-04-26 2008-10-29 东信和平智能卡股份有限公司 Java卡虚拟机的指令执行方法
CN101523344A (zh) * 2006-09-27 2009-09-02 高通股份有限公司 用于解析同时所预测分支指令的方法及系统
US20160188479A1 (en) * 2012-02-02 2016-06-30 Intel Corporation Instruction and logic to test transactional execution status

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020129225A1 (en) * 1997-10-02 2002-09-12 U.S. Philips Corporation Processing device for executing virtual machine instructions
CN101523344A (zh) * 2006-09-27 2009-09-02 高通股份有限公司 用于解析同时所预测分支指令的方法及系统
CN101295239A (zh) * 2007-04-26 2008-10-29 东信和平智能卡股份有限公司 Java卡虚拟机的指令执行方法
CN101145109A (zh) * 2007-11-01 2008-03-19 上海交通大学 利用中间指令集的二进制翻译方法
US20160188479A1 (en) * 2012-02-02 2016-06-30 Intel Corporation Instruction and logic to test transactional execution status

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024074008A1 (zh) * 2022-10-08 2024-04-11 山东云海国创云计算装备产业创新中心有限公司 一种总线的安全防护方法、装置及介质
CN115659290A (zh) * 2022-11-07 2023-01-31 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统架构、芯片及电子设备

Also Published As

Publication number Publication date
CN112256331B (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
US10915774B2 (en) Bus translator
US20210182224A1 (en) Methods and systems for devices with self-selecting bus decoder
US8725961B2 (en) Systems, methods, and devices for configuring a device
EP3279788B1 (en) Access method, device and system for expanding memory
US6601126B1 (en) Chip-core framework for systems-on-a-chip
KR100271336B1 (ko) 주변구성요소 내부접속 버스상의 기능을 향상시키는 장치 및방법
CN112256331B (zh) 虚拟机指令解析加速方法、装置和计算机存储介质
CN109219805B (zh) 一种多核系统内存访问方法、相关装置、系统及存储介质
EP2513840A1 (en) Methods and apparatuses for reducing power consumption in a pattern recognition processor
EP2356573A1 (en) Systems and methods for managing endian mode of a device
CN104021099B (zh) 一种控制数据传输的方法及dma控制器
CN110806899B (zh) 一种基于指令扩展的流水线紧耦合加速器接口结构
CN116680214A (zh) 一种数据访问方法、可读存储介质及电子设备
CN115269454A (zh) 数据访问方法、电子设备和存储介质
CN107807888B (zh) 一种用于soc架构的数据预取系统及其方法
US8819378B2 (en) Data processing apparatus and method for performing memory transactions within such a data processing apparatus
JPH06149669A (ja) キャッシュデータ転送方式およびキャッシュデータ転送装置
Mallikarjunaswamy et al. Design of Advanced High-Performance Bus Master to Access a SRAM Block
CN116450570A (zh) 基于fpga的32位risc-v处理器及电子设备
JP2000137674A (ja) バースト転送メモリマップトレジスタ
JP2001229074A (ja) メモリ制御装置と情報処理装置及びメモリ制御チップ
Xie A design of PCI target interface based on FPGA
JP2006268487A (ja) エミュレーション装置及びエミュレーション方法、並びに、エミュレーションプログラム
JPH10207811A (ja) 入出力装置
JPS6126151A (ja) バツフア制御方式

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