US2009254714A1PendingUtilityA1

Method and Apparatus for Exploiting Parallelism Across Multiple Traffic Streams Through a Single Channel

48
Assignee: INTEL CORPPriority: Feb 6, 2006Filed: Jun 4, 2009Published: Oct 8, 2009
Est. expiryFeb 6, 2026(expired)· nominal 20-yr term from priority
G06F 13/4022
48
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Methods of obtaining, enqueueing and executing several memory transactions are described, where the memory transactions may be generated in a first order but executed in a second order. Despite the relaxed ordering, essential programming paradigms such as producer-consumer relationships are not affected. Chipsets and systems using the methods are also described and claimed.

Claims

exact text as granted — not AI-modified
1 . A method comprising:
 obtaining a plurality of memory transactions in a first order, each transaction to be associated with a logical identifier;   enqueuing each memory transaction on one of a plurality of work queues, the work queue to be selected based on a type of the memory transaction and the logical identifier of the memory transaction; and   executing the plurality of memory transactions in a second order.   
   
   
       2 . The method of  claim 1  wherein the second order is different from the first order. 
   
   
       3 . The method of  claim 1  wherein a logical identifier comprises an identifier of a virtual machine that issued the transaction. 
   
   
       4 . The method of  claim 1  wherein a logical identifier comprises an identifier of a data stream to which the transaction pertains. 
   
   
       5 . The method of  claim 1  wherein the type of a memory transaction is one of a first type or a second type; and wherein the ruleset permits:
 a transaction of the first type to pass a transaction of the second type;   a transaction of the second type to pass another transaction of the second type; and   a transaction of either type to pass another transaction of either type if the transactions are associated with different logical identifiers.   
   
   
       6 . The method of  claim 1  wherein the plurality of work queues includes a queue to hold transactions of a first type, a queue to hold transactions of a second type, and a queue to hold blocked transactions. 
   
   
       7 . The method of  claim 1 , further comprising:
 unblocking a blocked memory transaction after executing a blocking memory transaction.   
   
   
       8 . The method of  claim 1 , further comprising:
 selecting a next transaction to execute from a head of one of the plurality of queues, wherein a transaction at the head of a first queue may be executed at any time, and a transaction at the head of a second queue may be blocked pending an execution of a blocking transaction.   
   
   
       9 . The method of  claim 1  wherein executing a memory transaction comprises one of:
 transmitting data from a hardware peripheral to a memory through a cache controller; or   transmitting a request for data from the memory through the cache controller.   
   
   
       10 . A chipset comprising:
 a plurality of targets to generate memory transactions;   a virtualization engine to associate a logical stream with a memory transaction;   a bus interface unit to issue memory transactions to a cache controller; and   queueing logic to preserve an ordering relationship between a plurality of generated memory transactions and a plurality of issued memory transactions.   
   
   
       11 . The chipset of  claim 10 , further comprising:
 a content-addressable memory (“CAM”) to indicate whether a pending memory transaction references a logical stream identical to a logical stream of a newly-generated memory transaction.   
   
   
       12 . The chipset of  claim 10 , further comprising:
 unblocking logic to unblock a blocked memory transaction.   
   
   
       13 . The chipset of  claim 10 , further comprising:
 a plurality of queues to hold memory transactions pending execution, wherein a first queue holds transactions of a first type, a second queue holds transactions of a second type, and a third queue holds transactions that are blocked by an earlier-received transaction on the first queue.   
   
   
       14 . The chipset of  claim 10 , further comprising:
 a signaling unit to communicate with a peripheral device according to an interface protocol, wherein   the signaling unit generates memory transactions; and   the virtualization engine produces an appearance of a plurality of logical devices like the peripheral device.   
   
   
       15 . The chipset of  claim 14  wherein the interface protocol comprises one of Peripheral Component Interconnect (“PCI”), PCI-Express, or Accelerated Graphics Port (“AGP”). 
   
   
       16 . The chipset of  claim 14  wherein the peripheral device comprises one of a network interface card (“NIC”), a mass-storage device interface, a graphics adapter, or a cryptographic accelerator. 
   
   
       17 . The chipset of  claim 10 , further comprising:
 write protocol management logic to execute a write protocol before issuing a memory transaction.   
   
   
       18 . The chipset of  claim 17  wherein the write protocol comprises:
 transmitting a request to obtain ownership of a cache line; and   receiving a response granting ownership of the cache line.   
   
   
       19 . The chipset of  claim 18  wherein a plurality of protocol requests transmitted in a first order elicits a plurality of protocol responses received in a second order. 
   
   
       20 . A system comprising:
 a memory;   a cache controller to maintain data coherency between the memory and a cache;   a plurality of peripheral devices; and   a hub to exchange data between the memory and the plurality of peripheral devices; wherein   a plurality of memory transactions from a peripheral device are generated in a first order; and   the plurality of memory transactions are executed in a second order.   
   
   
       21 . The system of  claim 20  wherein the hub comprises:
 a signaling unit to communicate with a peripheral device;   a virtualization engine to produce an appearance of a plurality of virtual devices like the peripheral device;   queueing logic to hold a plurality of memory transactions pending execution; and   execution logic to select a next memory transaction to execute.   
   
   
       22 . The system of  claim 21  wherein the virtualization engine is to associate a virtual device with a memory transaction of the peripheral device; and
 the ordering logic is to maintain an order in which memory transactions associated with one virtual device are executed.   
   
   
       23 . A computer-readable medium containing instructions to cause a processor to perform operations comprising:
 receiving a plurality of memory requests in a first order;   sorting the memory requests according to a type and a group of the request;   queueing the sorted memory requests on a plurality of queues for later execution; and   executing a memory request from one of the plurality of queues.   
   
   
       24 . The computer-readable medium of  claim 23  wherein a first-received of the plurality of memory requests is different from a first-executed of the plurality of memory requests. 
   
   
       25 . The computer-readable medium of  claim 23  wherein the plurality of queues comprises:
 a first queue to hold requests of a first type;   a second queue to hold requests of a second type; and   a third queue to hold blocked requests, and wherein   a request is blocked if another request of an identical group is on the first queue.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.