(19)
(11)EP 1 678 620 B1

(12)EUROPEAN PATENT SPECIFICATION

(45)Mention of the grant of the patent:
22.06.2011 Bulletin 2011/25

(21)Application number: 04796678.3

(22)Date of filing:  27.10.2004
(51)International Patent Classification (IPC): 
G06F 13/00(2006.01)
(86)International application number:
PCT/US2004/035863
(87)International publication number:
WO 2005/045727 (19.05.2005 Gazette  2005/20)

(54)

SCHEDULING MEMORY ACCESS BETWEEN A PLURALITY OF PROCESSORS

EINTEILUNG DES SPEICHERZUGRIFFS ZWISCHEN MEHREREN PROZESSOREN

PROCEDE ET APPAREIL PERMETTANT D'ETABLIR UNE QUALITE D'UN MODELE DE SERVICE


(84)Designated Contracting States:
AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PL PT RO SE SI SK TR

(30)Priority: 31.10.2003 US 698905

(43)Date of publication of application:
12.07.2006 Bulletin 2006/28

(73)Proprietor: Sonics, Inc.
Mountain View, CA 94040 (US)

(72)Inventor:
  • WEBER, Wolf-Dietrich
    San Jose, CA 95120 (US)

(74)Representative: Jacoby, Georg 
Samson & Partner Widenmayerstrasse 5
80538 München
80538 München (DE)


(56)References cited: : 
US-A1- 2002 138 687
US-A1- 2003 074 519
  
  • IVO ADAN, JACQUES RESING: "Queueing Theory" 14 February 2001 (2001-02-14), EINDOVEN UNIVERSITY OF TECHNOLOGY , EINDOVEN , XP002329104 page 23 - page 27
  • LAMPORT L: "HOW TO MAKE A MULTIPROCESSOR COMPUTER THAT CORRECTLY EXECUTES MULTIPROCESS PROGRAMS" IEEE TRANSACTIONS ON COMPUTERS, IEEE INC. NEW YORK, US, vol. C-28, no. 9, September 1979 (1979-09), pages 690-691, XP009029909 ISSN: 0018-9340
  
Note: Within nine months from the publication of the mention of the grant of the European patent, any person may give notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art. 99(1) European Patent Convention).


Description

FIELD OF THE INVENTION



[0001] The present invention generally relates to integrated systems and an aspect specifically relates to guaranteeing quality of service in integrated systems.

BACKGROUND



[0002] A System on a Chip (SoC) is an Integrated Circuit (IC) incorporating most or all of the necessary electronic circuits and parts for a system such as a cellular telephone, digital camera, Set Top Box (STB), etc. The SoC may incorporate several circuits that might otherwise be on individual chips, such as a central processing unit (CPU), direct memory access (DMA) unit, memory, input/output (I/O) circuitry, and other circuits required by the specific application. By including all of the circuitry required for a specific application on one IC, production costs for the system and the size of the system can be reduced, and the reliability of the system can be improved.

[0003] A SoC is a single chip including several interacting entities. The entities may be referred to as Intellectual Property (IP) cores, since they are generally licensed from other vendors, rather than produced by the manufacturer of the SoC. Initiators, such as a CPU, issue requests to targets, such as a memory, for service. For example, a CPU may need access to a portion of a memory. The CPU would issue a request to the memory for the specific data. The memory would then service the request and return the requested data to the CPU. The initiators and targets are connected through interconnects.

[0004] Quality of Service (QoS) may refer to an expectation of performance in terms of how quickly requests are served. For example, an initiator can issue a request, and can expect those requests to be satisfied by the target within a specific time. Performance may be specified in several different ways. Bandwidth performance refers to receiving a certain number of requests per unit time. Latency performance refers to the time for a certain request to be returned. Jitter performance refers to a variation in the time between requests or responses arriving.

[0005] QoS standards are especially important when using a SoC because initiators used in SoCs typically have very tight service requirements. For example, some initiators (such as CPUs), have tight latency requirements, and need to be served quickly. Other initiators (such as communication interfaces) are more sensitive to bandwidth and jitter performance. Some SoC's suffer from a QoS model that cannot ensure that certain performance guarantees are met in the SoC.

[0006] US 2002/138687 A1 discloses a method and a hardware implementation for efficient scheduling of memory requests to external memory chips in computer input/output operations.

[0007] The document IVO ADAN, JACQUES RESING: "Queuing theory", 14 February 2001, XP002329104, discloses a queuing model characterised by the arrival process of customers which may arrive one by one or in batches. This document also discloses a single server system G/G/1 with an arrival rate and mean service time. The server can handle one unit of work per unit time.

[0008] US 2003/074519 A1 according to the preamble of the independent claims discloses a DRAM scheduling system. Requests from different initiators arrive over a multi-threaded interface. Requests from different initiators are communicated across different threads that are identified by a different thread identifiers at the interface. This allows requests to be split by thread into perthread request queues. Requests from these thread queues are presented in parallel to the DRAM and thread scheduler block. The scheduler block decides the order in which requests are presented to the DRAM controller which in turn is responsible for sending the requests to the actual DRAM sub system. When responses return from the DRAM controller they are sent back to the initiators via the multi-threaded interface.

[0009] The document LAMPORT L: How to make a multi processor computer that correctly executes multi process programs", IEEE. Transactions on Computers, IEEE Inc. New York, US, Vol. C-28, No. 9, pages 690-691, XP009029909 discloses a multi processor which satisfies a sequentially consistent condition requiring that the result of any execution is the same as if the operations of all processors were executed in some sequential order. The operations of each individual processor appear in this sequence in the order specified by its program. This document discloses a method of interconnecting sequential processors with memory modules to ensure the sequential consistency of the resulting multi processor.

BRIEF DESCRIPTION OF THE DRAWINGS



[0010] Figure 1 illustrates an example System on a Chip according to one embodiment of the invention.

[0011] Figure 2 illustrates a system for implementing a QoS model according to an embodiment of the invention

[0012] Figure 3 is a flow chart describing a QoS model according to one embodiment of the invention.

[0013] Figures 4A-C illustrate an arrival model according to one embodiment of the invention.

[0014]  Figures 5A and 5B illustrate a service model according to one embodiment of the invention.

[0015] Figure 6 illustrates an allocation count which is not covered by the present invention.

[0016] Figure 7 is a flow chart illustrating using an allocation count which is not covered by the present invention to establish priority for specific threads.

[0017] Figure 8 is a flow chart describing the operation of an allocation count which is not covered by the present invention using an adjustable positive limit.

SUMMARY



[0018] A method and an apparatus for a Quality of Service (QoS model are disclose. According to the QoS model, a request is received from an initiator in a first time less than or equal to one less than an ordinal number times an arrival interval, where the ordinal number signifies a position of the request among a group of requests. Also according to the model, the request that has been serviced is returned to the initiator in a second time less than or equal to a constant term plus the ordinal number times a service interval.

DETAILED DESCRIPTION



[0019] In the following description, numerous specific details are set forth, such as examples of named components, connections, number of requests in a group, etc., in order to provide a thorough understanding of the present invention. It will be apparent, however; to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known components or methods have not been described in detail but rather as a block diagram to avoid unnecessarily obscuring the present invention. Thus, the specific details set forth are merely exemplary.

[0020] In general, methods and apparatus for implementing a Quality of Service (QoS) model are disclosed. According to an embodiment of the invention, the QoS model may be implemented on a System on a Chip (SoC) or other system where it is necessary to guarantee service between an initiator and a target. Initiators and targets are connected through an interconnect. An initiator, such as a Central Processing Unit (CPU) can request service from a target, such as a Random Access Memory (RAM). A thread is a channel to send requests from an initiator to a target. The interconnect, guided by a QoS unit, determines which threads will be serviced by the target. According to the QoS model, a contract may be established between an initiator and the rest of the system. According to the contract, the initiator guarantees that certain requests will arrive by certain deadlines, and the rest of the system guarantees that those requests will be serviced by other deadlines. The QoS model comprises an arrival model and a service model. The arrival model describes deadlines for receiving requests from the initiator, and the service model describes deadlines for receiving service from the target and the interconnect. According to the arrival model, requests from the initiator must arrive before a time n*a, where 'n' is the number of the request after the first request, and 'a' is a predetermined arrival interval. According to the service model, responses are issued in a time less than K + n*s, where 'K' is a predetermined constant term, and 's' is a predetermined service interval.

[0021] According to an embodiment not covered by the present situation, an allocation count is maintained for certain threads. The allocation count may track whether a specific thread is being serviced. The allocation count may increment at a regular interval, and decrement when the thread is serviced. The allocation count can be used to determine which threads will be serviced. This determination could be based upon whether the allocation count is currently positive. The allocation count may have a positive limit to ensure that an idle thread is not given too much priority. The positive limit may also be adjustable to insure that a lower priority bandwidth-allocated thread that is not serviced because a higher priority claim is being serviced will eventually receive its allocation.

[0022] Figure 1 illustrates an example System on a Chip according to one embodiment of the invention. The SoC 10 includes several initiators 11 coupled to several targets 12 through an interconnect 13. Several initiators 11a, 11b, and 11c are shown. A reference simply to an initiator 11 indicates that any of the initiators 11a-c may apply in that instance. The same holds true for the targets 12a-c, and etc. The initiators 11 may include devices such as CPUs, Direct Memory Access units (DMAs), graphics systems, audio systems, etc. The targets may include devices such as memories including cache memories, Random Access Memories (RAMs), Read Only Memories (ROMs), peripherals, DMA units, register programming interfaces, etc. The initiators 11 generally require service by the targets 12. The interconnect 13 links the various initiators 11 to the various targets 12. Generally, any initiator 11 can request service from any target 12.

[0023] An initiator 11 communicates with a target 12 by issuing requests 14 and receiving responses 15 to and from the interconnect 13. A request 14 may be, for example, a memory read request. The corresponding response 15 would then be data satisfying that request. By sending the response to the requesting initiator 11, the requested target 12 is said to have "serviced" the request. A QoS model describes a contract between an initiator 11 and the rest of the system at the boundary 16 between the specific initiator 11 and the interconnect 13. The QoS model specifies deadlines for receiving requests from the initiator 11 and deadlines for returning responses to the initiator 11.

[0024] Figure 2 illustrates a system for implementing a QoS model according to an embodiment of the invention. The system 20 may be a SoC or other system requiring QoS management. Several initiators 11a-c are communicating with a target 12a. Although the target 12a is specified here, it is understood that any target 12 may be used. The initiators 11a-c issue groups of requests that are to be serviced by the target 12a. Each initiator 11a-c issues requests on one or more threads 21a-c. A thread 21 is virtual channel established over a physical channel 22. As shown here, each initiator 11a-c has its own dedicated physical channel 22a-c that corresponds to that initiator 11a-c. Several threads may be multiplexed on the same physical channel 22. Requests from different threads are received at one or more arbitration points 23 inside the interconnect 13. The arbitration point 23 may be specific to the target 12a. In another embodiment, the arbitration point 23 may serve several different targets 12. The arbitration point 23 determines when, and in which order, requests are presented to the target 12a, and the target 12a determines its service timing, and in a multi-threaded case, some of the service ordering. When the requests have been serviced, they are returned to the initiators 11 as threads of responses 24a-c along the return channels 25a-c. The responses have been serviced by the target 12a, and are directed back to the original initiator 11 by the split point 26.

[0025] Several threads are shown on the physical channels 22 and 25. The threads 21a-c are request threads from the initiators 11a-c which are virtual channels carrying requests from the initiators 11a-c. Although they are only shown on a portion of the physical channels 22, the threads 21 "virtually" extend the length of the physical channels 22. Likewise, the response threads 24 are virtual channels along the physical response channels 25. A request channel 26 sends requests from the interconnect 13 to the target 12a. The request channel 26 is also observed by a QoS unit 27. The QoS unit 27 is coupled to the request channel through a channel 28a, and to the arbitration point 23 through the channel 28b. A response channel 29 sends responses from the QoS unit to the interconnect 13. As can be seen, the threads 21a, 21b, and 21c are multiplexed on the request channel 26. Likewise, the threads 24a, 24b, and 24c are multiplexed on the response channel 29.

[0026] The QoS unit 27 issues instructions to the interconnect 13 through the channel 28b. The QoS unit 27 could be inside the target 12a, inside the interconnect 13, or, as shown, independent. The interconnect 13 ultimately decides which request is issued to the target 12a, but the QoS unit 27 guides the interconnect 13 according to the contract and the QoS model. For each thread 21, the QoS unit 27 determines when the threads 21 will be presented to the target 12a for service according to the various contracts with the different initiators 11. The QoS unit 27, targets 12a, and interconnect 13 together satisfy the requirements of the QoS contracts. The specifics of these contracts will be discussed below.

[0027] Figure 3 is a flow chart describing a QoS model according to one embodiment of the invention. In one embodiment the QoS unit 27, the interconnect 13, and the targets 12 implement the process 30. Block 31 describes an arrival model. In block 31, a group of requests is received from an initiator. Each request, according to the QoS model, is received at a time less than or equal to n*a, where n is an ordinal number describing the number of the request after the first request. For example, n is 0 for the first request, 1 for the second request, etc. The variable a refers to an arrival interval, which is a predetermined time that refers to the system's accepted interval for request arrivals. According to this model, a group of seven requests arrives before a time 6a after the first request arrives. Each request in the group can arrive at a time n*a after the first request, however the request may also arrive at any time before. For example, the second request can arrive any time after the first request and before a, the third request any time after the second request and before 2a, etc. The model establishes a deadline at or before which each request must arrive. The arrival interval a may be fixed by the system or variable, depending on the application. It is understood that a first logic can determine whether the arrival model is satisfied.

[0028] Block 32 describes a service model. In block 32, a response is sent to the initiator in a time less than or equal to K + n*s. The K term is a constant term that covers such quantities as the latency and jitter of service. The K term is added to each group, and gives a target servicing the group more latitude to schedule other groups that may have higher priority or to lead to higher overall system efficiency. The s variable is a service interval that is analogous to the a variable. The K and s terms can be fixed for a specific system, or may change depending on the initiator 11, the target 12, etc. It is understood that a logic, including the target 12, the interconnect 13, and the QoS unit 27 can satisfy the service model once it is determined that the arrival model has been satisfied.

[0029] The QoS model comprises two parts: an arrival model and a service model. Figures 4A-C illustrate an arrival model according to one embodiment of the invention. Figure 4A illustrates a group of requests according to an arrival model 40. The arrival model 40 includes a time line 41 to indicate when the requests 42 are received. The group of requests 44 includes several individual requests 42. The model 40 includes a series of deadlines by which the requests 42 should be received in order to satisfy the contract. The request interval 43 or a signifies a deadline by which time the request should be received by the rest of the system. For each request in the group, the request must arrive before a time established by the following equation:


where n corresponds to the number in sequence after the first request in the group (e.g., the third request 42c has an n=2). The arrival time of the first response may be defined as time 0.

[0030] A group of requests 44 comprising the requests 42a-g may be sent by the initiator 11 to the interconnect 13. The initiator 11 issues a group of requests 44 to a single target 12. According to the QoS contract, the entire group of requests 44 is received by the rest of the system in a time less than or equal to one less than the number of requests in the group times the request interval a 43. Each individual request is received before a times one less than the number of the specific request. For example, the second request 42b is received before a time 1a, and the third request 42c is received before a time 2a. As can be seen, each individual request in the group 44 arrives in a time less than or equal to n*a, and the QoS arrival model is satisfied for the group of requests 44. It can be further seen that each individual request in the group 44 arrives just before its arrival deadline n*a. Such behavior is characteristic of isochronous data production processes, which are common in applications such as telecommunications and streaming media.

[0031] Figure 4B illustrates two request groups. The request group 44 has been divided into two request groups 51 and 52, which may be necessary because requests 42d-g do not satisfy the arrival model when grouped with 42a-c. The request group 51 comprises the requests 42a-c, and the request group 52 comprises the requests 42d-g. In order to satisfy the arrival model, the request 42c must arrive before 2a after the request 42a arrives. Likewise, in order to satisfy the arrival model, the request 42g must arrive before 2a after the request 42d arrives.

[0032] Figure 4C illustrates a received request groups The request group 61 comprises the requests 42a-g. According to the QoS model, the request 42b must arrive before time a, the request 42c must arrive before time 2a, etc. As can be seen in Figure 4C, the request 42f is received before the time 2a, even though the deadline for receiving the request 42f is time 5a. The model 60 illustrates that an initiator 11 is free to send requests early. The request 42g is received before the time 6a. As can be seen there is a large gap between the time that the sixth request 42f and the seventh request 42g are received. However, since the requests 42a-g are all received according to the QoS model, the initiator 11 has satisfied the contract.

[0033] Figures 5A and 5B illustrate a service model according to one embodiment of the invention. According to Figure 5A, the service model 70 includes the group of requests 71 including the requests 42a-d. According to the arrival model, the group 71 is to be received before the time 3a. The timeline 72 shows the time at which specific requests are serviced. According to the service model, a group of requests must be serviced before a time equal to:


where K is a constant term and s is the service interval. The K term is a term included in the contract, and applies to each group of requests. The K term gives the target 12 extra time to service the group 71. The target 12 may divide up the K term as it wishes when servicing the request group 71. The K term could be an initial latency term, or can be used by the QoS unit 27 however it desires. The K term can be used, for example, to give the target 12 more time to service a request from another initiator 11. In one embodiment, the service interval s is a time that is greater than or equal to the arrival interval a. Since the requests cannot be serviced until they have arrived, the service interval s is necessarily greater than or equal to the arrival interval a. If a is less than s, the service model behaves as though a were equal to s. In one embodiment, it is desirable to have a and s equal. The service interval s may also be thought of as a nominal bandwidth term. In this example, the K term is equal to the service interval s, for simplicity. However, it is understood that any K term can be chosen independent of the service interval s. Also, the service term is given an arbitrary value of s=1.5a in this example.

[0034] According to the service model, the entire group 71, which comprises four requests, must be serviced by the time equal to K+n*s, which is s+3*s = 4s (or 6a). Remembering that the K term is assigned a value of s in this example, the first request 42a must be serviced by the time s, since s+0*s = s. Likewise, the second request 42b must be serviced by the time 2s, since s+1*s = 2s. The interconnect 13 and target 12 has used the K term here to delay the servicing of the first request 42a. As can be seen in Figure 5A, the group 71 has been serviced according to the model, since each request is received before its respective deadline.

[0035] Figure 5B illustrates an alternative servicing of the group 71. In this example 80, remembering that K has a value of s, the first and second requests 42a and 42b are serviced before the time s. The third request 42c is serviced at 2s, and the fourth request 42d is not serviced until 4s. The fourth and last request does not need to be serviced until 4s according to the model, and since the target 12 has serviced the first three requests 42a-c early, the target 12 is free to service other requests as long as the final request 42d is serviced before a time 4s. As can be seen in Figure 5B, the group 71 has been serviced according to the model.

[0036] Figures 6-8 described herein after in move detail are diverted to embodiments which are not covered by the present invention. Figure 6 illustrates an allocation count An allocation count 90 can be maintained in the QoS unit 27 for each thread. The allocation count 90 generally measures whether or not a specific thread is being serviced. In one embodiment, there are three types of threads: 1) high-priority threads which are given priority for service over all other threads as long as they stay within a pre-allocated portion of the target's 12 bandwidth, 2) bandwidth allocation threads which are generally guaranteed a portion of a target's 12 bandwidth, and 3) best effort threads, which are serviced whenever the target 12 has extra bandwidth to do so. Allocated bandwidth and priority threads are monitored using the allocation count 90. The allocation meter 91 is an illustration of the number of credits issued to a specific thread. The allocation meter 91 has a positive limit 92 and a negative limit 93. These limits are explained below.

[0037] The allocation count 90 can be used to determine a priority between threads that are subject to bandwidth allocation (i.e. high-priority and bandwidth allocation threads). Generally, if a thread is not being serviced, often because a high-priority thread has required the service of a specific target 12, the allocation count 90 will become increasingly positive. Conversely, if a thread has received more service than it was allocated, its allocation count will become negative. A negative allocation count 90 can be used to demote the priority of that thread, giving other threads a better chance of receiving service.

[0038] At a regular interval, the allocation count 90 is incremented. For example, at time 0 the allocation count 90 for a specific thread is 0. At time t, the thread is issued one credit. Therefore, if the thread has not requested service, the allocation count 90 goes positive, to a count of +1. When the thread receives service, a credit is debited. For example, at time t, if the thread requests service once, the allocation count 90 for the thread will be 0, since the thread has received one credit at the time t (its regular credit), and has had that credit debited by having its request fulfilled. It is possible for the allocation count to go negative. For example, if at time t, a thread has already requested service twice, the thread will merely have received one credit, and will have two credits debited, resulting in an allocation count 90 of -1.

[0039] The allocation count 90 has a positive 92 and a negative 93 limit. As shown here, the positive limit 92 is +7 credits, and the negative limit 93 is -7 credits. If a thread is idle for a long time, the thread will accumulate an excess of credits. As a result, even with the thread resuming requests for service, the allocation count 90 may never return to zero, and the specific thread may always be serviced. For this reason, the positive limit 92 is established. A large positive limit makes it difficult to honor the QoS contract of other initiators 11, while a QoS model using a small positive limit may not be capable of handling request arrival jitter introduced by the interconnect 13. Further, a higher positive limit may be warranted where the QoS scheme and target behavior introduce service jitter. Hence the need for the dynamic adjustment of the positive limit.

[0040] A negative limit 93 is also established. The negative limit 93 protects a thread from having too many requests serviced and exceeding its allocated bandwidth by too much. If this is the case, the thread may not receive service for a long period of time because it is constantly being demoted as a result of its negative allocation count 90. The negative limit 93 thus reduces service jitter.

[0041] Figure 7 is a flow chart illustrating using an allocation count 90 to establish priority for specific threads. The process 100 explains awarding priority to specific threads. This priority may be used to determine when a target 12 will service a thread 21. In block 101, it is determined whether there are requests from threads having positive allocation. The positive allocation is determined and accumulated using the technique described relating to the allocation count 90. If threads with a positive allocation are found, in block 102, the highest priority thread among those with positive allocation is chosen. According to one embodiment, the highest priority thread may be a thread that is a high-priority thread or a thread having the most positive allocation count 90. According to other embodiments, other priority systems may be established.

[0042] In block 103, if there are no threads having positive allocation, the highest priority thread is chosen to be serviced. As above, the priority may be determined using different techniques, including awarding service to a thread having a high-priority designation. The allocation priority may be implemented in the QoS unit 27. Once the QoS unit 27 has determined the thread having the highest priority, that thread is serviced. The process may continue for future service.

[0043] Figure 8 is a flow chart describing the operation of an allocation count using an adjustable positive limit. The positive limit 92 may need to be adjusted if, for example, a high-priority thread is monopolizing a target 12. A bandwidth allocation thread that needs access to the target 12 may be left waiting for a long period of time because of the high-priority thread. Eventually, the allocation count 90 for the bandwidth allocation thread would reach the positive limit 92. However, the bandwidth allocation thread has still not been serviced. It may be desirable in some instances to dynamically raise the limit 92 in such a situation, because if the limit is left constant, in some instances the QoS contract may not be satisfied.

[0044] The process 110 may be exercised each time a request is to be serviced by a target 12. In block 111, it is determined whether a high-priority request from a high priority thread was serviced while its allocation was positive. If a request was serviced from a high-priority thread, in block 112, the positive limit 92 of all lower-priority threads is increased by an amount proportional to their allocation rate. For example, if a bandwidth allocation thread has an allocation rate of 50% (i.e., the thread is allocated 50% of the specific target's 12 bandwidth), the limit 92 is raised by 50% of the credit consumed by the high-priority thread. For example, the positive limit 92, in one embodiment, may be 6. Where the high-priority thread consumed two credits, the limit would be raised to 7. Returning to block 111, if no high-priority request was serviced, the process 110 advances to block 113.

[0045] In block 113, it is determined whether a high-priority request received more allocation while its allocation count was positive. If the high-priority thread's allocation count increased while it had a positive allocation count, this is an indication that the higher-priority thread is not requesting service. Since the higher-priority thread is not requesting service, the lower-priority thread can receive service, thus decreasing its allocation count 90. Either the lower-priority thread is being serviced or not requesting service, but in either case the positive limit 92 should be returned to normal in block 114 to avoid giving priority to a thread that does not need it.


Claims

1. A method for satisfying a Quality of Service (QoS) contract between an Initiator (11), a QoS unit (27), an Interconnect (13) and a target (12), comprising:

receiving a group of requests at an arbitration point (23) Inside the interconnect (13) according to an arrival model (40) specifying deadlines at or before which each request within the group of requests (42a-42g) must be received, wherein the deadlines are equal to an ordinal number times an arrival interval (43) and the ordinal number signifies a position of the request among the group of requests (42a-42g);

determining by the arbitration point (23) when the requests within the group of requests (42a-42g) are presented to the target (12); and

determining by the target (12) when responses to the group of requests (42a-42g) will be serviced back to the initiator (11) according to a service model (70) specifying deadlines at or before which each request within the group of requests (42a-42g) must be serviced, wherein the deadlines are equal to a constant term plus the ordinal number times a service interval, where the QoS contract is based on both the arrival model (40) and the service model (70) being satisfied.


 
2. The method of claim 1, further comprising:

satisfying the QoS contracts using the initiator (11), the target (12), the interconnect (13), and the QoS unit (27) that are all located on a chip.


 
3. The method of claim 1, wherein the service interval is greater than the arrival interval (43).
 
4. The method of claim 1, wherein the service interval is equal to the arrival interval (43).
 
5. The method of claim 1, further comprising:

determining the constant term specifically for the group of requests (42a-42g).


 
6. The method of claim 1, wherein the arrival interval (43) is a predetermined accepted Interval for requested arrivals.
 
7. A system, comprising:

an interconnect (13) coupled between an initiator (11) and a target (12);

an arbitration point (23) inside the interconnect (13) being configured to receive a group requests (42a-42g) according to an arrival model (40) specifying deadlines at or before which each request within the group of requests (42a-42g) must be received, wherein the deadlines are equal to an ordinal number times an arrival interval (43) and the ordinal number signifies a position of the request among the group of requests (42a42g);

the arbitration point (23) further being configured to determine when the requests within the group of requests (42a-42g) are presented to the target (12); and

the target (12) being configured to determine when responses to the group of requests (42a-42g) will be serviced back to the initiator (111) according to a service model (70) specifying deadlines at or before which each request within the group of requests (42a-42g) must be serviced, wherein the deadlines are equal to a constant term plus the ordinal number times a service interval.


 
8. The system of claim 7, wherein the service interval is greater than the arrival interval (43).
 
9. The system of claim 7, wherein the constant term is determined specifically for the group of requests (42a-42g).
 
10. The system of claim 7, wherein a QoS unit (27) is coupled between the target (12) and the interconnect (13).
 
11. The system of claim 10, wherein the initiator (11), the target (12), the interconnect (13), and the QoS unit (27) are all located on a chip.
 
12. The system of claim 10, wherein the QoS unit (27) is part of the interconnect (13).
 
13. The system of claim 10, wherein the QoS unit (27) is part of the target (12).
 


Ansprüche

1. Verfahren zum Erfüllen eines Dienstgüte-(QoS)-Vertrags zwischen einem Veranlasser (11), einer QoS-Einheit (27), einer Verbindungsvorrichtung (13) und einem Ziel (12), welches umfasst:

Empfangen einer Gruppe von Anfragen an einem Arbitrierungspunkt (23) in der Verbindungsvorrichtung (13) gemäß einem Ankunftsmodell (40), das Fristenden festlegt, an oder bevor denen jede Anfrage in der Gruppe von Anfragen (42a-42g) empfangen werden muss, wobei die Fristenden gleich einer Ordinalzahl mal einem Ankunftsintervall (43) sind und die Ordinalzahl eine Position der Anfrage unter der Gruppe von Anfragen (42a-42g) bedeutet;

Bestimmen durch den Arbitrierungspunkt (23), wann die Anfragen in der Gruppe von Anfragen (42a-42g) dem Ziel (12) vorgelegt werden; und

Bestimmen durch das Ziel (12), wann Antworten auf die Gruppe von Anfragen (42a-42g) an den Veranlasser (11) zurückgeliefert werden gemäß einem Dienstmodell (70), das Fristenden festlegt, an oder bevor denen jede Anfrage in der Gruppe von Anfragen (42a-42g) bedient werden muss, wobei die Fristenden gleich einem konstanten Term plus der Ordinalzahl mal einem Dienstintervall sind, wobei der QoS-Vertrag darauf beruht, dass sowohl das Ankunftsmodell (40) als auch das Dienstmodell (70) erfüllt werden.


 
2. Verfahren gemäß Anspruch 1, welches ferner umfasst:

Erfüllen des QoS-Vertrags unter Verwendung des Veranlassers (11), des Ziels (12), der Verbindungsvorrichtung (13) und der QoS-Einheit (27), die alle auf einem Chip liegen.


 
3. Verfahren gemäß Anspruch 1, wobei das Dienstintervall größer als das Ankunftsintervall (43) ist.
 
4. Verfahren gemäß Anspruch 1, wobei das Dienstintervall gleich dem Ankunftsintervall (43) ist.
 
5. Verfahren gemäß Anspruch 1, welches ferner umfasst:

Bestimmen des konstanten Terms speziell für die Gruppe von Anfragen (42a-42g).


 
6. Verfahren gemäß Anspruch 1, wobei das Ankunftsintervall (43) ein vorbestimmtes akzeptiertes Intervall für angeforderte Ankünfte ist.
 
7. System, welches umfasst:

eine Verbindungsvorrichtung (13), die zwischen einen Veranlasser (11) und ein Ziel (12) gekoppelt ist;

einen Arbitrierungspunkt (23) in der Verbindungsvorrichtung (13), der ausgelegt ist, eine Gruppe von Anfragen (42a-42g) gemäß einem Ankunftsmodell (40) zu empfangen, das Fristenden festlegt, an oder bevor denen jede Anfrage in der Gruppe von Anfragen (42a-42g) empfangen werden muss, wobei die Fristenden gleich einer Ordinalzahl mal einem Ankunftsintervall (43) sind und die Ordinalzahl eine Position der Anfrage unter der Gruppe von Anfragen (42a-42g) bedeutet;

wobei der Arbitrierungspunkt (23) ferner ausgelegt ist, um zu bestimmen, wann die Anfragen in der Gruppe von Anfragen (42a-42g) dem Ziel (12) vorgelegt werden; und

wobei das Ziel (12) ausgelegt ist, um zu bestimmen, wann Antworten auf die Gruppe von Anfragen (42a-42g) an den Veranlasser (11) zurückgeliefert werden gemäß einem Dienstmodell (70), das Fristenden festlegt, an oder bevor denen jede Anfrage in der Gruppe von Anfragen (42a-42g) bedient werden muss, wobei die Fristenden gleich einem konstanten Term plus der Ordinalzahl mal einem Dienstintervall sind.


 
8. System gemäß Anspruch 7, wobei das Dienstintervall größer als das Ankunftsintervall (43) ist.
 
9. System gemäß Anspruch 7, wobei der konstante Term speziell für die Gruppe von Anfragen (42a-42g) bestimmt wird.
 
10. System gemäß Anspruch 7, wobei eine QoS-Einheit (27) zwischen das Ziel (12) und die Verbindungsvorrichtung (13) gekoppelt ist.
 
11. System gemäß Anspruch 10, wobei der Veranlasser (11), das Ziel (12), die Verbindungsvorrichtung (13) und die QoS-Einheit (27) alle auf einem Chip liegen.
 
12. System gemäß Anspruch 10, wobei die QoS-Einheit (27) Teil der Verbindungsvorrichtung (13) ist.
 
13. System gemäß Anspruch 10, wobei die QoS-Einheit (27) Teil des Ziels (12) ist.
 


Revendications

1. Méthode de satisfaction d'un contrat de qualité de service (QoS) entre un initiateur (11), une unité QoS (27), une interconnexion (13) et une cible (12), comprenant les étapes consistant à :

✔ recevoir un groupe de demandes au niveau d'un point d'arbitrage (23) à l'intérieur de l'interconnexion (13) selon un modèle d'arrivée (40) spécifiant des échéances à ou avant lesquelles chaque demande au sein du groupe de demandes (42a à 42g) doit être reçue, où les échéances sont égales à un nombre ordinal fois un intervalle d'arrivée (43) et le nombre ordinal signifie une position de la demande parmi le groupe de demandes (42a à 42g) ;

✔ déterminer par le point d'arbitrage (23) quand les demandes au sein du groupe de demandes (42a à 42g) sont présentées à la cible (12) ; et

✔ déterminer par la cible (12) quand des réponses au groupe de demandes (42a à 42g) seront révisées chez l'initiateur (11) selon un modèle de service (70) spécifiant des échéances à ou avant lesquelles chaque demande au sein du groupe de demandes (42a à 42g) doit être révisée, où les échéances sont égales à un terme constant plus le nombre ordinal fois un intervalle de service, où le contrat QoS est basé sur la satisfaction à la fois du modèle d'arrivée (40) et du modèle de service (70).


 
2. Méthode selon la revendication 1, comprenant en outre l'étape consistant à satisfaire le contrat QoS en utilisant l'initiateur (11), la cible (12), l'interconnexion (13) et l'unité QoS (27) qui sont tous placés sur une puce.
 
3. Méthode selon la revendication 1, dans laquelle l'intervalle de service est plus grand que l'intervalle d'arrivée (43).
 
4. Méthode selon la revendication 1, dans laquelle l'intervalle de service est égal à l'intervalle d'arrivée (43).
 
5. Méthode selon la revendication 1, comprenant en outre l'étape consistant à déterminer le terme constant spécifiquement pour le groupe de demandes (42a à 42g).
 
6. Méthode selon la revendication 1, dans laquelle l'intervalle d'arrivée (43) est un intervalle accepté prédéterminé pour des arrivées demandées.
 
7. Système comprenant :

✔ une interconnexion (13) couplée entre un initiateur (11) et une cible (12) ;

✔ un point d'arbitrage (23) à l'intérieur de l'interconnexion (13) qui est configuré pour recevoir un groupe de demandes (42a à 42g) selon un modèle d'arrivée (40) spécifiant des échéances à ou avant lesquelles chaque demande au sein du groupe de demandes (42a à 42g) doit être reçue, où les échéances sont égales à un nombre ordinal fois un intervalle d'arrivée (43) et le nombre ordinal signifie une position de la demande parmi le groupe de demandes (42a à 42g) ;

✔ le point d'arbitrage (23) étant en outre configuré pour déterminer quand les demandes dans le groupe de demandes (42a à 42g) sont présentées à la cible (12) ; et

✔ la cible (12) étant configurée pour déterminer quand des réponses au groupe de demandes (42a à 42g) seront révisées chez l'initiateur (11) selon un modèle de service (70) spécifiant des échéances à ou avant lesquelles chaque demande au sein du groupe de demandes (42a à 42g) doit être révisée, où les échéances sont égales à un terme constant plus le nombre ordinal fois un intervalle de service.


 
8. Système selon la revendication 7, dans lequel l'intervalle de service est plus grand que l'intervalle d'arrivée (43).
 
9. Système selon la revendication 7, dans lequel le terme constant est déterminé spécifiquement pour le groupe de demandes (42a à 42g).
 
10. Système selon la revendication 7, dans lequel l'unité QoS (27) est couplée entre la cible (12) et l'interconnexion (13).
 
11. Système selon la revendication 10, dans lequel l'initiateur (11), la cible (12), l'interconnexion (13), et l'unité QoS (27) sont tous placés sur une puce.
 
12. Système selon la revendication 10, dans lequel l'unité QoS (27) fait partie de l'interconnexion (13).
 
13. Système selon la revendication 10, dans lequel l'unité QoS (27) fait partie de la cible (12).
 




Drawing





























Cited references

REFERENCES CITED IN THE DESCRIPTION



This list of references cited by the applicant is for the reader's convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard.

Patent documents cited in the description




Non-patent literature cited in the description