WO1998036357A1 - Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity - Google Patents
Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity Download PDFInfo
- Publication number
- WO1998036357A1 WO1998036357A1 PCT/US1998/002131 US9802131W WO9836357A1 WO 1998036357 A1 WO1998036357 A1 WO 1998036357A1 US 9802131 W US9802131 W US 9802131W WO 9836357 A1 WO9836357 A1 WO 9836357A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- block
- link list
- pointer
- data
- storage locations
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/04—Selecting arrangements for multiplex systems for time-division multiplexing
- H04Q11/0428—Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
- H04Q11/0478—Provisions for broadband connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/064—Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5681—Buffer or queue management
Definitions
- the present invention relates to memory management. More particularly, the present invention relates to apparatus and methods of managing a plurality of data queues stored in linked lists in a shared common memory.
- the invention has particular application to the use of a very large scale integrated circuit (VLSI) for the buffering of telecommunications information such as ATM data, although it is not limited thereto.
- VLSI very large scale integrated circuit
- the management of buffer resources is one mechanism of increasing network performance.
- One group of methods of managing buffer resources is known as sharing, where a single RAM is simultaneously utilized as a buffer by a plurality of different channels.
- Various sharing methods are known (see Velamuri, R. et al., "A Multi-Queue Flexible Buffer Manager Architecture", IEEE Document No. 0-7803- 0917-0/93) and each has inherent advantages coupled with inherent disadvantages in terms of blocking probability, utilization, throughput, and delay. What is common to all sharing methods, however, is that a mechanism is required to direct data into appropriate locations in the RAM in a desired order so that the data can be retrieved from the RAM appropriately.
- link lists which are used to manage multiple queues sharing a common memory buffer.
- a link list comprises bytes of data, where each byte has at least one pointer (forward and/or backward) attached to it, thereby identifying the location of the next byte of data in the queue.
- the link list typically includes extensive initialization and self-check procedures which are carried out by a microprocessor on a non-real-time basis.
- ATM Asynchronous Transfer Mode
- Another object of the invention is to provide an apparatus and method for VLSI control of ATM data into and out of a shared RAM by utilizing a separate RAM containing information related to the plurality of link lists in the shared RAM.
- a management RAM contained within a VLSI for controlling the flow of data into and out of a shared memory (data RAM) .
- the management RAM is preferably structured as an x by y bit RAM which stores information regarding y-2 data link lists in the shared RAM, a free link list in the shared RAM, and a block pointer to unused shared RAM locations.
- Information stored in the x bits for each data link list includes a head pointer, a tail pointer, a block counter and an empty flag.
- the head and tail pointers are each composed of a block pointer and a position counter, with the position counter indicating a specific page in a block which is made up of a set of contiguous pages of memory, and the block pointer pointing to the block number.
- the head pointer contains the address of the first word of the first memory page of the link list
- the tail pointer preferably contains the address of the first word of the last memory page in the link list.
- the block counter contains the number of blocks used in the particular queue, and has a non-zero value if at least one page is used in the queue.
- the empty flag indicates whether the queue is empty such that the content of the link list should be ignored if the queue-empty flag indicates that the queue is empty.
- Information stored in the management RAM for the free link list includes a head pointer, a block counter, and an empty flag, but does not need to include a tail pointer as free blocks are added to the top of the free list according to the preferred embodiment of the invention.
- a link list is kept for each channel. As data is read out of the data RAM, blocks become available to receive new data. It is these freed blocks which are added to the free list. Block space can be assigned from the free list before or after the unused blocks (discussed below) are used.
- an unused-block pointer is provided in the management RAM, as discussed above, and provides a pointer to the next unused block in memory. Initially all link lists, including the free list, are empty, and the unused block pointer is set to the number of blocks in the memory. As data is written to a block of shared RAM memory, the unused block pointer is decremented. When the unused block pointer equals zero, all of the cell blocks are included in the link lists (including the free link list) .
- each memory page of the shared data RAM receiving the incoming data (which RAM is managed by the management RAM) is composed of M contiguous memory addresses. Depending on the memory type, each address location can be of size B bits.
- the most common sizes are eight bits (byte) , sixteen bits (word) , thirty-two bits, and sixty-four bits.
- the first M-l locations in the page are used to store data.
- the last (M'th) location of the last page in the block preferably is used to store the address of the first location of the next block of the queue plus an odd parity bit; i.e., the M'th location of the last page in the block stores a next block pointer plus parity information. If there are no more blocks in the queue, the M'th location in the last page is set to all ones.
- an independent agent is utilized in the background to monitor the integrity of the. link list structure.
- the independent agent monitors the sum of the count of all of the link list block counters plus the unused blocks to ensure that it equals the total number of memory blocks in the common RAM. If not, an error is declared.
- the independent agent checks each link list stored in the management RAM for the following error conditions: head and tail pointers are equal and the block counter is not of value one; head and tail pointers are different and the block counter is one; and, block counter equals zero. If desired, the independent agent can also monitor the block pointers stored in the M'th location of the last page of each block to determine parity errors and/or to determine errors using parity or CRC.
- a cell is stored into a queue. More particularly, when an ATM cell is received at a port w so that it is to be stored in queue number n (which stores cells of priority v for port w) , a determination is first made as to whether the queue is empty. If it is not empty, the queue status (i.e., the tail pointer and position counter stored in management RAM) is obtained, and a determination is made as to whether a new block will be needed to be added to the queue.
- the queue status i.e., the tail pointer and position counter stored in management RAM
- the cell is written to the location indicated by the tail pointer position, and the tail pointer position counter for that queue in the management RAM is updated. If this is the last page of a block, the M'th location of the page (in the shared memory) is set to all ones. If a new block is required, either because the queue was empty or because a previous cell had been written into the last page of a block, a block must be obtained. If it is a first block of a queue, initial queue parameters are stored. If it is not the first block of the link list, a block is obtained from the free list and the free list is updated; or the block is obtained from the unused blocks and the block pointer for the unused blocks is updated. Then, the cell is written to the queue, and the tail pointer, position counter, and block counter for the queue are all updated in the management RAM.
- the cell read operation is utilized where a cell is to be read from a queue.
- the cell indicated by the head pointer and head pointer position counter for that queue is read from the queue.
- a determination is made as to whether the cell was either the last cell in a block and/or the last cell in the queue. If it is neither, then the queue status is updated (i.e., the head pointer position counter is changed) , and another cell read operation is awaited. If the cell is the last cell in the block, then the queue status preferably is checked for correctness by verifying the parity of the pointer (using a parity bit) , and is updated by changing the head pointer and head pointer position counter.
- the free list is updated by adding the freed block to the head of the free list, and the free list and link list block counters are updated. If the cell is the last cell in the queue, the procedure for the last cell in the block is followed, and the queue empty flag is set.
- the queue clear operation is a microprocessor command provided for the purpose of clearing a queue. When the queue clear operation is presented, the queue status is updated by setting the queue flag, and the blocks in the queue are added to the head of the free list which is likewise updated.
- the link list monitoring operation is the agent which monitors the integrity of the link list structure whenever the cell write, cell read, and queue clear operations are not running. As set forth above, the link list monitoring operation monitors the linked lists for errors by checking that the sum of the count of all of the link list block counters plus the unused blocks equals the total number of memory blocks in the common RAM, that when head and tail pointers are equal the block counter is set to one, that when head and tail pointers are different the block counter is not set to one, etc.
- Figure 1 is a block diagram of an apparatus incorporating the link list memory management RAM of the invention.
- Figure 2 is a chart showing the structure of the memory management RAM of Figure 1.
- Figure 3a is a diagram of an example of the shared data memory of the apparatus of Figure 1.
- Figure 3b is a diagram of the details of a page of one of the blocks shown in Figure 3a.
- Figure 3c is a diagram of an example of the information contained in the memory management RAM of Fig. 1 for managing the shared data memory example of Figure 3a.
- Figures 4a - 4d are flow charts for the write, read, queue clear, and link list monitoring operations carried out by the flow controller of the apparatus of Figure 1.
- Figures 5a-5d are state machine diagrams for a write, read, clear, and monitor state machine according to the invention.
- the physical layer portion 130 of the ATM destination switch 100 preferably includes a UTOPIA interface 150, a managing RAM 162, a flow controller 166, a microprocessor interface 167, channel interface buffers 170, and a RAM interface 175.
- the flow controller 166 is coupled to the UTOPIA interface 160, the managing RAM 162, the microprocessor interface 167, the channel interface buffers 170, and the RAM interface 175.
- the UTOPIA interface generally receives cells of ATM data in a byte- wide format, and passes them to the flow controller 166. Based on the destination of the cell (as discussed in the parent application) , and the priority of the cell, the flow controller 166 writes the cell into an appropriate output buffer 170.
- the output buffer is preferably capable of storing at least two ATM cells so that one cell can be read out of the buffer as another is being read into the buffer without conflict. If buffer space is not available for a particular cell at a particular time, the flow controller 166 forwards the ATM cell via the RAM interface 175 to a desired location in a shared RAM 180 (which may be on or off chip) based on information contained in the managing RAM 162 as discussed in more detail below.
- the flow controller 166 When room becomes available in the output buffer 170 for the cell, the flow controller 166 reads the data out of the shared RAM 180, and places it in the buffer 170. In the background, when not receiving data from the UTOPIA interface, and when not reading data from or writing data to the shared RAM 180 or writing data to the buffers, the flow controller 166 monitors the integrity of the link list structure contained in the managing RAM, as is described in more detail below. In addition, the flow controller 166 can perform various functions in response to microprocessor command received via the microprocessor interface 167.
- the managing RAM 162 may serve various functions, including providing information for assisting in the processing of the header of the ATM cell as discussed in the parent application hereto.
- the managing RAM 162, or at least a portion thereof is preferably provided as a x bit by y word RAM for the purpose of managing y-2 link lists which are set up in the shared RAM 180 (y-2 equalling the product of w ports times v priorities) .
- a link list information structure for y-2 data queues includes: a head pointer, a tail pointer, a block counter, and a queue empty flag for each of the y-2 data queues; a free list block pointer, block counter, and queue empty flag for a free list; and a block pointer for the unused blocks of memory.
- Each head pointer and tail pointer preferably includes a block pointer and a position counter, with the block pointer used for pointing to a block in the memory, and the position counter being used to track pages within a block of memory.
- a block having four contiguous pages may be arranged with the position counter being a two bit counter for referencing the page of a block.
- the block counter for each queue is used to reference the number of blocks contained within the queue.
- the queue empty flag when set indicates that the queue is empty, and that the pointers contained within the queue as well as the block count can be ignored.
- each link list queue contains the address of the first word of the first memory page of the queue in the shared memory.
- the tail pointer for each link list queue contains the address of the first word of the last memory page in the queue.
- Each memory page of the shared memory is composed of M contiguous memory addresses.
- each address location can be of size B bits, with common sizes being eight bits (byte) , sixteen bits (word) , thirty-two bits, or sixty-four bits.
- the address locations are sixteen bits in length with the first M-l locations in a page containing the stored information.
- the M'th location of a last page in a block is used to store a next block pointer which is set to the first location of the next block plus an odd parity bit. Where the block is the last block in the queue, the M'th location of the last page in the last block is set to all ones. Where the page is neither the last page of the block, nor the last block in the queue, the M'th location of the page is not utilized.
- M 32
- FIG. 3a An example of the memory organization of the shared memory is seen in Fig. 3a.
- Fig. 3a two active link list data queues are represented, as well as a free list queue and an Unused block.
- memory blocks 512, 124, and 122 are shown linked together for a first queue
- memory blocks 511, 125, and 123 are linked together for a second queue
- memory blocks 510 - 125 are linked together for the free list queue
- memory blocks 121 - 1 are Unused.
- each page contains thirty- two sixteen bit words.
- the thirty-second (M'th) word of memory block 512 (seen in more detail in Fig.
- 3b contains a pointer (the ten least significant bits) which points to memory block 124
- the thirty-second word of memory block 124 contains a pointer which points to memory block 122
- the thirty-second word of memory block 122 contains all ones, thereby indicating the last word in the queue.
- the thirty-second word of memory block 511 contains a pointer which points to memory block 125
- the thirty-second word of memory block 125 contains a pointer which points to memory block 123
- the thirty-second word of memory block 123 contains all ones, thereby indicating the last word of that queue.
- Fig. 3a The free list of Fig. 3a is seen extending from block 510 to block 126.
- the unused blocks run from block 121 to block 1.
- Fig. 3c specifics are seen of the management RAM which would be associated with managing the shared memory in the state of Fig. 3a.
- information for link list #1 is seen with a head pointer having a block pointer having a value equal to 512 and a position counter set at "00" to indicate a first page of memory in the block storing data.
- the tail pointer of the link list #1 information has a block pointer having a value equal to 122 and a position counter set to "11" to indicate that all pages of block 122 are being used.
- the block counter of the information for link list #1 is set to a value of three, and the queue empty flag is not set (i.e., equals zero).
- Information for link list #2 is seen with a head pointer having a block pointer having a value equal to 511 and a position counter set at "01" to indicate that the data first occurs at a second page of the block (i.e., the first page already having been read from the block) .
- the tail pointer of the link list #2 information has a block pointer having a value equal to 123 and a position counter set at "10" which indicates that there is no data in the last page of the block.
- the block counter of the link list #2 information is also set to a value of three, and the queue empty flag is not set.
- the value of the head and tail pointers and block count for the information of link list #N are not indicated, as the queue empty flag of link list #N is set (equals one) , thereby indicating that the pointers and block counter do not store valid data.
- the only data of interest would be that the queue empty flags related to all of those link lists would equal one to indicate that no valid data is being stored with reference to those link lists.
- the head pointer of the free list information has a block pointer set to a value 510, and a block count of 385.
- the queue empty flag of the free list is not set, as the free list contains data.
- the block pointer relating to the Unused queue is shown set to a value of 121.
- the free list head pointer and block counter information is preferably implemented in a series of flip-flops, and is thus readily available for purposes discussed below with reference to Figs. 4a-4d.
- the queue empty flags are also preferably similarly implemented.
- the queue empty flag indicates that there is no valid data for a link list and that the head and tail pointers for that link list and the block counter of that link list can be ignored.
- the Unused block pointer is provided to point to the next unused block in shared memory. As memory pages are written or used, the Unused block pointer is decremented until a value of zero is reached. At that point, all cell blocks are included in the link lists (including the free list) . As previously mentioned, when a block is read from the shared memory, the available block is added to the free list. When a new block is required for adding to a link list, the block space may be taken from either the free list or from the Unused blocks, and available blocks from the free list may be taken either before or after the Unused blocks are used.
- FIG 4a a flow chart of operations of the flow controller 166 of the apparatus 100 of Figure 1 is seen with respect to writing data to the shared memory. It is noted that while the operations are shown in flow chart form, in accord with the preferred embodiment of the invention, the operations are carried out in hardware.
- the flow controller 166 determines that it is receiving an ATM cell which cannot be written into a buffer directly, the flow controller makes a determination at 200 (by checking the management RAM queue empty flag associated with that queue) as to whether the queue which should receive that cell is empty.
- the queue status i.e., the tail pointer and position counter
- a determination is made as to whether a new block will be needed to be added to the queue (i.e., is the position counter equal to "11") . If a new block is not required, at 206 the cell is written to the shared RAM location indicated by the tail pointer position counter for that queue (stored in management RAM) , and at 208 the tail pointer position counter for that queue is updated. At 210, a determination is made as to whether the cell is being written into the last page of a block. If so, at 212 the flow controller writes a word of all ones into the M'th location of the page (in the shared memory) .
- a block is obtained from the either the free list or from unused RAM. If the block is obtained from the free list, at 216, the free list information is updated by changing the head pointer of the free list (i.e., setting the head pointer to the value stored in the M'th location of the last page of the obtained block) , and by decrementing the block counter associated with the free list. If the block is obtained from the unused RAM, the block pointer for the unused RAM is decremented at 216. Regardless, at 218, the cell is written to the queue, and at 220, the tail pointer and block counter for the queue are both updated in the management RAM (with the block counter being set to the value one) , and the queue empty flag is changed.
- a block is obtained from the either the free list or from unused RAM. If the block is obtained from the free list, at 224, the free list is updated by changing the head pointer of the free list (i.e., setting the head pointer to the value stored in the M'th location of the last page of the obtained block) , and by decrementing the block counter associated with the free list. If the free list becomes empty because a block is removed, the queue empty flag of the free list is set.
- the block pointer for the unused RAM is decremented at 224. Regardless, at 228, the cell is written to the queue, and at 230, the tail pointer and block counter for the queue are both updated in the management RAM.
- Fig. 4b The details of the flow controller operation with respect to a cell read operation (i.e., where a cell is to be read from a queue because a buffer is available to receive the cell) is seen in Fig. 4b.
- the flow controller at 250 reads the head pointer and tail pointer in the management RAM for the link list associated with the available data buffer. Then, at 252, the flow controller reads from shared memory the cell at the location in the shared memory indicated by the head pointer, and provides the cell to the data buffer.
- the flow controller determines at 254 (based on the head pointer and tail pointer) whether the cell was the last cell in the queue, and at 256 (based on the head pointer position counter) whether the cell was the last cell in a block. If it is neither, then at 258 the queue status is updated (i.e., the head pointer position counter is changed) , and another cell read operation is awaited. If at 254 it is determined that the cell is the last cell in the queue, at 260, the head pointer for the free list (obtained from the management RAM) is inserted into the last word of the last page of the freed block.
- the free list in the management RAM is updated by adding the freed block to the head of the free list; i.e., by updating the free list block pointer and block counter.
- the queue empty flag is set for the link list which now has no blocks. If the free list was empty prior to adding the freed block, the free list must be initialized (with appropriate head pointer and block counter) and the queue empty flag changed at 264. In addition, in the case were the free list was empty prior to adding the freed block, the last word in the freed block in the shared RAM should be set to all ones.
- the head pointer for the free list as obtained from the management RAM is inserted into the last word of the last page of the freed block.
- the queue status for the link list is updated by changing the block pointer and position counter of the head pointer (to the value contained in the last word of the page of memory being read out of the shared memory) , and by decrementing the block counter.
- a parity check is done on the pointer.
- the calculated parity value is compared to the parity bit stored along with the pointer. Based on the comparison, at 274, a parity error condition can be declared, and sent as an interrupt message via the microprocessor interface port 167 (Fig. 1) to the microprocessor (not shown) .
- the microprocessor treats the situation as a catastrophic error and reinitializes the management and data RAMs .
- Figure 4c sets out the operation with respect to the queue clear microprocessor command (received via the microprocessor interface 167) .
- the queue clear operation is presented, at 270 the queue status for the link list is updated by setting the queue empty flag, and at 272, the blocks in the queue are added to the head of the free list which is updated in a manner discussed above (Fig. 4b) with reference to the cell read operation.
- the link list monitoring operation seen in Fig. 4d is the hardware agent which monitors the integrity of the link list structure whenever the cell write, cell read, and queue clear operations are not running.
- the link list monitoring operation preferably monitors four different error conditions.
- the counts of all of the link list block counters (including the free list) where the queue empty flag for those link lists are not set are summed together with the unused blocks and compared the total number of memory blocks in the common RAM. If the sum does not equal the total number of memory blocks in the common RAM, at 281, an error condition is declared by triggering a microprocessor interrupt bit.
- the head and tail block pointers of each link list are compared. If at 284 the head and tail block pointers are determined to be equal, at 286 the block counter is checked, and if not equal to one, at 287 an error condition is declared.
- the block counter is checked, and if the block count is equal to one, at 289 an error condition is declared.
- the block counter for each link list whose queue empty flag is not set is checked; and if the block counter equals zero, at 291 an error condition is declared.
- the write, read, clear, and monitoring operations of the flow controller are carried out in hardware which may be generated by using HDL code to synthesize hardware gates via use a VHDL compiler.
- Figures 5a-5d are state machines diagrams corresponding to the HDL code, including a write state machine (Fig. 5a), a read state machine (Fig. 5b), a clear state machine (Fig. 5c) , and a monitoring state machine (Fig. 5d) .
- the gates created using the code may be standard cell technology or gate array technology.
- the invention is not intended to be limited to a strictly hardware implementation, but is also intended to apply to memory management utilizing a microprocessor with associated firmware (e.g., a ROM).
- firmware e.g., a ROM
- FIG. 1 A block diagram illustrating an exemplary computing environment in accordance with the present disclosure.
- FIG. 1 A block diagram illustrating an exemplary computing environment in accordance with the present disclosure.
- FIG. 1 A block diagram illustrating an apparatus and illustrated herein an apparatus and illustrated herein an apparatus and method for management of shared memory. While particular embodiments of the invention have been described, it is not intended that the invention be limited thereto, as it is intended that the invention be as broad in scope as the art will allow and that the specification be read likewise. Thus, while the invention has been described with reference to VLSI implemented ATM equipment, it will be appreciated that the invention has broader applicability. Also, while specific details of RAM sizes, etc. have been disclosed, it will be appreciated that the details could be varied without deviating from the scope of the invention.
- the management RAM could assume different sizes.
- the unused block pointer could be located in the "tail pointer" location of the free list (which itself does not use a tail pointer) , thereby providing a management RAM of x bits by y words for managing y-1 link lists of data.
- the variables of the link list could be reordered.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98904915A EP1036360A1 (en) | 1997-02-05 | 1998-02-05 | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
JP53580598A JP2001511281A (en) | 1997-02-05 | 1998-02-05 | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
CA002277981A CA2277981A1 (en) | 1997-02-05 | 1998-02-05 | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
IL13083498A IL130834A (en) | 1997-02-05 | 1998-02-05 | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/796,085 | 1997-02-05 | ||
US08/796,085 US5893162A (en) | 1997-02-05 | 1997-02-05 | Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1998036357A1 true WO1998036357A1 (en) | 1998-08-20 |
Family
ID=25167251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1998/002131 WO1998036357A1 (en) | 1997-02-05 | 1998-02-05 | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
Country Status (6)
Country | Link |
---|---|
US (1) | US5893162A (en) |
EP (1) | EP1036360A1 (en) |
JP (1) | JP2001511281A (en) |
CA (1) | CA2277981A1 (en) |
IL (1) | IL130834A (en) |
WO (1) | WO1998036357A1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1011293A1 (en) * | 1998-12-17 | 2000-06-21 | STMicroelectronics SA | Buffer memory for multiple data communication channels |
WO2000038470A1 (en) * | 1998-12-22 | 2000-06-29 | Koninklijke Philips Electronics N.V. | Prioritized-buffer management for fixed size packets in multimedia applications |
US6421753B1 (en) * | 1997-12-31 | 2002-07-16 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
WO2009083027A1 (en) * | 2007-12-27 | 2009-07-09 | Nokia Corporation | Method and system for managing data in a memory |
GB2460217A (en) * | 2008-04-03 | 2009-11-25 | Xancom Ltd | Storing data segments using linked lists |
USRE42761E1 (en) | 1997-12-31 | 2011-09-27 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2201909C (en) | 1994-10-12 | 2006-05-02 | Technical Maintenance Corporation | Intelligent digital audiovisual playback system |
US7188352B2 (en) | 1995-07-11 | 2007-03-06 | Touchtunes Music Corporation | Intelligent digital audiovisual playback system |
JP3222083B2 (en) * | 1997-03-21 | 2001-10-22 | 沖電気工業株式会社 | Shared memory controller |
US6065104A (en) * | 1997-07-23 | 2000-05-16 | S3 Incorporated | Method of embedding page address translation entries within a sequentially accessed digital audio data stream |
FR2769165B1 (en) | 1997-09-26 | 2002-11-29 | Technical Maintenance Corp | WIRELESS SYSTEM WITH DIGITAL TRANSMISSION FOR SPEAKERS |
US6341342B1 (en) * | 1997-11-04 | 2002-01-22 | Compaq Information Technologies Group, L.P. | Method and apparatus for zeroing a transfer buffer memory as a background task |
US6253237B1 (en) * | 1998-05-20 | 2001-06-26 | Audible, Inc. | Personalized time-shifted programming |
US6445680B1 (en) * | 1998-05-27 | 2002-09-03 | 3Com Corporation | Linked list based least recently used arbiter |
FR2781591B1 (en) | 1998-07-22 | 2000-09-22 | Technical Maintenance Corp | AUDIOVISUAL REPRODUCTION SYSTEM |
FR2781580B1 (en) | 1998-07-22 | 2000-09-22 | Technical Maintenance Corp | SOUND CONTROL CIRCUIT FOR INTELLIGENT DIGITAL AUDIOVISUAL REPRODUCTION SYSTEM |
US8028318B2 (en) | 1999-07-21 | 2011-09-27 | Touchtunes Music Corporation | Remote control unit for activating and deactivating means for payment and for displaying payment status |
US6240498B1 (en) * | 1999-01-06 | 2001-05-29 | International Business Machines Corporation | Object oriented storage pool apparatus and method |
US6246682B1 (en) | 1999-03-05 | 2001-06-12 | Transwitch Corp. | Method and apparatus for managing multiple ATM cell queues |
US6570877B1 (en) | 1999-04-07 | 2003-05-27 | Cisco Technology, Inc. | Search engine for forwarding table content addressable memory |
FR2796482B1 (en) | 1999-07-16 | 2002-09-06 | Touchtunes Music Corp | REMOTE MANAGEMENT SYSTEM FOR AT LEAST ONE AUDIOVISUAL INFORMATION REPRODUCING DEVICE |
US6615302B1 (en) * | 1999-09-15 | 2003-09-02 | Koninklijke Philips Electronics N.V. | Use of buffer-size mask in conjunction with address pointer to detect buffer-full and buffer-rollover conditions in a CAN device that employs reconfigurable message buffers |
US6493287B1 (en) | 1999-09-15 | 2002-12-10 | Koninklijke Philips Electronics N.V. | Can microcontroller that utilizes a dedicated RAM memory space to store message-object configuration information |
FR2805377B1 (en) | 2000-02-23 | 2003-09-12 | Touchtunes Music Corp | EARLY ORDERING PROCESS FOR A SELECTION, DIGITAL SYSTEM AND JUKE-BOX FOR IMPLEMENTING THE METHOD |
FR2805072B1 (en) | 2000-02-16 | 2002-04-05 | Touchtunes Music Corp | METHOD FOR ADJUSTING THE SOUND VOLUME OF A DIGITAL SOUND RECORDING |
FR2805060B1 (en) | 2000-02-16 | 2005-04-08 | Touchtunes Music Corp | METHOD FOR RECEIVING FILES DURING DOWNLOAD |
US6598140B1 (en) * | 2000-04-30 | 2003-07-22 | Hewlett-Packard Development Company, L.P. | Memory controller having separate agents that process memory transactions in parallel |
US6611906B1 (en) * | 2000-04-30 | 2003-08-26 | Hewlett-Packard Development Company, L.P. | Self-organizing hardware processing entities that cooperate to execute requests |
FR2808906B1 (en) | 2000-05-10 | 2005-02-11 | Touchtunes Music Corp | DEVICE AND METHOD FOR REMOTELY MANAGING A NETWORK OF AUDIOVISUAL INFORMATION REPRODUCTION SYSTEMS |
US20020031132A1 (en) * | 2000-05-25 | 2002-03-14 | Mcwilliams Patrick | UTOPIA-LVDS bridge |
US20020031141A1 (en) * | 2000-05-25 | 2002-03-14 | Mcwilliams Patrick | Method of detecting back pressure in a communication system using an utopia-LVDS bridge |
US20020031133A1 (en) * | 2000-05-25 | 2002-03-14 | Mcwilliams Patrick | Embedded communication protocol using a UTOPIA-LVDS bridge |
JP3593954B2 (en) * | 2000-05-31 | 2004-11-24 | 株式会社島津製作所 | Electronic balance |
US6829647B1 (en) * | 2000-06-09 | 2004-12-07 | International Business Machines Corporation | Scaleable hardware arbiter |
US6735207B1 (en) | 2000-06-13 | 2004-05-11 | Cisco Technology, Inc. | Apparatus and method for reducing queuing memory access cycles using a distributed queue structure |
FR2811175B1 (en) | 2000-06-29 | 2002-12-27 | Touchtunes Music Corp | AUDIOVISUAL INFORMATION DISTRIBUTION METHOD AND AUDIOVISUAL INFORMATION DISTRIBUTION SYSTEM |
FR2811114B1 (en) | 2000-06-29 | 2002-12-27 | Touchtunes Music Corp | DEVICE AND METHOD FOR COMMUNICATION BETWEEN A SYSTEM FOR REPRODUCING AUDIOVISUAL INFORMATION AND AN ELECTRONIC ENTERTAINMENT MACHINE |
US7406547B2 (en) | 2000-08-09 | 2008-07-29 | Seagate Technology Llc | Sequential vectored buffer management |
FR2814085B1 (en) | 2000-09-15 | 2005-02-11 | Touchtunes Music Corp | ENTERTAINMENT METHOD BASED ON MULTIPLE CHOICE COMPETITION GAMES |
US6851000B2 (en) * | 2000-10-03 | 2005-02-01 | Broadcom Corporation | Switch having flow control management |
US6977941B2 (en) * | 2000-11-08 | 2005-12-20 | Hitachi, Ltd. | Shared buffer type variable length packet switch |
US7113516B1 (en) | 2000-11-28 | 2006-09-26 | Texas Instruments Incorporated | Transmit buffer with dynamic size queues |
US20020108094A1 (en) * | 2001-02-06 | 2002-08-08 | Michael Scurry | System and method for designing integrated circuits |
US7215672B2 (en) * | 2001-03-13 | 2007-05-08 | Koby Reshef | ATM linked list buffer system |
US7062702B2 (en) * | 2001-03-14 | 2006-06-13 | Hewlett-Packard Development Company, L.P. | Efficient parity operations |
US6766480B2 (en) * | 2001-03-14 | 2004-07-20 | Hewlett-Packard Development Company, L.P. | Using task description blocks to maintain information regarding operations |
US6728857B1 (en) * | 2001-06-20 | 2004-04-27 | Cisco Technology, Inc. | Method and system for storing and retrieving data using linked lists |
US7216204B2 (en) * | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
US7487505B2 (en) * | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7225281B2 (en) * | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
US7158964B2 (en) | 2001-12-12 | 2007-01-02 | Intel Corporation | Queue management |
US7107413B2 (en) * | 2001-12-17 | 2006-09-12 | Intel Corporation | Write queue descriptor count instruction for high speed queuing |
US7269179B2 (en) * | 2001-12-18 | 2007-09-11 | Intel Corporation | Control mechanisms for enqueue and dequeue operations in a pipelined network processor |
US20030120966A1 (en) * | 2001-12-21 | 2003-06-26 | Moller Hanan Z. | Method for encoding/decoding a binary signal state in a fault tolerant environment |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US7181573B2 (en) * | 2002-01-07 | 2007-02-20 | Intel Corporation | Queue array caching in network devices |
US7610451B2 (en) * | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
US7149226B2 (en) * | 2002-02-01 | 2006-12-12 | Intel Corporation | Processing data packets |
US7239651B2 (en) * | 2002-03-11 | 2007-07-03 | Transwitch Corporation | Desynchronizer having ram based shared digital phase locked loops and sonet high density demapper incorporating same |
US6765867B2 (en) | 2002-04-30 | 2004-07-20 | Transwitch Corporation | Method and apparatus for avoiding head of line blocking in an ATM (asynchronous transfer mode) device |
US7337275B2 (en) * | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
US8103589B2 (en) | 2002-09-16 | 2012-01-24 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers |
US9646339B2 (en) | 2002-09-16 | 2017-05-09 | Touchtunes Music Corporation | Digital downloading jukebox system with central and local music servers |
US8332895B2 (en) | 2002-09-16 | 2012-12-11 | Touchtunes Music Corporation | Digital downloading jukebox system with user-tailored music management, communications, and other tools |
US7822687B2 (en) | 2002-09-16 | 2010-10-26 | Francois Brillon | Jukebox with customizable avatar |
US11029823B2 (en) | 2002-09-16 | 2021-06-08 | Touchtunes Music Corporation | Jukebox with customizable avatar |
US8584175B2 (en) | 2002-09-16 | 2013-11-12 | Touchtunes Music Corporation | Digital downloading jukebox system with user-tailored music management, communications, and other tools |
US10373420B2 (en) | 2002-09-16 | 2019-08-06 | Touchtunes Music Corporation | Digital downloading jukebox with enhanced communication features |
US7028023B2 (en) * | 2002-09-26 | 2006-04-11 | Lsi Logic Corporation | Linked list |
US20040151170A1 (en) * | 2003-01-31 | 2004-08-05 | Manu Gulati | Management of received data within host device using linked lists |
KR101086592B1 (en) * | 2003-04-22 | 2011-11-23 | 에이저 시스템즈 인크 | Method and apparatus for shared multi-bank memory |
CA2426619A1 (en) * | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
US7827375B2 (en) * | 2003-04-30 | 2010-11-02 | International Business Machines Corporation | Defensive heap memory management |
JP2005078481A (en) * | 2003-09-02 | 2005-03-24 | Toshiba Corp | Semiconductor system |
US7093065B2 (en) * | 2003-12-15 | 2006-08-15 | International Business Machines Corporation | Random access memory initialization |
US7213099B2 (en) * | 2003-12-30 | 2007-05-01 | Intel Corporation | Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches |
US7752355B2 (en) * | 2004-04-27 | 2010-07-06 | International Business Machines Corporation | Asynchronous packet based dual port link list header and data credit management structure |
US7613213B2 (en) * | 2004-08-23 | 2009-11-03 | Transwitch Corporation | Time multiplexed SONET line processing |
US7899557B2 (en) * | 2005-03-01 | 2011-03-01 | Asm Japan K.K. | Input signal analyzing system and control apparatus using same |
US7251552B2 (en) * | 2005-04-22 | 2007-07-31 | Snap-On Incorporated | Diagnostic display unit including replaceable display protector |
US9171419B2 (en) | 2007-01-17 | 2015-10-27 | Touchtunes Music Corporation | Coin operated entertainment system |
US10290006B2 (en) | 2008-08-15 | 2019-05-14 | Touchtunes Music Corporation | Digital signage and gaming services to comply with federal and state alcohol and beverage laws and regulations |
US8332887B2 (en) | 2008-01-10 | 2012-12-11 | Touchtunes Music Corporation | System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server |
JP2009104497A (en) * | 2007-10-25 | 2009-05-14 | Nec Access Technica Ltd | Memory management system and memory management method |
WO2010005569A1 (en) | 2008-07-09 | 2010-01-14 | Touchtunes Music Corporation | Digital downloading jukebox with revenue-enhancing features |
US10564804B2 (en) | 2009-03-18 | 2020-02-18 | Touchtunes Music Corporation | Digital jukebox device with improved user interfaces, and associated methods |
US9292166B2 (en) | 2009-03-18 | 2016-03-22 | Touchtunes Music Corporation | Digital jukebox device with improved karaoke-related user interfaces, and associated methods |
WO2010107490A1 (en) | 2009-03-18 | 2010-09-23 | Touchtunes Music Corporation | Entertainment server and associated social networking services |
US10719149B2 (en) | 2009-03-18 | 2020-07-21 | Touchtunes Music Corporation | Digital jukebox device with improved user interfaces, and associated methods |
CA2881453A1 (en) | 2010-01-26 | 2011-08-04 | Touchtunes Music Corporation | Digital jukebox device with improved user interfaces, and associated methods |
GB2511003B (en) | 2011-09-18 | 2015-03-04 | Touchtunes Music Corp | Digital jukebox device with karaoke and/or photo booth features, and associated methods |
KR20140106576A (en) * | 2011-12-14 | 2014-09-03 | 옵티스 셀룰러 테크놀리지, 엘엘씨 | Buffer resource management method and telecommunication equipment |
US11151224B2 (en) | 2012-01-09 | 2021-10-19 | Touchtunes Music Corporation | Systems and/or methods for monitoring audio inputs to jukebox devices |
US20140250252A1 (en) * | 2013-03-04 | 2014-09-04 | Silicon Graphics International Corp. | First-in First-Out (FIFO) Modular Memory Structure |
US9436634B2 (en) * | 2013-03-14 | 2016-09-06 | Seagate Technology Llc | Enhanced queue management |
WO2015070070A1 (en) | 2013-11-07 | 2015-05-14 | Touchtunes Music Corporation | Techniques for generating electronic menu graphical user interface layouts for use in connection with electronic devices |
US10193831B2 (en) * | 2014-01-30 | 2019-01-29 | Marvell Israel (M.I.S.L) Ltd. | Device and method for packet processing with memories having different latencies |
CA2943616A1 (en) | 2014-03-25 | 2015-10-01 | Touchtunes Music Corporation | Digital jukebox device with improved user interfaces, and associated methods |
CN108846045B (en) * | 2018-05-30 | 2022-10-18 | 杭州吉吉知识产权运营有限公司 | Storage method and system for drinking water data of intelligent water cup |
CN112134805B (en) * | 2020-09-23 | 2022-07-08 | 中国人民解放军陆军工程大学 | Fast route updating circuit structure and updating method based on hardware implementation |
KR20220139199A (en) * | 2021-04-07 | 2022-10-14 | 삼성전자주식회사 | Semiconductor memory devices and memory systems including the same |
CN114817091B (en) * | 2022-06-28 | 2022-09-27 | 井芯微电子技术(天津)有限公司 | FWFT FIFO system based on linked list, implementation method and equipment |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123101A (en) * | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5390175A (en) * | 1993-12-20 | 1995-02-14 | At&T Corp | Inter-cell switching unit for narrow band ATM networks |
US5654962A (en) * | 1993-10-20 | 1997-08-05 | Lsi Logic Corporation | Error detection and correction method for an asynchronous transfer mode (ATM) network device |
-
1997
- 1997-02-05 US US08/796,085 patent/US5893162A/en not_active Expired - Lifetime
-
1998
- 1998-02-05 EP EP98904915A patent/EP1036360A1/en not_active Withdrawn
- 1998-02-05 JP JP53580598A patent/JP2001511281A/en active Pending
- 1998-02-05 WO PCT/US1998/002131 patent/WO1998036357A1/en not_active Application Discontinuation
- 1998-02-05 CA CA002277981A patent/CA2277981A1/en not_active Abandoned
- 1998-02-05 IL IL13083498A patent/IL130834A/en not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123101A (en) * | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5654962A (en) * | 1993-10-20 | 1997-08-05 | Lsi Logic Corporation | Error detection and correction method for an asynchronous transfer mode (ATM) network device |
US5390175A (en) * | 1993-12-20 | 1995-02-14 | At&T Corp | Inter-cell switching unit for narrow band ATM networks |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421753B1 (en) * | 1997-12-31 | 2002-07-16 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
USRE42761E1 (en) | 1997-12-31 | 2011-09-27 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
US9785583B2 (en) | 1997-12-31 | 2017-10-10 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
EP1011293A1 (en) * | 1998-12-17 | 2000-06-21 | STMicroelectronics SA | Buffer memory for multiple data communication channels |
FR2787600A1 (en) * | 1998-12-17 | 2000-06-23 | St Microelectronics Sa | BUFFER MEMORY ASSOCIATED WITH MULTIPLE DATA COMMUNICATION CHANNELS |
US6622186B1 (en) | 1998-12-17 | 2003-09-16 | Stmicroelectronics S.A. | Buffer associated with multiple data communication channels |
WO2000038470A1 (en) * | 1998-12-22 | 2000-06-29 | Koninklijke Philips Electronics N.V. | Prioritized-buffer management for fixed size packets in multimedia applications |
WO2009083027A1 (en) * | 2007-12-27 | 2009-07-09 | Nokia Corporation | Method and system for managing data in a memory |
GB2460217A (en) * | 2008-04-03 | 2009-11-25 | Xancom Ltd | Storing data segments using linked lists |
GB2460217B (en) * | 2008-04-03 | 2012-05-09 | Broadcom Corp | Controlling a read order of asynchronously written data segments in the same queue |
Also Published As
Publication number | Publication date |
---|---|
IL130834A (en) | 2003-10-31 |
IL130834A0 (en) | 2001-01-28 |
EP1036360A1 (en) | 2000-09-20 |
JP2001511281A (en) | 2001-08-07 |
CA2277981A1 (en) | 1998-08-20 |
US5893162A (en) | 1999-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5893162A (en) | Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists | |
US7089346B2 (en) | Method of operating a crossbar switch | |
EP0858718B1 (en) | Improvements in or relating to an atm switch | |
EP0858717B1 (en) | Improvements in or relating to an atm switch | |
US5987008A (en) | ATM switch | |
EP0702500B1 (en) | Method of multicasting and multicast system | |
US5530806A (en) | Method and apparatus for storing and retrieving routing information in a network node | |
US5751951A (en) | Network interface | |
US6359891B1 (en) | Asynchronous transfer mode cell processing system with scoreboard scheduling | |
EP0828403B1 (en) | Improvements in or relating to an ATM switch | |
EP1163747A1 (en) | Method and apparatus for managing multiple atm cell queues | |
WO1997042737A1 (en) | Asynchronous transfer mode cell processing system with multiple cell source multiplexing | |
US5164939A (en) | Packet switching device | |
US6144640A (en) | ATM switch | |
EP0858716B1 (en) | Improvements in or relating to an atm switch | |
US6310875B1 (en) | Method and apparatus for port memory multicast common memory switches | |
US5668798A (en) | Multiplexed TC sublayer for ATM switch | |
JP2628701B2 (en) | Switch for prioritized information packets | |
EP0917783B1 (en) | Addressable, high speed counter array | |
US6647477B2 (en) | Transporting data transmission units of different sizes using segments of fixed sizes | |
US20020145995A1 (en) | Address release method, and common buffering device for atm switching system which employs the same method | |
JPS63271549A (en) | Memory area erasion control method and apparatus | |
JP2002057675A (en) | Atm cell buffer and its output method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 130834 Country of ref document: IL |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): CA CN IL JP MX NO |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
ENP | Entry into the national phase |
Ref document number: 2277981 Country of ref document: CA Ref country code: CA Ref document number: 2277981 Kind code of ref document: A Format of ref document f/p: F |
|
ENP | Entry into the national phase |
Ref country code: JP Ref document number: 1998 535805 Kind code of ref document: A Format of ref document f/p: F |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1998904915 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 1998904915 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1998904915 Country of ref document: EP |