US20040210679A1 - Command ordering based on dependencies - Google Patents
Command ordering based on dependencies Download PDFInfo
- Publication number
- US20040210679A1 US20040210679A1 US10/401,258 US40125803A US2004210679A1 US 20040210679 A1 US20040210679 A1 US 20040210679A1 US 40125803 A US40125803 A US 40125803A US 2004210679 A1 US2004210679 A1 US 2004210679A1
- Authority
- US
- United States
- Prior art keywords
- command
- vector
- hold
- queue
- scorecard
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000013598 vector Substances 0.000 claims abstract description 109
- 238000000034 method Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
Definitions
- This invention relates generally to the ordering of execution of commands in command queues.
- Computers typically contain a bus, which may be a set of hardware lines or conductors used for information transfer between the various components of the computer system, such as the processor, the memory, and the input/output ports.
- a bus typically consists of specialized groups of lines that carry different types of information. For example, one group of lines might carry data, while another group of lines carries memory addresses where the data can be found, and still another group carries control signals.
- Some computers contain multiple buses, for example a system bus and an I/O (input/output) bus. These multiple buses might not have the same number of lines, and the lines might have different meanings. Thus, at the point where these multiple buses connect with each other, specialized hardware is needed to convert the interface of one bus into the interface of another bus. This specialized hardware is often contained within a chip or chips.
- the chips used in such a bus interface often receive many different types of commands. Typically, these commands are placed into separate queues in order to maximize throughput, so that if a first queue that services commands of a first type is full, a second queue can still accept and make progress executing commands of a second type. With this approach, there are occasions where commands in the various queues need to be ordered with respect to each other to prevent unintentional out-of-order execution.
- Ordering commands in queues has been accomplished by designing logic that searches through the queues looking for command dependencies and sets hold-off bits in a register to indicate that a particular command is dependent on another command or commands already in one of the queues and cannot proceed until the previously accepted command or commands complete.
- a common problem in designs of this type is that the rules for which commands are dependent upon each other are fluid and change late in the design cycle of the chip. Additionally, design flaws on either end of the bus interface may necessitate different hold-off conditions than the designer originally contemplated. Unfortunately, the logic that searches the queues and determines command dependencies cannot be changed without redesigning the chip. Thus, there is a need for a solution that allows flexibility in ordering commands in queues.
- a method, apparatus, chip, and electronic device determine whether to execute a command in a queue or whether to wait until another command or commands completed. The determination is based on a combination of an in-use vector and a scorecard vector.
- the in-use vector indicates which slots in various queues contain commands.
- the scorecard vector indicates the dependencies between various queues. In this way, the scorecard vector, and the thus the queue dependencies can be set and modified after the logic that processes the commands has been designed.
- FIG. 1 depicts a block diagram of an example electronic device for implementing an embodiment of the invention.
- FIG. 2 depicts a block diagram of an example chip for implementing an embodiment of the invention.
- FIG. 3 depicts a block diagram of data structures used in an embodiment of the invention.
- FIG. 4 depicts a flowchart of example processing for receiving commands, according to an embodiment of the invention.
- FIG. 5 depicts a flowchart of example processing for executing commands, according to an embodiment of the invention.
- FIG. 1 depicts a block diagram of an example electronic device 100 for implementing an embodiment of the invention.
- the electronic device 100 includes a processor 110 , a storage device 115 , an input device 120 , an output device 122 , and a chip 126 , all connected directly or indirectly via a system bus 125 .
- the processor 110 represents a central processing unit of any type of architecture, such as a CISC (Complex Instruction Set Computing), RISC (Reduced Instruction Set Computing), VLIW (Very Long Instruction Word), or a hybrid architecture, although any appropriate processor may be used.
- the processor 110 executes instructions and includes that portion of the electronic device 100 that controls the operation of the entire electronic device.
- the processor 110 typically includes a control unit that organizes data and program storage in memory and transfers data and other information between the various parts of the electronic device 100 .
- the processor 110 reads and/or stores code and data to/from the storage device 115 , receives input from the input device 120 , and presents output to the output device 122 .
- the electronic device 100 is shown to contain only a single processor 110 and a single system bus 125 , the present invention applies equally to electronic devices that may have multiple processors and multiple system buses with some or all performing different functions in different ways.
- the storage device 115 represents one or more mechanisms for storing data.
- the storage device 115 may include read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, and/or other machine-readable media.
- ROM read only memory
- RAM random access memory
- magnetic disk storage media magnetic disk storage media
- optical storage media magnetic tape
- flash memory devices any appropriate type of storage device may be used.
- any appropriate type of storage device may be used. Although only one storage device 115 is shown, multiple storage devices and multiple types of storage devices may be present.
- the input device 120 may be a keyboard, mouse or other pointing device, trackball, touchpad, touchscreen, keypad, microphone, voice-recognition device, or any other appropriate mechanism for the user to input data to the electronic device 100 . Although only one input device 120 is shown, in another embodiment any number and type of input devices may be present.
- the output device 122 may be a printer, display device, plotter, text-to-voice device, speaker, or any other appropriate mechanism to display information to the user of the electronic device 100 . Although only one output device 122 is shown, in another embodiment any number and type of output devices may be present.
- the system bus 125 may represent one or more busses, e.g., PCI, ISA (Industry Standard Architecture), X-Bus, EISA (Extended Industry Standard Architecture), or any other appropriate bus and/or bridge (also called a bus controller).
- PCI Peripheral Component Interconnect Express
- ISA Industry Standard Architecture
- X-Bus Universal Serial Bus
- EISA Extended Industry Standard Architecture
- bus controller any other appropriate bus and/or bridge
- the chip 126 is further connected to bus 135 , which is connected to a device 130 .
- the chip 126 receives commands and/or data from the bus 125 and sends commands and/or data to the bus 135 .
- the chip 126 receives commands and/or data from the bus 135 and sends command and/or data to the bus 125 .
- FIG. 1 Although only one chip 126 is shown in FIG. 1, in another embodiment multiple chips, such as a chip set, may be present, and the chips may be commonly connected via a board, card, or other appropriate mechanism.
- a chip is a device, such as an integrated circuit, that consists of a number of connected circuit elements, such as transistors and resistors, fabricated on a single piece of semiconductor material.
- a chip set is a collection of chips designed to function as a unit in the performance of a common task.
- the terms “chip” and “chip set” are used herein interchangeably.
- the structure of the chip 126 is further described below with reference to FIG. 2, and the functions of the chip 126 are further described below with reference to FIGS. 3, 4, and 5 .
- the bus 135 is an I/O (Input/Output) bus, but in other embodiments the bus 135 may be any appropriate type of bus.
- the device 130 is an I/O device such as a storage device.
- the device 130 is a network.
- the device 130 is any device capable of receiving and/or sending commands and/or data.
- the device 130 is shown in FIG. 1 to be contained within the electronic device 100 , in another embodiment the device 130 is external to the electronic device 100 . Although only one device 130 is shown, in other embodiments multiple devices and multiple types of devices may be present.
- the electronic device 100 may be implemented using any suitable hardware and/or software, such as a personal computer.
- Portable computers, laptop or notebook computers, PDAs (Personal Digital Assistants), pocket computers, telephones, pagers, automobiles, teleconferencing systems, appliances, and mainframe computers are examples of other possible configurations of the electronic device 100 .
- the hardware and software depicted in FIG. 1 may vary for specific applications and may include more or fewer elements than those depicted.
- other peripheral devices such as audio adapters, or chip programming devices, such as EPROM (Erasable Programmable Read-Only Memory) programming devices may be used in addition to or in place of the hardware already depicted.
- EPROM Erasable Programmable Read-Only Memory
- aspects of an embodiment of the invention pertain to specific apparatus and method elements implementable on a computer or electronic device.
- the invention may be implemented as a program product for use with a computer or an electronic device.
- the programs defining the functions of this embodiment may be delivered to the adapter or electronic device via a variety of signal-bearing media, which include, but are not limited to:
- a non-rewriteable storage medium e.g., a read-only memory device attached to or within an adapter or electronic device, such as a CD-ROM readable by a CD-ROM drive;
- Such signal-bearing media when carrying machine-readable instructions that direct the functions of the present invention, represent embodiments of the present invention.
- FIG. 2 depicts a block diagram of an example chip 126 for implementing an embodiment of the invention.
- the chip 126 includes an interrupt queue 205 , a cache coherency queue 210 , and a load response queue 215 .
- queues shown are exemplary only, and in other embodiment, any number and type of queues may be present.
- a read/write command to internal facilities queue a read/write command to external facilities queue, or any other appropriate type of queue may be used.
- Each queue has a number of command slots to hold commands.
- the interrupt queue 205 includes command slots 206 - 1 , 206 - 2 , 206 - 3 , and 206 - 4 .
- the command slot 206 - 1 holds a command entitled “Command A,” while command slots 206 - 2 , 206 - 3 , and 206 - 4 are empty.
- the cache coherency queue 210 contains four command slots with respective commands “Command B,” “Command C,” “Command D,” and one empty slot.
- the load response queue 215 contains four command slots with respective commands “Command E,” “Command F,” and two empty slots.
- all queues have four command slots, in other embodiments, the queues may have any number and varying numbers of command slots.
- the queues 205 , 210 , and 215 are FIFO (First-In-First-Out) queues, meaning that commands are removed only in the same order in which they were inserted. But, in other embodiments, commands are assigned priorities within the queues and are removed and processed in an order based on the priorities. In another embodiment, the commands may be removed and processed from a particular queue in any appropriate order.
- FIFO First-In-First-Out queues
- the chip 126 further includes scorecard registers 220 - 1 , 220 - 2 , and 220 - 3 associated with each respective queue 205 , 210 , and 215 .
- interrupt queue 205 has associated scorecard register 220 - 1
- cache coherency queue 210 has associated scorecard register 220 - 2
- load response queue 215 has associated scorecard register 220 - 3 .
- the scorecards 220 - 1 , 220 - 2 , and 220 - 3 are shown to be registers, in another embodiment any storage location may be used to store vector values in the scorecard.
- the values in the scorecard registers are set by the designer of the chip 126 to indicate each queue's dependencies on other queues.
- the scorecard registers allow the designer to determine the dependencies between the queues at run time, rather than making these determinations early in the design cycle of the chip 126 before the chip has been committed to silicon and coding the command ordering rules into the silicon.
- the values in the scorecard registers have been described as being set by the designer of the chip 126 , in other embodiments, the values in the scorecard registers may be set via any appropriate mechanism.
- the values in the scorecard registers may be set using a LSSD (Level Sensitive Scan Design), or 12 C (Inter Integrated Circuit Bus, JTAG (Joint Test Action Group) interface via test equipment or a computer.
- the chip 126 may receive a store instruction from the bus 125 that contains values, which the chip 126 writes to the scorecard registers.
- the chip 126 further includes hold-off vectors associated with each command slot in each queue 205 , 210 , and 215 .
- the command slot 206 - 1 is associated with the hold-off vector 221 - 1
- the command slot 206 - 2 is associated with the hold-off vector 221 - 2
- the command slot 206 - 3 is associated with the hold-off vector 221 - 3
- the command slot 206 - 4 is associated with the hold-off vector 221 - 4 .
- the command slots in the queues 210 and 215 also have associated respective hold-off vectors.
- the hold-off vectors are stored in registers, but in another embodiment any appropriate storage location may be used to store the hold-off vectors.
- the hold-off vectors indicate whether their respective command slots contain commands that are ready for execution or whether their respective command slots contain commands that must be held off waiting for another command or commands to execute first.
- the setting of the hold-off vectors is further described below with reference to FIGS. 3-5.
- the chip 126 further includes an in-use vector 230 , which indicates which slots in which queues contain commands.
- the in-use vector 230 includes respective in-use slots associated with each respective command slot in each of the queues 205 , 210 , and 215 .
- each slot contains one bit, and when the bit is “1” the corresponding command slot in the corresponding queue contains a command, and when the bit is “0” the corresponding slot in the corresponding queue does not contain a command.
- the slots in the in-use vector 230 may be of any size and any appropriate encoding may be used.
- the in-use slot 232 - 1 contains a “0” indicating that the command slot 206 - 4 is empty; the in-use slot 232 - 2 contains a “0” indicating that the command slot 206 - 3 is empty; the in-use slot 232 - 3 contains a “0” indicating that the command slot 206 - 2 is empty; and the in-use slot 232 - 4 contains a “1” indicating that the command slot 206 - 1 contains a command.
- the remaining in-use slots in the in-use vector 230 are encoded to correspond to the state of the cache coherency queue 210 and the load response queue 215 .
- the setting and clearing of the in-use vector 230 is further described below with reference to FIGS. 4 and 5.
- the in-use vector 230 is used in conjunction with the scorecard registers 220 - 1 , 220 - 2 , and 220 - 3 to create the hold-off vectors as further described below with reference to FIGS. 3 and 4.
- the chip 126 also includes a command processor 240 , which inserts and retrieves commands to/from the queues 205 , 210 , and 215 , and sets and clears the in-use vector 230 and the hold-off vectors.
- the command processor 140 receives values from the bus 125 via a store instruction or other command and writes the values into the scorecard registers 220 - 1 , 220 - 2 , and 220 - 3 .
- the functions of the command processor 240 are further described below with reference to FIGS. 3 and 4.
- the functions of the command processor 240 are implemented in hardware via logic gates and other hardware components.
- the command processor 240 includes instructions capable of being executed on an unillustrated processor, but analogous to the processor 110 (FIG. 1).
- FIG. 2 Although the various components in FIG. 2 are shown as all being included within the chip 126 , in other embodiments some or all of them may be on separate chips, cards, or boards.
- FIG. 3 depicts a block diagram of vectors used in an embodiment of the invention.
- the hold-off vector is created based on the in-use vector and the scorecard register.
- the hold-off vector 221 - 1 is created from a logical AND operation on the scorecard register 220 - 1 and the in-use vector 230 .
- the slots in the scorecard register 220 - 1 are grouped into three groups: group 301 , group 302 , and group 302 .
- the scorecard slots in the group 301 are associated with the commands in the interrupt queue 205
- the scorecard slots in the group 302 are associated with the commands in the cache coherency queue 210
- the scorecard slots in the group 303 are associated with the commands in the load response queue 215 .
- the command associated with the slot may be execute in any order.
- the command corresponding to the slot needs to be executed before other commands. But, in other embodiments any appropriate encoding may be used.
- the slots in groups 301 and 302 are all “0,” indicating that commands in the interrupt queue 205 do not need to wait for other commands (if present) in the interrupt queue 205 and the cache coherency queue 210 .
- the slots in groups 303 are all “1,” indicating that the commands in the interrupt queue 205 do need to wait for other commands (if present) in the load response queue 215 .
- the values illustrated in the scorecard register 220 - 1 are examples only and any values may be used.
- the slots in the hold-off vector 221 - 1 are grouped into three groups: group 304 , group 305 , and group 306 .
- the hold-off vector slots 304 are associated with the commands in the interrupt queue 205
- the hold-off vector slots 305 are associated with the commands in the cache coherency queue 210
- the hold-off vector slots 306 are associated with the commands in the load response queue 215 .
- the associated command queue slot when a slot in the hold-off vector contains a “0,” the associated command queue slot does not contain a command that needs to execute prior to the command associated with the entire hold-off vector. In an embodiment, when a slot in the hold-off vector contains a “1,” the associated command queue slot contains a command that needs to execute prior to the command associated with the entire hold-off vector. Thus, when the entire hold-off vector is non-zero, the command in the command slot associated with the entire hold-off vector needs to wait, or hold off, until the hold-off vector becomes zero.
- the associated slot in the associated command queue is empty with no valid command. In an embodiment when a slot in the in-use vector 230 contains a “1,” the associated slot in the associated command queue contains a command.
- FIG. 4 depicts a flowchart of example processing for receiving commands, according to an embodiment of the invention. Control begins at block 400 .
- the command processor 240 places “Command A” in slot 206 - 1 in the interrupt queue 205 and sets the corresponding slot 232 - 4 to “1,” although in other embodiments any appropriate encoding may be used.
- the command processor 240 performs a logical AND operation of the in-use vector 230 and the scorecard register 220 - 1 associated with the interrupt queue 205 and places the result in the hold-off register 221 - 1 associated with the slot 206 - 1 of the command queue 205 .
- the hold-off register 221 - 1 now indicates for which commands the “Command A” must wait.
- FIG. 5 depicts a flowchart of example processing for executing a command, according to an embodiment of the invention. Control begins at block 500 .
- the command processor 240 selects a queue to process based on a round-robin selection technique.
- the command processor 240 selects a queue based on a priority scheme where queues are given priorities and certain queues have a higher priority than other queues.
- any appropriate technique may be used for selecting the next queue to process.
- the command processor 240 selects “Command A” from slot 206 - 1 .
- the command processor 240 looks at the hold-off vector 221 - 1 , which is associated with the slot 206 - 1 .
- the hold-off vector 221 - 1 is shown in FIG. 3 to be non-zero, which in an embodiment means that the command needs to be held waiting for other commands to complete.
- control returns to block 510 , as previously described above.
- the determination at block 520 is false when the hold-off vector is non-zero.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
A method, apparatus, system, and signal-bearing medium that in various embodiments determine whether to execute a command in a queue or whether to wait until another command or commands completed. The determination is based on a combination of an in-use vector and a scorecard vector. The in-use vector indicates which slots in various queues contain commands. The scorecard vector indicates the dependencies between various queues. In this way, the scorecard vector, and the thus the queue dependencies can be set and modified after the logic that processes the commands has been designed.
Description
- A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever.
- This invention relates generally to the ordering of execution of commands in command queues.
- Computers typically contain a bus, which may be a set of hardware lines or conductors used for information transfer between the various components of the computer system, such as the processor, the memory, and the input/output ports. A bus typically consists of specialized groups of lines that carry different types of information. For example, one group of lines might carry data, while another group of lines carries memory addresses where the data can be found, and still another group carries control signals. Some computers contain multiple buses, for example a system bus and an I/O (input/output) bus. These multiple buses might not have the same number of lines, and the lines might have different meanings. Thus, at the point where these multiple buses connect with each other, specialized hardware is needed to convert the interface of one bus into the interface of another bus. This specialized hardware is often contained within a chip or chips.
- The chips used in such a bus interface often receive many different types of commands. Typically, these commands are placed into separate queues in order to maximize throughput, so that if a first queue that services commands of a first type is full, a second queue can still accept and make progress executing commands of a second type. With this approach, there are occasions where commands in the various queues need to be ordered with respect to each other to prevent unintentional out-of-order execution.
- Ordering commands in queues has been accomplished by designing logic that searches through the queues looking for command dependencies and sets hold-off bits in a register to indicate that a particular command is dependent on another command or commands already in one of the queues and cannot proceed until the previously accepted command or commands complete. A common problem in designs of this type is that the rules for which commands are dependent upon each other are fluid and change late in the design cycle of the chip. Additionally, design flaws on either end of the bus interface may necessitate different hold-off conditions than the designer originally contemplated. Unfortunately, the logic that searches the queues and determines command dependencies cannot be changed without redesigning the chip. Thus, there is a need for a solution that allows flexibility in ordering commands in queues.
- Although the aforementioned problems have been described in the context of a chip in a bus interface, they can apply in any context where commands on command queues need to be ordered with respect to dependencies that they might have on each other.
- A method, apparatus, chip, and electronic device are provided that in various embodiments determine whether to execute a command in a queue or whether to wait until another command or commands completed. The determination is based on a combination of an in-use vector and a scorecard vector. The in-use vector indicates which slots in various queues contain commands. The scorecard vector indicates the dependencies between various queues. In this way, the scorecard vector, and the thus the queue dependencies can be set and modified after the logic that processes the commands has been designed.
- FIG. 1 depicts a block diagram of an example electronic device for implementing an embodiment of the invention.
- FIG. 2 depicts a block diagram of an example chip for implementing an embodiment of the invention.
- FIG. 3 depicts a block diagram of data structures used in an embodiment of the invention.
- FIG. 4 depicts a flowchart of example processing for receiving commands, according to an embodiment of the invention.
- FIG. 5 depicts a flowchart of example processing for executing commands, according to an embodiment of the invention.
- FIG. 1 depicts a block diagram of an example
electronic device 100 for implementing an embodiment of the invention. Theelectronic device 100 includes aprocessor 110, astorage device 115, aninput device 120, anoutput device 122, and achip 126, all connected directly or indirectly via asystem bus 125. - The
processor 110 represents a central processing unit of any type of architecture, such as a CISC (Complex Instruction Set Computing), RISC (Reduced Instruction Set Computing), VLIW (Very Long Instruction Word), or a hybrid architecture, although any appropriate processor may be used. Theprocessor 110 executes instructions and includes that portion of theelectronic device 100 that controls the operation of the entire electronic device. Although not depicted in FIG. 1, theprocessor 110 typically includes a control unit that organizes data and program storage in memory and transfers data and other information between the various parts of theelectronic device 100. Theprocessor 110 reads and/or stores code and data to/from thestorage device 115, receives input from theinput device 120, and presents output to theoutput device 122. - Although the
electronic device 100 is shown to contain only asingle processor 110 and asingle system bus 125, the present invention applies equally to electronic devices that may have multiple processors and multiple system buses with some or all performing different functions in different ways. - The
storage device 115 represents one or more mechanisms for storing data. For example, thestorage device 115 may include read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, and/or other machine-readable media. In other embodiments, any appropriate type of storage device may be used. Although only onestorage device 115 is shown, multiple storage devices and multiple types of storage devices may be present. - The
input device 120 may be a keyboard, mouse or other pointing device, trackball, touchpad, touchscreen, keypad, microphone, voice-recognition device, or any other appropriate mechanism for the user to input data to theelectronic device 100. Although only oneinput device 120 is shown, in another embodiment any number and type of input devices may be present. - The
output device 122 may be a printer, display device, plotter, text-to-voice device, speaker, or any other appropriate mechanism to display information to the user of theelectronic device 100. Although only oneoutput device 122 is shown, in another embodiment any number and type of output devices may be present. - The
system bus 125 may represent one or more busses, e.g., PCI, ISA (Industry Standard Architecture), X-Bus, EISA (Extended Industry Standard Architecture), or any other appropriate bus and/or bridge (also called a bus controller). - The
chip 126 is further connected tobus 135, which is connected to adevice 130. Thechip 126 receives commands and/or data from thebus 125 and sends commands and/or data to thebus 135. In another embodiment, thechip 126 receives commands and/or data from thebus 135 and sends command and/or data to thebus 125. Although only onechip 126 is shown in FIG. 1, in another embodiment multiple chips, such as a chip set, may be present, and the chips may be commonly connected via a board, card, or other appropriate mechanism. A chip is a device, such as an integrated circuit, that consists of a number of connected circuit elements, such as transistors and resistors, fabricated on a single piece of semiconductor material. A chip set is a collection of chips designed to function as a unit in the performance of a common task. The terms “chip” and “chip set” are used herein interchangeably. The structure of thechip 126 is further described below with reference to FIG. 2, and the functions of thechip 126 are further described below with reference to FIGS. 3, 4, and 5. - In an embodiment the
bus 135 is an I/O (Input/Output) bus, but in other embodiments thebus 135 may be any appropriate type of bus. In an embodiment thedevice 130 is an I/O device such as a storage device. In another embodiment, thedevice 130 is a network. In another embodiment, thedevice 130 is any device capable of receiving and/or sending commands and/or data. Although thedevice 130 is shown in FIG. 1 to be contained within theelectronic device 100, in another embodiment thedevice 130 is external to theelectronic device 100. Although only onedevice 130 is shown, in other embodiments multiple devices and multiple types of devices may be present. - The
electronic device 100 may be implemented using any suitable hardware and/or software, such as a personal computer. Portable computers, laptop or notebook computers, PDAs (Personal Digital Assistants), pocket computers, telephones, pagers, automobiles, teleconferencing systems, appliances, and mainframe computers are examples of other possible configurations of theelectronic device 100. The hardware and software depicted in FIG. 1 may vary for specific applications and may include more or fewer elements than those depicted. For example, other peripheral devices such as audio adapters, or chip programming devices, such as EPROM (Erasable Programmable Read-Only Memory) programming devices may be used in addition to or in place of the hardware already depicted. - As will be described in detail below, aspects of an embodiment of the invention pertain to specific apparatus and method elements implementable on a computer or electronic device. In another embodiment, the invention may be implemented as a program product for use with a computer or an electronic device. The programs defining the functions of this embodiment may be delivered to the adapter or electronic device via a variety of signal-bearing media, which include, but are not limited to:
- (1) information permanently stored on a non-rewriteable storage medium, e.g., a read-only memory device attached to or within an adapter or electronic device, such as a CD-ROM readable by a CD-ROM drive;
- (2) alterable information stored on a rewriteable storage medium, e.g., a hard disk drive or diskette; or
- (3) information conveyed to an adapter or electronic device by a communications medium, such as through a computer or a telephone network, including wireless communications.
- Such signal-bearing media, when carrying machine-readable instructions that direct the functions of the present invention, represent embodiments of the present invention.
- FIG. 2 depicts a block diagram of an
example chip 126 for implementing an embodiment of the invention. Thechip 126 includes an interruptqueue 205, acache coherency queue 210, and aload response queue 215. - The specific number and types of queues shown are exemplary only, and in other embodiment, any number and type of queues may be present. For example, in other embodiments, a read/write command to internal facilities queue, a read/write command to external facilities queue, or any other appropriate type of queue may be used.
- Each queue has a number of command slots to hold commands. For example, the interrupt
queue 205 includes command slots 206-1, 206-2, 206-3, and 206-4. In the example shown, the command slot 206-1 holds a command entitled “Command A,” while command slots 206-2, 206-3, and 206-4 are empty. Thecache coherency queue 210 contains four command slots with respective commands “Command B,” “Command C,” “Command D,” and one empty slot. Theload response queue 215 contains four command slots with respective commands “Command E,” “Command F,” and two empty slots. Although in the example shown, all queues have four command slots, in other embodiments, the queues may have any number and varying numbers of command slots. - In an embodiment, the
queues - The
chip 126 further includes scorecard registers 220-1, 220-2, and 220-3 associated with eachrespective queue queue 205 has associated scorecard register 220-1,cache coherency queue 210 has associated scorecard register 220-2, and loadresponse queue 215 has associated scorecard register 220-3. Although the scorecards 220-1, 220-2, and 220-3 are shown to be registers, in another embodiment any storage location may be used to store vector values in the scorecard. In an embodiment the values in the scorecard registers are set by the designer of thechip 126 to indicate each queue's dependencies on other queues. The scorecard registers allow the designer to determine the dependencies between the queues at run time, rather than making these determinations early in the design cycle of thechip 126 before the chip has been committed to silicon and coding the command ordering rules into the silicon. Although the values in the scorecard registers have been described as being set by the designer of thechip 126, in other embodiments, the values in the scorecard registers may be set via any appropriate mechanism. In various embodiments, the values in the scorecard registers may be set using a LSSD (Level Sensitive Scan Design), or 12C (Inter Integrated Circuit Bus, JTAG (Joint Test Action Group) interface via test equipment or a computer. In another embodiment, thechip 126 may receive a store instruction from thebus 125 that contains values, which thechip 126 writes to the scorecard registers. - The
chip 126 further includes hold-off vectors associated with each command slot in eachqueue queues - The hold-off vectors indicate whether their respective command slots contain commands that are ready for execution or whether their respective command slots contain commands that must be held off waiting for another command or commands to execute first. The setting of the hold-off vectors is further described below with reference to FIGS. 3-5.
- The
chip 126 further includes an in-use vector 230, which indicates which slots in which queues contain commands. The in-use vector 230 includes respective in-use slots associated with each respective command slot in each of thequeues use vector 230 may be of any size and any appropriate encoding may be used. - In the example shown, the in-use slot232-1 contains a “0” indicating that the command slot 206-4 is empty; the in-use slot 232-2 contains a “0” indicating that the command slot 206-3 is empty; the in-use slot 232-3 contains a “0” indicating that the command slot 206-2 is empty; and the in-use slot 232-4 contains a “1” indicating that the command slot 206-1 contains a command. In an analogous fashion, the remaining in-use slots in the in-
use vector 230 are encoded to correspond to the state of thecache coherency queue 210 and theload response queue 215. The setting and clearing of the in-use vector 230 is further described below with reference to FIGS. 4 and 5. The in-use vector 230 is used in conjunction with the scorecard registers 220-1, 220-2, and 220-3 to create the hold-off vectors as further described below with reference to FIGS. 3 and 4. - The
chip 126 also includes acommand processor 240, which inserts and retrieves commands to/from thequeues use vector 230 and the hold-off vectors. In an embodiment, the command processor 140 receives values from thebus 125 via a store instruction or other command and writes the values into the scorecard registers 220-1, 220-2, and 220-3. The functions of thecommand processor 240 are further described below with reference to FIGS. 3 and 4. In an embodiment, the functions of thecommand processor 240 are implemented in hardware via logic gates and other hardware components. In another embodiment, thecommand processor 240 includes instructions capable of being executed on an unillustrated processor, but analogous to the processor 110 (FIG. 1). - Although the various components in FIG. 2 are shown as all being included within the
chip 126, in other embodiments some or all of them may be on separate chips, cards, or boards. - FIG. 3 depicts a block diagram of vectors used in an embodiment of the invention. The hold-off vector is created based on the in-use vector and the scorecard register. In the example shown, the hold-off vector221-1 is created from a logical AND operation on the scorecard register 220-1 and the in-
use vector 230. - The slots in the scorecard register220-1 are grouped into three groups:
group 301,group 302, andgroup 302. The scorecard slots in thegroup 301 are associated with the commands in the interruptqueue 205, the scorecard slots in thegroup 302 are associated with the commands in thecache coherency queue 210, and the scorecard slots in thegroup 303 are associated with the commands in theload response queue 215. - In an embodiment, when a slot in the scorecard register contains a “0,” the command associated with the slot may be execute in any order. In an embodiment, when a slot in the scorecard register contains a “1,” the command corresponding to the slot needs to be executed before other commands. But, in other embodiments any appropriate encoding may be used.
- In the example shown, the slots in
groups queue 205 do not need to wait for other commands (if present) in the interruptqueue 205 and thecache coherency queue 210. In the example shown, the slots ingroups 303 are all “1,” indicating that the commands in the interruptqueue 205 do need to wait for other commands (if present) in theload response queue 215. The values illustrated in the scorecard register 220-1 are examples only and any values may be used. - The slots in the hold-off vector221-1 are grouped into three groups:
group 304,group 305, andgroup 306. The hold-off vector slots 304 are associated with the commands in the interruptqueue 205, the hold-off vector slots 305 are associated with the commands in thecache coherency queue 210, and the hold-off vector slots 306 are associated with the commands in theload response queue 215. - In an embodiment, when a slot in the hold-off vector contains a “0,” the associated command queue slot does not contain a command that needs to execute prior to the command associated with the entire hold-off vector. In an embodiment, when a slot in the hold-off vector contains a “1,” the associated command queue slot contains a command that needs to execute prior to the command associated with the entire hold-off vector. Thus, when the entire hold-off vector is non-zero, the command in the command slot associated with the entire hold-off vector needs to wait, or hold off, until the hold-off vector becomes zero.
- In an embodiment when a slot in the in-
use vector 230 contains a “0,” the associated slot in the associated command queue is empty with no valid command. In an embodiment when a slot in the in-use vector 230 contains a “1,” the associated slot in the associated command queue contains a command. - Although the data structures of FIG. 3 have been described in terms of “0” and “1” any appropriate encoding scheme may be used.
- FIG. 4 depicts a flowchart of example processing for receiving commands, according to an embodiment of the invention. Control begins at
block 400. - Control then continues to block405 where the
command processor 240 receives a command from thebus 125 or thebus 135. In another embodiment, thecommand processor 240 may receive the command from any appropriate entity. Control then continues to block 410 where thecommand processor 240 places the received command in an empty slot in the proper queue, depending on the type of command or any other appropriate criteria. - Control then continues to block415 where the
command processor 240 sets an indicator in the in-use vector 230 that corresponds to the queue location where the command was placed. Using the example of FIG. 2, if the command received atblock 405 was “Command A,” thecommand processor 240 places “Command A” in slot 206-1 in the interruptqueue 205 and sets the corresponding slot 232-4 to “1,” although in other embodiments any appropriate encoding may be used. - Control then continues to block420 where the
command processor 240 performs a logical AND operation on the scorecard register associated with the proper queue (previously selected at block 405) and the in-use vector 230 and places the result in the hold-off register associated with the command queue and slot of the received command. Again, using the example of FIG. 2, if the command received atblock 405 was “Command A,” then thecommand processor 240 atblock 420 performs a logical AND operation of the in-use vector 230 and the scorecard register 220-1 associated with the interruptqueue 205 and places the result in the hold-off register 221-1 associated with the slot 206-1 of thecommand queue 205. Thus, in this example, the hold-off register 221-1 now indicates for which commands the “Command A” must wait. - Control then returns to block405 where the
command processor 240 receives the next command, as previously described above. - FIG. 5 depicts a flowchart of example processing for executing a command, according to an embodiment of the invention. Control begins at
block 500. - Control then continues to block510 where the
command processor 240 selects a queue to process. In an embodiment, thecommand processor 240 selects a queue to process based on a round-robin selection technique. In another embodiment, thecommand processor 240 selects a queue based on a priority scheme where queues are given priorities and certain queues have a higher priority than other queues. In another embodiment, any appropriate technique may be used for selecting the next queue to process. - Control then continues to block515 where the
command processor 240 selects a command from a slot in the command queue that was previously selected inblock 510. Using the example of FIG. 2, if the queue previously selected atblock 510 was the interruptqueue 205, then atblock 515 thecommand processor 240 selects “Command A” from slot 206-1. - Control then continues to block520 where the
command processor 240 determines whether the hold-off vector associated with the command slot in the queue indicates that the command may be executed. Using the example of FIG. 2, if thecommand processor 240 previously selected “Command A” from slot 206-1 atblock 515, then atblock 520, the command processor looks at the hold-off vector 221-1, which is associated with the slot 206-1. The hold-off vector 221-1 is shown in FIG. 3 to be non-zero, which in an embodiment means that the command needs to be held waiting for other commands to complete. - If the determination at
block 520 is false, then control returns to block 510, as previously described above. In an embodiment, the determination atblock 520 is false when the hold-off vector is non-zero. - If the determination at
block 520 is true, then control continues to block 525 where the command processor removes the command from the selected slot in the selected command queue and executes the command. In an embodiment, the determination atblock 520 is true when the hold-off vector is zero. - Control then continues to block530 where the
command processor 240 clears the appropriate bit for the just-executed command in every other command's associated hold-off vector. Control then continues to block 535 where thecommand processor 240 clears the appropriate bit associated with the just-executed command in the in-use vector 230. Control then returns to block 510, as previously described above. - In the previous detailed description of exemplary embodiments of the invention, reference was made to the accompanying drawings (where like numbers represent like elements), which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments were described in sufficient detail to enable those skilled in the art to practice the invention, but other embodiments may be utilized and logical, mechanical, electrical, and other changes may be made without departing from the scope of the present invention. Different instances of the word “embodiment” as used within this specification do not necessarily refer to the same embodiment, but they may. The previous detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
- In the previous description, numerous specific details were set forth to provide a thorough understanding of the invention. But, the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail in order not to obscure the invention.
Claims (30)
1. A method comprising:
determining whether to execute a command based on a combination of an in-use vector and a scorecard vector.
2. The method of claim 1 , wherein the in-use vector indicates which of a plurality of command slots in a plurality of queues contains commands.
3. The method of claim 2 , wherein the scorecard vector indicates whether dependencies exist between the plurality of queues.
4. The method of claim 3 , wherein the determining further comprises:
performing a logical AND operation on the in-use vector and the scorecard vector.
5. The method of claim 4 , further comprising:
setting a result of the logical AND operation in a hold-off register.
6. The method of claim 5 , further comprising:
executing the command when the hold-off register indicates no dependencies exist between the command and the plurality of queues.
7. An apparatus comprising:
means for setting an indication in an in-use slot in an in-use vector, wherein the indication indicates that a queue-slot in a queue contains a command; and
means for setting a hold-off vector associated with the queue-slot based on a scorecard vector and the in-use vector, wherein the scorecard vector indicates whether a dependency exists between the command and at least one other queue.
8. The apparatus of claim 7 , wherein the means for setting the hold-off vector further comprises:
means for performing a logical AND operation on the in-use vector and the scorecard vector.
9. The apparatus of claim 7 , further comprising:
means for executing the command when the hold-off vector indicates the command is free of a dependency with the at least one other queue.
10. The apparatus of claim 9 , further comprising:
means for clearing the indication after the command is executed.
11. The apparatus of claim 7 , further comprising:
means for clearing a plurality of indications for the command in a plurality of hold-off vectors associated with a plurality of queue-slots in the at least one other queue after the command is executed.
12. The apparatus of claim 7 , further comprising:
means for holding executing the command when the hold-off vector indicates the command has at least one dependency with the at least one other queue.
13. A signal-bearing medium encoded with instructions, wherein the instructions when executed comprise:
setting an indication in an in-use slot in an in-use vector, wherein the indication indicates that a queue-slot in a queue contains a command; and
setting a hold-off vector associated with the queue-slot based on a scorecard vector and the in-use vector, wherein the scorecard vector indicates whether a dependency exists between the command and at least one other queue.
14. The signal-bearing medium of claim 13 , wherein the setting the hold-off vector further comprises:
performing a logical AND operation on the in-use vector and the scorecard vector.
15. The signal-bearing medium of claim 13 , further comprising:
executing the command when the hold-off vector indicates the command is free of dependencies with the at least one other queue.
16. The signal-bearing medium of claim 15 , further comprising:
clearing the indication after the command is executed.
17. The signal-bearing medium of claim 13 , further comprising:
clearing a plurality of indications for the command in a plurality of hold-off vectors associated with a plurality of queue-slots in the at least one other queue after the command is executed.
18. The signal-bearing medium of claim 13 , further comprising:
holding executing the command when the hold-off vector indicates the command has at least one dependency with the at least one other queue.
19. A chip comprising:
a plurality of queues;
a plurality of scorecard vectors associated with the respective queues, wherein the scorecard vectors are to indicate whether dependencies exist between the plurality of queues;
an in-use vector to indicate which of a plurality of command slots in the plurality of queues contain commands; and
a command processor to set a result of a combination of the in-use vector and one of the plurality of scorecard vectors into a hold-off vector.
20. The chip of claim 19 , wherein the command processor is further to:
place a command in one of the plurality of command slots and set an indication in the in-use vector that corresponds to the one of the plurality of command slots.
21. The chip of claim 20 , wherein the command processor is further to:
clear the indication in the in-use vector after execution of the command.
22. The chip of claim 20 , wherein the command processor is further to:
determine whether to allow execution of the command based on the hold-off vector.
23. The chip of claim 19 , wherein the combination is a logical AND operation of the in-use vector and the one of the plurality of scorecard vectors.
24. The chip of claim 20 , wherein the command processor is further to:
hold execution of the command when the hold-off vector indicates the command has at least one dependency with the plurality of queues.
25. An electronic device comprising:
a first bus;
a second bus; and
a chip connected to the first bus and the second bus, wherein the chip comprises a command processor to:
receive a plurality of commands from the first bus,
place the plurality of commands in a plurality of queues,
set an in-use vector to indicate which of a plurality of command slots in the plurality of queues contain the plurality of commands,
set a result of a logical AND operation on the in-use vector and a scorecard vector into a hold-off vector associated with one of the plurality of command slots, and
determine whether to execute one of the plurality of commands associated with the hold-off vector based on the hold-off vector.
26. The electronic device of claim 25 , wherein the command processor is further to:
execute the one of the plurality of commands when the hold-off vector is zero.
27. The electronic device of claim 25 , wherein the command processor is further to:
hold executing the one of the plurality of commands when the hold-off vector is non-zero.
28. The electronic device of claim 26 , wherein the command processor is further to:
clear an indication in the in-use vector after execution of the one of the plurality of commands.
29. The electronic device of claim 26 , wherein the command processor is further to:
clear a plurality of indications for the one of the plurality of commands in a plurality of hold-off vectors associated with a plurality of queue-slots in the plurality of queues after the one of the plurality of commands is executed.
30. The electronic device of claim 25 , wherein the command processor is further to:
write values into the scorecard vector.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/401,258 US7136938B2 (en) | 2003-03-27 | 2003-03-27 | Command ordering based on dependencies |
US11/471,043 US7392367B2 (en) | 2003-03-27 | 2006-06-19 | Command ordering among commands in multiple queues using hold-off vector generated from in-use vector and queue dependency scorecard |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/401,258 US7136938B2 (en) | 2003-03-27 | 2003-03-27 | Command ordering based on dependencies |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/471,043 Division US7392367B2 (en) | 2003-03-27 | 2006-06-19 | Command ordering among commands in multiple queues using hold-off vector generated from in-use vector and queue dependency scorecard |
Publications (2)
Publication Number | Publication Date |
---|---|
US20040210679A1 true US20040210679A1 (en) | 2004-10-21 |
US7136938B2 US7136938B2 (en) | 2006-11-14 |
Family
ID=33158471
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/401,258 Expired - Fee Related US7136938B2 (en) | 2003-03-27 | 2003-03-27 | Command ordering based on dependencies |
US11/471,043 Expired - Lifetime US7392367B2 (en) | 2003-03-27 | 2006-06-19 | Command ordering among commands in multiple queues using hold-off vector generated from in-use vector and queue dependency scorecard |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/471,043 Expired - Lifetime US7392367B2 (en) | 2003-03-27 | 2006-06-19 | Command ordering among commands in multiple queues using hold-off vector generated from in-use vector and queue dependency scorecard |
Country Status (1)
Country | Link |
---|---|
US (2) | US7136938B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060129764A1 (en) * | 2004-12-09 | 2006-06-15 | International Business Machines Corporation | Methods and apparatus for storing a command |
US20110320722A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines | Management of multipurpose command queues in a multilevel cache hierarchy |
CN110134438A (en) * | 2019-05-14 | 2019-08-16 | Oppo广东移动通信有限公司 | Instruction reorder method, apparatus, mobile terminal and storage medium |
US11768686B2 (en) * | 2020-07-27 | 2023-09-26 | Nvidia Corporation | Out of order memory request tracking structure and technique |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487267B2 (en) * | 2006-02-03 | 2009-02-03 | International Business Machines Corporation | Method and apparatus for managing dependencies between split transaction queues |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US8566508B2 (en) * | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
US8595572B2 (en) | 2009-04-08 | 2013-11-26 | Google Inc. | Data storage device with metadata command |
US10310923B1 (en) | 2014-08-28 | 2019-06-04 | Seagate Technology Llc | Probabilistic aging command sorting |
JP5975135B1 (en) | 2015-03-31 | 2016-08-23 | ダイキン工業株式会社 | Control system |
US10831403B2 (en) | 2017-05-19 | 2020-11-10 | Seagate Technology Llc | Probabalistic command aging and selection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5959932A (en) * | 1998-08-17 | 1999-09-28 | Emc Corporation | Method and apparatus for detecting errors in the writing of data to a memory |
US5987588A (en) * | 1989-12-15 | 1999-11-16 | Hyundai Electronics America, Inc. | Processor architecture providing for speculative execution of instructions with multiple predictive branching and handling of trap conditions |
US6510474B1 (en) * | 1998-11-16 | 2003-01-21 | Infineon Technologies Ag | Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
US7177982B2 (en) * | 2004-01-16 | 2007-02-13 | International Business Machines Corporation | Method to maintain order between multiple queues with different ordering requirements in a high frequency system |
-
2003
- 2003-03-27 US US10/401,258 patent/US7136938B2/en not_active Expired - Fee Related
-
2006
- 2006-06-19 US US11/471,043 patent/US7392367B2/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987588A (en) * | 1989-12-15 | 1999-11-16 | Hyundai Electronics America, Inc. | Processor architecture providing for speculative execution of instructions with multiple predictive branching and handling of trap conditions |
US5959932A (en) * | 1998-08-17 | 1999-09-28 | Emc Corporation | Method and apparatus for detecting errors in the writing of data to a memory |
US6510474B1 (en) * | 1998-11-16 | 2003-01-21 | Infineon Technologies Ag | Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060129764A1 (en) * | 2004-12-09 | 2006-06-15 | International Business Machines Corporation | Methods and apparatus for storing a command |
US20110320722A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines | Management of multipurpose command queues in a multilevel cache hierarchy |
US8566532B2 (en) * | 2010-06-23 | 2013-10-22 | International Business Machines Corporation | Management of multipurpose command queues in a multilevel cache hierarchy |
CN110134438A (en) * | 2019-05-14 | 2019-08-16 | Oppo广东移动通信有限公司 | Instruction reorder method, apparatus, mobile terminal and storage medium |
US11768686B2 (en) * | 2020-07-27 | 2023-09-26 | Nvidia Corporation | Out of order memory request tracking structure and technique |
Also Published As
Publication number | Publication date |
---|---|
US20060248238A1 (en) | 2006-11-02 |
US7136938B2 (en) | 2006-11-14 |
US7392367B2 (en) | 2008-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7392367B2 (en) | Command ordering among commands in multiple queues using hold-off vector generated from in-use vector and queue dependency scorecard | |
EP0740249B1 (en) | Data processing device with coprocessor | |
KR100734158B1 (en) | Flexible interrupt controller that includes an interrupt force register | |
CN1188778C (en) | Zoning transmit quene and distribution strategy | |
US6603481B1 (en) | Geometry processor capable of executing input/output and high speed geometry calculation processing in parallel | |
EP0682789B1 (en) | System and method for register renaming | |
US6105047A (en) | Method and apparatus for trading performance for precision when processing denormal numbers in a computer system | |
US6189065B1 (en) | Method and apparatus for interrupt load balancing for powerPC processors | |
US6044392A (en) | Method and apparatus for performing rounding in a data processor | |
US7299343B2 (en) | System and method for cooperative execution of multiple branching instructions in a processor | |
US7418575B2 (en) | Long instruction word processing with instruction extensions | |
US6327508B1 (en) | Programmable state machine | |
RU2142157C1 (en) | Method for operations of processing system | |
US7054802B2 (en) | Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading | |
US6742013B2 (en) | Apparatus and method for uniformly performing comparison operations on long word operands | |
KR100864890B1 (en) | Locking source registers in a data processing apparatus | |
US6209073B1 (en) | System and method for interlocking barrier operations in load and store queues | |
US6088784A (en) | Processor with multiple execution units and local and global register bypasses | |
US6442675B1 (en) | Compressed string and multiple generation engine | |
WO2002061582A2 (en) | Event handling | |
US5274792A (en) | Information processing apparatus with parallel instruction decoding | |
US6734984B2 (en) | System having an arithmetic-logic circuit for determining the maximum or minimum of a plurality of codes | |
US6098168A (en) | System for completing instruction out-of-order which performs target address comparisons prior to dispatch | |
US5287522A (en) | External procedure invocation apparatus utilizing internal branch vector interrupts and vector address generation, in a RISC chip | |
CA2317080C (en) | Facilitation of register updates in an out-of-order processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CLARK, SCOTT D.;WILLENBORG, SCOTT M.;REEL/FRAME:013916/0182;SIGNING DATES FROM 20030319 TO 20030325 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20101114 |