RapidIO driver virtualization method in multi-core time-sharing and partitioning system

CN114443305BActive Publication Date: 2025-09-12CHINESE AERONAUTICAL RADIO ELECTRONICS RES INST
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202210110361.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-01-29
Publication Date
2025-09-12
Estimated Expiration
2042-01-29

AI Technical Summary

Technical Problem

[0006]这就会极大的延长数据传输时间,降低数据带宽;增加了分区之间的数据关联,提高了分区之间的耦合度,从而降低了系统的安全性和可靠性;同时,也增加了软件设计的复杂度,增添了许多原本不必要的接口和关联

Benefits of technology

[0013] This invention abstracts and transforms RapidIO hardware resources for use by the T2080's four CPU cores. Each partitioned operating system running on a CPU can directly interact with RapidIO network data through the virtualized RapidIO interface, without having to worry about resource usage and release issues caused by concurrent access between multiple cores.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114443305B_ABST
    Figure CN114443305B_ABST
Patent Text Reader

Abstract

A RapidIO driver virtualization method for a multi-core time-sharing partition system performs the following configuration on a multi-core communication processor: a RapidIO driver resides in each partition, and interrupt response resources are encapsulated only in the first partition; each processor is allocated a DMA engine, a DIO data receiving interface, and a DIO data sending interface; these three hardware resources are shared by all partitions running on the processor core; and a set of bportals and qportals are shared between partitions of the same-core processor. These bportals and qportals are stored in a shared memory address as structured data and provided to the partitions of the same-core processor. This method can directly perform RapidIO network data interaction through the virtualized RapidIO interface, without considering the resource occupation and release issues caused by concurrent access between multiple cores.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention belongs to the field of communication in modern electronic systems, relates to embedded airborne communication in a multi-core system, and discusses a method for RapidIO driver virtualization in a multi-core time-sharing and partitioning system. Background Art

[0002] With the development of modern society, processor performance requirements are becoming increasingly demanding. Simply increasing the operating frequency of a single-core chip would generate excessive heat without delivering corresponding performance improvements, resulting in an unacceptable price-performance ratio. A multi-core processor integrates two or more complete computing units (cores) into a single processor. The advantage of multi-core is not frequency, but the ability to handle multiple tasks simultaneously. Theoretically, one core can only perform one task at a time; however, n cores can simultaneously perform n tasks. In a multi-core system, multiple processor units are allowed to run multiple threads simultaneously, achieving thread-level parallelism.

[0003] To better and more efficiently utilize multi-core processors, a time-sharing and partitioning system is generally adopted. Time-sharing refers to running multiple operating systems on a single processor, with each operating system using the CPU in a round-robin fashion. Partitioning refers to the independent and isolated addressing between operating systems, ensuring security and reliability. If one partition crashes, it will not affect the normal operation of other partitions.

[0004] The T2080 is a multi-core communications processor from NXP's QorIQ series. It utilizes four e6500 cores, offering lower power consumption and a higher cost-performance ratio. Its included RapidIO module not only provides powerful data processing capabilities but also adds flexible, versatile, and easily expandable data communication interfaces.

[0005] Currently, most RapidIO drivers are written for single-core CPUs and don't take into account multithreading and multitasking concurrency, or the preemption and release of RapidIO hardware resources. In practice, RapidIO resources are still encapsulated within a single processor. When other processor partitions want to exchange data over the RapidIO network, they typically use inter-core communication to notify the processor that owns the RapidIO resource that they want to send or receive RapidIO data. The processor then uses inter-core communication to transmit the received RapidIO data back to its own processor partition.

[0006] This will greatly extend data transmission time and reduce data bandwidth; increase data associations between partitions and improve the coupling between partitions, thereby reducing the security and reliability of the system; at the same time, it also increases the complexity of software design and adds many unnecessary interfaces and associations. Summary of the Invention

[0007] To address the above-mentioned issues, the present invention aims to provide a RapidIO driver virtualization method for a multi-core time-sharing and partitioned system. This method takes into account the concurrent access of threads between multiple cores and the preemption of RapidIO hardware resources. It enables each partition to directly interact with RapidIO hardware resources and send and receive RapidIO data. This method simplifies software design, improves processor efficiency, and lays a foundation for future research and exploration of software virtualization technology.

[0008] The object of the present invention is achieved through the following technical solutions:

[0009] A RapidIO driver virtualization method for a multi-core time-sharing and partitioning system performs the following configuration on a multi-core communication processor:

[0010] Configuration 1: A Rapidio driver resides in each partition. Interrupt response resources are encapsulated only in the first partition. The first partition receives doorbell and message data sent from the outside through interrupts and then distributes them to other partitions.

[0011] Configuration 2: Allocate an independent DMA engine to each processor. This DMA engine is shared by all partitions running on the processor core. In the rapidio-inbound register, allocate a DIO data receiving interface to each processor. This DIO data receiving interface is shared by all partitions on the processor core. In the rapidio-outbound register, allocate a DIO data sending interface to each processor. This DIO data sending interface is shared by all partitions on the processor core.

[0012] Configuration 3: A set of bportal and qportal is shared between the partitions of the same core processor. This set of bportal and qportal must first be initialized and then saved in the shared memory address in the form of structure data to be provided to the partitions of the same core processor.

[0013] This invention abstracts and transforms RapidIO hardware resources for use by the T2080's four CPU cores. Each partitioned operating system running on a CPU can directly interact with RapidIO network data through the virtualized RapidIO interface, without having to worry about resource usage and release issues caused by concurrent access between multiple cores. BRIEF DESCRIPTION OF THE DRAWINGS

[0014] Figure 1 This is a schematic diagram of the operation of multi-core time-sharing partitioning.

[0015] Figure 2 A diagram showing the RapidIO driver and interrupt response resource configuration.

[0016] Figure 3 This is a diagram of the virtual configuration for DIO data transmission and reception.

[0017] Figure 4 This is the relationship diagram of rman, bportal and qportal.

[0018] Figure 5 This is a diagram of the virtualization configuration of doorbell and msg. DETAILED DESCRIPTION

[0019] The present invention will be further described in detail below with reference to the accompanying drawings and embodiments.

[0020] RapidIO is an open interconnect technology standard designed to meet the needs of high-performance embedded systems. It is primarily used for internal interconnection within embedded systems, supporting chip-to-chip and board-to-board communication. It primarily uses three communication methods: DIO data transmission and reception, doorbell transmission and reception, and MSG data transmission and reception.

[0021] like Figure 1 This embodiment demonstrates a RapidIO driver virtualization method for a multi-core time-sharing partitioned system. This method is based on the T2080 chip as the hardware environment and the vxWorks 653_3.1.2 multi-core time-sharing partitioned operating system as the software framework. The T2080 chip's four core processors are running simultaneously, and multiple vxWorks 6.6 partitioned operating systems are running on a single core processor in a time-slice rotation manner. C0_n represents a partition running on CPU0; C1_n represents a partition running on CPU1.

[0022] Perform the following configuration on a multi-core communication processor:

[0023] Configuration 1: A RapidIO driver resides in each partition. The interrupt response resource (rapidIO int) is encapsulated only in the first partition c0_0. The first partition c0_0 receives the doorbell and msg data sent from the outside and then distributes it to other partitions.

[0024] like Figure 2 As shown in the figure, each partition running on the core processor interacts with the RapidIO hardware resources through the driver (RapidIO driver) residing in the partition and has the ability to directly send and receive RapidIO data.

[0025] Doorbell and MSG data reception is implemented via interrupts. Partitions run on the CPU in a time-sliced, round-robin fashion, making real-time response to interrupts impossible. Therefore, we encapsulate the interrupt response resource (rapidio int) in partition c0_0. Partition c0_0 then receives incoming doorbell and MSG data. Then, based on the needs of upper-layer applications, we design a data forwarding mechanism to distribute data to other partitions for processing.

[0026] Therefore, the functional goal of virtualization is to ensure that all partitions cn_n have the ability to receive and send DIO data, send doorbells, and send messages. Partition c0_0 acts as a unified agent to receive doorbell and message data sent from the outside. Because interrupt response resources (rapidio int) are only available to partition c0_0, resource preemption is avoided, so interrupt resources do not need to be virtualized.

[0027] Configuration 2: DIO data transmission and reception virtualization: allocate an independent DMA engine for each processor, and this DMA engine is shared by all partitions running on the processor core; in the rapidio-inbound register, allocate a DIO data receiving interface for each processor, and this DIO data receiving interface is shared by all partitions on the processor core; in the rapidio-outbound register, allocate a DIO data sending interface for each processor, and this DIO data sending interface is shared by all partitions on the processor core.

[0028] The hardware resources required for DIO transmission include a DMA channel, a set of rapidio-inbound registers, and a set of rapidio-outbound registers. Figure 3 As shown in the figure, because the T2080 chip has four core processors, only four DIO read and write operations can be performed at any one time. Partitions on the same core processor operate in a round-robin manner. Therefore, assigning a specific set of DIO data transmission and reception hardware resources to each core processor prevents resource conflicts between processor cores and partitions. Through the allocation and sharing of hardware resources shown in the figure, DIO functions in each partition are virtualized.

[0029] Partition sharing on CPU0: dma0, outbound window 5, inbound window 1;

[0030] Partition sharing on CPU1: dma1, outbound window 6, inbound window 2;

[0031] Partition sharing on CPU2: dma2, outbound window 7, inbound window 3;

[0032] Partition sharing on CPU3: dma3, outbound window 8, inbound window 4.

[0033] Configuration 3: Virtualization of doorbell and MSG data transmission: Each partition of the same core processor shares a set of bportals and qportals. This set of bportals and qportals must first be initialized and then provided to each partition of the same core processor in the form of structured data.

[0034] In T2080, the hardware resources required for doorbell and msg transmission are the same, including: RMAN (rapidio manager), a specific cache space, a bportal, and a qportal. Figure 4 As shown, bportal is responsible for allocating and releasing buffers from a specific space. qportal is responsible for assembling and sending data frames, responding to interrupts, and parsing received data. RMAN organically combines bportal and qportal, providing the buffer obtained from bportal to qportal as a frame buffer. It also defines the ID values ​​of various frame sequences used by qportal and assembles them into the transmission channel. It also connects the doorbell and msg receive interrupts as secondary sub-interrupts to the qportal receive interrupt.

[0035] See also Figure 5 In the virtualization process shown for doorbell and msg, because the addressing spaces of each partition are independent and isolated, a shared memory space is allocated to store bportal and qportal data to facilitate data transmission between partitions on the same core. For example, after partition c0_0 initializes bportal0 and qportal0, it copies them to shared memory address A. When another partition on the same core, such as c0_1, wants to send doorbell or msg data, it retrieves the bportal0 and qportal0 data from shared memory address A. In this way, through the use of shared memory, the doorbell and msg sending functions of each partition are virtualized.

[0036] Partition sharing on CPU0: shared memory address A, bportal0, qportal0;

[0037] Partition sharing on CPU1: shared memory address B, bportal9, qportal9;

[0038] Partition sharing on CPU2: shared memory address C, bportal8, qportal8;

[0039] Partition sharing on CPU3: shared memory address D, bportal7, qportal7.

[0040] The feasibility of this scheme is demonstrated through a set of experiments.

[0041] The RapidIO terminals of two T2080 modules are interconnected via a RapidIO switch, the CPS1848. The serial printer ports of the two T2080 modules are connected to a PC. One of the T2080 modules runs the VxWorks 653_3.1.2 multi-core time-sharing and partitioning operating system, with all four cores configured for partitioned operation. This T2080 module is referred to as a.t2080.

[0042] Cpu0: partition c0_0, partition c0_1;

[0043] Cpu1: partition c1_0, partition c1_1.

[0044] Cpu2: partition c2_0.

[0045] Cpu3: Partition c3_0.

[0046] The other T2080 module, referred to as b.t2080 below, runs the VxWorks 6.9 operating system and has DIO, doorbell, and MSG capabilities.

[0047] The dio sending and receiving test is shown in Table 1:

[0048] Table 1 dio test

[0049]

[0050] Test result Tx.A: indicates that the value written to b.t2080 by this partition is consistent with the value of the corresponding address on b.t2080 observed through the serial port.

[0051] Test result Tx.B: indicates that the value written to b.t2080 by this partition is consistent with the value of the corresponding address on b.t2080 observed through the serial port most of the time. However, if the CPU running the code has multiple partitions, DMA preemption may occasionally occur between partitions, causing data transmission failure.

[0052] Test result Rx.A: The data sent by b.t2080 through DIO is consistent with the data found on the a.t2080 partition.

[0053] The doorbell and msg sending tests are shown in Table 2:

[0054] Table 2 Doorbell and MSG test

[0055]

[0056]

[0057] Test result Tx.A: The data sent by each partition on a.t2080 through doorbell or msg is consistent with the doorbell or msg data received on b.t2080.

[0058] Partition c0_0 interrupt reception test:

[0059] After the b.t2080 module sends the doorbell or msg data, partition c0_0 running on a.t2080 displays an interrupt response message. The received data parsed by the interrupt service function is consistent with the data sent by b.t2080.

Claims

1. A RapidIO driver virtualization method in a multi-core time-sharing partition system, characterized in that The T2080 multi-core communication processor is used as the hardware environment and the vxWorks653_3.1.2 multi-core time-sharing and partitioning operating system is used as the software framework. The following configuration is performed on the T2080 multi-core communication processor: Configuration 1: A Rapidio driver resides in each partition. Interrupt response resources are encapsulated only in the first partition. The first partition receives doorbell and message data sent from the outside through interrupts and then distributes them to other partitions. Configuration 2: Allocate an independent DMA engine to each processor. This DMA engine is shared by all partitions running on the processor core. In the rapidio-inbound register, allocate an independent DIO data receiving interface to each processor. This DIO data receiving interface is shared by all partitions on the processor core. In the rapidio-outbound register, allocate an independent DIO data sending interface to each processor. This DIO data sending interface is shared by all partitions on the processor core. Configuration 3: A set of bportal and qportal are shared among the partitions of the same-core processor. This set of bportal and qportal must first be initialized and then saved in the shared memory address in the form of structure data to be provided to the partitions of the same-core processor.

Citation Information

Patent Citations

  • Transmission method for block communication network data sending

    CN106230738A

  • Rapid IO switching network

    CN109218231A