Bus interface selection by page table attributes

A translation lookaside buffer 36 within a data processor serves to translate a virtual address VA to a physical address PA and return attribute values that are used to switch 40, 42 a data access request between different busses 44, 46 of the processor 18, 20.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to the field of data processing systems. More particularly, this invention relates to the bus architecture of data processing systems.

2. Description of the Prior Art

As is illustrated inFIG. 1of the accompanying drawings, it is known to provide data processing systems including a plurality of processors2,4connected to a common bus6. Also connected to this common bus6is a shared memory8which is to be accessed by either of the processors2,4. Interrupt controllers10,12for respective ones of the processors2,4are connected via a bridge14to the bus6. The interrupt controllers10,12are not intended to be shared between the processors2,4, but nevertheless share the common bus6.

The arrangement ofFIG. 1has a number of disadvantages. The processor2can access either of the interrupt controllers10,12even though it should only really need and be allowed to access the interrupt controller10. This can compromise the security and integrity of the system. In order that the processors2,4can correctly address their respective interrupt controllers10,12that share the common bus6, they must run different binary images of the software concerned and are not able to share common software. Since all of the communications are routed over the bus6, the bandwidth available on this bus is reduced disadvantageously.

SUMMARY OF THE INVENTION

Viewed from one aspect the present invention provides an apparatus for processing data, said apparatus comprising:

(i) a data processing circuit operable to generate a data access request to a first address;

(ii) a translation circuit operable to translate said first address to a second address and read one or more attribute values associated with said first address; and

(iii) a bus switching circuit operable in response to said one or more attribute values to direct said data access request to said second address via either a first data access bus or a second data access bus.

The invention recognises that the address translation circuit which is commonly provided within a data processing system with attribute values associated with different address ranges may be used to store attributes that have the affect of controlling a bus switching circuit in order to switch a data access request between busses. This is an efficient and architecturally attractive route to provide control of multiple busses in a manner that allows some of the above problems to be addressed.

Whilst it will be appreciated that the address translation could take a wide variety of forms, in preferred embodiments the first address is a virtual address and the second address is a physical address. Such systems often use a translation circuit with associated attributes and thus allow the attributes to also control bus switching.

A particularly efficient preferred form of translation circuit is a translation lookaside buffer.

Whilst the address space may be controlled in a variety of different ways, preferred embodiments of the invention are ones in which the attribute values are memory page attribute values. The level and granularity at which memory pages are controlled is well matched to the level and granularity at which it is desirable to control switching between different busses.

Whilst it will be appreciated that the first bus and the second bus may have a wide variety of different properties associated with them and may be symmetrical in certain situations, particularly preferred embodiments are ones in which one of the busses is a sharable bus and the other of the busses is a private bus. This allows security to be improved by locating private peripherals on the private bus and also offloads communication requirements from the sharable bus as this may typically have more demands upon its bandwidth.

In the context of a system having a sharable bus and a private bus, preferred embodiments include a further data processing circuit that is also operable to generate data access requests and which is connected to the sharable bus.

Efficient use of the sharable bus and private bus architecture may be made in embodiments in which the shared memory is connected to the sharable bus and private peripherals are connected to the private bus of respective data processing circuits.

Whilst the attribute values used could take a wide variety of different forms and represent a wide variety of different properties, for example it would be possible to provide a dedicated specific attribute directly specifying the bus to be used, preferred embodiments of the invention reuse attributes which are provided to indicate further characteristics, such as an attribute indicating whether the address is associated with a device having normal data storage operation or other than normal data storage operation (e.g. either a standard memory in which data stored is not changed or a peripheral in which data stored is not necessarily guaranteed to remain unchanged due to other influences). A further attribute which may be used to help control bus switching is one indicating whether the first address is associated with a sharable storage location.

A particularly preferred embodiment is one in which said bus switching circuit is operable to:

(i) direct said data access request to said first bus when said first address is associated with a memory having a normal storage operation or a shareable storage location; and

(ii) direct said data access request to said second bus when said first address is associated with a device having other than a normal storage operation and a non-shareable storage location.

The present technique is particularly well suited to systems in which it is desired to perform symmetric multiprocessing. Within such systems it is desirable that the different data processing circuits are controlled by a common computer program.

Whilst the attributes stored in the translating circuit could take a variety of forms, preferred attributes include ones indicating that the associated memory locations should support strongly ordered accesses in which a pending access request must be fully completed before a next access request is started, that a memory location is non-cacheable, that a memory address is write-through-cacheable, that a memory address is write-back-cacheable or that a memory location corresponds to device memory.

Viewed from another aspect the present invention provides a method of processing data, said method comprising the steps of:

(i) generating a data access request to a first address with a data processing circuit;

(ii) translating said first address to a second address and read one or more attribute values associated with said first address; and

(iii) in response to said one or more attribute values, directing said data access request to said second address via either a first data access bus or a second data access bus.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 2illustrates a data processing system including a first data processing circuit16(a data processing core) and a second data processing circuit18. Each of these data processing circuits16,18has its own respective private bus20,22as well as being connected to a common sharable bus24. A private peripheral in the form of an interrupted controller26for processor1is connected to the private bus20, a private peripheral in the form of an interrupt controller28for the processor2is connected to the private bus22. A shared memory30is connected to the sharable bus and is able to communicate with both the processor1and the processor2.

FIG. 3illustrates the operation of a translation lookaside buffer which is provided within each of the processors16,18of FIG.2. The processor16,18generates a data access request as a result of program execution and having a virtual address associated with it. This virtual address VA needs to be translated to a physical address PA in the translation lookaside buffer. The translation lookaside buffer contains a plurality of page table entries having a portion which specifies the range of virtual addresses to which it applies. This virtual address portion may be stored in the comparison part of a content addressable memory which forms part of the translation lookaside buffer. The virtual address VA is effectively compared in parallel with all of the page table entries and when a match occurs between the virtual address VA applied and the virtual address stored for a particular page table entry, then a hit is recorded for that page table entry. Associated with that page table entry is a physical address portion which enables the virtual address VA to be translated to the physical address PA (e.g. appropriate higher order bits being subject to a translation with lower order bits being unaltered).

Also associated with the page table entry are a number of attribute values which control the way in which those memory address locations associated with the page table entry are accessed and treated. In particular, these attribute values include attributes indicating that the memory is strongly ordered, associated with a device rather than standard memory, non-cacheable, write-through-cacheable, write-back-cacheable and shareable. Strongly ordered memory is subject to control such that any pending memory access request to that memory must be completed before a next memory access request can be commenced. Device memory is defined as memory which does not necessarily have normal storage operation in the sense that value stored at a particular location can change through external influences other than simple reads and writes to those locations, as well as other non-standard behaviour. Whether a particular memory address is cacheable, write-through-cacheable or write-back-cacheable is also specified with these terms having their usual meanings. The shareable attribute indicates whether the memory locations may be accessed by more than one processor.

At an overall level, the translation lookaside buffer operates with a virtual address VA applied to it resulting in a hit for a particular page table entry which then results in the attribute values associated with that page table entry as well as the corresponding physical address PA being returned from the translation lookaside buffer.

FIG. 4illustrates a circuit for controlling the switching between different busses. A data access request includes data transferred on a data bus portion32and a virtual address VA asserted on an address bus34. The virtual address is applied to the translation lookaside buffer36. Whilst it will be appreciated that more attributes than illustrated are read out of the translation lookaside buffer36,FIG. 4illustrates the two attributes indicating that the memory location is associated with a device and that the memory location is sharable as being read out and applied to an AND gate38. Also emerging from the translation lookaside buffer36is the physical address PA into which the virtual address VA has been translated. The AND gate38controls respective demultiplexers40,42associated with the data bus32and the address bus34portions. If the attribute values indicate that the memory address is associated with the virtual address VA corresponds to a device and is non-shareable, then the access request is directed to the peripheral bus44. In other combinations, such as the memory location not being associated with a device or the memory location being sharable, then the data access request is directed to the sharable read/write bus46.

FIG. 5schematically illustrates the processing performed in controlling bus switching. At step48the system waits for a virtual address VA to be received. When the virtual address VA has been received, then this results in a lookup being performed in the translation lookaside buffer36at step50. At step52, when the appropriate hit has occurred the relevant page table entry is accessed to read the physical address PA and page attributes from that page table entry. At step54a determination is made as to whether the attributes indicate that the memory location is associated with a device AND the memory location is sharable. If this Boolean condition is satisfied, then processing is directed to step56with the demultiplexers40and42being switched to direct the memory access to the peripheral bus. If the determination at step54does not return a true value, then processing proceeds to step58with the multiplexers40,42redirecting the data access request to the shareable read/write bus46.

The bus switching control as described above is well suited to symmetric multiprocessing. In particular, the different processors may run identical binary images of a computer program since their private peripherals are isolated on their own private busses. The common data being worked upon may be stored within the shared memory30accessed via the sharable bus24.