1. Field of the Invention
Various embodiments of the present invention relate to use of one or more multicore processors for network communication (e.g., Ethernet-based communication) in control systems (e.g., vehicle control systems, medical control systems, hospital control systems, instrumentation control systems, test instrument control systems, energy control systems and/or industrial control systems). In one example, one or more systems may be provided with regard to use of multicore processor(s) for network communication (e.g., Ethernet-based communication) in control systems. In another example, one or more methods may be provided with regard to use of multicore processor(s) for network communication (e.g., Ethernet-based communication) in control systems.
In another example, the vehicle may be an aerospace vehicle (e.g., an airplane, an aircraft, and/or a space vehicle (e.g. space shuttle, rocket and/or satellite)). In another example, the vehicle may be a ground vehicle (e.g., a wheeled vehicle and/or a tracked vehicle). In another example, the vehicle may be a car or a truck or bus or a tank or a train or a boat or a ship or a submarine. In another example, the vehicle may be a manned vehicle. In another example, the vehicle may be an unmanned vehicle.
For the purposes of describing and claiming the present invention, the term “multicore processor” is intended to refer to a single computing component with two or more independent processors (called “cores”), which are the units that read and execute program instructions.
For the purposes of describing and claiming the present invention, the term “core” is intended to refer to a single one of the plurality of independent processors in a multicore processor.
For the purposes of describing and claiming the present invention, the term “deterministic network communication protocol” is intended to refer to a network communication protocol that provides predictable behavior along with guaranteed delivery of messages and/or data within a defined time period. In one example, such a deterministic network communication protocol may be the ARINC 664 Part 7 protocol. In another example, such a deterministic network communication protocol may be the Time Triggered Ethernet—SAE AS6802 protocol. In another example, such a deterministic network communication protocol may be the IEEE 1588 protocol.
For the purposes of describing and claiming the present invention, the term “ARINC 664 Part 7 protocol” is that named protocol as promulgated by ARINC as of the date of filing of the present application, as may be superseded by any duly promulgated successors or as may be amended by any duly promulgated amendments. The entire contents of the ARINC 664 Part 7 protocol is incorporated by reference herein in its entirety.
For the purposes of describing and claiming the present invention, the term “Time Triggered Ethernet—SAE AS6802 protocol” is that named protocol as promulgated by the SAE (Society of Automotive Engineers) as of the date of filing of the present application, as may be superseded by any duly promulgated successors or as may be amended by any duly promulgated amendments. The entire contents of the Time Triggered Ethernet—SAE AS6802 protocol is incorporated by reference herein in its entirety.
For the purposes of describing and claiming the present invention, the term “IEEE 1588 protocol” is that named protocol as promulgated by the IEEE (Institute of Electrical and Electronic Engineers) as of the date of filing of the present application, as may be superseded by any duly promulgated successors or as may be amended by any duly promulgated amendments. The entire contents of the IEEE 1588 protocol is incorporated by reference herein in its entirety.
For the purposes of describing and claiming the present invention, the term “network communication” is intended to refer to bi-directional communication between at least first and second endpoints, or nodes.
For the purposes of describing and claiming the present invention, the term “a memory” or “the memory” is intended to refer to a single physical memory device or a plurality of physical memory devices (e.g., a memory “bank”).
For the purposes of describing and claiming the present invention, the term “a memory location” or “the memory location” is intended to refer to a single memory address or a plurality of memory addresses (e.g., a plurality of non-contiguous memory addresses or a range of contiguous memory addresses).
For the purposes of describing and claiming the present invention, the term “shared memory” is intended to refer to memory that may be accessed (e.g., essentially simultaneously accessed) by multiple programs and/or cores with an intent to provide communication among them and/or to avoid redundant copies. Shared memory may include a single memory address or a plurality of memory addresses (e.g., a plurality of non-contiguous memory addresses or a range of contiguous memory addresses).
For the purposes of describing and claiming the present invention, the term “physical layer” is intended to refer to the first and lowest layer in the seven-layer OSI model of computer networking.
For the purposes of describing and claiming the present invention, the term “AFDX” (or “avionics full-duplex switched Ethernet”) is intended to refer to a data network for safety-critical applications that utilizes dedicated bandwidth while providing deterministic quality-of-service (AFDX is an implementation of ARINC 664 part 7).
For the purposes of describing and claiming the present invention, the term “TTEthernet” is intended to refer to a computer network technology marketed by TTTech Computertechnik AG for use in airplanes and other real-time applications.
For the purposes of describing and claiming the present invention, the term “FPGA” (or “field-programmable gate array”) is intended to refer to an integrated circuit designed to be configured by the customer or designer after manufacturing.
For the purposes of describing and claiming the present invention, the term “ASIC” (or “application-specific integrated circuit”) is intended to refer to an integrated circuit customized for a particular use, rather than intended for general purpose use.
For the purposes of describing and claiming the present invention, the term “DMA controller” (or “direct memory access controller”) is intended to refer to a mechanism that allows certain hardware subsystems within a computer to access system memory for reading and/or writing independently of the central processing unit (CPU).
For the purposes of describing and claiming the present invention, the term “DDR memory” (or “double data rate memory”) is intended to refer to a class of memory integrated circuits used in computers.
For the purposes of describing and claiming the present invention, the term “L2 Cache memory” is intended to refer to a class of memory integrated circuits used in computers.
2. Description of Related Art
Modern aerospace and ground vehicle control systems that use deterministic Ethernet-based communication protocols (such as, for example, ARINC 664 Part 7, Time Triggered Ethernet—SAE AS6802, and IEEE 1588) traditionally require either a dedicated single core processor, FPGA, or ASIC to manage the communication protocol (as distinct from any other processor(s) dedicated to the control system application itself).
In one embodiment of the present invention a multicore communication processor such as found in the Freescale Semiconductor™ QorIQ family is used as the multicore processor. In one example, control system application processing and various network communication protocol processing (e.g., Ethernet-based communication protocol processing) are integrated into a single multicore processor. The present invention eliminates the need for a dedicated single core processor, FPGA or ASIC device to manage the communication protocol. In another example, this reduces the size, weight and cost of the overall control system (as opposed to the above-mentioned traditional use of either a dedicated single core processor, FPGA or ASIC to manage the communication protocol). In another example, any desired multicore processor device or devices (e.g., with embedded Ethernet-based communication protocol processing) may be utilized.
In another embodiment a control system is provided, wherein the control system uses a multicore processor to perform network communication with a device. In this embodiment, the control system comprises a memory including at least a first memory location and a second memory location. The control system of this embodiment further comprises at least a first core for executing a control application, wherein the first core is part of the multicore processor, wherein the control application comprises a plurality of machine-readable instructions, wherein the machine-readable instructions of the control application are stored at the first memory location and are accessible (and/or used) by the first core. In addition, the control system of this embodiment further comprises at least a second core for executing a network communication with the device, wherein the second core is in operative communication with the first core, wherein the network communication conforms with a communication protocol, and wherein a plurality of machine-readable instructions for performing the network communication in conformance with the communication protocol are stored at the second memory location and are accessible (and/or used) by the second core. Moreover, in this embodiment, the network communication associated with the second core controls the device based at least in part upon at least one command from the control application associated with the first core.
In another embodiment a control system is provided, wherein the control system uses a multicore processor to perform network communication with a first device and a second device. The control system of this embodiment further comprises a shared memory. In addition, the control system of this embodiment further comprises at least a first core for executing a first control application, wherein the first core is part of the multicore processor, wherein the first control application comprises a plurality of machine-readable instructions, wherein the machine-readable instructions of the first control application are stored at a first memory location accessible (and/or used) by the first core, and wherein the shared memory is accessible (and/or used) by the first core. In addition, the control system of this embodiment further comprises at least a second core for executing a second control application, wherein the second core is part of the multicore processor, wherein the second control application comprises a plurality of machine-readable instructions, wherein the machine-readable instructions of the second control application are stored at a second memory location accessible (and/or used) by the second core; and wherein the shared memory is accessible (and/or used) by the second core. In addition, the control system of this embodiment further comprises at least a third core for executing a network communication, wherein the network communication conforms with a network communication protocol, wherein a plurality of machine-readable instructions for performing the network communication in conformance with the network communication protocol are stored at a third memory location accessible (and/or used) by the third core, wherein the shared memory is accessible (and/or used) by the third core. Moreover, in this embodiment: at least some network data associated with the network communication is made available in the shared memory by the third core; wherein each of the first core and the second core has access to at least some of the network communication data made available in the shared memory by the third core; wherein the first core is in operative communication with the third core and the network communication associated with the third core controls the first device based at least in part upon at least one command from the first control application associated with the first core; and wherein the second core is in operative communication with the third core and the network communication associated with the third core controls the second device based at least in part upon at least one command from the second control application associated with the second core
In another embodiment, a method for use in connection with a control system is provided, wherein the control system uses a multicore processor to perform network communication with a device, and wherein the multicore processor includes at least a first core and a second core. The method of this embodiment further comprises storing a plurality of machine-readable instructions for performing control of the device at a memory location to be used (and/or accessible) by the first core. In addition, the method of this embodiment further comprises selecting one of a plurality of network communication protocols for use with the control system. In addition, the method of this embodiment further comprises storing a plurality of machine-readable instructions for performing the network communication in conformance with the selected network communication protocol at a memory location to be used (and/or accessible) by the second core. Moreover, in this embodiment, the network communication associated with the second core is configured to control the device based at least in part upon at least one command from the plurality of machine-readable instructions for performing control of the device that are associated with the first core.
The drawings are provided for illustrative purpose only and do not necessarily represent practical examples of the present invention to scale. In the figures, same reference signs are used to denote the same or like parts.
Referring now to
Still referring to
Still referring to
Still referring to
Still referring to
Still referring to
Referring now to
Still referring to
In another example, each device may be selected from the group including (but not limited to): an engine, a motor, an actuator (e.g., a linear actuator), a control surface, a navigation device, a communication device.
Referring now to
Of course, the three cores shown in this
Still referring to
Referring now to
Of course, the three cores shown in this
Referring now to
In another example, shared memory may be L2 cache (e.g., that is physically located on and/or internal to the multicore processor). In another example, any desired memory type may be utilized (e.g., SDRAM, DDRI/2/3/4, MRAM, SRAM, etc.). In another example, any desired internal memory structure on or within the multicore processor may be utilized and/or any desired external memory type may be utilized.
As described herein, various embodiments of the present invention may provide for enhanced system performance (while reducing cost and complexity), via use of one core of a multicore processor to host one or more high speed communication buses (such as, for example, AFDX or TTEthernet). In one specific example, this architecture eliminates the need for a separate processor, FPGA, or ASIC and associated memory and devices to host the high speed communication bus(es).
As further described herein, one example of the present invention may provide for a multicore processor that utilizes one of the processor cores and one or more enhanced triple speed Ethernet controllers (eTSEC) on the multicore processor port(s) to manage one or more deterministic network communication protocols. In one specific example, by varying the software executed by one of the processor cores any desired deterministic network communication protocol (e.g., an ARINC 664 Part 7 protocol; a Time-Triggered Ethernet—SAE AS6802 protocol; or an IEEE 1588 protocol) can be accommodated by a single multicore processor hardware design. Such a design according to one example of the present invention may reduce the typically high costs of designing a new ASIC or FPGA for a given control system (and/or its derivatives) when a different network communication protocol (e.g., deterministic network communication protocol) is required. Further, such a design according to one example of the present invention may eliminate the need for a separate ASIC, FPGA, or microprocessor (as has traditionally been required to host a high speed communication bus such as AFDX or TTEthernet). Further still, such a design according to one example of the present invention may provide (relative to a traditional design): (a) reduced cost; (b) reduced board area; (c) reduced weight; (d) reduced complexity; (e) off-loading of processing from main processor; (f) enhanced upgrade capability; and/or (g) configurable data rate.
Further, as described herein, in various examples of the present invention a multicore processor (such as from the Freescale Semiconductor™ QorIQ family) may contain multiple built-in Ethernet controllers and DMA controllers that can be used to process high speed bus data independent from the designated “main” processor core(s).
In another example, in a design architecture according to an embodiment of the present invention the communication bus data may be exchanged (e.g., exchanged essentially instantly) between cores using shared memory such as DDR or L2 Cache.
In another example, in a design architecture according to an embodiment of the present invention a multicore processor may enable easy synchronization and/or arbitration of the communication bus between cores.
In other examples, the present invention may be applied to commercial use and/or to military use.
In other examples, the present invention may be applied in the context of avionics use.
In other examples, any desired number of multicore processors (e.g., one or a plurality) may be used in connection with a given vehicle.
In other examples, any desired number of buses (e.g., one or a plurality) may be used in connection with a given vehicle.
In other examples, any desired number of devices (e.g., one or a plurality) may be used in connection with a given vehicle.
In other examples, one core may control a plurality of devices and/or one vehicle control application may control a plurality of devices.
In other examples, any steps described herein may be carried out in any appropriate desired order.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. In one example, the computer readable medium may tangibly embody the program code in a non-transitory manner.
In another example, resident firmware (i.e., part of a multicore processor, as opposed to a separate FPGA firmware based device) may be utilized. In another example, a combined hardware and software solution that eliminates the need for external firmware may be provided.
In another example, any desired deterministic (e.g., Ethernet based) protocol(s) may be utilized as the network communication protocol(s). In another example, any desired non-deterministic (e.g., Ethernet based) protocol(s) may be utilized as the network communication protocol(s).
In another example, a system may be provided with a dedicated core to communicate with a device connected to a communication network (e.g., a deterministic communication network). In one specific example, this may be carried out by using appropriate software and/or appropriate architecture.
In another example, a system may be provided with a plurality of dedicated cores to communicate with a plurality of respective devices connected to a communication network (e.g., a deterministic communication network). In one specific example, this may be carried out by using appropriate software and/or appropriate architecture.
In another example, a method may provide a dedicated core to communicate with a device connected to a communication network (e.g., a deterministic communication network). In one specific example, this may be carried out by using appropriate software and/or appropriate architecture.
In another example, a method may provide a plurality of dedicated cores to communicate with a plurality of respective devices connected to a communication network (e.g., a deterministic communication network). In one specific example, this may be carried out by using appropriate software and/or appropriate architecture.
In another example, one or more nondeterministic protocols may be used and/or buffered by a deterministic core (that is, a core associated with (and/or dedicated to) one or more deterministic protocols).
In another example, a deterministic core (that is, a core associated with (and/or dedicated to) one or more deterministic protocols) may buffer (and/or help buffer) one or more other cores from the lack of network determinism in connection with one or more non-deterministic networks associated with such other core(s).
Computer program code for carrying out operations for aspects of the present invention may be written in any desired language or in any combination of one or more programming languages, including (but not limited to) an object oriented programming language such as Java, Smalltalk, C++ or the like or a procedural programming language, such as the “C” programming language or similar programming languages.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, systems and/or computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Further, these computer program instructions may be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other device(s) to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
Further, these computer program instructions may be loaded onto a computer, other programmable data processing apparatus, or other device(s) to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device(s) to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus or other device(s) provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowcharts and/or block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some implementations, the function(s) noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
It is noted that the foregoing has outlined some of the embodiments of the present invention. This invention may be used for many applications. Thus, although the description is made for particular arrangements and methods, the intent and concept of the invention is suitable and applicable to other arrangements and applications. It will be clear to those skilled in the art that modifications to the disclosed embodiments can be effected without departing from the spirit and scope of the invention. The described embodiments ought to be construed to be merely illustrative of some of the features and applications of the invention. Other beneficial results can be realized by applying the disclosed invention in a different manner or modifying the invention in ways known to those familiar with the art. Further, it is noted that all examples disclosed herein are intended to be illustrative, and not restrictive.