P
USRE43301EExpiredUtilityPatentIndex 56

Method and apparatus for an improved stack arrangement and operations thereon

Assignee: CLAASSEN STUART LPriority: May 10, 1996Filed: Oct 10, 2002Granted: Apr 3, 2012
Est. expiryMay 10, 2016(expired)· nominal 20-yr term from priority
Inventors:CLAASSEN STUART L
G06F 7/785G06T 9/004
56
PatentIndex Score
4
Cited by
25
References
69
Claims

Abstract

An apparatus and method for an improved stack comprises an advantageous indexing scheme and stack arrangement allowing more efficient performance of stack operations. The most-recently-used stack item appears at the top of the stack and the least-recently-used item is at the bottom of the stack. Values in between the top and bottom items are ordered from top to bottom with succeedingly less recently used items. An indexing scheme is used to indirectly reference locations of the stack items in the stack. A set of registers is used to reference the locations of the stack items in an embedded memory array. The registers function as pointers to the memory array locations. To promote an item to the top of the stack, the item is identified as the most-recently-used and the contents of the other registers are changed to specify the new locations, e.g. these pointers are shifted down one. Similarly, to insert a new item on to the top of the stack, the pointers are shifted and a new item is written into the memory array location that contains the least-recently-used item.

Claims

exact text as granted — not AI-modified
I claim: 
     
       1. An apparatus for an a most recently used (MRU) stack, said apparatus directly or indirectly connected to a stack search requesting unit, stack search requesting unit specifying a command and a data value to said MRU stack, said apparatus comprising:
 means for receiving a command; 
 means for receiving a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value receiving means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an MRU register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values are specified from a most-recently-used data value down to a least-recently-used data value; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command receiving means for receiving a command as input and further being arranged to transmit an output to the stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value receiving means for receiving a data value as input. 
 
     
     
       2. An apparatus as defined in  claim 1  wherein said multiplexers are further arranged such that said multiplexer corresponding to said MRU register receives as input an initialization value and an input from each register in the set of registers, including itself, and other multiplexers in said set of data multiplexers receive as input an initialization value, data from the preceding register and data from itself. 
     
     
       3. An apparatus for an a most recently used (MRU) stack, said apparatus comprising:
 means for specifying a command; 
 means for specifying a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value specifying means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an MRU register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, said multiplexers further arranged such that the multiplexer corresponding to said MRU register receives as input an initialization value and an input from each register in the set of registers, including itself, and the other multiplexers in said set of data multiplexers receive as input an initialization value, data from the preceding register and data from itself; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command specifying means for receiving a command as input and further being arranged to transmit an output to a stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value specifying means for receiving a data value as input. 
 
     
     
       4. An apparatus for an a most recently used (MRU) stack, said apparatus directly or indirectly connected to a stack search requesting unit, stack search requesting unit specifying a command and a data value to said MRU stack, said apparatus comprising:
 means for receiving a command; 
 means for receiving a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value receiving means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an MRU register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values are specified from a most-recently-used data value down to a least-recently-used data value and such that a data value can be inserted into the stack or promoted to the top of the stack within two or less clock cycles; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command receiving means for receiving a command as input and further being arranged to transmit an output to the stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value receiving means for receiving a data value as input. 
 
     
     
       5. An apparatus as defined in  claim 4  wherein said multiplexers are further arranged such that said multiplexer corresponding to said MRU register receives as input an initialization value and an input from each register in the set of registers, including itself, and other multiplexers in said set of data multiplexers receive as input an initialization value, data from the preceding register and data from itself. 
     
     
       6. A method for manipulating data in a stack, said stack including a stack data module for storing one or more stack data values, said stack further including a stack pointer module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said method comprising the steps of:
 searching for an item in the stack data module using the stack pointer module, the stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an a most recently used (MRU) register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values arespecified from a most-recently-used data value down to a least-recently-used data value; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       7. A method for manipulating data in a stack, said stack including a stack data module for storing one or more stack data values, said stack further including a stack pointer module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said method comprising the steps of:
 searching for an item in the stack data module using the stack pointer module said stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an a most recently used (MRU) register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, said multiplexers further arranged such that the multiplexer corresponding to said MRU register receives as input an initialization value and an input from each register in the set of registers, including itself, and the other multiplexers in said set of data multiplexers receive as input an initialization value, data from the preceding register and data from itself; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       8. A method for manipulating data in a stack, said stack including a stack data module for storing one or more stack data values, said stack further including a stack pointer module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said method comprising the steps of:
 searching for an item in the stack data module using the stack pointer module, the stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an a most recently used (MRU) register specifics, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values are specified from a most-recently-used data value down to a least-recently-used data value and such that a data value can be inserted into the stack or promoted to the top of the stack within two or less clock cycles; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       9. A method as defined in  claim 8 , wherein said promoting of the item occurs during a single clock cycle. 
     
     
       10. A method as defined in  claim 8 , wherein said inserting of the item occurs during a single clock cycle. 
     
     
       11. A method as defined in  claim 8 , wherein promoting the item or inserting the item occurs in two or less clock cycles. 
     
     
       12. A method as defined in  claim 8  wherein said multiplexers are further arranged such that said multiplexer corresponding to said MRU register receives as input an initialization value and an input from each register in the set of registers, including itself, and other multiplexers in said set of data multiplexers receive as input an initialization value, data from the preceding register and data from itself. 
     
     
       13. A method as defined in  claim 8 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       14. A method as defined in  claim 8 , wherein said step of inserting the item comprises the steps of:
 setting the MRU stack pointer to the value specified by the LRU stack pointer; 
 shifting down one the values of the other stack pointers in the stack pointer list; and 
 setting the stack data value referenced by the MRU stack pointer equal to the item, wherein said steps of setting the MRU stack pointer and shifting are performed simultaneously. 
 
     
     
       15. A method for manipulating data in a stack, said stack including stack data having one or more stack data values, said stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer stored in a clocked register and uniquely specifying a stack data value in the stack data, the one or more stack pointers including an a most recently used (MRU) stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said method comprising the steps of:
 searching for an item in the stack data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used, the inserting of the item occurring during a single clock cycle. 
 
     
     
       16. A method as defined in  claim 15 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       17. A method for manipulating data in a stack, said stack including stack data having one or more stack data values, said stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer stored in a clocked register and uniquely specifying a stack data value in the stack data, the one or more stack pointers including an a most recently used (MRU) stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said method comprising the steps of:
 searching for an item in the stack data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       18. A method as defined in  claim 17 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       19. A method for manipulating data in a stack, said stack including stack data having one or more stack data values, said stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer stored in a clocked register and uniquely specifying a stack data value in the stack data, the one or more stack pointers including an a most recently used (MRU) stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said method comprising the steps of:
 searching for an item in the stack data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used, the inserting of the item occurring during two or less clock cycles. 
 
     
     
       20. A method as defined in  claim 19 , wherein said step of inserting the item comprises the steps of:
 setting the MRU stack pointer to the value specified by the LRU stack pointer; 
 shifting down one the values of the other stack pointers in the stack pointer list; and 
 setting the stack data value referenced by the MRU stack pointer equal to the item, wherein said steps of setting the MRU stack pointer and shifting are performed simultaneously. 
 
     
     
       21. A method for manipulating data in a stack, said stack including a stack data module for storing one or more stack data values, said stack further including a stack pointer module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said method comprising the steps of:
 searching for an item in the stack data module using the stack pointer module, the stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an a most recently used (MRU) register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values are specified from a most-recently-used data value down to a least-recently-used data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, the pointer manipulation associated with the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used, the pointer manipulation associated with the inserting of the item occurring during a single clock cycle. 
 
     
     
       22. A method as defined in  claim 21 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       23. A method for manipulating data in a stack, said stack including a stack data module for storing one or more stack data values, said stack further including a stack pointer module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said method comprising the steps of:
 searching for an item in the stack data module using the stack pointer module, the stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an a most recently used (MRU) register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values are specified from a most-recently-used data value down to a least-recently-used data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, pointer manipulation associated with the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       24. A method as defined in  claim 23 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       25. A method for manipulating data in a stack, said stack including a stack data module for storing one or more stack data values, said stack further including a stack pointer module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said method comprising the steps of:
 searching for an item in the stack data module using the stack pointer module, the stack pointer module including a set of data multiplexers, including one or more multiplexers, a set of registers, including one or more registers wherein an a most recently used (MRU) register specifies, either directly or indirectly, a location of a most-recently-used stack data value and an a least recently used (LRU) register specifies, either directly or indirectly, a location of a least-recently-used stack data value, and an address multiplexer, said data multiplexers and registers configured such that for each register in the set of registers, there is a corresponding multiplexer in the set of data multiplexers, said corresponding multiplexer arranged and coupled to its corresponding register to receive one or more inputs and provide an output to the corresponding register, the registers in said set of registers arranged and interconnected by the multiplexers such that data values are specified from a most-recently-used data value down to a least-recently-used data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used, the pointer manipulation associated with the inserting of the item occurring during a single clock cycle. 
 
     
     
       26. An apparatus for an a most recently used (MRU) stack, said apparatus comprising:
 means for receiving a command; 
 means for receiving a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value receiving means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an MRU stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said stack pointer module and said stack data module interconnected to allow pointer manipulation associated with the promotion of an item to the top of the stack to occur during a single clock cycle and to allow pointer manipulation associated with the insertion of an item into the stack to occur during a single clock cycle; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command receiving means for receiving a command as input and further being arranged to transmit an output to a stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value receiving means for receiving a data value as input. 
 
     
     
       27. An apparatus as defined in  claim 26 , wherein said stack pointer list includes a set of registers, each register specifying a stack pointer that references a unique stack data value in the stack data module. 
     
     
       28. An apparatus as defined in  claim 26 , wherein said stack data module is a memory array having one or more array cells, each cell specifying a stack data value. 
     
     
       29. An apparatus for an a most recently used (MRU) stack, said apparatus comprising:
 means for receiving a command; 
 means for receiving a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value receiving means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an MRU stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said stack pointer module and said stack data module interconnected to allow pointer manipulation associated with the promotion of an item to the top of the stack to occur during a single clock; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command receiving means for receiving a command as input and further being arranged to transmit an output to a stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value receiving means for receiving a data value as input. 
 
     
     
       30. An apparatus as defined in  claim 29 , wherein said stack pointer list includes a set of registers, each register specifying a stack pointer that references a unique stack data value in the stack data module. 
     
     
       31. An apparatus as defined in  claim 29 , wherein said stack data module is a memory array having one or more array cells, each cell specifying a stack data value. 
     
     
       32. An apparatus for an a most recently used (MRU) stack, said apparatus comprising:
 means for receiving a command; 
 means for receiving a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value receiving means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an MRU stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said stack pointer module and said stack data module interconnected to allow a data value to be inserted into the stack in a single clock cycle; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command receiving means for receiving a command as input and further being arranged to transmit an output to a stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value receiving means for receiving a data value as input. 
 
     
     
       33. An apparatus as defined in  claim 32 , wherein said stack pointer list includes a set of registers, each register specifying a stack pointer that references a unique stack data value in the stack data module. 
     
     
       34. An apparatus as defined in  claim 32 , wherein said stack data module is a memory array having one or more array cells, each cell specifying a stack data value. 
     
     
       35. A computer readable medium having stored thereon instructions for causing a computer to implement the following steps:
 searching for an item in a stack, the stack including stack data having one or more stack data values, the stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an a most recently used (MRU) stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in the set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used, the inserting of the item occurring during a single clock cycle. 
 
     
     
       36. A computer readable medium as defined in  claim 35 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       37. A computer readable medium having stored thereon instructions for causing a computer to implement the following steps:
 searching for an item in a stack, the stack including stack data having one or more stack data values, the stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a sets of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an a most recently used (MRU) stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in the set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, pointer manipulation associated with the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used, pointer manipulation associated with the inserting of the item occurring during a single clock cycle. 
 
     
     
       38. A computer readable medium having stored thereon instructions for causing a computer to implement the following steps:
 searching for an item in a stack, the stack including stack data having one or more stack data values, the stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an a most recently used (MRU) slack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in the set of references such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used, pointer manipulation associated with the promoting of the item occurring during a single clock cycle; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       39. A method for manipulating data in a stack, said stack including stack data having one or more stack data values, said stack further including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an a most recently used (MRU) stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references being such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value, said method comprising the steps of:
 searching for an item in the stack data; 
 if the item is found in the stack data, then promoting the item such that the item is identified as being the most-recently-used; and 
 if the item is not found in the stack data, then inserting the item into the stack such that the item is identified as being the most-recently-used. 
 
     
     
       40. A method as defined in  claim 39 , wherein said step of promoting the item comprises the steps of:
 setting the MRU stack pointer to the value of the stack pointer specifying the stack data value matching the item; and 
 shifting down one the values of the stack pointers in the stack pointer list between the MRU stack pointer and stack pointer specifying the stack data value matching the item, noninclusive, wherein said steps of setting the MRU stack pointer and shifting are executed simultaneously. 
 
     
     
       41. An apparatus for an a most recently used (MRU) stack, said apparatus comprising:
 means for receiving a command; 
 means for receiving a data value; 
 a stack data module for storing one or more stack data values, said stack data module being coupled to said data value receiving means for receiving a data value as input; 
 a stack pointer module for referencing stack data values stored in said stack data module, said stack pointer module being coupled to said stack data module to provide as input a reference to one or more stack data values, said stack pointer module including a stack pointer list having a set of references, the set of references including one or more stack pointers, each stack pointer uniquely specifying a stack data value in the stack data that includes a set of one or more clocked registers, each clocked register specifying a stack pointer that uniquely references a stack data value in the stack data module, the one or more stack pointers including an MRU stack pointer specifying the most-recently-used stack data value in the stack data and an a least recently used (LRU) stack pointer specifying the least-recently-used stack data value in the stack data, the stack pointers in said set of references being listed such that stack data values are specified from a most-recently-used data value down to a least-recently-used data value; and 
 a stack control module for the MRU stack, said stack control module being coupled to said command receiving means for receiving a command as input and further being arranged to transmit an output to a stack search requesting unit, said stack control module further being coupled to said stack pointer module to provide operational control of the stack pointer module functions, said stack control module further being coupled to said stack data module to provide control of the accessing of data to and from the stack data module and to receive as input a stack data value, said stack control module further being coupled to said data value receiving means for receiving a data value as input. 
 
     
     
       42. An apparatus as defined in  claim 41 , wherein said stack pointer list includes a set of registers, each register specifying a stack pointer that references a unique stack data value in the stack data module. 
     
     
       43. An apparatus as defined in  claim 41 , wherein said stack data module is a memory array having one or more array cells, each cell specifying a stack data value. 
     
     
       44. A memory apparatus, comprising:
 a data memory including a plurality of individually addressable cells;   a pointer memory including a plurality of clocked registers, each clocked register configured to store a pointer to one of the cells, in one-to-one correspondence with the cells; and   a control module, coupled to the pointer memory and the data memory, and configured to change the order in which data values are retrieved from the cells by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells, wherein the pointers are reordered in a single clock cycle.   
     
     
       45. The apparatus of claim 44, further comprising an address multiplexer with a plurality of inputs and one output, wherein the plurality of address multiplexer inputs are coupled to the outputs of the plurality of clocked registers in one-to-one correspondence with the clocked registers, and wherein the address multiplexer output is coupled to an input of the data memory. 
     
     
       46. The apparatus of claim 44, further comprising a plurality of data multiplexers, each data multiplexer having an output coupled to an input of one of the plurality of clocked registers in one-to-one correspondence with the clocked registers. 
     
     
       47. The apparatus of claim 46, wherein each data multiplexer has a plurality of inputs coupled to the outputs of the plurality of clocked registers in one-to-one correspondence with the clocked registers. 
     
     
       48. The apparatus of claim 44, wherein the control module is further configured to insert a data value into the data memory by storing the data value in one of the cells and by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells. 
     
     
       49. The apparatus of claim 44, wherein the clocked registers include a most recently used (MRU) clocked register for storing a pointer to a cell storing a most recently used (MRU) data value. 
     
     
       50. The apparatus of claim 49, wherein the control module is further configured to insert a data value into the data memory by storing the data value in one of the cells and by updating the pointer in the MRU clocked register to point to the cell in which the data value was stored. 
     
     
       51. The apparatus of claim 49, wherein the control module is further configured to promote a data value stored in a current cell in the data memory by storing a pointer to the current cell in the MRU clocked register and by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells. 
     
     
       52. The apparatus of claim 44, wherein the clocked registers include a least recently used (LRU) clocked register for storing a pointer to a cell storing a least recently used (LRU) data value. 
     
     
       53. The apparatus of claim 52, wherein the control module is further configured to insert a data value into the data memory by storing the data value in the cell pointed at by the LRU clocked register and by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells. 
     
     
       54. The apparatus of claim 44, wherein a T n  clocked register is storing a pointer to a current cell, and wherein a T 0  clocked register is storing a pointer to a cell storing a most recently used (MRU) data value, and wherein the control module is further configured to reorder the pointers by shifting the pointers in the T 0  clocked register through a T n-1  clocked register to a T 1  clocked register to the T n  clocked register, respectively. 
     
     
       55. The apparatus of claim 54, wherein the control module is further configured to store the pointer to the current cell in the T 0  clocked register. 
     
     
       56. The apparatus of claim 44, wherein the control module is further configured to change the order in which data values are retrieved from the cells by reordering the pointers in at least three of the clocked registers without shifting the data values in all of the cells, wherein the pointers are reordered in a single clock cycle. 
     
     
       57. A method of operating a memory apparatus, the method comprising:
 storing data in a data memory including a plurality of individually addressable cells;   storing pointers in a pointer memory including a plurality of clocked registers, each pointer stored in one of the clocked registers and pointing at one of the cells; and   changing an order in which data values are retrieved from the cells by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells, wherein the pointers are reordered in a single clock cycle.   
     
     
       58. The method of claim 57, further comprising outputting a pointer from one of the clocked registers and inputting the pointer into the data memory. 
     
     
       59. The method of claim 57, further comprising outputting a pointer from a data multiplexer and inputting the pointer into one of the clocked registers. 
     
     
       60. The method of claim 59, further comprising outputting a pointer from each clocked register and inputting the pointers into the data multiplexer. 
     
     
       61. The method of claim 57, further comprising inserting a data value into the data memory by storing the data value in one of the cells and by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells. 
     
     
       62. The method of claim 57, wherein the clocked registers include a most recently used (MRU) clocked register for storing a pointer to a cell storing a most recently used (MRU) data value. 
     
     
       63. The method of claim 62, further comprising inserting a data value into the data memory by storing the data value in one of the cells and by updating the pointer in the MRU clocked register to point to the cell in which the data value was stored. 
     
     
       64. The method of claim 62, further comprising promoting a data value stored in a current cell in the data memory by storing a pointer to the current cell in the MRU clocked register and by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells. 
     
     
       65. The method of claim 57, wherein the clocked registers include a least recently used (LRU) clocked register for storing a pointer to a cell storing a least recently used (LRU) data value. 
     
     
       66. The method of claim 65, further comprising inserting a data value into the data memory by storing the data value in the cell pointed at by the LRU clocked register and by reordering the pointers in at least some of the clocked registers without shifting the data values in all of the cells. 
     
     
       67. The method of claim 57, wherein a T n  clocked register is storing a pointer to a current cell, and wherein a T 0  clocked register is storing a pointer to a cell storing a most recently used (MRU) data value, and further comprising reordering the pointers by shifting the pointers in the T 0  clocked register through a T n-1  clocked register to a T 1  clocked register to the T n  clocked register, respectively. 
     
     
       68. The method of claim 67, further comprising storing the pointer to the current cell in the T 0  clocked register. 
     
     
       69. A memory apparatus, comprising:
 a data memory including a plurality of individually addressable cells;   a pointer memory including a plurality of clocked registers, each clocked register configured to store a pointer to one of the cells, in one-to-one correspondence with the cells; and   a control module, coupled to the pointer memory and the data memory, and configured to:
 change the order in which data values are retrieved from the cells by reordering the pointers in at least some of the clocked registers; and 
 insert a data value into the data memory by storing the data value in one of the cells and by reordering the pointers in at least some of the clocked registers; 
   wherein the pointers are reordered without shifting the data values in all of the cells, and wherein the pointers are reordered in a single clock cycle.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.