US6898649B2 - Arbiter for queue management system for allocating bus mastership as a percentage of total bus time - Google Patents

Arbiter for queue management system for allocating bus mastership as a percentage of total bus time Download PDF

Info

Publication number
US6898649B2
US6898649B2 US10/035,930 US3593001A US6898649B2 US 6898649 B2 US6898649 B2 US 6898649B2 US 3593001 A US3593001 A US 3593001A US 6898649 B2 US6898649 B2 US 6898649B2
Authority
US
United States
Prior art keywords
bus
queue
qms
mastership
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US10/035,930
Other versions
US20020166007A1 (en
Inventor
Alistair I. Goudie
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsemi Semiconductor Ltd
Original Assignee
Zarlink Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zarlink Semiconductor Ltd filed Critical Zarlink Semiconductor Ltd
Assigned to ZARLINK SEMICONDUCTOR LIMITED reassignment ZARLINK SEMICONDUCTOR LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GOUDIE, ALISTAIR I.
Publication of US20020166007A1 publication Critical patent/US20020166007A1/en
Application granted granted Critical
Publication of US6898649B2 publication Critical patent/US6898649B2/en
Adjusted expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/10Flow control between communication endpoints
    • H04W28/14Flow control between communication endpoints using intermediate storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/16Central resource management; Negotiation of resources or communication parameters, e.g. negotiating bandwidth or QoS [Quality of Service]

Definitions

  • This invention relates to an arbiter for a system containing multiple bus masters, and in particular to a bus arbiter in a queue management system (QMS) block in a Bluetooth baseband peripheral.
  • the invention also relates to a QMS including such an arbiter.
  • a bus arbiter for a QMS is used to decide bus mastership in a system having multiple masters each having real time requirements.
  • a master with real time requirements is not likely to need to access the bus all the time, but it does need to be sure it can make a predetermined number of bus accesses within a given period.
  • Known arbiter blocks have a fixed set of priority levels so that, if a high priority block requests mastership, it prevents bus access to all lower priority blocks. In some known systems, all the prioritisation levels are required to be shuffled, but this rarely leads to a situation that can guarantee bandwidth to multiple arbiter blocks.
  • the present invention provides an arbiter for a system having multiple bus masters each having real time requirements for mastership of a bus, wherein the arbiter is arranged so that the amount of time that each bus master can gain bus access is a percentage of the total bus time.
  • bus access is evenly distributed, rather than occurring in bursts.
  • the arbiter further comprises means for allocating priority levels for bus mastership when a given bus master does not request bus mastership during its allocated percentage of the total bus time.
  • the invention also provides a bus master each having real time requirements for mastership of the bus, and an arbiter for allocating bus mastership to the bus masters, wherein the arbiter is as defined above.
  • the system comprises a QMS, and each bus master is a queue user.
  • the QMS may include a queue portal for each of the queue users, a respective queue user interface being positioned between each queue user and its portal.
  • the QMS system further comprises a memory for holding data as it passes through the queues, and wherein one of the queue users is constituted by a processor.
  • the arbiter includes a state machine for allocating each bus master its predetermined percentage of bus time.
  • the state machine determines the active queue portal arbitration by cycling through a predetermined number of states, in a fixed order, or every clock cycle, each of the states being associated with a respective queue portal.
  • the percentage of total bus time allocated to a given queue portal is determined by the number of states associated with that queue portal.
  • the means for allocating priority levels for bus mastership is activated when the queue portal currently selected does not request bus mastership.
  • the arbiter is such that the highest of said priority levels is allocated to non-interruptible memory sequences triggered by the processor, such that the next highest priority level is allocated to accesses to the bus by the processor, and such that the next highest priority level is allocated to accesses to the bus by the QMS.
  • the invention further provides a Bluetooth baseband peripheral comprising a QMS system, link control hardware for communication with Bluetooth devices via a radio IC and the QMS system, and a re-usable microprocessor block, wherein the QMS system is as defined above.
  • the peripheral further comprises an interface block between the bus and the re-usable microprocessor block.
  • the queue users are a communication control block, a host queue user, a voice encoder and decoder, and a processor forming part of the re-usable microprocessor block.
  • each of the queue users is connected to the bus via its queue user interface and a respective bus master and bus tri-state driver.
  • FIG. 1 shows the system architecture for a QMS
  • FIG. 2 shows the system architecture for a QMS which is used for a Bluetooth baseband peripheral
  • FIG. 3 is a flow diagram illustrating the decision processes of a state machine forming part of the architecture of FIG. 2 .
  • FIG. 1 shows a system architecture which includes a QMS, indicated by the dotted-line block 1 , a queue manager software interface 2 , a core (queue manager hardware) 3 , and four identical queue portals 4 A, 4 B, 4 C and 4 D.
  • the portals 4 A to 4 D are associated with respective queue users 5 A to 5 D by means of queue interfaces 6 A to 6 D.
  • the queue users 5 A to SD are external entities that accesses data stored in a queue.
  • the core 3 includes an arbiter 7 , a “memory operation” block 8 , and a re-allocation block 9 .
  • the block 9 includes a block release table 9 a and a removed blocks FIFO 9 b , and communicates with a single port RAM 10 .
  • the arbiter 7 controls access to a bus 11 in a manner described below.
  • the QMS 1 uses the RAM 10 to hold data as it passes through the queues.
  • the QMS 1 can support two types of queues, namely a synchronous queues (which are intended to hold ‘good’ data which can be held for an indeterminate amount of time), and isochronous queues (which are intended to hold a small amount of time-critical data).
  • the mean data rates of the generator and consumer of data in an isochronous queue should be approximately the same.
  • the data may be read/written in bursts, which is typically why the queue system is required.
  • the QMS 1 splits the RAM 10 into memory blocks, which are linked together to form variable length FIFO queues.
  • the QMS 1 can resize a queue (by adjusting the rules for adding memory blocks) as the storage requirement changes. For isochronous queues, a smaller area of contiguous memory is used.
  • a queue portal 4 A to 4 D can be used to access a number of queues, although it can only read/write to one queue at a time.
  • a queue user 5 A to 5 D will indicate which queues it wants to access, and will then do a series of reads (or writes).
  • the queue portal 4 A to 4 D will map the reads (or writes) into RAM accesses.
  • the data will be stored at sequential locations.
  • the relevant queue portal 4 A to 4 D will follow a link to the next memory block in a chain, and start accessing the new memory block.
  • the queue user 5 A to 5 D will not be aware of the linking process (although it will introduce delays to some accesses).
  • the read (or write) operations automatically update memory pointers provided in the queue portals 4 A to 4 D.
  • the queue portals 4 A to 4 D each has a commit/discard mechanism.
  • the current read/write pointer which is updated every read/write
  • a “data block” is not the same thing as a memory block, being a series of consecutive reads/writes, which may be stored within a memory block, or in a number of memory blocks. If a queue user 5 A to 5 D decides a data block should be re-read/re-written, it can do a ‘discard’, which loads the last stored ‘start of data block’ pointer into the current pointer. If the queue user 5 A to 5 D decides a data block is good, it can do a ‘commit’ which loads the current pointer into the ‘start of data block’ pointer. When a queue user 5 A to SD is writing to a queue, it will always decide to commit/discard before unloading the queue.
  • the QMS 1 also includes four flag bits that can indicate boundaries in the data flow.
  • the flags are stored at the start of a memory block (they cannot identify a location within the block). If the most-significant bit (MSB) of the flags is set, the queue portal 4 A to 4 D will advance the current pointer to the start of the next memory block. New data will be stored in the new memory block, rather than filling the previous block first.
  • the other flags will be used to identify boundaries over multiple MSB boundaries.
  • the flags are not necessarily used at the same time as the commit/discard mechanism.
  • the queue user 5 A to 5 D could decide to write several packets before ‘committing’ to them, or it could ‘commit’ to a fragment of a packet.
  • the flags can be used to help with fragmentation and re-assembly of packets, and/or to identify packet headers stored with the data.
  • the isochronuous queues are intended to hold error tolerant, time-critical data (e.g. voice samples).
  • the queue uses a simple FIFO approach (with pointers mapped to an area of the single port RAM 10 ). If the data generator fills the FIFO, it will advance both the generator and consumer pointers, so the oldest data in the FIFO is discarded. If the data consumer empties the FIFO, an error will be indicated, and the last data read from the FIFO will be repeated.
  • FIG. 2 shows the system architecture of a Bluetooth baseband peripheral (indicated by the dotted line B) which contains the hardware required to implement a Bluetooth baseband control.
  • the peripheral is designed to work as a slave peripheral device that can interface to a 16-bit processor or a 32-bit processor (the block uses a 16-bit address and a 16-bit data bus).
  • the peripheral block includes link control hardware required to communicate with other Bluetooth devices via a radio IC and a QMS 21 .
  • the QMS 21 is controlled via a queue manager software interface (not shown).
  • the QMS 21 is identical to the QMS 1 of FIG. 1 , and so is not shown in detail in FIG. 2 .
  • the QMS 21 communicates with a single port RAM 30 , and controls access to a bus 31 .
  • the bus 31 is associated with a “Firefly” block 32 , which is a re-usable microprocessor block which consists of an ARM7TDMI processor and ancillary blocks including a memory/peripheral controller, and an interrupt controller and a UART.
  • the QMS 21 decides bus mastership for queue users 25 A to 25 D (only 25 A to 25 C of which are shown—the queue user 25 D being constituted by the ARM7TDMI processor in the Firefly block 32 ), each of which has an associated user interface 26 A to 26 D.
  • the queue user 25 A is a communication control block (CCB)
  • the queue user 25 B is a host queue user (HOSTIF)
  • the queue user 25 C is a voice encoder and decoder (CODEC)
  • the queue user 25 D is a processor.
  • the queue portals associated with the interfaces 26 A to 26 D are not shown in FIG. 2 , being part of the QMS 21 .
  • the QMS 21 communicates with the bus 31 via a bus master 33 A and a bus tri-state driver 33 B.
  • the user interfaces 26 A to 26 D are connected to the bus 31 via respective bus masters 34 A, 35 A, 36 A and 37 A and respective bus tri-state drivers 34 B, 35 B, 36 B and 37 B.
  • the queue user 25 A is connected to the bus 31 by a bus slave 38
  • the queue user 25 B is connected to the bus 31 by a bus slave 39
  • the CODEC 25 C is connected to the bus 31 by a bus slave 40 .
  • the bus 31 is connected to the Firefly block 32 via up-integration module (UIM) to a bus interface (UBI) block 41 by a UIM bus 42 .
  • UIM up-integration module
  • the processor user interface 26 D is connected to the block 41 by a direct memory access (DMA) upload/download connection 43
  • the block 41 isolates the UIM bus 42 from the bus 31 .
  • the block 41 is connected to the bus 31 by a bus master 41 A and a bus tri-state driver 41 B.
  • the processor 25 D accesses the peripheral block B by getting the UBI block 41 to request bus mastership.
  • the peripheral block B thus has three main parts, namely:
  • the arbiter 7 of the QMS 21 is responsible for determining which queue user 25 A to 25 D can access the bus 31 , which in turn effects which user can access the RAM 32 .
  • An external ‘arbit 13 en’ input signal acts as an enable to the arbiter 7 .
  • the arbiter 7 includes the following priority levels.
  • Priority Function Highest Continuation of un-interruptible operation Active queue portal (round robin approach to provide guaranteed bandwidth) — Processor initiated start of un-interruptible operation — Processor access to Bluetooth block Lowest Re-allocation function
  • a state machine constituted by the arbiter 7 determines the ‘active queue portal’ arbitration. Every Clock cycle, the state machine 7 cycles through the states, in a fixed order. The only exception is non-interruptible sequences which make the state machine wait in its current state. This sequence is:
  • This system ensures a certain percentage of the bus bandwidth is available for each queue portal.
  • the percentage of bus bandwidth allocated should be sufficient to meet the burst requirements of the queue portals, the HOSTIF 25 B being allocated 50%, the processor 25 D being allocated 31.25%, the CCB 25 A being allocated 12.5%, and the CODEC 25 C being allocated 6.25%.
  • the queue portals should work with less than the allocated bandwidth, due to non-interruptible sequences that can temporarily increase the bandwidth used by other portals. (The implementation should allow these allocations to be changed easily.)
  • the arbiter 7 also includes an enable bit for each queue portal.
  • the enable bit can be used to block requests for mastership (although this will not effect the sequence of the state machine).
  • non-interruptible memory sequences which are triggered by the processor 25 D. These operations involve reading from memory, and then modifying the contents of the memory based on what was read. Starting these operations is considered lower priority than queue portal operations (once started, they complete as non-interruptible operations which have the highest priority in the arbiter 7 ). However, the processor 25 D assumes that, once it triggers a non-interruptible memory sequence, by the next time the processor accesses the memory, the non-interruptible memory sequence will be complete.
  • non-interruptible memory sequences have to be higher priority than the processor 25 D.
  • the next level of priority is the processor 25 D accesses to the UBI block 41 .
  • the processor 25 D is treated as being lower priority than the queue portals so that the bandwidth available to the queue portals can be guaranteed. If the processor 25 D attempts to become bus master while a higher priority function is using the bus 31 , the processor is held in a wait state. This adds some uncertainty to the speed at which software remaining on the processor 25 D will operate, but this is taken into account when writing the software.
  • the processor 25 D should not be held up by low priority functions, and so needs to have a higher priority than these other non-time-critical functions.
  • the processor 25 D can modify a control bit in the UBI block 41 which disables the normal arbiter 7 , and makes the UBI block the bus master, thereby making the processor the highest priority bus master. However, this bit is not used in normal operation.) If no other function is requesting to be bus master, the QMS 21 becomes bus master, and can use the ‘spare’ bus cycles to do low priority accesses, such as block re-allocation.
  • FIG. 3 is a flow chart illustrating the decision processes of the arbiter 7 .
  • the processes start at step 100 , and, in step 101 the arbiter 7 checks to see if it is enabled. If not, the block 40 has bus mastership (step 102 ), and the arbiter proceeds to step 103 to wait for the next clock cycle, at which stage step 101 is repeated.
  • step 104 queries whether the current bus master requests retention of mastership. If so, that bus master is granted retention of bus mastership (in step 105 ), and the arbiter 7 then returns to step 103 to wait for the next clock cycle. If the current bus master did not request retention of mastership, the arbiter 7 proceeds to step 106 , where the queue portal is advanced in round robin fashion. If the queue portal selected in this manner requests bus mastership step ( 107 ), the selected queue portal is granted bus mastership (or passes mastership to the associated queue user)—in step 108 . The programme then returns to step 103 to wait for the next clock cycle.
  • the QMS core is asked whether a processor initiated memory operation has requested bus mastership (step 109 ). If the answer to this question is yes, a memory operation block in the QMS core is granted bus mastership (step 110 ), and the arbiter 7 then returns to step 103 to wait for the next clock cycle. If a processor initiated memory operation has not requested bus mastership, a check is made (step 111 ) to see whether the processor 25 D has requested a bus mastership via the block 41 . If such a request has been made, the block 41 is granted bus mastership (step 112 ) and the arbiter 7 returns to step 103 to wait for the next clock cycle.
  • step 113 a check is then made to see whether the re-allocation block 9 has requested bus mastership. If it has, a check is made to see whether there has been a block release table operation (step 114 ). If a block release table operation is required, this is carried out in step 115 ; and, if not, the blocks are removed from the FIFO 9 b (step 116 ). In either case, the arbiter 7 then returns to step 103 to wait for the next clock cycle. If the re-allocation block 9 has not requested bus mastership the QMS 21 is given bus mastership (step 117 ), after which the arbiter 7 returns to step 103 to wait for the next clock cycle.
  • step 117 at all times there must be one (and only one) bus master. Hence, if no other block wants to be bus master, the QMS block 21 must be the bus master. However, the QMS 21 doesn't want to have anything to do with the bus 31 , so it drives the address and control signals of the bus into a state where it is not actively reading/writing to any blocks.
  • the version of the arbiter described above includes a ‘hold’ signal to allow a block to do an un-interruptible read-modify-write cycle.
  • a ‘hold’ signal to allow a block to do an un-interruptible read-modify-write cycle.
  • this re-introduces some uncertainty into the number of bus cycles allocated (because the ‘hold’ cycles are not counted). If this becomes a problem, the arbiter could take account of ‘hold’ cycles when allocating future bus access (e.g. if a block introduces a hold cycle, the next time the arbiter is going to allocate bus mastership to the block, it could skip it).
  • the arbiter described above uses a state machine with sixteen states. If a finer solution in the allocation of bus mastership is required, either more states could be introduced, or a numerical algorithm could be used.
  • the arbiter described above could be used with any system that needs to control access to a resource (usually a bus). Its greatest strength is defining the percentage of time that a unit can access a resource. This gives much more certainty to defining the design requirements of a block accessing the resource, and any given block doesn't have to worry about that other blocks accessing the resource do. This is to be contrasted with known systems with a prioritised access, where changes to a high priority block could affect the behaviour of a lower priority block).

Abstract

An arbiter (7) is provided for a QMS having multiple queue users (5A to 5D), each having real time requirements for mastership of a bus (31). The arbiter (7) is arranged so that the amount of time that each queue user (5A to 5D) can gain bus access is a percentage of the total bus time.

Description

CROSS-REFERENCES TO RELATED APPLICATIONS
This application claims the benefit of United Kingdom Patent Application No. 0031763.6 filed on Dec. 29, 2000.
FIELD OF THE INVENTION
This invention relates to an arbiter for a system containing multiple bus masters, and in particular to a bus arbiter in a queue management system (QMS) block in a Bluetooth baseband peripheral. The invention also relates to a QMS including such an arbiter.
BACKGROUND OF THE INVENTION
A bus arbiter for a QMS is used to decide bus mastership in a system having multiple masters each having real time requirements. A master with real time requirements is not likely to need to access the bus all the time, but it does need to be sure it can make a predetermined number of bus accesses within a given period. Known arbiter blocks have a fixed set of priority levels so that, if a high priority block requests mastership, it prevents bus access to all lower priority blocks. In some known systems, all the prioritisation levels are required to be shuffled, but this rarely leads to a situation that can guarantee bandwidth to multiple arbiter blocks.
SUMMARY OF THE INVENTION
The present invention provides an arbiter for a system having multiple bus masters each having real time requirements for mastership of a bus, wherein the arbiter is arranged so that the amount of time that each bus master can gain bus access is a percentage of the total bus time.
This ensures worse case conditions for bus access can be clearly defined, and will not be affected by adding or changing the functions of other bus masters. Consequently, bus access is evenly distributed, rather than occurring in bursts.
Preferably, the arbiter further comprises means for allocating priority levels for bus mastership when a given bus master does not request bus mastership during its allocated percentage of the total bus time.
The invention also provides a bus master each having real time requirements for mastership of the bus, and an arbiter for allocating bus mastership to the bus masters, wherein the arbiter is as defined above.
In a preferred embodiment, the system comprises a QMS, and each bus master is a queue user. In this case, the QMS may include a queue portal for each of the queue users, a respective queue user interface being positioned between each queue user and its portal.
Preferably, the QMS system further comprises a memory for holding data as it passes through the queues, and wherein one of the queue users is constituted by a processor.
Advantageously, the arbiter includes a state machine for allocating each bus master its predetermined percentage of bus time. Preferably, the state machine determines the active queue portal arbitration by cycling through a predetermined number of states, in a fixed order, or every clock cycle, each of the states being associated with a respective queue portal. Conveniently, the percentage of total bus time allocated to a given queue portal is determined by the number of states associated with that queue portal.
In a preferred embodiment, the means for allocating priority levels for bus mastership is activated when the queue portal currently selected does not request bus mastership. Advantageously, the arbiter is such that the highest of said priority levels is allocated to non-interruptible memory sequences triggered by the processor, such that the next highest priority level is allocated to accesses to the bus by the processor, and such that the next highest priority level is allocated to accesses to the bus by the QMS.
The invention further provides a Bluetooth baseband peripheral comprising a QMS system, link control hardware for communication with Bluetooth devices via a radio IC and the QMS system, and a re-usable microprocessor block, wherein the QMS system is as defined above.
Advantageously, the peripheral further comprises an interface block between the bus and the re-usable microprocessor block.
Preferably, the queue users are a communication control block, a host queue user, a voice encoder and decoder, and a processor forming part of the re-usable microprocessor block. Conveniently, each of the queue users is connected to the bus via its queue user interface and a respective bus master and bus tri-state driver.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention will now be described in greater detail, by way of example, with reference to the drawings in which:
FIG. 1 shows the system architecture for a QMS;
FIG. 2 shows the system architecture for a QMS which is used for a Bluetooth baseband peripheral; and
FIG. 3 is a flow diagram illustrating the decision processes of a state machine forming part of the architecture of FIG. 2.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Referring to the drawings, FIG. 1 shows a system architecture which includes a QMS, indicated by the dotted-line block 1, a queue manager software interface 2, a core (queue manager hardware) 3, and four identical queue portals 4A, 4B, 4C and 4D. The portals 4A to 4D are associated with respective queue users 5A to 5D by means of queue interfaces 6A to 6D. The queue users 5A to SD are external entities that accesses data stored in a queue. The core 3 includes an arbiter 7, a “memory operation” block 8, and a re-allocation block 9. The block 9 includes a block release table 9 a and a removed blocks FIFO 9 b, and communicates with a single port RAM 10. The arbiter 7 controls access to a bus 11 in a manner described below.
The QMS 1 uses the RAM 10 to hold data as it passes through the queues. The QMS 1 can support two types of queues, namely a synchronous queues (which are intended to hold ‘good’ data which can be held for an indeterminate amount of time), and isochronous queues (which are intended to hold a small amount of time-critical data). The mean data rates of the generator and consumer of data in an isochronous queue should be approximately the same. The data may be read/written in bursts, which is typically why the queue system is required. For isochronous queues, the QMS 1 splits the RAM 10 into memory blocks, which are linked together to form variable length FIFO queues. The QMS 1 can resize a queue (by adjusting the rules for adding memory blocks) as the storage requirement changes. For isochronous queues, a smaller area of contiguous memory is used.
As mentioned above, for each queue user 5A to 5D there is a dedicated generic queue portal 4A to 4D. A queue portal 4A to 4D can be used to access a number of queues, although it can only read/write to one queue at a time. A queue user 5A to 5D will indicate which queues it wants to access, and will then do a series of reads (or writes). The queue portal 4A to 4D will map the reads (or writes) into RAM accesses. Within a memory block, the data will be stored at sequential locations. At the end of a memory block, the relevant queue portal 4A to 4D will follow a link to the next memory block in a chain, and start accessing the new memory block. The queue user 5A to 5D will not be aware of the linking process (although it will introduce delays to some accesses).
The read (or write) operations automatically update memory pointers provided in the queue portals 4A to 4D. However, for a synchronous queues in which data is expected to be good, there may be a requirement to repeat a series of reads/writes (e.g. due to a requirement to re-transmit a packet, or due to an error in a received packet). Therefore, the queue portals 4A to 4D each has a commit/discard mechanism. As well as the current read/write pointer (which is updated every read/write), there is a second pointer which can identify the start of a data block. A “data block” is not the same thing as a memory block, being a series of consecutive reads/writes, which may be stored within a memory block, or in a number of memory blocks. If a queue user 5A to 5D decides a data block should be re-read/re-written, it can do a ‘discard’, which loads the last stored ‘start of data block’ pointer into the current pointer. If the queue user 5A to 5D decides a data block is good, it can do a ‘commit’ which loads the current pointer into the ‘start of data block’ pointer. When a queue user 5A to SD is writing to a queue, it will always decide to commit/discard before unloading the queue.
The QMS 1 also includes four flag bits that can indicate boundaries in the data flow. The flags are stored at the start of a memory block (they cannot identify a location within the block). If the most-significant bit (MSB) of the flags is set, the queue portal 4A to 4D will advance the current pointer to the start of the next memory block. New data will be stored in the new memory block, rather than filling the previous block first. The other flags will be used to identify boundaries over multiple MSB boundaries. The flags are not necessarily used at the same time as the commit/discard mechanism. The queue user 5A to 5D could decide to write several packets before ‘committing’ to them, or it could ‘commit’ to a fragment of a packet. The flags can be used to help with fragmentation and re-assembly of packets, and/or to identify packet headers stored with the data.
For isochronous queues, a simpler mechanism is required. The commit/discard mechanism and start of packet indication are not required. The isochronuous queues are intended to hold error tolerant, time-critical data (e.g. voice samples). The queue uses a simple FIFO approach (with pointers mapped to an area of the single port RAM 10). If the data generator fills the FIFO, it will advance both the generator and consumer pointers, so the oldest data in the FIFO is discarded. If the data consumer empties the FIFO, an error will be indicated, and the last data read from the FIFO will be repeated.
FIG. 2 shows the system architecture of a Bluetooth baseband peripheral (indicated by the dotted line B) which contains the hardware required to implement a Bluetooth baseband control. The peripheral is designed to work as a slave peripheral device that can interface to a 16-bit processor or a 32-bit processor (the block uses a 16-bit address and a 16-bit data bus). The peripheral block includes link control hardware required to communicate with other Bluetooth devices via a radio IC and a QMS 21. As with the embodiment of FIG. 1, the QMS 21 is controlled via a queue manager software interface (not shown). The QMS 21 is identical to the QMS 1 of FIG. 1, and so is not shown in detail in FIG. 2. Thus, the QMS 21 communicates with a single port RAM 30, and controls access to a bus 31. The bus 31 is associated with a “Firefly” block 32, which is a re-usable microprocessor block which consists of an ARM7TDMI processor and ancillary blocks including a memory/peripheral controller, and an interrupt controller and a UART.
The QMS 21 decides bus mastership for queue users 25A to 25D (only 25A to 25C of which are shown—the queue user 25D being constituted by the ARM7TDMI processor in the Firefly block 32), each of which has an associated user interface 26A to 26D. The queue user 25A is a communication control block (CCB), the queue user 25B is a host queue user (HOSTIF), the queue user 25C is a voice encoder and decoder (CODEC), and the queue user 25D is a processor. The queue portals associated with the interfaces 26A to 26D are not shown in FIG. 2, being part of the QMS 21.
The QMS 21 communicates with the bus 31 via a bus master 33A and a bus tri-state driver 33B. Similarly, the user interfaces 26A to 26D are connected to the bus 31 via respective bus masters 34A, 35A, 36A and 37A and respective bus tri-state drivers 34B, 35B, 36B and 37B. The queue user 25A is connected to the bus 31 by a bus slave 38, the queue user 25B is connected to the bus 31 by a bus slave 39, and the CODEC 25C is connected to the bus 31 by a bus slave 40. The bus 31 is connected to the Firefly block 32 via up-integration module (UIM) to a bus interface (UBI) block 41 by a UIM bus 42. The processor user interface 26D is connected to the block 41 by a direct memory access (DMA) upload/download connection 43 The block 41 isolates the UIM bus 42 from the bus 31. The block 41 is connected to the bus 31 by a bus master 41A and a bus tri-state driver 41B. The processor 25D accesses the peripheral block B by getting the UBI block 41 to request bus mastership.
The peripheral block B thus has three main parts, namely:
  • 1. A link controller that interfaces to a radio, the link controller comprising the CCB 25A, the CCB queue user interface 26A, a CCB radio interface (CRI) 25R and a voile encoding translator (VET) 26T.
  • 2. A buffer manager that stores data packets and allows processor interaction, the buffer manager comprising the UBI 41, the processor interface 26D, the QMS 21, and a block of the single port RAM 30.
  • 3. A host interface that interfaces to an external host device (not shown), the host interface comprising the host queue user interface 26B, the host interface 25B (which may be a UART), the voice queue user interface 26C and the CODEC
The arbiter 7 of the QMS 21 is responsible for determining which queue user 25A to 25D can access the bus 31, which in turn effects which user can access the RAM 32. An external ‘arbit13 en’ input signal (see FIG. 1) acts as an enable to the arbiter 7. When enabled, the arbiter 7 includes the following priority levels.
Priority Function
Highest Continuation of un-interruptible operation
Active queue portal (round robin approach
to provide guaranteed bandwidth)
Processor initiated start of un-interruptible
operation
Processor access to Bluetooth block
Lowest Re-allocation function
A state machine constituted by the arbiter 7 determines the ‘active queue portal’ arbitration. Every Clock cycle, the state machine 7 cycles through the states, in a fixed order. The only exception is non-interruptible sequences which make the state machine wait in its current state. This sequence is:
State Priority Queue Portal
0 The queue portal for the user 25D
1 The queue portal for the user 25B
2 The queue portal for the user 25D
3 The queue portal for the user 25B
4 The queue portal for the user 25D
5 The queue portal for the user 25B
6 The queue portal for the user 25A
7 The queue portal for the user 25B
8 The queue portal for the user 25D
9 The queue portal for the user 25B
10 The queue portal for the user 25C
11 The queue portal for the user 25B
12 The queue portal for the user 25D
13 The queue portal for the user 25B
14 The queue portal for the user 25A
15 The queue portal for the user 25B
This system ensures a certain percentage of the bus bandwidth is available for each queue portal. The percentage of bus bandwidth allocated should be sufficient to meet the burst requirements of the queue portals, the HOSTIF 25B being allocated 50%, the processor 25D being allocated 31.25%, the CCB 25A being allocated 12.5%, and the CODEC 25C being allocated 6.25%. The queue portals should work with less than the allocated bandwidth, due to non-interruptible sequences that can temporarily increase the bandwidth used by other portals. (The implementation should allow these allocations to be changed easily.)
The arbiter 7 also includes an enable bit for each queue portal. The enable bit can be used to block requests for mastership (although this will not effect the sequence of the state machine).
If the queue portal currently selected by the state machine (arbiter) 7 does not request bus mastership, either because it has no data to transfer or it has been disabled, then one of the lower priority functions can be come b us master. The next level of priority is used for “non-interruptible memory sequences”, which are triggered by the processor 25D. These operations involve reading from memory, and then modifying the contents of the memory based on what was read. Starting these operations is considered lower priority than queue portal operations (once started, they complete as non-interruptible operations which have the highest priority in the arbiter 7). However, the processor 25D assumes that, once it triggers a non-interruptible memory sequence, by the next time the processor accesses the memory, the non-interruptible memory sequence will be complete. Therefore, non-interruptible memory sequences have to be higher priority than the processor 25D. The next level of priority is the processor 25D accesses to the UBI block 41. The processor 25D is treated as being lower priority than the queue portals so that the bandwidth available to the queue portals can be guaranteed. If the processor 25D attempts to become bus master while a higher priority function is using the bus 31, the processor is held in a wait state. This adds some uncertainty to the speed at which software remaining on the processor 25D will operate, but this is taken into account when writing the software. The processor 25D should not be held up by low priority functions, and so needs to have a higher priority than these other non-time-critical functions. (In addition, the processor 25D can modify a control bit in the UBI block 41 which disables the normal arbiter 7, and makes the UBI block the bus master, thereby making the processor the highest priority bus master. However, this bit is not used in normal operation.) If no other function is requesting to be bus master, the QMS 21 becomes bus master, and can use the ‘spare’ bus cycles to do low priority accesses, such as block re-allocation.
FIG. 3 is a flow chart illustrating the decision processes of the arbiter 7. The processes start at step 100, and, in step 101 the arbiter 7 checks to see if it is enabled. If not, the block 40 has bus mastership (step 102), and the arbiter proceeds to step 103 to wait for the next clock cycle, at which stage step 101 is repeated.
If the arbiter 7 is enabled, step 104 queries whether the current bus master requests retention of mastership. If so, that bus master is granted retention of bus mastership (in step 105), and the arbiter 7 then returns to step 103 to wait for the next clock cycle. If the current bus master did not request retention of mastership, the arbiter 7 proceeds to step 106, where the queue portal is advanced in round robin fashion. If the queue portal selected in this manner requests bus mastership step (107), the selected queue portal is granted bus mastership (or passes mastership to the associated queue user)—in step 108. The programme then returns to step 103 to wait for the next clock cycle.
If the queue portal selected does not request bus mastership, the QMS core is asked whether a processor initiated memory operation has requested bus mastership (step 109). If the answer to this question is yes, a memory operation block in the QMS core is granted bus mastership (step 110), and the arbiter 7 then returns to step 103 to wait for the next clock cycle. If a processor initiated memory operation has not requested bus mastership, a check is made (step 111) to see whether the processor 25D has requested a bus mastership via the block 41. If such a request has been made, the block 41 is granted bus mastership (step 112) and the arbiter 7 returns to step 103 to wait for the next clock cycle.
If the processor 25D did not request bus mastership via the block 41, a check is then made (step 113) to see whether the re-allocation block 9 has requested bus mastership. If it has, a check is made to see whether there has been a block release table operation (step 114). If a block release table operation is required, this is carried out in step 115; and, if not, the blocks are removed from the FIFO 9 b (step 116). In either case, the arbiter 7 then returns to step 103 to wait for the next clock cycle. If the re-allocation block 9 has not requested bus mastership the QMS 21 is given bus mastership (step 117), after which the arbiter 7 returns to step 103 to wait for the next clock cycle. In step 117, at all times there must be one (and only one) bus master. Hence, if no other block wants to be bus master, the QMS block 21 must be the bus master. However, the QMS 21 doesn't want to have anything to do with the bus 31, so it drives the address and control signals of the bus into a state where it is not actively reading/writing to any blocks.
It will be apparent that modifications would be made to the arbiter described above. Thus, the version of the arbiter described above includes a ‘hold’ signal to allow a block to do an un-interruptible read-modify-write cycle. Unfortunately, this re-introduces some uncertainty into the number of bus cycles allocated (because the ‘hold’ cycles are not counted). If this becomes a problem, the arbiter could take account of ‘hold’ cycles when allocating future bus access (e.g. if a block introduces a hold cycle, the next time the arbiter is going to allocate bus mastership to the block, it could skip it).
The arbiter described above uses a state machine with sixteen states. If a finer solution in the allocation of bus mastership is required, either more states could be introduced, or a numerical algorithm could be used. The arbiter described above could be used with any system that needs to control access to a resource (usually a bus). Its greatest strength is defining the percentage of time that a unit can access a resource. This gives much more certainty to defining the design requirements of a block accessing the resource, and any given block doesn't have to worry about that other blocks accessing the resource do. This is to be contrasted with known systems with a prioritised access, where changes to a high priority block could affect the behaviour of a lower priority block).

Claims (20)

1. A system comprising:
a bus;
a plurality of bus masters each having real-time requirements for mastership of the bus;
an arbiter for allocating bus mastership to the bus masters, the arbiter being arranged so that the amount of time that each bus master can gain bus access is a percentage of the total bus time, and
prioritization means for allocating priority levels for bus mastership when a given bus master does not request bus mastership during its allocated percentage of time.
2. A Queue Management System (QMS) supporting a plurality of queue users using a bus, each queue user being a bus master having real-time requirements for mastership of the bus, said QMS system comprising:
an arbiter for allocating mastership of the bus to a given bus master, said mastership allocated as a percentage of the total bus time; and
means for allocating priority levels for bus mastership when the given bus does not require bus mastership during its allocated percentage of the total bus time.
3. The QMS system according to claim 2, further comprising a queue portal for each of the queue users, a respective queue user interface being positioned between each queue user and its corresponding queue portal.
4. The QMS system according to claim 3, said QMS further comprising a memory for storing data as said data passes through said QMS; wherein one of the queue users is a processor.
5. The QMS system according to claim 2, said arbiter further including a state machine for allocating to each bus master its percentage of the total bus time.
6. The QMS system according to claim 4, said arbiter further including a state machine for allocating to each bus master its percentage of the total bus time.
7. The QMS system according to claim 5, wherein said state machine determines an active queue portal arbitration by cycling through a predetermined number of states, in a fixed order or every clock cycle, each of said states being associated with a respective queue user.
8. The QMS system according to claim 6, wherein said state machine determines an active queue portal arbitration by cycling through a predetermined number of states, in a fixed order or every clock cycle, each of said states being associated with a respective queue portal.
9. The QMS system according to claim 7, wherein said percentage of total bus time allocated to a given queue user is determined by a total number of states associated with the given queue user.
10. The QMS system according to claim 8, wherein said percentage of total bus time allocated to a given queue user is determined by a total number of states associated with a given queue portal corresponding to said given queue user.
11. The QMS system according to claim 10, wherein, when a given state is active and the given queue user corresponding to said given queue portal associated with said given state does not request bus mastership, then said means for allocating priority levels for bus mastership is activated.
12. The QMS system according to claim 11, wherein said arbiter allocates the highest priority level to bus accesses by a non-interruptible memory sequence triggered by the processor.
13. The QMS system according to claim 12, wherein said arbiter allocates a second highest priority level to bus accesses by the processor.
14. The QMS system according to claim 13, wherein said arbiter allocates a third highest priority level to bus accesses by said QMS.
15. The QMS system according to claim 9, wherein, when a given state is active and the given queue user associated with said given state does not request bus mastership, then said means for allocating priority levels for bus mastership is activated.
16. A Queue Management System (QMS) supporting a plurality of queue users using a bus, each queue user being a bus master having requirements for mastership of the bus, said QMS system comprising:
a plurality of queue portals, each queue user being associated with a corresponding queue portal; and
an arbiter including:
means for allocating bus mastership to a given queue user as a percentage of total bus time, said means for allocating bus mastership having a state machine,
wherein said state machine cycles through a predetermined number of states, each of said states being associated with a corresponding queue portal and thus also being associated with a corresponding queue user associated with said corresponding queue portal, and further
wherein, when a given state is active, the corresponding queue user associated with said corresponding queue portal associated with said given state is allocated bus mastership, and still further
wherein said percentage of total bus time allocated to said given queue user is determined by the total number of states associated therewith as compared to the total number of states; and
means for allocating priority levels for bus mastership which is activated when the queue user associated with a specific state does not request bus mastership when said specific state is active.
17. A Bluetooth baseband peripheral comprising:
a QMS system according to one of claims 2, 3-16;
a re-usable microprocessor block;
link control hardware for communication with Bluetooth devices via a radio IC and a QMS system; and
an interface block between the bus and said re-usable microprocessor block,
the queue users comprising:
a communication control block;
a host queue user;
a voice encoder/decoder; and
a processor forming part of said re-usable microprocessor block,
wherein each of said queue users is connected to the bus via its queue user interface and a respective bus master and bus tri-state driver.
18. A Bluetooth baseband peripheral comprising:
a QMS system according to one of claims 2, 10, 11, 14, 9, 15, and 16;
a re-usable microprocessor block;
link control hardware for communication with Bluetooth devices via a radio IC and a QMS system; and
an interface block between the bus and said re-usable microprocessor block.
19. The Bluetooth baseband peripheral according to claim 18, wherein the queue users is one or more of a communication control block, a host queue user, a voice encoder/decoder, and a processor forming part of said re-usable microprocessor block, and further
wherein each of said queue users is connected to the bus via its queue user interface and a respective bus master and bus tri-state driver.
20. A Bluetooth baseband peripheral comprising:
a QMS system according to one of claims 2, 11, 15, and 16; and
link control hardware for communication with Bluetooth devices via a radio IC and a QMS system.
US10/035,930 2000-12-29 2001-12-26 Arbiter for queue management system for allocating bus mastership as a percentage of total bus time Expired - Fee Related US6898649B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0031763.6A GB0031763D0 (en) 2000-12-29 2000-12-29 Arbiter for a queue management system
GB0031763.6 2000-12-29

Publications (2)

Publication Number Publication Date
US20020166007A1 US20020166007A1 (en) 2002-11-07
US6898649B2 true US6898649B2 (en) 2005-05-24

Family

ID=9905972

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/035,930 Expired - Fee Related US6898649B2 (en) 2000-12-29 2001-12-26 Arbiter for queue management system for allocating bus mastership as a percentage of total bus time

Country Status (5)

Country Link
US (1) US6898649B2 (en)
EP (1) EP1220103B1 (en)
AT (1) ATE254780T1 (en)
DE (1) DE60101253T2 (en)
GB (2) GB0031763D0 (en)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040092278A1 (en) * 2002-11-13 2004-05-13 Wilhelmus Diepstraten Managing priority queues and escalation in wireless communication systems
US20040210695A1 (en) * 2003-04-18 2004-10-21 Wolf-Dietrich Weber Various methods and apparatuses for arbitration among blocks of functionality
US20040225822A1 (en) * 2003-05-08 2004-11-11 Fujitsu Limited Bus connection circuit and bus connection system
US20050076125A1 (en) * 2003-10-03 2005-04-07 Wolf-Dietrich Weber Low power shared link arbitration
US20060095634A1 (en) * 2004-11-01 2006-05-04 Meyer Michael J Method and apparatus for round robin resource arbitration with a fast request to grant response
US20080177914A1 (en) * 2003-06-26 2008-07-24 Nvidia Corporation Hardware support system for accelerated disk I/O
US20080177925A1 (en) * 2003-12-01 2008-07-24 Radoslav Danilak Hardware support system for accelerated disk I/O
US20080282007A1 (en) * 2007-05-10 2008-11-13 Moran Christine E METHOD AND SYSTEM FOR CONTROLLING TRANSMISSION and EXECUTION OF COMMANDS IN AN INTEGRATED CIRCUIT DEVICE
US20100070667A1 (en) * 2008-09-16 2010-03-18 Nvidia Corporation Arbitration Based Allocation of a Shared Resource with Reduced Latencies
US20100095036A1 (en) * 2008-10-14 2010-04-15 Nvidia Corporation Priority Based Bus Arbiters Avoiding Deadlock And Starvation On Buses That Support Retrying Of Transactions
US20100259536A1 (en) * 2009-04-08 2010-10-14 Nvidia Corporation System and method for deadlock-free pipelining
US20110283032A1 (en) * 2009-02-02 2011-11-17 Fujitsu Limited Arbitration device
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US8356142B1 (en) 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US20130111090A1 (en) * 2011-10-31 2013-05-02 William V. Miller Queue arbitration using non-stalling request indication
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US8793420B2 (en) 2011-09-16 2014-07-29 Samsung Electronics Co., Ltd. System on chip, electronic system including the same, and method of operating the same

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7155553B2 (en) * 2003-08-14 2006-12-26 Texas Instruments Incorporated PCI express to PCI translation bridge
US7248587B1 (en) * 2005-04-11 2007-07-24 Azul Systems, Inc. Error recovery of variable-length packets without sequence numbers or special symbols used for synchronizing transmit retry-buffer pointer
DE102006009034B3 (en) 2006-02-27 2007-08-02 Infineon Technologies Ag Bus system method for operating a bus system has transmission channels for linking masters and slaves to each other and linking each master to an arbiter
CN105515925A (en) * 2014-09-26 2016-04-20 深圳中德世纪新能源有限公司 UART multi-master real-time communication system
KR101915944B1 (en) * 2017-05-08 2018-11-08 주식회사 애포샤 A Method for processing client requests in a cluster system, a Method and an Apparatus for processing I/O according to the client requests
US11954518B2 (en) * 2019-12-20 2024-04-09 Nvidia Corporation User-defined metered priority queues

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4969120A (en) * 1989-02-13 1990-11-06 International Business Machines Corporation Data processing system for time shared access to a time slotted bus
US5241632A (en) * 1992-01-30 1993-08-31 Digital Equipment Corporation Programmable priority arbiter
WO1994009437A1 (en) * 1992-10-14 1994-04-28 Telefonaktiebolaget Lm Ericsson Signal handling system with a shared data memory
EP0675445A2 (en) * 1994-03-30 1995-10-04 International Business Machines Corporation Bus allocation in a computer system
US5463624A (en) * 1994-04-15 1995-10-31 Dsc Communications Corporation Bus arbitration method for telecommunications switching
US5485586A (en) * 1992-01-10 1996-01-16 Digital Equipment Corporation Queue based arbitration using a FIFO data structure
US5583999A (en) * 1994-01-14 1996-12-10 Fujitsu Limited Bus arbiter and bus arbitrating method
WO1998012645A1 (en) * 1996-09-19 1998-03-26 Philips Electronics N.V. Method and apparatus for bus arbitration with weighted bandwidth allocation
US5784569A (en) * 1996-09-23 1998-07-21 Silicon Graphics, Inc. Guaranteed bandwidth allocation method in a computer system for input/output data transfers
US6145040A (en) * 1996-07-15 2000-11-07 Micron Technology, Inc. Method and system for apportioning computer bus bandwidth
US6363445B1 (en) * 1998-10-15 2002-03-26 Micron Technology, Inc. Method of bus arbitration using requesting device bandwidth and priority ranking

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491916A (en) * 1979-11-05 1985-01-01 Litton Resources Systems, Inc. Large volume, high speed data processor
JP2705709B2 (en) * 1991-06-17 1998-01-28 大日本スクリーン製造株式会社 Time-division transfer device for data
JPH0594409A (en) * 1991-10-02 1993-04-16 Nec Eng Ltd Bus arbitration system
US5787264A (en) * 1995-05-08 1998-07-28 Apple Computer, Inc. Method and apparatus for arbitrating access to a shared bus
EP0924623A3 (en) * 1997-12-22 2000-07-05 Compaq Computer Corporation Computer system including arbitration mechanism allowing multiple bus masters to access a graphics bus

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4969120A (en) * 1989-02-13 1990-11-06 International Business Machines Corporation Data processing system for time shared access to a time slotted bus
US5485586A (en) * 1992-01-10 1996-01-16 Digital Equipment Corporation Queue based arbitration using a FIFO data structure
US5241632A (en) * 1992-01-30 1993-08-31 Digital Equipment Corporation Programmable priority arbiter
WO1994009437A1 (en) * 1992-10-14 1994-04-28 Telefonaktiebolaget Lm Ericsson Signal handling system with a shared data memory
US5583999A (en) * 1994-01-14 1996-12-10 Fujitsu Limited Bus arbiter and bus arbitrating method
EP0675445A2 (en) * 1994-03-30 1995-10-04 International Business Machines Corporation Bus allocation in a computer system
US5463624A (en) * 1994-04-15 1995-10-31 Dsc Communications Corporation Bus arbitration method for telecommunications switching
US6145040A (en) * 1996-07-15 2000-11-07 Micron Technology, Inc. Method and system for apportioning computer bus bandwidth
WO1998012645A1 (en) * 1996-09-19 1998-03-26 Philips Electronics N.V. Method and apparatus for bus arbitration with weighted bandwidth allocation
US6385678B2 (en) * 1996-09-19 2002-05-07 Trimedia Technologies, Inc. Method and apparatus for bus arbitration with weighted bandwidth allocation
US5784569A (en) * 1996-09-23 1998-07-21 Silicon Graphics, Inc. Guaranteed bandwidth allocation method in a computer system for input/output data transfers
US6363445B1 (en) * 1998-10-15 2002-03-26 Micron Technology, Inc. Method of bus arbitration using requesting device bandwidth and priority ranking

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040092278A1 (en) * 2002-11-13 2004-05-13 Wilhelmus Diepstraten Managing priority queues and escalation in wireless communication systems
US7421273B2 (en) * 2002-11-13 2008-09-02 Agere Systems Inc. Managing priority queues and escalation in wireless communication systems
US7149829B2 (en) * 2003-04-18 2006-12-12 Sonics, Inc. Various methods and apparatuses for arbitration among blocks of functionality
US20040210695A1 (en) * 2003-04-18 2004-10-21 Wolf-Dietrich Weber Various methods and apparatuses for arbitration among blocks of functionality
US20040225822A1 (en) * 2003-05-08 2004-11-11 Fujitsu Limited Bus connection circuit and bus connection system
US7124232B2 (en) * 2003-05-08 2006-10-17 Fujitsu Limited Bus connection circuit and bus connection system having plural request queues, a bus interface portion outputting request signals, an arbiter performing arbitration of plural requests and a bus interface portion outputting a request signal indicating allocation of pre-fetch buffers corresponding to arbitrated requests
US8694688B2 (en) 2003-06-26 2014-04-08 Nvidia Corporation Disk controller for implementing efficient disk I/O for a computer system
US20080177914A1 (en) * 2003-06-26 2008-07-24 Nvidia Corporation Hardware support system for accelerated disk I/O
US8386648B1 (en) 2003-06-26 2013-02-26 Nvidia Corporation Hardware support system for accelerated disk I/O
US8595394B1 (en) 2003-06-26 2013-11-26 Nvidia Corporation Method and system for dynamic buffering of disk I/O command chains
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US7296105B2 (en) 2003-10-03 2007-11-13 Sonics, Inc. Method and apparatus for configuring an interconnect to implement arbitration
US20050076125A1 (en) * 2003-10-03 2005-04-07 Wolf-Dietrich Weber Low power shared link arbitration
US8356142B1 (en) 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US20080177925A1 (en) * 2003-12-01 2008-07-24 Radoslav Danilak Hardware support system for accelerated disk I/O
US8700808B2 (en) 2003-12-01 2014-04-15 Nvidia Corporation Hardware support system for accelerated disk I/O
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US20060095634A1 (en) * 2004-11-01 2006-05-04 Meyer Michael J Method and apparatus for round robin resource arbitration with a fast request to grant response
US7739436B2 (en) 2004-11-01 2010-06-15 Sonics, Inc. Method and apparatus for round robin resource arbitration with a fast request to grant response
US20080282007A1 (en) * 2007-05-10 2008-11-13 Moran Christine E METHOD AND SYSTEM FOR CONTROLLING TRANSMISSION and EXECUTION OF COMMANDS IN AN INTEGRATED CIRCUIT DEVICE
US8156273B2 (en) 2007-05-10 2012-04-10 Freescale Semiconductor, Inc. Method and system for controlling transmission and execution of commands in an integrated circuit device
US8356128B2 (en) 2008-09-16 2013-01-15 Nvidia Corporation Method and system of reducing latencies associated with resource allocation by using multiple arbiters
US20100070667A1 (en) * 2008-09-16 2010-03-18 Nvidia Corporation Arbitration Based Allocation of a Shared Resource with Reduced Latencies
US8370552B2 (en) * 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US20100095036A1 (en) * 2008-10-14 2010-04-15 Nvidia Corporation Priority Based Bus Arbiters Avoiding Deadlock And Starvation On Buses That Support Retrying Of Transactions
US20110283032A1 (en) * 2009-02-02 2011-11-17 Fujitsu Limited Arbitration device
US8234428B2 (en) * 2009-02-02 2012-07-31 Fujitsu Limited Arbitration device that arbitrates conflicts caused in data transfers
US8698823B2 (en) 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
US20100259536A1 (en) * 2009-04-08 2010-10-14 Nvidia Corporation System and method for deadlock-free pipelining
US9928639B2 (en) 2009-04-08 2018-03-27 Nvidia Corporation System and method for deadlock-free pipelining
US8793420B2 (en) 2011-09-16 2014-07-29 Samsung Electronics Co., Ltd. System on chip, electronic system including the same, and method of operating the same
TWI563392B (en) * 2011-09-16 2016-12-21 Samsung Electronics Co Ltd System on chip, electronic system including the same, and method of operating the same
KR101861768B1 (en) 2011-09-16 2018-05-28 삼성전자주식회사 System on-chip, Electronic system including the same, and Method there-of
US20130111090A1 (en) * 2011-10-31 2013-05-02 William V. Miller Queue arbitration using non-stalling request indication
US8793421B2 (en) * 2011-10-31 2014-07-29 Apple Inc. Queue arbitration using non-stalling request indication

Also Published As

Publication number Publication date
GB0130375D0 (en) 2002-02-06
DE60101253D1 (en) 2003-12-24
GB2374499A (en) 2002-10-16
EP1220103B1 (en) 2003-11-19
US20020166007A1 (en) 2002-11-07
EP1220103A1 (en) 2002-07-03
DE60101253T2 (en) 2004-09-02
GB0031763D0 (en) 2001-02-07
ATE254780T1 (en) 2003-12-15

Similar Documents

Publication Publication Date Title
US6898649B2 (en) Arbiter for queue management system for allocating bus mastership as a percentage of total bus time
US6895459B2 (en) Bus arbitration method employing a table of slots suitably distributed amongst bus masters
US7373437B2 (en) Multi-channel DMA with shared FIFO
US5519701A (en) Architecture for high performance management of multiple circular FIFO storage means
JP3699833B2 (en) Priority encoding and decoding for memory architecture
EP1226493B1 (en) Bus architecture and shared bus arbitration method for a communication processor
US7213084B2 (en) System and method for allocating memory allocation bandwidth by assigning fixed priority of access to DMA machines and programmable priority to processing unit
WO2005073864A1 (en) A method and apparatus to manage memory access requests
WO2003001388A1 (en) System and method for controlling bus arbitration during cache memory burst cycles
JP2009518753A (en) Arbitration of memory access requests
US9213545B2 (en) Storing data in any of a plurality of buffers in a memory controller
US7380040B2 (en) Software programmable dynamic arbitration scheme
US7373467B2 (en) Storage device flow control
JP2006513493A5 (en)
US7107367B1 (en) Method for efficient buffer tag allocation
US7185122B2 (en) Device and method for controlling data transfer
CN117078495A (en) Memory allocation method, device, equipment and storage medium of graphic processor
EP3493069A1 (en) Resource allocation for atomic data access requests
JPS594733B2 (en) Kyoutsuba Seigiyo Cairo
US20110153892A1 (en) Access arbitration apparatus, integrated circuit device, electronic apparatus, access arbitration method, and program
US20080244161A1 (en) Memory management apparatus and method for same
US7404025B2 (en) Software programmable dynamically reconfigurable scheme for controlling request grant and masking for ultra high priority accessor during arbitration
AU624745B2 (en) Packet/fast packet switch for voice and data
JP2001056793A (en) Information processor
KR100215572B1 (en) Method and apparatus for controlling interface buffer

Legal Events

Date Code Title Description
AS Assignment

Owner name: ZARLINK SEMICONDUCTOR LIMITED, UNITED KINGDOM

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GOUDIE, ALISTAIR I.;REEL/FRAME:012772/0744

Effective date: 20020206

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

CC Certificate of correction
REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20090524