WO2021119409A1 - Content addressable memory with sub-field minimum and maximum clamping - Google Patents
Content addressable memory with sub-field minimum and maximum clamping Download PDFInfo
- Publication number
- WO2021119409A1 WO2021119409A1 PCT/US2020/064478 US2020064478W WO2021119409A1 WO 2021119409 A1 WO2021119409 A1 WO 2021119409A1 US 2020064478 W US2020064478 W US 2020064478W WO 2021119409 A1 WO2021119409 A1 WO 2021119409A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- subfield
- data
- cam
- value
- entry
- Prior art date
Links
- 230000006870 function Effects 0.000 claims abstract description 102
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000000034 method Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 27
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Definitions
- Processing systems receive data and commands from applications and input/output (I/O) devices at registers and other storage modules.
- I/O input/output
- firmware firmware or flash microcode
- data and commands generated by an application could conflict with new functionality, thereby negatively impacting user experience.
- bug fix workarounds may need to set or clear register bits.
- Data can be manipulated at runtime using firmware or flash microcode to ensure backward compatibility.
- firmware applies an address test to determine if a potential modification of the data is needed and perform the modification if necessary. This requires multiple clock cycles, and the number of clock cycles needed increases with the number of addresses that must be checked.
- analyzing data while a program is running to reset or clear register bits in firmware or flash microcode is time intensive, and exacts a performance penalty that can potentially negatively impact the user experience.
- FIG. 1 is a block diagram of a processing system including a content addressable memory (CAM) to modify register writes to one or more pipeline registers in accordance with some embodiments.
- CAM content addressable memory
- FIG. 2 is a block diagram of the CAM of FIG. 1 including a data mask defining subfields of a register write and a subfield function and subfield data corresponding to each subfield in accordance with some embodiments.
- FIG. 3 illustrates a replace subfield function of the CAM of FIG. 2 replacing specified bits of a register write in accordance with some embodiments.
- FIG. 4 illustrates a minimum clamp subfield function of the CAM of FIG. 2 clamping a subfield value of a register write to a minimum value in accordance with some embodiments.
- FIG. 5 illustrate a maximum clamp subfield function of the CAM of FIG. 2 clamping a subfield value of a register write to a maximum value in accordance with some embodiments.
- FIG. 6 is a flow diagram illustrating a method for modifying register writes on a per-pipe basis using the CAM of FIGs. 1-5 in accordance with some embodiments.
- FIGs. 1-6 illustrate example hardware systems and techniques for selectively modifying register writes received from existing software to match next generation hardware.
- a processing system including multiple processing pipelines has a CAM in an I/O path to selectively modify register writes on a per-pipeline basis.
- the CAM compares an address of a register write to an address field of each entry of the CAM.
- the CAM selectively modifies the register write as defined by a function for the matching entry of the CAM.
- a function for the matching entry is a replace function, in response to which the CAM replaces the value of the data of the register write with data stored at the CAM for the matching entry (i.e.
- the function for the matching entry is a minimum clamp, in which the data of the register write is compared to a minimum value stored at the CAM for the matching entry and is replaced with the minimum value of the value of the register write data is less than the minimum value.
- the function for the matching entry is a maximum clamp, in which the data of the register write is compared to a maximum value stored at the CAM for the matching entry and is replaced with the maximum value if the value of the register write data exceeds the maximum value.
- the CAM selectively modifies or discards register writes on a per-pipeline basis, so that for a valid CAM entry, the CAM modifies or discards the register write for a first pipeline but leaves the register write unmodified for a second (or third, etc.) pipeline.
- each pipeline has a different CAM entry such that the register writes for the pipelines are modified independently.
- the CAM further includes, in some embodiments, a data mask for each entry, this data mask defining subfields of the register write.
- the register write data includes 32 bits and the data mask defines bit positions belonging to each subfield.
- Each subfield defined by each entry’s data mask can include a single bit or multiple bits.
- the CAM further includes a subfield function for each subfield and subfield data or a subfield value for each subfield.
- the CAM replaces the bit values of the data for the bit positions defined by the data mask with the subfield data for the matching CAM entry (e.g., flips each 0 to 1 and flips each 1 to 0).
- the subfield function for the first subfield is a minimum clamp
- the CAM compares the value of the bit positions of the subfield of the data defined by the data mask with the subfield value for the matching CAM entry and clamps the value of the data subfield to the subfield value for the matching CAM entry if the value of the data subfield is less than the subfield value for the matching CAM entry.
- the CAM compares the value of the bit positions of the subfield of the data defined by the data mask with the subfield value for the matching CAM entry and clamps the value of the data subfield to the subfield value for the matching CAM entry if the value of the data subfield is greater than the subfield value for the matching CAM entry.
- each CAM entry includes an indication that a second (or third) subfield function is to be performed on a second (or third) subfield of the data write. For example, if a continue bit is set for a first slot of a CAM entry having multiple subfields, and an address of a register write matches the address field of the CAM entry, a first subfield function is performed on a first subfield of the data of the register write, and the next (second) slot of the CAM entry is used to perform a second subfield function on the first subfield or a second subfield of the data.
- a third subfield function is performed on one of the first subfield, the second subfield, or the third subfield of the data.
- the first subfield function is a replace function for a first subfield
- the second subfield function is a minimum clamp for a second subfield
- the third subfield function is a maximum clamp for a third subfield
- the CAM replaces bits of the first subfield of the data, clamps to a minimum a value of the second subfield, and clamps to a maximum a value of the third subfield, all using a single CAM lookup and compare. If the minimum clamp and maximum clamp are applied to the same subfield, the CAM limits the value of the corresponding subfield.
- the continue bit(s) chain together operations such that multiple operations are performed on different ranges of bits of a single register write.
- FIG. 1 is a block diagram of processing system 100 including a content addressable memory (CAM) 110 configured to modify register writes from an external storage medium 106 to one or more pipeline registers in accordance with some embodiments.
- the processing system includes an interface such as an input/output (I/O) engine 104, and two pipelines, pipeline 120 and pipeline 130.
- Pipeline 120 includes a register 122 and a processing unit 124.
- pipeline 130 includes a register 124 and a processing unit 134.
- the processing system 100 executes one or more sets of instructions (e.g., computer programs) to perform specified tasks for an electronic device. Examples of such tasks include controlling aspects of the operation of the electronic device, displaying information to a user to provide a specified user experience, communicating with other electronic devices, and the like.
- the processing system 100 is employed in one of a number of types of electronic devices, such as a desktop computer, laptop computer, server, game console, tablet, smartphone, and the like.
- the processing system 100 includes a plurality of processor cores (only one of which, processor core 140, is shown at FIG. 1 for ease of illustration).
- each processor core includes one or more instruction pipelines (e.g., pipeline 120 and pipeline 130) to fetch instructions, decode the instructions into corresponding operations, dispatch the operations to one or more execution units (e.g., processing units 124, 134), execute the operations, and retire the operations.
- instruction pipelines e.g., pipeline 120 and pipeline 130
- execution units e.g., processing units 124, 134
- FIG. 1 illustrates two pipelines 120, 130, other embodiments include one pipeline or more than two pipelines.
- the processor cores In the course of executing instructions, the processor cores generate graphics operations and other operations associated with the visual display of information. Based on these operations, the processor cores provide commands and data to a graphics processing unit (GPU) (not shown).
- GPU graphics processing unit
- the I/O engine 104 handles input or output operations associated with a display (not shown), as well as other elements of the processing system 100 such as keyboards, mice, printers, external disks, and the like.
- the I/O engine 104 reads information stored on an external storage medium 106, such as a compact disk (CD), a digital video disk (DVD), and the like.
- the external storage medium 106 stores information representative of program code used to implement an application such as a video game.
- the program code on the external storage medium 106 is written to register 122 of pipeline 120 to form a copy of instructions or the program code that are to be executed by the processing unit 124.
- the program code on the external storage medium 106 is written to register 132 of pipeline 130 to form a copy of instructions or the program code that are to be executed by the processing unit 134.
- the processing system includes the CAM 110.
- the CAM 110 is configured to selectively modify data of register writes on a per-pipeline basis, such that for a first pipeline a register write is modified, and for a second pipeline the register write is unmodified, or is modified differently from the modification for the first pipeline.
- the CAM 110 is configured to apply a data mask to a register write to an address matching an address of an entry of the CAM 110.
- the data mask defines subfields of the register write and specifies a subfield function, or opcode, to be performed on the bits of the register write (i.e., subfield) corresponding to the data mask.
- the CAM 110 is configured to store an indication (e.g., a continue bit) that a second subfield function (i.e., an additional operation) is to be performed on the register write, either at the same subfield or a different subfield of the register write.
- Each entry of the CAM 110 includes an address field, a data mask, a function select field identifying an opcode, data value subfields, pipeline enable bits for each pipeline, and a continue bit if more than one function is to be performed on a single register write.
- each entry of the CAM 110 includes a function select field for each subfield.
- each entry of the CAM 110 further includes an indication to discard register write data. If the indication, such as a skip write, is set, the CAM 110 modifies the address output to a reserved register address for register writes that are to be discarded by the hardware.
- the function select field includes replace, minimum clamp, and maximum clamp functions.
- the CAM 110 replaces bits of the register write data 102 that have a corresponding data mask bit set with the corresponding data value subfield of the matching CAM 110 entry.
- the data mask is OxffffOOOO
- the data value subfield of the matching CAM 110 entry is Oxccddeeff
- the register write data 102 is 0x12345678, the modified value will be 0ccdd5678.
- the CAM 110 compares the value of the subfield of the register write data 102 to the corresponding data value subfield of the matching CAM 110 entry. If the value of the subfield of the register write data 102 is less than the corresponding data value subfield of the matching CAM 110 entry, the CAM 110 clamps the value of the subfield of the register write data 102 to the data value subfield of the matching entry. In response to the maximum clamp function being specified for a subfield of bits defined by the data mask, the CAM 110 compares the value of the subfield of the register write data 102 to the corresponding data value subfield of the matching CAM 110 entry.
- the CAM 110 clamps the value of the subfield of the register write data 102 to the data value subfield of the matching entry.
- the CAM 110 selectively modifies subfields of the register write data 102.
- the I/O engine 104 receives register write data 102 from the external storage medium 106.
- the I/O engine 104 provides the register write data 102 to the CAM 110.
- the CAM 110 performs a lookup to compare the address of the register write data 102 to the address fields of each entry of the CAM 110. In some embodiments, when searching the CAM 110 for a match, the first match found starting with entry 0 is used, and a match at a higher entry is ignored. If a match is found and at least one pipeline is enabled, for example, by setting a pipeline enable bit, the CAM 110 modifies the register write data 102 as defined by the data mask and subfield function and data fields for the matched CAM 110 entry.
- the CAM 110 refrains from modifying the data 102.
- the CAM 110 includes a match for the address of data 102 and the pipeline enable bit for pipeline 120 is set for the matching entry.
- the CAM 110 therefore modifies the data 102 for pipeline 120 and provides modified data 112 to register 122.
- the pipeline enable bit for pipeline 130 is not set, so the CAM 110 does not modify the data 102 for pipeline 130 and provides the data 102 to register 132.
- FIG. 2 is a block diagram of the CAM 110 of FIG. 1 including a data mask 206 defining subfields of register write data and subfield data corresponding to each subfield in accordance with some embodiments.
- each entry of the CAM 110 includes an address field 202, a skip write field 204, a data mask 206, a function select 208, a pipeline enable 210, a pipeline enable 212, and a continue bit 216.
- the skip write field 204 modifies the register address output from the CAM 110 for the register write data to an address that is discarded by the hardware.
- the data mask 206 defines three subfields of the register write data matching the address field 202 of the entry of the CAM 110: subfield-1 220, subfield- 2 230, and subfield-3 240.
- Each subfield includes one or more bits and are independently sized.
- subfield-1 220 includes fewer bits than subfield-2 230
- subfield-3240 includes more bits than subfield-1 220 but fewer bits than subfield-2 230.
- bit positions that are set define the last bit of a subfield. For example, a new subfield begins when the mask bit for the next higher number bit is set. For 32-bit data, bit 31 starts a subfield and bit 0 ends a subfield.
- the matching entry of the CAM 110 includes a function select 208, which identifies a function, or opcode, to be performed on the bits of the register write data (not shown) corresponding to the bits identified by the data mask 206.
- the function select 208 is one of a replace function, a minimum clamp function, or a maximum clamp function.
- the subfield-1 data value 222 is used to either replace the values of the bits of the register write data corresponding to subfield-1 220 (in the case that the function select 208 is a replace function) or to clamp the values of the bits of the register write data corresponding to subfield-1 220 (in the case that the function select 208 is a minimum or maximum clamp function and the value of the “subfield-1 ” register write data either is less than or exceeds the value of the subfield-1 data value 222).
- the continue bit 216 being set indicates that the CAM 110 is to perform a second function on the register write data matching the address field 202. Accordingly, a second CAM slot, subfield-2 230 is used to perform the second function.
- the function select 208 identifies a function, or opcode, to be performed on the bits of the register write data corresponding to the bits identified by the data mask 206 as subfield-2 230.
- the subfield-2 data value 232 is used to either replace the values of the bits of the register write data corresponding to subfield-2 230 (in the case that the function select 208 is a replace function) or to clamp the values of the bits of the register write data corresponding to subfield-2 230 (in the case that the function select 208 is a minimum or maximum clamp function and the value of the “subfield-2” register write data either is less than the minimum value or exceeds the maximum value of the subfield-2 data 232).
- the continue bit 216 being set indicates that the CAM 110 is to perform a third function on the register write data matching the address field 202. Accordingly, a third CAM slot, subfield-3 240 is used to perform the third function.
- the function select 208 identifies a function, or opcode, to be performed on the bits of the register write data corresponding to the bits identified by the data mask 206 as subfield-3 240.
- the subfield-3 data value 242 is used to either replace the values of the bits of the register write data corresponding to subfield-3240 (in the case that the function select 208 is a replace function) or to clamp the values of the bits of the register write data corresponding to subfield-3 240 (in the case that the function select 208 is a minimum or maximum clamp function and the value of the “subfield-3” register write data either is less than the minimum value or exceeds the maximum value of the subfield-3 data value 242).
- each of subfield-1 220, subfield-2 230, and subfield-3 are used to either replace the values of the bits of the register write data corresponding to subfield-3240 (in the case that the function select 208 is a replace function) or to clamp the values of the bits of the register write data corresponding to subfield-3 240 (in the case that
- the subfield function select for each subfield is independent of the subfield function select for the other subfields.
- the subfield select for subfield-1 220 is a replace function
- the subfield select for subfield-2 230 is a minimum clamp function
- the subfield select for subfield-3240 is a maximum clamp function.
- FIG. 3 illustrates a replace subfield function of the CAM 110 of FIG. 1 replacing specified bits of register write data 300 in accordance with some embodiments.
- the data mask 310 defines a subfield ranging from bit 31 (301) to bit N (308) of the register write data 300 in which bits that are to be modified are indicated with “f” and bits that are to remain unmodified are indicated with “0”.
- register write data 300 includes bits having the following values: bit 31 (301 ) is 0, bit 30 (302) is 0, bit 29 (303) is 1 , bit 28 (304) is 0, bit 27
- the function select associated with the subfield 310 is a replace function 322, and the data values that are to replace the values of the bits 301-308 that the data mask 310 indicates are to be modified are provided as replace data 324.
- the CAM 110 replaces the register write data 300 with the replace data 324 to generate modified data 330.
- the replace data 324 has bit values that are flipped from those of register write data 300.
- bit 31 (301 ) is flipped to 1
- bit 30 (302) is flipped to 1
- bit 29 (303) is left unmodified as 1
- bit 28 (304) is flipped to 1
- bit 27 (305) is flipped to 0, bit 26
- bit 25 (306) is left unmodified as 1
- bit 25 (307) is flipped to 1
- bit N (308) is left unmodified as 1.
- FIG. 4 illustrates a minimum clamp subfield function of the CAM 110 of FIG. 1 clamping a subfield value 402 of register write data 400 to a minimum value 414 in accordance with some embodiments.
- the subfield 410 defined by the data mask for the entry of the CAM 110 that matches the register write data 400 has a function select that specifies a minimum clamp function 412 and a minimum value 414.
- the CAM 110 compares subfield value 402 of the register write data 400 to the minimum value 414. If the subfield value 402 is greater than or equal to the minimum value 414, the CAM 110 does not modify the subfield value 402 when it provides the register write data 400 to one or both of the registers 122, 132, depending on which pipelines are enabled. However, if the subfield value 402 is less than the minimum value 414, the CAM 110 clamps (sets) the subfield value 402 to the minimum value 414 and provides modified data 420 to one or both of the registers 122, 132.
- FIG. 5 illustrate a maximum clamp subfield function of the CAM 110 of FIG. 1 clamping a subfield value 502 of register write data 500 to a maximum value 514 in accordance with some embodiments.
- the subfield 510 defined by the data mask for the entry of the CAM 110 that matches the register write data 500 has a function select that specifies a minimum clamp function 512 and a maximum value 514.
- the CAM 110 compares the subfield value 502 of the register write data 500 to the maximum value 514. If the subfield value 502 is less than or equal to the maximum value 514, the CAM 110 does not modify the subfield value 502 when it provides the register write data 500 to one or both of the registers 122, 132, depending on which pipelines are enabled. However, if the subfield value 502 is greater than the maximum value 514, the CAM 110 clamps (sets) the subfield value 502 to the maximum value 514 and provides modified data 520 to one or both of the registers 122, 132.
- FIG. 6 is a flow diagram illustrating a method 600 for modifying register write data on a per-pipe basis using the CAM 110 of FIG. 1 in accordance with some embodiments.
- the CAM 110 receives register write data 102.
- the CAM 110 searches its entries for an entry having an address field that matches the address of the register write data 102.
- the CAM 110 determines whether it includes a matching entry. If, at block 606, the CAM 110 does not include a matching entry, the method flow continues to block 608.
- the CAM 110 refrains from modifying the register write data 102 and provides the unmodified register write data 102 to the registers 122, 132, and the method flow continues back to block 602 to receive the next register write data.
- the method flow continues to block 610.
- the CAM 110 determines whether the matching entry has a pipeline enable set for any pipeline. If a pipeline enable is not set for any pipeline, the method flow continues back to block 608, at which the CAM 110 refrains from modifying the register write data 102, and the method flow continues back to block 602 to receive the next register write data. If, at block 610, a pipeline enable is set for at least one pipeline, the method flow continues to block 612.
- the CAM 110 applies a data mask associated with the matching entry of the CAM 110 to define one or more subfields of the register write data 102.
- the CAM 110 performs the function specified by the function select on the bits of the register write data 102 corresponding to each subfield defined by the data mask.
- the CAM 110 determines whether a continue bit is set for the matching entry. If, at block 616, the continue bit is not set, the method flow continues to block 618, at which the CAM 110 provides the modified data 112 to one or both of the registers 122, 132, depending on which pipeline enables were set. The method flow then continues back to block 602 to receive the next register write data.
- the method flow continues to block 620.
- the CAM 110 gets the next CAM 110 entry, after which the method flow continues back to block 612 to apply the data mask for the next CAM 110 entry.
- the CAM 110 provides the modified data 112 to one or both of the registers 122, 132.
- the CAM 110 performs a first set of one or more functions on subfields of register write data 102 for pipeline 120 and performs a second set of one or more functions on subfield of register write data 102 for pipeline 130.
- a computer readable storage medium includes any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system.
- Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc), magnetic media (e.g., floppy disc, magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media.
- optical media e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc
- magnetic media e.g., floppy disc, magnetic tape, or magnetic hard drive
- volatile memory e.g., random access memory (RAM) or cache
- non-volatile memory e.g., read-only memory (ROM) or Flash memory
- the computer readable storage medium can be embedded in the computing system (e.g., system RAM or ROM), fixedly attached to the computing system (e.g., a magnetic hard drive), removably attached to the computing system (e.g., an optical disc or Universal Serial Bus (USB)-based Flash memory), or coupled to the computer system via a wired or wireless network (e.g., network accessible storage (NAS)).
- system RAM or ROM system RAM or ROM
- USB Universal Serial Bus
- NAS network accessible storage
- certain aspects of the techniques described above are implemented by one or more processors of a processing system executing software.
- the software includes one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer readable storage medium.
- the software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above.
- the non-transitory computer readable storage medium can include, for example, a magnetic or optical disk storage device, solid state storage devices such as Flash memory, a cache, random access memory (RAM) or other non-volatile memory device or devices, and the like.
- the executable instructions stored on the non-transitory computer readable storage medium can be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
- a method includes receiving, at a processing system, first data associated with a first address to be written to a first register of the processing system.
- the method further includes comparing, at a content addressable memory (CAM) of the processing system, the first address to an address field of each entry of the CAM and, in response to determining that the first address matches the address field of an entry of the CAM, selectively modifying a value of the first data based on a function select associated with the entry of the CAM.
- the method also includes writing the modified value to the first register.
- the method further includes applying a data mask associated with the entry of the CAM, the data mask defining one or more subfields of the first register, wherein each subfield includes subfield data having one or more bits.
- the method includes modifying the value of the first data by replacing values of bits of the first data corresponding to a first subfield of the data mask with the values of bits stored at the entry of the CAM in response to the function select specifying a replace function. In some embodiments, the method includes selectively modifying the value of the first data by setting the value of a first subfield of the first data corresponding to a first subfield of the entry of the CAM to a first value stored at the first subfield of the entry of the CAM in response to determining that the function select specifies a minimum clamp and determining that the value of the first subfield of the first data is less than the first value stored at the first subfield of the entry of the CAM.
- the CAM performs a first operation on a first subfield of the first data and performs a second operation on a second subfield of the first data in response to an indication that an additional operation is to be performed.
- the CAM selectively modifies the value of the first data by modifying an address to which the first data is output to a register address for register writes that are to be discarded by the processing system.
- a method includes receiving, at a CAM of a processing system, first data to be written to a register of the processing system and, in response to the first data matching an entry of the CAM, applying a data mask stored at the entry, the data mask defining one or more subfields of the first data, wherein each subfield includes subfield data having one or more bits.
- the method further includes performing a first operation on a first subfield of the first data based on a function select stored at the matching entry of the CAM.
- the method also includes performing a second operation on a second subfield of the first data in response to an indication that an additional operation is to be performed.
- the method further includes selectively modifying the value of the first data for a first pipeline, based on an indication that the first pipeline is enabled, and selectively modifying the value of the first data for a second pipeline, based on an indication that the second pipeline is enabled.
- a processing system includes a register, an interface configured to receive first data associated with a first address to be written to the register, and a CAM configured to compare the first address to an address field of each entry of the CAM. In response to determining that the first address matches the address field of an entry of the CAM, the CAM selectively modifies a value of the first data based on a function associated with the entry of the CAM and writes the modified value to the register.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Generation (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022534361A JP7568723B2 (en) | 2019-12-11 | 2020-12-11 | Associative memories with subfield minimum and maximum clamping. |
EP20898784.2A EP4073800A4 (en) | 2019-12-11 | 2020-12-11 | Content addressable memory with sub-field minimum and maximum clamping |
KR1020227021945A KR102709922B1 (en) | 2019-12-11 | 2020-12-11 | Content addressable memory with subfield minimum and maximum clamping |
CN202080091694.8A CN114902336B (en) | 2019-12-11 | 2020-12-11 | Content addressable memory with sub-field minimum and maximum clamping |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/710,563 | 2019-12-11 | ||
US16/710,563 US11537319B2 (en) | 2019-12-11 | 2019-12-11 | Content addressable memory with sub-field minimum and maximum clamping |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021119409A1 true WO2021119409A1 (en) | 2021-06-17 |
Family
ID=76318008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2020/064478 WO2021119409A1 (en) | 2019-12-11 | 2020-12-11 | Content addressable memory with sub-field minimum and maximum clamping |
Country Status (6)
Country | Link |
---|---|
US (1) | US11537319B2 (en) |
EP (1) | EP4073800A4 (en) |
JP (1) | JP7568723B2 (en) |
KR (1) | KR102709922B1 (en) |
CN (1) | CN114902336B (en) |
WO (1) | WO2021119409A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11579802B2 (en) * | 2019-10-04 | 2023-02-14 | Fungible, Inc. | Pipeline using match-action blocks |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003038625A1 (en) * | 2001-10-31 | 2003-05-08 | Netlogic Microsystems, Inc. | Bit level programming interface in a content addressable memory |
US20040139071A1 (en) | 2000-03-09 | 2004-07-15 | Broadcom Corporation | Method and apparatus for high speed table search |
US6876559B1 (en) * | 2002-02-01 | 2005-04-05 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
JP2009026350A (en) | 2007-07-17 | 2009-02-05 | Renesas Technology Corp | Semiconductor device |
US7634635B1 (en) | 1999-06-14 | 2009-12-15 | Brian Holscher | Systems and methods for reordering processor instructions |
US7782645B1 (en) * | 2008-02-04 | 2010-08-24 | Netlogic Microsystems, Inc. | Selective encoding of data values for memory cell blocks |
US20180019006A1 (en) * | 2016-07-15 | 2018-01-18 | Advanced Micro Devices, Inc. | Memory controller with flexible address decoding |
US10340007B2 (en) * | 2015-06-05 | 2019-07-02 | King Abdullah University Of Science And Technology | Resistive content addressable memory based in-memory computation architecture |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5167029A (en) * | 1989-12-13 | 1992-11-24 | International Business Machines Corporation | Data processing system and associated process using memory cards having data modify functions utilizing a data mask and an internal register |
US5438535A (en) * | 1994-03-29 | 1995-08-01 | Panasonic Technologies, Inc. | Content addressable memory system |
US5995967A (en) * | 1996-10-18 | 1999-11-30 | Hewlett-Packard Company | Forming linked lists using content addressable memory |
TW530262B (en) * | 1999-02-08 | 2003-05-01 | Matsushita Electric Ind Co Ltd | Control method for procedure execution |
US7418543B2 (en) * | 2004-12-21 | 2008-08-26 | Intel Corporation | Processor having content addressable memory with command ordering |
JP4799027B2 (en) * | 2005-03-31 | 2011-10-19 | 富士通株式会社 | Memory control circuit and address error check method in memory control circuit |
KR101174231B1 (en) * | 2010-11-23 | 2012-08-14 | 주식회사 케피코 | Micro controller of embedded system and method for reprograming software |
US8990657B2 (en) * | 2011-06-14 | 2015-03-24 | Freescale Semiconductor, Inc. | Selective masking for error correction |
JP5594435B2 (en) | 2011-08-03 | 2014-09-24 | 株式会社村田製作所 | Ultrasonic transducer |
US9055114B1 (en) * | 2011-12-22 | 2015-06-09 | Juniper Networks, Inc. | Packet parsing and control packet classification |
JP2013191255A (en) * | 2012-03-14 | 2013-09-26 | Renesas Electronics Corp | Contents reference memory system |
-
2019
- 2019-12-11 US US16/710,563 patent/US11537319B2/en active Active
-
2020
- 2020-12-11 CN CN202080091694.8A patent/CN114902336B/en active Active
- 2020-12-11 KR KR1020227021945A patent/KR102709922B1/en active IP Right Grant
- 2020-12-11 EP EP20898784.2A patent/EP4073800A4/en active Pending
- 2020-12-11 JP JP2022534361A patent/JP7568723B2/en active Active
- 2020-12-11 WO PCT/US2020/064478 patent/WO2021119409A1/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7634635B1 (en) | 1999-06-14 | 2009-12-15 | Brian Holscher | Systems and methods for reordering processor instructions |
US20040139071A1 (en) | 2000-03-09 | 2004-07-15 | Broadcom Corporation | Method and apparatus for high speed table search |
WO2003038625A1 (en) * | 2001-10-31 | 2003-05-08 | Netlogic Microsystems, Inc. | Bit level programming interface in a content addressable memory |
US6876559B1 (en) * | 2002-02-01 | 2005-04-05 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
JP2009026350A (en) | 2007-07-17 | 2009-02-05 | Renesas Technology Corp | Semiconductor device |
US7782645B1 (en) * | 2008-02-04 | 2010-08-24 | Netlogic Microsystems, Inc. | Selective encoding of data values for memory cell blocks |
US10340007B2 (en) * | 2015-06-05 | 2019-07-02 | King Abdullah University Of Science And Technology | Resistive content addressable memory based in-memory computation architecture |
US20180019006A1 (en) * | 2016-07-15 | 2018-01-18 | Advanced Micro Devices, Inc. | Memory controller with flexible address decoding |
Non-Patent Citations (1)
Title |
---|
See also references of EP4073800A4 |
Also Published As
Publication number | Publication date |
---|---|
KR20220113724A (en) | 2022-08-16 |
JP2023505788A (en) | 2023-02-13 |
KR102709922B1 (en) | 2024-09-26 |
JP7568723B2 (en) | 2024-10-16 |
EP4073800A4 (en) | 2023-12-06 |
CN114902336A (en) | 2022-08-12 |
US20210181973A1 (en) | 2021-06-17 |
US11537319B2 (en) | 2022-12-27 |
EP4073800A1 (en) | 2022-10-19 |
CN114902336B (en) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9804851B2 (en) | Operand size control | |
JP6807383B2 (en) | Transfer prefix instruction | |
US5721927A (en) | Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions | |
JP4814937B2 (en) | System, method and program for supporting denormal input handling mechanism | |
KR101081090B1 (en) | Register-based instruction optimization for facilitating efficient emulation of an instruction stream | |
US20140223143A1 (en) | Load latency speculation in an out-of-order computer processor | |
US7979761B2 (en) | Memory test device and memory test method | |
BR112015022683B1 (en) | PROCESSING SYSTEM AND METHOD OF CARRYING OUT A DATA HANDLING OPERATION | |
US10409602B2 (en) | Vector operand bitsize control | |
US11537319B2 (en) | Content addressable memory with sub-field minimum and maximum clamping | |
JP7269318B2 (en) | Branch target buffer with early return prediction | |
US20210165654A1 (en) | Eliminating execution of instructions that produce a constant result | |
WO2018158846A1 (en) | Simulation device, simulation method, and simulation program | |
JP2014013570A (en) | Source level debugging apparatus and method for reconfigurable processor | |
US11354126B2 (en) | Data processing | |
JP4662087B2 (en) | Method, system and computer program for efficiently emulating state code settings in a computer architecture | |
KR20220064975A (en) | Bit-width reconstruction using shadow-latch configured register files | |
TWI737628B (en) | Modifying behaviour of a data processing unit | |
US9389865B1 (en) | Accelerated execution of target of execute instruction | |
KR20170065845A (en) | Processor and controlling method thereof | |
JPH0566940A (en) | Cpu executing instruction analysis system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20898784 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022534361 Country of ref document: JP Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 20227021945 Country of ref document: KR Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2020898784 Country of ref document: EP Effective date: 20220711 |