Processor-based systems, such as personal computers, servers, laptop computers, personal digital assistants (PDAs) and other processor-based devices, such as “smart” phones, game consoles, set-top boxes and others, may be multiprocessor or multi-core systems. For example, an Intel® architecture processor in such a system may have two, three four or some other number of cores. Such multiprocessor or multi-core systems are generally referred to as many core systems in the following. In some many core systems, some of the cores may be logical cores, such as for example the two logical processing elements provided by processors equipped with Intel Hyper Threading Technology® while in others, the cores may be located on a single physical component such as in an Intel Core Duo® processor. Typically, in such systems, all the cores share access at the hardware level to system memory which may be for example, DRAM, SDRAM, RDRAM or other read-write memory.
In this embodiment, a firmware-based program executes at or around boot time in the many core system and configures it as shown. Specifically, in the example shown, the firmware program uses the ACPI (Advanced Configuration and Power Interface) tables produced by the BIOS (Basic Input Output System) to partition the system so that one or more processors, a portion of system memory and possibly a sub-set of the peripheral devices, may be segregated into each partition. An operating system executing in one partition may then be unable to access or use any elements such as a processor, processor core, peripherals, or memory that are part of another partition.
In the example shown, there are four partitions numbered 1-4, at 102, 104, 106 and 108 respectively. Each partition may be thought of as having a logical processor, such as those depicted at 112, 103, 105 and 107, which is mapped to an actual core; and a logical memory as depicted at 114, 152, 156 and 154, which maps to an area of system memory. Thus for example, the system memory 124 is partitioned by the firmware into memory areas local to each partition such as area 1 (122) local to partition 1 and mapped to 114; area 2 (126) local to partition 2 and mapped to 152; and so on (memory areas mapped for partitions 3 and 4 are omitted for clarity).
In this embodiment, the firmware at boot time further allocates areas of memory for inter-partition communication. These include inter-partition input areas such as 127 and 128, and an inter-partition communication setup area, 130. Generally, there is an inter-partition input area for each partition, though only two areas are depicted in the figure for clarity: the input area for partition 1 at 128; and the input area for partition 2 at 127. Furthermore, each input area is then subdivided in this example into sub regions termed channels so that input from a specific sending partition to the input area of a receiving partition is directed exclusively to a specific channel. Thus for example, the input area 127 for partition 2 is further divided into channels 141, 142, and 143 for input to partition 2 from partitions 1, 3 and 4 respectively. The input area for partition 1 is subdivided in an analogous way.
The inter-partition setup area 130 may be used to configure communications between the partitions in order for sending partition to send data to a receiving partition, the sending partition generally uses information relating to the location of the receiving partition's input area. Furthermore, signaling between the sending and receiving partition may occur using interrupts, in one embodiment, and thus the sending partition in general uses the processor and interrupt vector to send an inter-processor interrupt (IPI) once the data is transferred. Therefore, the setup area may contain, among other data, the starting address and size of each input area; the number of channels to create per input area; a processor identifier, an interrupt vector, and starting address for each channel.
Many variations on the system depicted in
To more clearly describe the process of initial setup of the system depicted in
The setup performed by firmware in this embodiment, 202, first allocates the inter-partition input areas like 127 and 128 (
Further configuration is performed by a communication driver for each partition that provides the interface for inter-partition communication. The driver in the depicted embodiment when executed initially performs the setup actions shown in the flowchart at 212-228. At 214, the driver reads the location and size of the input area for the partition in which the driver is executing (its parent partition), and the number of partitions that are potential senders. It then divides the input area into channels at 216 based on the number of partitions that may be senders to its parent partition, allocating space to each sending channel depending on factors such as available space in the input area and the expected bandwidth of communication between the sending partition and its parent partition. This information may be based in part on user-defined parameters read at boot-time. The driver then stores parameters for each channel including its location and an interrupt identifier or vector that is associated with the channel in the setup area at 218, in this embodiment. The driver then initializes its parameters for sending from its parent by reading the channel information from other partitions at 220. As is known in the art, some synchronization between drivers may be necessary between 218 and 220 to ensure that no driver reads configuration information for another partition before all drivers have written configuration information for their respective parent partitions. The details of this synchronization are omitted for clarity.
The operating system executing in a partition may not have direct access to the input area, and all access is thus generally performed by the communication driver using a page mapped in the page table of the operating system of the partition in this embodiment. The driver performs this mapping at 222. Finally, the driver registers itself as an interrupt handler for interrupts targeted to the OS with a vector indicating that inter-partition communication has occurred. A communication driver in a sending partition generates an inter-partition interrupt (IPI), vectored to a processor and the corresponding communication driver in the receiving partition, to signal that data has been placed in the input area of the receiving partition. With this the initial setup performed by the communication driver for each partition is complete.
From the writing partition's point of view, the processing is as shown in
As would be appreciated by one in the art, many variations of the processing shown in FIGS. 2(a) and 2(b) may be used in other embodiments. For example, in some embodiments, different drivers or programs may handle setup, sending and receiving, or those functionalities may be combined with other inter-partition or other communication functionalities in other programs or drivers. The actual order of the processing in setup may vary, for example, the mapping of the input area at 222 in
In the preceding description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the described embodiments, however, one skilled in the art will appreciate that many other embodiments may be practiced without these specific details.
Some portions of the detailed description above are presented in terms of algorithms and symbolic representations of operations on data bits within a processor-based system. These algorithmic descriptions and representations are the means used by those skilled in the art to most effectively convey the substance of their work to others in the art. The operations are those requiring physical manipulations of physical quantities. These quantities may take the form of electrical, magnetic, optical or other physical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the description, terms such as “executing” or “processing” or “computing” or “calculating” or “determining” or the like, may refer to the action and processes of a processor-based system, or similar electronic computing device, that manipulates and transforms data represented as physical quantities within the processor-based system's storage into other data similarly represented or other such information storage, transmission or display devices.
In the description of the embodiments, reference may be made to accompanying drawings. In the drawings, like numerals describe substantially similar components throughout the several views. Other embodiments may be utilized and structural, logical, and electrical changes may be made. Moreover, it is to be understood that the various embodiments, although different, are not necessarily mutually exclusive. For example, a particular feature, structure, or characteristic described in one embodiment may be included within other embodiments.
Further, a design of an embodiment that is implemented in a processor may go through various stages, from creation to simulation to fabrication. Data representing a design may represent the design in a number of manners. First, as is useful in simulations, the hardware may be represented using a hardware description language or another functional description language. Additionally, a circuit level model with logic and/or transistor gates may be produced at some stages of the design process. Furthermore, most designs, at some stage, reach a level of data representing the physical placement of various devices in the hardware model. In the case where conventional semiconductor fabrication techniques are used, data representing a hardware model may be the data specifying the presence or absence of various features on different mask layers for masks used to produce the integrated circuit. In any representation of the design, the data may be stored in any form of a machine-readable medium. An optical or electrical wave modulated or otherwise generated to transmit such information, a memory, or a magnetic or optical storage such as a disc may be the machine readable medium. Any of these mediums may “carry” or “indicate” the design or software information. When an electrical carrier wave indicating or carrying the code or design is transmitted, to the extent that copying, buffering, or re-transmission of the electrical signal is performed, a new copy is made. Thus, a communication provider or a network provider may make copies of an article (a carrier wave) that constitute or represent an embodiment.
Embodiments may be provided as a program product that may include a machine-readable medium having stored thereon data which when accessed by a machine may cause the machine to perform a process according to the claimed subject matter. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, DVD-ROM disks, DVD-RAM disks, DVD-RW disks, DVD+RW disks, CD-R disks, CD-RW disks, CD-ROM disks, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnet or optical cards, flash memory, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, embodiments may also be downloaded as a program product, wherein the program may be transferred from a remote data source to a requesting device by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
Many of the methods are described in their most basic form but steps can be added to or deleted from any of the methods and information can be added or subtracted from any of the described messages without departing from the basic scope of the claimed subject matter. It will be apparent to those skilled in the art that many further modifications and adaptations can be made. The particular embodiments are not provided to limit the claimed subject matter but to illustrate it. The scope of the claimed subject matter is not to be determined by the specific examples provided above but only by the claims below.
The present application is related to pending U.S. patent application Ser. No. 11/027,253 entitled “System and Method for Implementing Network Security Using a Sequestered Partition,” Attorney Docket Number 42P20903, and assigned to the assignee of the present invention.