CN103778018B - 一种用于pcie虚拟化管理的方法 - Google Patents

一种用于pcie虚拟化管理的方法 Download PDF

Info

Publication number
CN103778018B
CN103778018B CN201410019482.5A CN201410019482A CN103778018B CN 103778018 B CN103778018 B CN 103778018B CN 201410019482 A CN201410019482 A CN 201410019482A CN 103778018 B CN103778018 B CN 103778018B
Authority
CN
China
Prior art keywords
virtual functions
virtual
function
serial number
offset
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.)
Expired - Fee Related
Application number
CN201410019482.5A
Other languages
English (en)
Other versions
CN103778018A (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.)
Shenzhen Aidibao Intelligent System Co ltd
Original Assignee
Shenzhen Addie Intelligent System 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 Shenzhen Addie Intelligent System Co Ltd filed Critical Shenzhen Addie Intelligent System Co Ltd
Priority to CN201410019482.5A priority Critical patent/CN103778018B/zh
Publication of CN103778018A publication Critical patent/CN103778018A/zh
Application granted granted Critical
Publication of CN103778018B publication Critical patent/CN103778018B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种用于PCIE虚拟化管理的方法,给出一个实现虚拟功能的请求序列号的分配方法,保证每个物理功能下面的虚拟功能都是不同的,能够根据请求序列号来直接完成在虚拟机之间的数据直接传输,这样就能满足不同的虚拟功能对应不同的虚拟机,保证每一个虚拟功能的请求序列号是独立的,通过请求序列号找到相应的配置空间,完成地址之间的转换。本发明给出一个实现虚拟功能的请求序列号的分配方法,能够根据请求序列号来直接完成于虚拟机之间的数据直接传输,从而降低系统处理数据的成本,提高数据处理的速度。

Description

一种用于PCIE虚拟化管理的方法
技术领域
本发明涉及一种用于PCIE虚拟化管理的方法,具体是指将物理PCIE设备虚拟成多个虚拟设备,每个虚拟设备与一个虚拟机相连的方法。属于IT技术领域。
背景技术
目前虚拟化技术在处理器体系机构中得到了越来越多的应用,虚拟化的本质就是把软件变成可以按需递交的动态服务,从而降低IT管理的成本,同时大大提升IT服务的响应速度。当前的虚拟化技术有:服务器虚拟化、CPU虚拟化、程序虚拟化、操作系统虚拟化、硬件虚拟化、完全虚拟、超虚拟化、桌面虚拟化、操作系统级的虚拟化等。
与PCIE相关的虚拟化技术是指在一个处理器系统中运行多个虚拟化处理器系统的技术,每个一个虚拟处理器都需要独立的虚拟运行环境,包括CPU、内存和外部设备。实现虚拟化有软件实现和硬件实现,软件实现主要是有虚拟机监控器(Virtual MachineMonitor)处理外部设备和虚拟机之间的通信,虚拟机监控器(VMM)来集中管理物理资源,包括对外部设备的管理(PCIE属于外部设备中重点关注的设备)。但是由于数据流通每次都要经过虚拟机监控器(VMM)的拦截和处理,所以造成数据传输速度的降低,例如:10G网卡通过虚拟机监控器(VMM)到达虚拟机的时候实际速度只能到达5G或6G,由于不是虚拟机直接和外部设备直接相连,造成外部设备的很多高级功能都不能正常的被虚拟机使用。硬件实现方式可以直接把一个外部设备直接与虚拟机相连,提高了传输速度和各方面性能。处理器需要为虚拟化环境设置专门的硬件来支持多个虚拟处理器系统在一个物理环境中的资源共享。这方面有IA(Intel Architecture)处理器的直接访问I/O的虚拟化技术(IntelVirtualization Technology for Directed I/O /VT-d)技术和AMD处理器的输入输出内存管理单元 (Input/Output Memory Management Unit)技术,这两种技术原理是都是类似的,都是将PCIE总线域地址转换为主机物理地址(Host Physical Address)地址,这个映射过程也被称为DMA映射(DMA Remapping)。但是这种直接分配(Direct Assignment)方式也有自身的缺点,一个PCIE设备在一个指定的时间内,只能与一个虚拟机1(Domain1)绑定,而其他虚拟机2(Domain2)访问与该虚拟机绑定的设备时,需要首先向虚拟机1(Domain1)发送申请,在虚拟机1(Domain1)从PCIE获得数据的时候,再传送给虚拟机2(Domain2),该方法增加了虚拟机访问PCIE设备的延迟,同时也干扰了其他虚拟机的正常工作。在处理器设置多个同样的设备,不仅增加了系统的成本,而且增加了处理器系统的规模,从而造成了不必要的浪费。
发明内容
本发明的目的在于克服上述不足,提供一种用于PCIE虚拟化管理的方法,保证每一个虚拟功能能够合理的分配请求序列号,降低系统处理数据的成本,提高数据处理的速度。
本发明的目的是这样实现的:一种用于PCIE虚拟化管理的方法,所述方法包括以下步骤:
步骤一、初始化,获取当前整个系统链路的拓扑结构和总线号、设备号、功能号并存入PCIE的寄存器中;
步骤二、分配新加入的第一个虚拟功能请求序列号
当有物理功能需要进行虚拟化时,为了给该物理功能下的每个虚拟功能分配一个独立的请求序列号,首先对第一个新加入的虚拟功能进行分配请求序列号,该虚拟功能的请求序列号通过在所属物理功能的请求序列号基础上加上一个偏移量,偏移量的值就是当前已分配请求序列号的虚拟功能的总数值;
步骤三、对需要进行虚拟化的物理功能下的所有虚拟功能进行请求序列号分配
根据偏移量可以得到第一个虚拟功能的请求序列号,然后该物理功能下面的剩下虚拟功能的虚拟功能在第一个虚拟功能的请求序列号的基础上依次加1,定义一个幅度值变量,幅度值表示需要增加的虚拟功能的值。
与现有技术相比,本发明的有益效果是:
本发明给出一个实现虚拟功能的请求序列号的分配方法,保证每个物理功能下面的虚拟功能都是具有不同的请求序列号,能够根据请求序列号来直接完成于虚拟机之间的数据直接传输,从而降低系统处理数据的成本,提高数据处理的速度。
附图说明
图1是本发明涉及的基于单根I/O虚拟化(SR-IOV)的PCIe设备中物理功能(PF)和虚拟功能(VF)的关系图。
图2是本发明中涉及的初始化功能的状态示意图。
图3是本发明中的进行请求序列号分配的示意图。
图4是本发明涉及的四个物理功能(PF)的虚拟功能(VF)产生的请求序列号(RID)的值。
具体实施方式
本发明提供一种用于PCIE虚拟化管理的方法,所述方法包括以下步骤:
步骤一、如图2所示,初始化,获取当前整个系统链路的拓扑结构和总线号、设备号、功能号并存入PCIE的寄存器中。
1)上电启动时,整个系统不知道各个外连设备的总线号、设备号、功能号,需要PCIE的配置软件进行总线/设备/功能的枚举。
配置软件一开始只知道总线0以及驻留在根复合体内Host-PCI桥下游的总线,首先从总线0设备0开始,枚举软件用配置读请求读取总线0可能存在的32个设备之中每一个设备的功能0的厂商ID,若返回一个有效的厂商ID(非FFFFh)表明该设备存在,然后继续探测改端口是什么样的端口,一共有七种:一、纯粹的PCIE端点。二、传统的PCIE端点。三、根复合体的根端口。四、交换开关上游端口。五、交换开关下游端口。六、PCIE到PCI的桥。七、PCI到PCIE的桥。根据图4可知探测到设备0之后,确定是根端点端口,然后将根复合体桥内寄存器(命它为A)三个总线号设定为
原级总线号寄存器=0;
次级总线号寄存器=1;
下属总线号寄存器=1;
探测到总线0下面的设备0之后,先纵向探测下面的总线号,后面的设备号等探测到最下面的端点之后继续探测。暂时完成总线0探测开始总线1探测。
总线1从设备0开始探测,若设备0存在,它为交换开关上游端口。将交换开关桥内寄存器(命为B)三个总线号设定为
原级总线号寄存器=1;
次级总线号寄存器=2;
下属总线号寄存器=2;
此时将桥A的下属总线寄存器也改为2;暂时完成总线1探测开始总线2探测。
总线2从设备0开始探测,若设备0存在,它为交换开关的下游端口。将交换开关桥内寄存器(命为C)三个总线号设定为
原级总线号寄存器=2;
次级总线号寄存器=3;
下属总线号寄存器=3;
此时将桥A、B的下属总线寄存器也改为3;暂时完成总线2探测开始总线3探测。
总线3从设备0开始探测,若设备0存在,为传统的PCIE端点,它可能含有多功能,对该设备0进行功能号扫描(根复合体和交换开关无多功能,不需要扫描功能号)。此时表示已经到了纵向的最底,下面无总线,总线3开始从设备1到设备32的扫描,若有,同设备0一样,扫描功能号,若无,总线3扫描结束,返回总线2开始从设备1的探测剩下的设备号,它为交换开关的下游端口。如图,扫描到设备1,将交换开关桥内寄存器(命为D)三个总线号设定为
原级总线号寄存器=2;
次级总线号寄存器=4;
下属总线号寄存器=4;
此时将桥A、B的下属总线寄存器也改为4;
总线4开始从设备0开始探测,若设备0存在,为传统的PCIE端点,此时表示已经到了最底,总线扫描结束,继续扫描剩下的设备号,全部完成之后,返回总线1开始设备1的探测剩下的设备号,从图可知,就设备0一个设备号,结束总线1的设备号扫描。之后返回总线0从设备1开始探测。然后同上,枚举软件会将整个链路的拓扑结构和总线号、设备号、功能号全部扫描出来存入PCIE的寄存器中。
步骤二、如图3所示,分配新加入的第一个虚拟功能请求序列号。
当有物理功能需要进行虚拟化时,为了给该物理功能下的每个虚拟功能分配一个独立的请求序列号,首先对第一个新加入的虚拟功能进行分配请求序列号,该虚拟功能的请求序列号通过在所属物理功能的请求序列号基础上加上一个偏移量(offset),偏移量的值就是当前已分配请求序列号的虚拟功能的总数值,它表示由于多出的虚拟功能(VF)占用了该位置原来的请求序列号(RID)的值,例如:图4总线3上外部设备含有1~4四个功能,功能1和功能2分别有四个虚拟功能,功能3和功能4分别有两个虚拟功能,初始化时假设功能1的偏移量(offset)为0,那么由于功能1的四个虚拟功能将功能2的请求序列号给占用了,需要将功能2在原有的基础上加上一个偏移量,因为功能1在原有的基础上增加了3个虚拟功能(功能1本身就代表一个物理功能),所以功能2的偏移量(offset)为3,同理功能3被前面占用,需要加上功能1和功能2增加的6个功能RID,所以功能3的偏移量(offset)为6,功能4的偏移量(offset)为9;偏移量(offset)就是由该功能之前的虚拟功能的数量决定的,因为当多出一个虚拟功能的时候就会占用本来原有的位置,所以需要加上一个偏移量(offset)给该事务分配一个新的请求序列号(RID)。寄存器存放偏移量(offset),在上电或者复位的时候,系统会从设备0功能0开始枚举,从此时开始计数,从设备的功能0开始,当增加一个虚拟功能的时候开始增加1,得到偏移量(offset),它为后面一个功能1的偏移量(offset),然后功能1若有虚拟功能,在此基础以此原有的偏移量(offset)的基础上继续加上虚拟功能的数值,存入偏移量(offset)寄存器中,提供给后面的功能号使用,以此类推,需要加上寄存器值等到一个新的请求序列号(RID),如果此时设备0功能1没有增加虚拟功能,则保持不变,如果增加虚拟功能,则需要加上额外虚拟功能的值(就是下面提到的幅度值),更新偏移量(offset)寄存器的值。
步骤三、如图3所示,对需要进行虚拟化的物理功能下的所有虚拟功能进行请求序列号分配。
根据偏移量(offset)可以得到第一个虚拟功能1(VF1)的请求序列号(RID),然后该物理功能(PF)下面的剩下虚拟功能的虚拟功能2、3…(VF)在虚拟功能1的请求序列号(RID)的基础上依次加1,定义一个幅度值(stride),幅度值表示增加的虚拟功能的值,表示一个加多少次1后结束。例如一个物理功能下面有两个虚拟功能,这就是在原有的基础上行增加1,幅度值(stride)为1,则表示只增加一个虚拟功能,只要在加上偏移量(offset)得到的请求序列号(RID)加一次1,表示该额外增加的虚拟功能的请求序列号(RID),如果幅度值(stride)为2,则要加两次1,表示额外多出两个虚拟功能的请求序列号(RID)。由上面的方法就可以为每个设备下面的每个功能的虚拟功能分配一个独立的请求序列号(RID)。
如图4所示,我们可以看一个有四个虚拟功能(VF)的物理功能(PF)产生的请求序列号(RID)的值,每一个物理功能(PF)下面对应的虚拟功能(VF)都有一个独立的请求序列号(RID)号。
功能0:初始时偏移量(offset)寄存器是0,功能0一共四个虚拟功能,多出三个虚拟功能(VF),幅度(stride)为3。
功能1:因为功能0多出三个虚拟功能(VF),偏移量(offset)寄存器的值更新为3。功能1一共四个虚拟功能,多出三个虚拟功能(VF),幅度(stride)为3。
功能2:因为功能0和功能1多出6个虚拟功能,偏移量(offset)寄存器的值更新为6。功能1一共四个虚拟功能,多出三个虚拟功能(VF),幅度(stride)为3。
功能3:因为功能0和功能1多出9个虚拟功能,偏移量(offset)寄存器的值更新为6。功能1一共两个虚拟功能,多出一个虚拟功能(VF),幅度(stride)为1。
此时偏移量(offset)寄存器的值更新为10。当该总线的下一个设备使用,或者下一个总线上的设备使用。

Claims (1)

1.一种用于PCIE虚拟化管理的方法,其特征在于所述方法包括以下步骤:
步骤一、初始化,获取当前整个系统链路的拓扑结构和总线号、设备号、功能号并存入PCIE的寄存器中;
步骤二、为新加入的第一个虚拟功能分配请求序列号;
当有物理功能需要进行虚拟化时,为了给该物理功能下的每个虚拟功能分配一个独立的请求序列号,首先对第一个新加入的虚拟功能进行分配请求序列号,该虚拟功能的请求序列号通过在所属物理功能的请求序列号基础上加上一个偏移量,偏移量的值就是当前已分配请求序列号的虚拟功能的总数值;
步骤三、对需要进行虚拟化的物理功能下的所有虚拟功能进行请求序列号分配;
根据偏移量可以得到第一个虚拟功能的请求序列号,然后该物理功能下面的剩下虚拟功能的虚拟功能在第一个虚拟功能的请求序列号的基础上依次加1,定义一个幅度值变量,幅度值表示需要增加的虚拟功能的值。
CN201410019482.5A 2014-01-16 2014-01-16 一种用于pcie虚拟化管理的方法 Expired - Fee Related CN103778018B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410019482.5A CN103778018B (zh) 2014-01-16 2014-01-16 一种用于pcie虚拟化管理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410019482.5A CN103778018B (zh) 2014-01-16 2014-01-16 一种用于pcie虚拟化管理的方法

Publications (2)

Publication Number Publication Date
CN103778018A CN103778018A (zh) 2014-05-07
CN103778018B true CN103778018B (zh) 2018-05-04

Family

ID=50570290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410019482.5A Expired - Fee Related CN103778018B (zh) 2014-01-16 2014-01-16 一种用于pcie虚拟化管理的方法

Country Status (1)

Country Link
CN (1) CN103778018B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI556174B (zh) * 2014-03-05 2016-11-01 威盛電子股份有限公司 虛擬功能分配系統、方法及其管理主機
CN105183533B (zh) * 2014-05-26 2018-09-28 华为技术有限公司 一种总线虚拟化的方法、装置及系统
US9875208B2 (en) * 2014-10-03 2018-01-23 Futurewei Technologies, Inc. Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
CN106484492A (zh) * 2015-08-28 2017-03-08 杭州华为数字技术有限公司 配置接口的方法和系统
CN105354167B (zh) * 2015-11-17 2018-01-19 无锡江南计算技术研究所 一种pci桥次级总线复位的缓冲排空方法
CN106776382B (zh) * 2016-12-02 2020-03-17 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN108390809B (zh) * 2017-02-03 2020-12-11 北京华耀科技有限公司 一种基于vf混杂模式的桥接方法及其系统
CN109542581B (zh) * 2017-09-22 2020-10-13 深圳市中兴微电子技术有限公司 一种设备共享方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1973274A (zh) * 2004-06-30 2007-05-30 英特尔公司 多客户机间共享物理设备
CN102722458A (zh) * 2012-05-29 2012-10-10 中国科学院计算技术研究所 一种用于多根共享系统的i/o重映射方法和装置
CN102792286A (zh) * 2010-03-16 2012-11-21 超威半导体公司 虚拟化处理系统中的地址映射

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1973274A (zh) * 2004-06-30 2007-05-30 英特尔公司 多客户机间共享物理设备
CN102792286A (zh) * 2010-03-16 2012-11-21 超威半导体公司 虚拟化处理系统中的地址映射
CN102722458A (zh) * 2012-05-29 2012-10-10 中国科学院计算技术研究所 一种用于多根共享系统的i/o重映射方法和装置

Also Published As

Publication number Publication date
CN103778018A (zh) 2014-05-07

Similar Documents

Publication Publication Date Title
CN103778018B (zh) 一种用于pcie虚拟化管理的方法
CN108268412B (zh) 用于扩展外围组件互连高速结构的系统和方法
US8103810B2 (en) Native and non-native I/O virtualization in a single adapter
US7913024B2 (en) Differentiating traffic types in a multi-root PCI express environment
US8751713B2 (en) Executing virtual functions using memory-based data in a PCI express SR-IOV and MR-IOV environment
CN102819447B (zh) 一种用于多根共享系统的直接i/o虚拟化方法和装置
EP4089544A1 (en) Method and apparatus for extending pcie domain
US8972611B2 (en) Multi-server consolidated input/output (IO) device
CN105993009A (zh) 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
CN103581324B (zh) 一种云计算资源池系统及其实现方法
US20100165874A1 (en) Differentiating Blade Destination and Traffic Types in a Multi-Root PCIe Environment
CN108027642A (zh) 用于隔离输入/输出计算资源的系统和方法
JP2016530618A (ja) 周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理
TW201331763A (zh) 設置隔離虛擬空間的方法與裝置
JP2002024192A (ja) 計算機資源分割装置および資源分割方法
CN102650976A (zh) 一种支持单根io虚拟化用户级接口控制装置及其方法
CN108959127A (zh) 地址转换方法、装置及系统
CN102541805A (zh) 一种基于共享内存的多处理器通信方法及其实现装置
EP3159802B1 (en) Sharing method and device for pcie i/o device and interconnection system
JP2012073660A (ja) I/oアダプタ制御方法、計算機及び仮想計算機生成方法
CN105786732B (zh) 数据访问方法及装置
Markussen et al. Flexible device sharing in pcie clusters using device lending
US9218219B2 (en) Managing virtual functions of an input/output adapter
CN105786398B (zh) 存储器映射方法和存储器映射系统
CN103455438A (zh) 一种内存管理方法及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20180408

Address after: 518000 Guangdong city of Shenzhen province Qianhai Shenzhen Hong Kong cooperation zone before Bay Road No. 1 building 201 room A

Applicant after: SHENZHEN AIDIBAO INTELLIGENT SYSTEM CO.,LTD.

Address before: 214432 Jiangyin, Wuxi, Chengjiang street, new road, No., No. 9

Applicant before: Jiangsu Huali Networks Engineering Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180504

CF01 Termination of patent right due to non-payment of annual fee