摘要
在多核体系构架与并行计算时代,尤其是云计算的出现,虚拟化技术正迅速发展成为计算系统中的一项技术。虚拟化技术提供了系统层次之间的抽象化,并将资源以一个或多个虚拟的运行环境提供给用户。目前对虚拟化的研究工作主要关注于资源的分割,独立和封装等研究点,但主要在一个特定处理器体系结构以及处理器同构的前提下。
本项目提出一种新颖的M2M(Multiple ISAs applications to Multiple heter-ogeneous core,M2M)概念,将虚拟化系统分为多核异构层、虚拟化管理层、二进制翻译层、软件应用层四个层次,创新地在传统的虚拟化管理层上增加二进制翻译层,从而引入多个不同体系结构的应用程序,虚拟化管理器调度分配给硬件层引入的异构处理器。M2M的特性使虚拟化系统上层应用的灵活性大大增加,并且硬件异构化也使系统的效率有效提升。
本项目主要贡献点和创新点有:
多指令集体系应用虚拟环境。在应用层提供不同指令集体系构架的虚拟运行环境,以支持不同应用系统的应用程序。
软硬协同的二进制翻译层。在二进制翻译层,采用软硬协同的方式实现不同架构体系间的动态二进制翻译,提高硬件目标代码生成和运行的性能和灵活性。
设计实现了自主可扩展32位的SoC核。在多核异构层,设计了一个自主,可扩展,可配置的32位RISC处理器。基于此处理器核可配置实现多个RISC SoC平台(QS-I)。本项目在XUP Virtex-5和Digilent Nexys3 FPGA开发平台构建了多核异构层。
动态虚拟化管理。在虚拟化管理层,以轻量级的方式实现了系统资源与上层应用的管理。通过资源管理与任务调度动态分配或迁移运行任务。虚拟层的多个体系结构的应用程序(如x86和MIPS)可动态运行于异构的处理器核上(如处理能力不同的MIPS核)。
提供了系统库和运行程序。在软件应用层,为自主设计的QS-I平台提供完善的程序运行环境并设计了多样化的应用程序。项目完全自主地设计实现了系统库(如图形库、I/O库)以及典型的多样化应用软件,包括MIPS下的吃豆子游戏、X86下的推箱子游戏。
1.项目背景
在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念,实现虚拟化的方法不止一种,无论何种方法都是以不同层次的抽象来实现某一视角对应的效果。
1.1.项目需求
虚拟化技术正迅速发展成为计算系统中的一项技术,它提供了计算机系统层次之间的抽象层,并将资源分配以提供一个或多个虚拟的运行环境。现在对虚拟化的研究工作主要关注于资源的分割,独立和封装等研究点,但主要在一个特定处理器体系结构以及处理器同构的前提下。本项目提出一种新颖的M2M(Multiple ISAs applications to Multiple heterogeneous core,M2M)概念,将虚拟化系统分为多核异构层、虚拟化管理层、二进制翻译层、软件应用层四个层次,创新地在传统的虚拟化管理层上增加二进制翻译层,从而引入多个不同体系结构的应用程序,并在硬件层引入处理器的异构性。M2M的特性使虚拟化系统的上层应用的灵活性大大增加,并且硬件异构化也使系统的效率有效提升。
1.2.相关技术及其发展现状
本小节将介绍虚拟化以及动态翻译等技术的基本概念及其发展现状。
1.2.1.虚拟化技术的基本概念
虚拟化技术早可以追溯到上个世纪60年代,IBM公司的System 360系统对运行多个虚拟化系统进行了早的尝试。如今,虚拟化技术正迅速发展成为计算机系统中的一项技术,它提供了计算机系统层次之间的抽象层,并将资源分配以提供一个或多个虚拟的运行环境。
例如计算机系统可分为如图 1中所示的四个层次,由层的硬件自下而上分别是操作系统、用户库、应用程序。相应地,虚拟化技术可以针对各个层次进行抽象虚拟,从而为上一层的应用提供一个或多个虚拟环境。
图 1 计算机系统的四个层次
更具体地,虚拟化的层次可分为如图 2所示的指令集架构(ISA)、硬件抽象层(HAL)、操作系统、用户级库、应用程序的五个层次。图 2中还在各个层次下方列出了与其对应的产品。
图 2 虚拟化技术的五个层次及其相应产品
1.2.2.ISA层的虚拟化技术
ISA层的虚拟化是虚拟化技术中的一个重要内容,它的主要目的是为上层应用提供一个或多个不同于物理层实际处理器ISA的ISA抽象层,从而使得多个处理器架构的应用程序能够在同一个处理器上运行,如图 3所示。
图 3 ISA层的虚拟化
ISA层虚拟化所产生的异构性使处理器本身的性能得到提高[1]。同时,x86架构凭借其强大的软硬件支持,仍将在未来的处理器竞争中占有统治地位[2] 。本项目将重点实现不同ISA(x86和MIPS)之间的虚拟化技术,使该RISC处理器与x86架构达到二进制兼容。
1.2.3.动态翻译技术
在ISA层的虚拟化中,二进制翻译是重要的实现技术。二进制翻译是指把一中体系结构的机器码翻译成为另一种体系结构的机器码。通过二进制翻译,体系结构将成为一个软件层,它使得复杂的遗留体系结构能够用简单的硬件来实现,并且使得新颖的体系结构能够兼容原来的软件;此外,二进制翻译能够促进软件的优化[3]。
二进制翻译有两种主要的实现方法,一种是静态翻译,另一种动态翻译。
静态翻译把整个二进制可执行文件翻译成目标体系结构的指令集,它不需要先运行代码,所有的翻译都在编译时完成。所以静态翻译很难做到正确性,因为不是所有的代码都能在编译时被翻译器发现。比如,可执行文件的某些部分只能通过间接跳转才能到达,而间接跳转的目标值只有在运行时才知道。
动态翻译把一小段源体系结构的代码翻译成目标体系结构的代码并把这一小段生成的代码缓存起来。只有当代码被运行时才开始执行翻译。跳转指令会被指定到已经翻译和缓存起来的代码段上。
2.项目目标及开发平台选择
2.1.项目目标及内容
本项目提出一种新颖的M2M(Multiple ISAs applications to Multiple heter--og-eneous core,M2M)概念,在虚拟化管理层上增加二进制翻译层,从而引入多个不同体系结构的应用程序,并在硬件层引入处理器的异构性。如图 4所示的项目总体层次包括多核异构层、虚拟化管理层、二进制翻译层以及软件应用层。
图 4 项目总体层次
本项目目标是基于Xilinx公司的XUP Virtex-5和Digilent的Nexys3 FPGA开发板实现多个RISC SoC平台建立硬件多核异构层;选择MIPS和x86 ISA构架设计吃豆子、俄罗斯方块等典型应用程序构成多样化应用场景,实现M2M原型系统。
具体任务如下:
多核异构层
实现MIPS基本指令集,支持中断,含Cache的32位RISC CPU的RTL描述及其验证;
完成VGA(或DVI)、PS/2、SRAM、UART等外设的控制器模块描述及各个模块的验证;
引入Wishbone总线,集成SoC平台的各个模块;
基于不同FPGA的RISC SoC平台(分别在XUP Vritex-5和Digilent Nexys3上基于自主软核QS-I搭建了RISC SoC平台),构建多核异构层
虚拟化管理层
对多核异构层的资源管理;
对应用层多样化程序的调度分配
二进制翻译层
以软硬件协同方式完成RISC处理器在ISA层对x86的虚拟化,使得RISC处理器能够与多架构(如x86)二进制兼容;
动态翻译的软件架构设计
软件应用层
系统软件编写。系统软件包括外设的驱动程序及系统控制程序;
运行环境及库编写。设计实现系统库(如图形库、I/O库);
应用软件编写。应用软件包括多个SoC完整应用系统(x86和MIPS),如简单的游戏程序。
2.2.开发平台选择
本项目主要选用Xilinx公司的XUP Virtex-5开发平台及Digilent公司的Nexys3开发平台。
2.2.1.XUP Virtex-5 FPGA开发平台简介
XUP Virtex5是集成了OpenSparcT1开源微处理器的一个强大系统。其丰富的特色以及开发平台的通用性,使得该板卡非常适合在教学及研究的领域搭建各种系统。如数字设计、嵌入式系统、通讯系统、网络、视频及图像处理等各个领域。XUP Virtex-5实体图见图 5,其资源模块图如图 6所示。XUP Virtex-5含有丰富的片上资源以及完整的工业标准接口。
图 5 XUP Virtex-5 FPGA开发平台
图 6 XUP Virtex-5平台资源模块
本项目基于XUP Virtex-5 FPGA开发平台构建了基于自主软核QS-I的RISC SoC平台。
2.2.2.Digilent Nexys3 FPGA开发平台简介
Digilent公司的Nexys3平台是一个基于Xilinx Sparten-6 FPGA的完整,易用的数字电路开发平台。Sparten-6 FPGA为高性能逻辑设计做了充分优化,其片内的block RAM,时钟管理模块,DSP等资源为逻辑设计提供了必要硬件基础。Nexys3实体图见图 7,其平台资源模块如图 8。
图 7 Digilent Nexys3 FPGA开发平台
图 8 Digilent Nexys3平台资源模块
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。