APPARATUS AND MECHANISM TO SUPPORT MULTIPLE TIME DOMAINS IN A SINGLE SOC FOR TIME SENSITIVE NETWORK
20220368444 · 2022-11-17
Inventors
- Chunhua Hu (Plano, TX, US)
- Venkateswar Reddy Kowkutla (Allen, TX, US)
- Eric HANSEN (McKinney, TX, US)
- Denis BEAUDOIN (Rowlett, TX, US)
- Thomas Anton Leyrer (Geisenhausen, DE)
Cpc classification
H04J3/0641
ELECTRICITY
H04L7/0083
ELECTRICITY
H04J3/0667
ELECTRICITY
International classification
Abstract
A system on a chip (SOC) is configured to support multiple time domains within a time-sensitive networking (TSN) environment. TSN extends Ethernet networks to support a deterministic and high-availability communication on Layer 2 (data link layer of open system interconnect “OSI” model) for time coordinated capabilities such as industrial automation and control applications. Processors in a system may have an application time domain separate from the communication time domain. In addition, each type time domain may also have multiple potential time masters to drive synchronization for fault tolerance. The SoC supports multiple time domains driven by different time masters and graceful time master switching. Timing masters may be switched at run-time in case of a failure in the system. Software drives the SoC to establish communication paths through a sync router to facilitate communication between time providers and time consumers. Multiple time sources are supported.
Claims
1. A method comprising: receiving a request from an endpoint; and based on the request: communicatively coupling the endpoint to a communication time domain source of a set of communication time domain sources; and concurrently, communicatively coupling the endpoint to an application time domain source of a set of application time domain sources.
2. The method of claim 1, wherein the endpoint is a first endpoint, the method further comprising: communicatively coupling a second endpoint to the communication time domain source; and communicatively coupling the second endpoint to the first endpoint such that the second endpoint is the application time domain source.
3. The method of claim 1 further comprising concurrently coupling the endpoint to a plurality of sources of the set of application time domain source.
4. The method of claim 1 further comprising: generating a bit mask based on the request; and storing the bit mask in a register, wherein the communicatively coupling of the endpoint to the communication time domain source and the communicatively coupling of the endpoint to the application time domain source are based on the bit mask stored in the register.
5. The method of claim 1, wherein: the communication time domain source is a first communication time domain source; and the method further comprises: determining a failure associated with the communication time domain source; and based on the failure, communicatively coupling the endpoint to a second communication time domain source of the set of communication time domain sources.
6. The method of claim 5, wherein: the request is a first request; and the method further comprises receiving a second request that specifies to communicatively couple the endpoint to the second communication time domain source.
7. The method of claim 1, wherein: the application time domain source is a first application time domain source; and the method further comprises: determining a failure associated with the application time domain source; and based on the failure, communicatively coupling the endpoint to a second application time domain source of the set of application time domain sources.
8. The method of claim 1, wherein the set of communication time domain sources includes at least one of a global positioning satellite time source, an industrial Ethernet time source, or a peripheral component interconnect express time source.
9. A circuit device comprising: a register; a set of communication domain inputs configured to couple to a set of communication time domain sources; an application domain input configured to couple to an application time domain source; an output configured to couple to an endpoint; and a crossbar coupled to the register, the set of communication domain inputs, the application domain input and the output, and configured to couple the endpoint to a first communication time domain source of the set of communication time domain sources and to the application time domain source based on the register.
10. The circuit device of claim 9, wherein: the output is a first output; the endpoint is a first endpoint; the circuit device further comprises a second output coupled to the crossbar and configured to couple to a second endpoint; the crossbar is further configured to couple the second endpoint to the first communication time domain source; and the application domain input is configured to couple to the second endpoint such that the second endpoint is the application time domain source.
11. The circuit device of claim 9, wherein: the application domain input is a first application domain input; the application time domain source is a first application time domain source; the circuit device further comprises a second application domain input coupled to the crossbar and configured to couple to a second application time domain source; and the crossbar is further configured to couple the endpoint to the first application time domain source and the second application time domain source concurrently.
12. The circuit device of claim 9, wherein the set of communication time domain sources includes at least one of a global positioning satellite time source, an industrial Ethernet time source, or a peripheral component interconnect express time source.
13. A device comprising: a register; a set of inputs that includes a first input configured to couple to a first time source and a second input configured to couple to a second time source; a set of outputs; and a set of programmable logic gates coupled to the set of inputs and the set of outputs and configured to: provide a first communication path between the first input and a first subset of the set of outputs based on a value stored in the register; and provide a second communication path between the second input and a second subset of the set of outputs based on the value stored in the register.
14. The device of claim 13, wherein the first time source is selected from the group consisting of global positioning satellite, industrial Ethernet, and peripheral component interconnect express.
15. The device of claim 13, wherein the first time source is associated with a communication time domain and the second time source is associated with an application time domain.
16. The device of claim 13, wherein the first time source and the second time source are associated with different application time domains.
17. The device of claim 13, further comprising a memory storing program code that, when executed, causes the device to adjust the value stored in the register to cause the set of programmable logic gates to reconfigure the first communication path.
18. The device of claim 17, wherein the program code, when executed, further causes the device to adjust the value responsive to a request from a device associated with an output of the first subset of the set of outputs.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] For a detailed description of various examples, reference will now be made to the accompanying drawings, in which:
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
DETAILED DESCRIPTION
[0018] In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the examples disclosed herein. It will be apparent, however, to one skilled in the art that the disclosed example implementations may be practiced without these specific details. In other instances, structure and devices are shown in block diagram form in order to avoid obscuring the disclosed examples. Moreover, the language used in this disclosure has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resorting to the claims being necessary to determine such inventive subject matter. Reference in the specification to “one example” or to “an example” means that a particular feature, structure, or characteristic described in connection with the examples is included in at least one implementation.
[0019] The term “computing system” is generally taken to refer to at least one electronic computing device that includes, but is not limited to, a single computer, virtual machine, virtual container, host, server, laptop, and/or mobile device or to a plurality of electronic computing devices working together to perform the function described as being performed on or by the computing system.
[0020] As used herein, the term “medium” refers to one or more non-transitory physical media that together store the contents described as being stored thereon. Examples may include non-volatile secondary storage, read-only memory (ROM), and/or random-access memory (RAM).
[0021] As used herein, the terms “application” and “function” refer to one or more computing modules, programs, processes, workloads, threads and/or a set of computing instructions executed by a computing system. Example implementations of applications and functions include software modules, software objects, software instances and/or other types of executable code. Note, the use of the term “application instance” when used in the context of cloud computing refers to an instance within the cloud infrastructure for executing applications (e.g., for a customer in that customer's isolated instance).
[0022] A typical SoC has multiple hardware components, including but not limited to:
[0023] a microcontroller, microprocessor or digital signal processor (DSP) core—multiprocessor SoCs (MPSoC) having more than one processor core;
[0024] memory blocks including a selection of ROM, RAM, EEPROM and/or flash memory;
[0025] timing sources including oscillators and phase-locked loops;
[0026] peripherals including counter-timers, real-time timers and power-on reset generators;
[0027] external interfaces, including industry standards such as USB, FireWire, Ethernet, USART, SPI;
[0028] analog interfaces including ADCs and DACs; and
[0029] An SoC includes both the hardware, described above, and the software controlling the microcontroller, microprocessor or DSP cores, peripherals and interfaces. In electronic design, a semiconductor intellectual property (“IP”) core (often referred to as an “IP core,” or “IP block”) references a reusable unit of logic, cell, or integrated circuit (commonly called a “chip”) layout and design. It gets its name because it may refer to information that is the legal Intellectual Property of a particular party.
[0030] In the context of this disclosure, IP will refer to the logic and/or metadata associated with design specifications of a chip or System on a Chip (“SoC”). In this disclosure a set of IP referred to as a “sync router” will be explained. The sync router IP may be implemented as an event router on an SoC to control communication paths between time sources and time consumers for either an application time domain or a communication time domain (or multiples thereof). The sync router may also include control software to update registers to configure programmable logic gates to accomplish the appropriate communication paths to support the multiple time domains and allow applications and endpoints to individually determine their appropriate domain master and facilitate transition to a new master as required for redundancy. Applications executing on processor cores of this SoC, other SoC, or external endpoints may be configured to communicate with the control software of the sync router to set or adjust communication paths. From the sync router point of view, the time master sends time information to the sync router and the time slave receives timing information from the sync router.
[0031] Referring now to
[0032] Networked computing infrastructure 100 also includes cellular network 103 for use with mobile communication devices. Mobile cellular networks support mobile phones and many other types of mobile devices such as laptops etc. Mobile devices in networked computing infrastructure 100 are illustrated as mobile phone 104D, laptop 104E, and tablet 104C. A mobile device such as mobile phone 104D may interact with one or more mobile provider networks as the mobile device moves, typically interacting with a plurality of mobile network towers 120, 130, and 140 for connecting to the cellular network 103. Although referred to as a cellular network in
[0033]
[0034] In
[0035] To utilize computing resources within backend cloud or server resources platform/network 110, network operators may choose to configure data centers 112 using a variety of computing infrastructures. In one example, one or more of data centers 112 are configured using a multi-tenant cloud architecture such that a single server instance 114, which can also be referred to as an application instance, handles requests and serves more than one customer. In some cases, data centers with multi-tenant cloud architecture commingle and store data from multiple customers, where multiple customer instances are assigned to a single server instance 114. In a multi-tenant cloud architecture, the single server instance 114 distinguishes between and segregates data and other information of the various customers. For example, a multi-tenant cloud architecture could assign a particular identifier for each customer in order to identify and segregate the data from each customer. In a multitenancy environment, multiple customers share the same application, running on the same operating system, on the same hardware, with the same data-storage mechanism. The distinction between the customers is achieved during application design, thus customers do not share or see each other's data. This is different than virtualization where components are transformed, enabling each customer application to appear to run on a separate virtual machine. Generally, implementing a multi-tenant cloud architecture may have a production limitation, such as the failure of a single server instance 114 causing outages for all customers allocated to the single server instance 114.
[0036] In another example, one or more of the data centers 112 are configured using a multi-instance cloud architecture to provide every customer its own unique customer instance. For example, a multi-instance cloud architecture could provide each customer instance with its own dedicated application server and dedicated database server. In other examples, the multi-instance cloud architecture could deploy a single server instance 114 and/or other combinations of server instances 114, such as one or more dedicated web server instances, one or more dedicated application server instances, and one or more database server instances, for each customer instance. In a multi-instance cloud architecture, multiple customer instances could be installed on a single physical hardware server where each customer instance is allocated certain portions of the physical server resources, such as computing memory, storage, and processing power. By doing so, each customer instance has its own unique software stack that provides the benefit of data isolation, relatively less downtime for customers to access backend cloud or server resources platform/network 110, and customer-driven upgrade schedules.
[0037]
[0038] As illustrated in
[0039]
[0040] Persons of ordinary skill in the art are aware that software programs may be developed, encoded, and compiled in a variety of computing languages for a variety of software platforms and/or operating systems and subsequently loaded and executed by processor 205. In one instance, the compiling process of the software program may transform program code written in a programming language to another computer language such that the processor 205 is able to execute the programming code. For example, the compiling process of the software program may generate an executable program that provides encoded instructions (e.g., machine code instructions) for processor 205 to accomplish specific, non-generic, particular computing functions.
[0041] After the compiling process, the encoded instructions may then be loaded as computer executable instructions or process steps to processor 205 from storage 220, from memory 210, and/or embedded within processor 205 (e.g., via a cache or on-board ROM). Processor 205 may be configured to execute the stored instructions or process steps in order to perform instructions or process steps to transform the computing device into a non-generic, particular, specially programmed machine or apparatus. Stored data, e.g., data stored by a storage device 220, may be accessed by processor 205 during the execution of computer executable instructions or process steps to instruct one or more components within the computing device 200.
[0042] A user interface (e.g., output devices 215 and input devices 230) can include a display, positional input device (such as a mouse, touchpad, touchscreen, or the like), keyboard, or other forms of user input and output devices. The user interface components may be communicatively coupled to processor 205. When the output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD) or a cathode-ray tube (CRT) or light emitting diode (LED) display, such as an OLED display. Persons of ordinary skill in the art are aware that the computing device 200 may include other components well known in the art, such as sensors, powers sources, and/or analog-to-digital converters, not explicitly shown in
Overview of Using a Sync Router in a TSN
[0043] The following few paragraphs present an overview of using a sync router SoC in multiple different use cases for coordination of devices (endpoints, slaves and masters) within a TSN. Certain capabilities of the sync router IP will be discussed within the context of these implementations as illustrated in
[0044] In one implementation, a sync router may be configured to include at least the following hardware mechanisms: 1) A centralized sync router to allow each time sync slave to independently choose its time sync master sources. The time sync master can come from various sources, such as GPS plus from the pin, master time information from another time sync peripheral, or it can be an independent clock source. 2) A distributed local time to each peripheral, which may individually compensate both on frequency and phase shift to its time master. 3) A free running local counter, which may distribute its counter value to all the modules in an SoC as a common reference for all the tasks running in that SoC. The free running local counter may not only be used for software scheduling, but may also be used for time stamp events across one or more SoCs. In this manner it is possible to provide a common reference to all the time domains, so the difference among time domains (frequency and phase) can be calculated. Also, the frequency and phase difference between master time and slave time may also be calculated. Because a master timer and a slave timer may use different oscillators, the slave oscillator may have a frequency drift due to environmental (e.g., humidity or temperature) or other reasons. The phase difference can be further contributed to because of varied latency paths to propagate master time. Accordingly, the slave time may require constant adjustment to make sure it has its frequency and phase locked with the master time. 4) A centralized time stamp block (e.g., centralized CPTS) may be used to time stamp the events coming from multiple master clock domains. The time stamp values of those events may be used to calculate the frequency difference and as well as phase difference among those master clock domains. As explained above a centralized sync router represents a hardware mechanism to allow each time sync slave to tune to any time sync master independently. The hardware mechanism provides a deterministic pairing behavior between master and slave, at least in part, by creating a communication path through the sync router. This may include a common reference counter to all the time domains and the centralized time stamp mechanism, so the system may maintain an overall view of any differences for the complete set of time domains within the SoC.
[0045] For example, if a host (a PCIe that is a host may also represent the time master for the PCIe network) generates a post every millisecond, each endpoint can receive that post. Based on that information it may be determined, with respect to a given slave endpoint, if there is any frequency drift or delay. Among the problems that may be solved by a sync router system, the system level issue to allow time domains to change dynamically is addressed. Dynamically changing time domains in a TSN system may be helpful to address a system failure or communication failure. For example, if a master clock goes down a backup can take over. Another reason for dynamically changing a time domain may be as a result of a set of highly integrated applications (e.g., applications in a single application time domain) requesting a reconfiguration of their application time domain. In some cases, two different application time domains may desire to be synchronized and become a single application time domain. Using the disclosed sync router hardware based solution, a flexible method to allow switching to different time masters selected from multiple possible time masters may be provided (See
[0046] In some implementations, any endpoint can pick its own master by communicating with the sync router (possibly via a software agent used to configure the sync router dynamically). Registers on the sync router may be updated to alter the communication path through the switch of the sync router to cause an endpoint (consumer of time) to communicate with a different master. PCIe, Industrial Ethernet, and other types of communication protocols may be used to communicate and provide time information. Different network configurations can overlay each other to facilitate communication between time consumers and time providers (e.g., master clock source).
[0047] The sync router may contain multiple interface ports and applications communicating to these ports may represent different endpoints in potentially different time domains. Further, each SoC can execute multiple applications concurrently, and the sync router can connect these concurrently executing applications with a master clock (time source) as appropriate for the application. As mentioned above, from the sync router point of view, the time master sends time information to the sync router and the time slave receives timing information from the sync router.
[0048] As mentioned above, there are two sides of an industrial control system: a) software which programs IO (referred to as an application time domain) and b) IO which is transmitted over Ethernet (referred to as a communication time domain). Control of the master of the system which runs the control software is typically an application executing on a CPU and inside the memory of an SoC. The application may have control codes to, for example, switch on or off a device which is connected via Ethernet. At a network node or device (slave in the network) a control application can be as simple as a simple output through a general purpose input/output (GPIO) that may be programmed (controlled) over Ethernet. A GPIO may perform a function which turns on the switch or reads in data over the GPIO SOC interface (or possibly PCIe) at a given (very specific) time. Simple IO to control an application or device can be contrasted with more complex IOs that control more complex applications (e.g., a motor control function). These applications may use a more robust control interface than GPIO. Specifically, when controlling a motor the information may not simply be read as in input because the application may also control motor speed and/or motor precision. In another example, temperature may be read at a given time over an analog digital control (ADC).
[0049] In general, in a TSN, the device side is typically a communication slave to the master which is the software (e.g., process control software) that runs on the SoC. Chips may include applications that don't know their role (master or device) and can dynamically change between master and device on different cycles. Further, an SoC can run multiple applications on its multiple cores concurrently with each application working independently or with one or more of the other applications. Applications working together may desire to utilize a consistent time domain that is controlled by the same master clock. The sync router provides the capability for each consumer of a time event to determine its appropriate master and provide for graceful failover in the event of system or communication failure.
[0050] In some implementations, one function of the sync router is to synchronize end equipment (endpoint device) over Ethernet using a time synchronization protocol where one piece of end equipment is a timing master and another is a timing slave. In the specific case where the sync router IP resides (an SoC including the sync router IP module), there may be multiple networking interfaces (e.g., 7 Ethernet ports, multiple GPIO ports, etc.). Any of the ports may be defined as either a slave or a master in reference to time (and that definition may change dynamically). Recall that there are two different types of time domains. A first represents an application time domain and the second represents a communication time domain. One interface of an SoC may be master for the communication time domain while concurrently being a slave for the application time domain. It is possible that each of the example 7 ports may be changed individually with respect to their role for either application time or communication time. In some implementations, there may also be a second time synchronization scheme overlaid on top of the first time synchronization scheme. The second time synchronization scheme references the application(s) which can execute on the same SoC as the sync router IP or on a different SoC that is communicatively coupled to the SoC including the sync router IP. Typically when an SoC is a slave, a corresponding communication application can reside on the same SoC or another SoC communicatively coupled to the SoC slave. The communication protocol between the two SoCs can be any of the protocols discussed herein. The slave SoC may communication with devices via PCIe or other communication method to communication with an external analog device (ADC, pwm driver, 24 volt digital input), or a device connected through GPIO.
[0051] To summarize, timing information within a TSN is explained in the IEEE standards. Disclosed implementations explain how a TSN may be configured with the disclosed sync router to control roles and communication paths for timing sources within that TSN. For example, the disclosed event sync router may be specifically configured for time sync events and include a set of programmable logic gates as a switch to connect any number of (e.g., 88 in one example) inputs to any number of (e.g., 40 in one example) outputs. Programming may be performed via registers that may be controlled by software logic executing on or communicating with the time sync router SOC. Digital selection control of inputs to outputs may be controlled via a bit-field within the registers. Application software may be responsible for programming the path through the sync router. When a time event arrives at a specific input port the other side of the switch will receive the same or a corresponding event through the currently selected (i.e., programed) association of input to output passing through the logic gates. A local agent (e.g., software executing in a core of the sync router SoC) may be used to reconfigure sync router paths and may be in communication with external applications.
[0052] Referring now to
[0053]
[0054] As further illustrated in TSN 305, sync router 405 is communicatively connected to each of the endpoints that are participating in a time domain (either application or communication) concurrently. Although shown as a single line in
[0055] Time source 1 (450) through time source N (455) represent a number of possible time source inputs that may be input to sync router 405 so that it can provide time to any of the plurality of time domains that it concurrently supports. These time source inputs may include a variety of protocols as discussed above and may include multiple sources based on the same protocol. For example, there may be multiple PCIe inputs that provide time source information to an SoC configured with a sync router 405. Endpoints in
[0056] Referring now to
[0057] Referring now to
[0058] Referring now to
[0059] Referring now to
[0060] Referring now to
[0061] Certain terms have been used throughout this description and claims to refer to particular system components. As one skilled in the art will appreciate, different parties may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In this disclosure and claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . . ” Also, the term “couple” or “couples” is intended to mean either an indirect or direct wired or wireless connection. Thus, if a first device couples to a second device, that connection may be through a direct connection or through an indirect connection via other devices and connections. The recitation “based on” is intended to mean “based at least in part on.” Therefore, if X is based on Y, X may be a function of Y and any number of other factors. The terms configured and configurable are closely related. In the context of this disclosure, the term configured may be used to indicate that an item may be preset to operate in a default manner but does not necessarily mean that the item may not be changed and “re-configured” during operation. The term “configurable” may be used to specifically indicate that an item may not be pre-set with any particular default condition but is likely (but not required) to change at run-time, during operation, or at some point in its existence.
[0062] The above discussion is meant to be illustrative of the principles and various implementations of the present disclosure. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.