US20040120207A1 - Memory having multiple write ports and method of operation - Google Patents

Memory having multiple write ports and method of operation Download PDF

Info

Publication number
US20040120207A1
US20040120207A1 US10/326,091 US32609102A US2004120207A1 US 20040120207 A1 US20040120207 A1 US 20040120207A1 US 32609102 A US32609102 A US 32609102A US 2004120207 A1 US2004120207 A1 US 2004120207A1
Authority
US
United States
Prior art keywords
memory
data
unit
write
control
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
Application number
US10/326,091
Other versions
US6813215B2 (en
Inventor
Richard Carter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to US10/326,091 priority Critical patent/US6813215B2/en
Assigned to HEWLETT-PACKARD COMPANY reassignment HEWLETT-PACKARD COMPANY ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CARTER, RICHARD J.
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT-PACKARD COMPANY
Publication of US20040120207A1 publication Critical patent/US20040120207A1/en
Application granted granted Critical
Publication of US6813215B2 publication Critical patent/US6813215B2/en
Adjusted expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM

Definitions

  • the present invention relates generally to memory devices, and more particularly, to providing a more capable memory from less capable memory components.
  • design libraries allow designers to create a circuit of connected components selected from a design library.
  • the maximum number of write ports on any memory device to be included in the circuit is limited by the memory components available in the design library.
  • the design library includes the primitive hardware structures of the FPGA (e.g. configurable logic blocks or block RAMs) and any higher-level design elements provided by a “core generator” or other such FPGA design tools.
  • the design library includes a fixed number of standard-cell or other pre-verified component designs. For these and other technologies, any design that involves a memory with more than the maximum number of write ports supported by the design library is unrealizable in that technology.
  • Exemplary embodiments of the present invention are directed to providing a memory having N write ports, where N is greater than one.
  • the memory includes a first data memory unit having a plurality of storage locations addressable by a range of addresses and having less than N write ports; the memory also includes a second data memory unit having a plurality of storage locations addressable by the range of addresses, the second data memory having less than N write ports.
  • the memory further includes a control unit configured to select among the first and second memory units in response to a read command having an associated read address which falls within the address range.
  • the control unit includes multiple control memory units each with less than N write ports.
  • Exemplary embodiments of the present invention are also directed to a method for operating a memory including the steps of providing a memory having N write ports, where N is greater than one.
  • the memory is constructed from multiple data memory units each having less than N write ports and a range of addressable storage locations, and a control unit including multiple control memory units, each with less than N write ports.
  • the method comprises supplying information to an addressable location of the memory which falls within the range of addressable locations, and updating the at least one control memory unit in the control unit so that the data in the control memory unit for the addressable storage location can be used to determine the data memory unit that contains the most recently written data for the addressable location.
  • Exemplary embodiments of the present invention are further directed to a system including a memory.
  • the memory has N write ports, wherein N is greater than 1.
  • the memory includes a first data memory unit having a plurality of storage locations addressable by a range of addresses.
  • the first data memory unit has less than N write ports.
  • the memory includes a second data memory unit having a plurality of storage locations addressable by the range of addresses.
  • the second data memory unit has less than N write ports.
  • the memory includes a control unit configured to select among the first data memory unit and the second data memory unit in response to a read command having an associated read address which falls within the address range.
  • the control unit includes multiple control memory units each with less than N write ports.
  • the system includes logic configured to access the memory.
  • FIG. 1 is a diagram of an exemplary embodiment of the present invention that illustrates a memory constructed of multiple data memory units and a control unit with control memory units having read and write ports.
  • FIG. 2 is a diagram that illustrates an exemplary embodiment of a control unit.
  • FIG. 3 is a diagram that illustrates an exemplary embodiment of a control unit.
  • FIG. 4 is a diagram that illustrates memory write port expansion using a control unit of an exemplary embodiment.
  • FIGS. 5 and 6 are diagrams that illustrate an exemplary control unit constructed of control subunits.
  • FIG. 7 is a flow chart that illustrates a method of an exemplary embodiment of the present invention.
  • FIG. 8 is a diagram of an exemplary embodiment of a system including a memory constructed of multiple data memory units and a control unit.
  • a memory such as memory 100 of FIG. 1, has N write ports, where N is greater than one.
  • the memory comprises a first data memory unit, such as data memory unit 102 of FIG. 1, having a plurality of storage locations addressable by a range of addresses.
  • the first memory unit has less than N write ports.
  • the memory includes a second data memory unit, such as data memory unit 104 of FIG. 1, having a plurality of storage locations addressable by the range of addresses.
  • the second data memory unit has less than N write ports.
  • the data memory units 102 and 104 are implemented with any type of memory device, alone or in combination.
  • Examples of memory devices include static memory, dynamic memory, memories operating at a multiple of the system clock frequency, and the like.
  • the memory devices used to create the data memory units can be designed using a design library such as a Field Programmable Gate Array (FPGA) or Application Specific Integrated Circuit (ASIC) design library.
  • the memory 100 can have a greater number of write ports than the maximum number of write ports available for a memory device selectable using the design library.
  • Multiple memory devices can be combined to increase the width or depth of the data memory units. Multiple memory devices can also be combined to form data memory units with an increased number of read ports.
  • the memory comprises a control unit configured to select among the first data memory unit and the second data memory unit in response to a read command having an associated read address that falls within the address range.
  • control unit such as control unit 108
  • control memory units such as control memory unit 110 of FIG. 1, include read and write ports such as read port 114 and write port 116 of the control memory unit 110 of FIG. 1.
  • read and write ports such as read port 114 and write port 116 of the control memory unit 110 of FIG. 1.
  • the use of a control memory unit with read and write ports allows for efficient storage of the information required to select among the first and second data memory units. Additionally, when the memory is constructed using a design library, component memories with read and write ports can be selected from the design library for use in the control unit.
  • a multiplexer such as the multiplexer 120 of FIG. 1, is coupled with the first data memory unit and the second data memory unit.
  • the multiplexer is configured to receive a select memory signal from the control unit and to produce read data for the memory.
  • the select memory signal produced by the control unit allows the selection of the correct read data from the different data memory units.
  • the control unit can be operably connected to the N write ports to receive write addresses and enables provided to the memory.
  • the write address and write enable signals are sent to the control unit to enable the control unit to determine the data memory unit that has been most recently written for an addressable location.
  • control units with control memory units can be used with the system of the present invention.
  • the control units include control units with a read-modify-write design and control units with a write-only design.
  • FIG. 2 illustrates a control unit of the read-modify-write design.
  • control unit such as the control unit 200 of FIG. 2 is configured to use data from a control memory unit to determine insert data for another control memory unit.
  • the control unit can include at least one write insert unit, such as write insert unit 202 of FIG. 2, configured to produce insert data for one of the control memory units, such as control memory unit 204 of FIG. 2, and configured to receive read data from at least one other control memory unit such as control memory unit 206 of FIG. 2.
  • the write insert units receive read data from all but one control memory unit.
  • Read data from the control memory units can be Exclusive-ORed together with a constant to produce the insert data.
  • no actual write insert unit is required for control memory unit 206 since the Exclusive-OR of the read value from control memory unit 204 and the constant ‘0’ is just the read value.
  • the write insert unit 202 for control memory unit 204 is an inverter; the inversion of the inverter's input value being equivalent to Exclusive-ORing the value with the constant ‘1’, the constant ‘1’ indicating the data memory unit ‘1’.
  • control unit includes at least one select unit, such as select unit 208 of FIG. 2. If the memory has more than one read port, the control unit can use multiple select units, a select unit associated with each read port.
  • FIG. 3 illustrates an alternate embodiment of a control memory using a write-only design.
  • the write-only design does not require the reading of data from the control memory units in advance of writing the control memory units.
  • the control memory units used in the write-only embodiment require at least two write ports.
  • the control memory unit of FIG. 3 can be used with a system associated with two data memory units, each having two write ports.
  • data memory unit ‘0’ has write ports ‘0 a ’ and ‘0b’
  • data memory unit ‘1’ has write ports ‘01a’ and ‘1b’.
  • one of the multiple control memory units such as control memory unit 302 of FIG. 3, has first and second write ports, and is configured such that a first value is written through the first write port when a predetermined write port associated with the first data memory unit is used to write, and such that a second value is written through the second write port when another predetermined write port associated with the second data memory unit is used to write.
  • the first and second values can be constants.
  • the constant ‘0’ is written through the first write port of the control memory unit 302 .
  • write port ‘1a’ is used to write, a constant ‘1’ is written through the second write port of the control memory unit 302 .
  • each of the control memory units 302 , 304 , 306 and 308 determine for each address in the address range whether the data was more recently written to the address through a write port associated with data memory unit ‘0’ or a write port associated with data memory unit ‘1’.
  • the control memory unit 302 determines for each address in the address range whether the write port ‘1a’ was used to write the address more recently than write port ‘0a’.
  • the control memory unit 304 determines for each address in the address range whether the write port ‘1a’ was used to write the address more recently than write port ‘0b’.
  • control memory unit 306 determines for each address in the address range whether the write port ‘1b’ was used to write the address more recently than write port ‘0a’, and control memory unit 308 determines for each address in the address range whether the write port ‘1b’ was used to write the address more recently than write port ‘0b’.
  • the outputs of the control memory unit are sent to select logic 310 , which produces a select signal that is used to indicate the data memory unit that has been written to most recently for a given address.
  • FIG. 1 illustrates two data memory units
  • more than two data memory units can be used with memories of the present invention.
  • the control units use additional control memory units.
  • FIG. 4 illustrates the write port memory expansion of memory units having R read ports and W write ports by a “write port expansion factor” of K to form a memory having R read ports and W*K write ports.
  • K data memory units are used.
  • Each of the R read address inputs to the memory 400 is connected in common to a read address input of all K data memory units.
  • the memory 400 includes R multiplexers, each receiving one read data output from each of the K data memory units and a select signal from the control unit and producing a read data output of the memory.
  • the read data inputs to a given multiplexer are all associated with the same read address of the memory.
  • the memory 400 includes a control unit with R select units producing R select signals.
  • control unit includes control subunits such as the control subunits 502 , 504 , 506 , 508 , 510 and 512 of the control unit 500 of FIG. 5.
  • the control subunits can be produced using a design such as that of FIG. 2 or 3 , or an alternate control unit design.
  • Each control subunit is configured to indicate which data memory unit, from a pair of data memory units, was most recently written to for a given address.
  • Logic is used to determine, from all of the subunit output select signals, which data memory unit was most recently written to for a given address.
  • FIG. 5 illustrates the production of a select signal to indicate whether data memory unit ‘0’, data memory unit ‘1’, data memory unit ‘2’ or data memory unit ‘3’ contains the most recent data.
  • FIG. 6 is a diagram of an exemplary embodiment of the present invention which illustrates a memory 600 constructed of four data memory units: data memory unit 602 , data memory unit 604 , data memory unit 606 and data memory unit 608 .
  • the memory 600 also includes a control unit 610 with six control subunits 612 , 614 , 616 , 618 , 620 , and 622 .
  • the control subunits 612 , 614 , 616 , 618 , 620 and 622 determine which data memory unit of the memory units was written to more recently.
  • An example embodiment for each of the control subunits of control unit 610 is shown in FIG. 3.
  • the subunit write port inputs labeled ‘0’, ‘1’, ‘2’, and ‘3’ in FIG. 6 correspond to the write port address and enable input signals labeled ‘0a ’, ‘0b’, ‘1a’ and ‘1b ’ respectively in FIG. 3.
  • the select output is provided to the multiplexer 630 .
  • the select output of control unit 610 is generated based on a read address input by read select circuitry, an example of which is shown in FIG. 5.
  • FIGS. 5 and 6 illustrate the case where the number of data memory units is three or greater and shows how a control unit can be made of control subunits.
  • FIGS. 5 and 6 specifically show an example where there are four data memory units.
  • K the number of data memory units
  • the number of control subunits can be K*(K ⁇ 1)/2.
  • the data memory units can have more than one write port.
  • the data memory units have two write ports.
  • FIG. 7 is a flow chart that illustrates a method of an exemplary embodiment of the present invention.
  • a memory having N write ports, where N is greater than 1 is provided.
  • the memory is constructed from multiple data memory units, each data memory unit having less than N write ports and a range of addressable storage locations.
  • the memory includes a control unit comprising multiple control memory units, each control unit having less than N write ports.
  • step 704 information is supplied to an addressable location of the memory which falls within the range of addressable storage locations.
  • step 706 at least one control memory unit in the control unit is updated so that the data in the control memory units for the addressable storage location can be used to determine the data memory unit that contains the most recent data for the addressable location.
  • the updating of the control memory unit can comprise writing a first value through a first write port of the control memory unit when a predetermined write port associated with a first data memory unit is used to write and writing a second value through a second write port of the control memory unit when another predetermined write port associated with a second data memory unit is used to write.
  • the first and second values are determined independently of data read from a control memory unit.
  • the updating of the control memory unit can include reading at least one value of at least one control memory unit, determining an insert value from the at least one value of at least one control memory unit, and writing the insert value into a control memory unit.
  • the method can include sending a read command and an associated address to the memory; retrieving data values from each of the multiple data memory units; and selecting one of the data values to provide a current value.
  • FIG. 8 is a diagram of an exemplary embodiment of a system 800 including a memory 802 constructed of multiple data memory units 804 and 806 and a control unit 808 .
  • the memory 802 has N write ports, wherein N is greater than 1.
  • the memory 802 includes a first data memory unit 804 having a plurality of storage locations addressable by a range of addresses.
  • the first data memory unit 804 has less than N write ports.
  • the memory 802 includes a second data memory unit 806 having a plurality of storage locations addressable by the range of addresses.
  • the second data memory unit 806 has less than N write ports.
  • the memory 802 includes a control unit 808 configured to select among the first data memory unit 804 and the second data memory unit 806 in response to a read command having an associated read address which falls within the address range.
  • the control unit 808 includes multiple control memory units 810 and 812 each with less than N write ports.
  • the system 800 includes logic 814 configured to access the memory 802 .
  • the logic 814 accesses the memory using read port 816 and write ports 818 and 820 .
  • the logic 814 can include a processor 822 .
  • the processor 822 can be part or all of the logic 814 .
  • the logic 814 and the memory 802 can be on a single chip.
  • This chip can be a reconfigurable logic chip or another type of chip such as an ASIC.
  • the logic 814 and the memory 802 can be on different chips.
  • the logic 814 comprises a processor chip and the memory 802 is part of a separate chip, such as a reconfigurable logic chip or an ASIC.
  • the control unit 808 can be configured to use data read from a control memory unit to determine insert data for another control memory unit.
  • An example of such a control unit is shown in FIG. 2.
  • One of the multiple control memory units of the control unit 808 can have first and second write ports and be configured such that a first value is written through the first write port when a predetermined write port associated with the first data memory unit is used to write and such that a second value is written through the second write port when another predetermined write port associated with the second data memory unit is used to write.
  • the first and second values are determined independently of data read from a control memory unit.
  • FIG. 3 shows such a control unit.

Abstract

Exemplary embodiments of the present invention are directed to providing a memory having N write ports, where N is greater than one. The memory includes a first data memory unit having a plurality of storage locations addressable by a range of addresses and having less than N write ports; the memory also includes a second data memory unit having a plurality of storage locations addressable by the range of addresses, the second data memory having less than N write ports. The memory further includes a control unit configured to select among the first and second memory units in response to a read command having an associated read address which falls within the address range. The control unit includes multiple control memory units each with less than N write ports.

Description

    RELATED APPLICATIONS
  • The patent applications MEMORY HAVING MULTIPLE WRITE PORTS AND MULTIPLE CONTROL MEMORY UNITS, AND METHOD OF OPERATION, Carter, Ser. No. ______ Attorney Docket 100201730) and MEMORY HAVING MULTIPLE WRITE PORTS AND WRITE INSERT UNIT, AND METHOD OF OPERATION, Carter, Ser. No. ______, (Attorney Docket 10008143) are filed concurrently with the present application and incorporated herein by reference.[0001]
  • BACKGROUND
  • 1. Field of the Invention [0002]
  • The present invention relates generally to memory devices, and more particularly, to providing a more capable memory from less capable memory components. [0003]
  • 2. Background Information [0004]
  • It is known to combine multiple memory components, such as static random access memory devices, to produce a larger memory array having enhanced capability. For example, smaller memory components can be combined in an array to form a wider memory (i.e., a memory wherein the addressable locations include a larger number of bits). Each of the smaller memory components that form the array have common address and control signals, but have separate data in and data out signals. Alternately, smaller memory components can be combined into an array to form a larger memory of increased depth (i.e., a memory with a large number of addressable locations). Such arrays involve the use of decoders and read data multiplexers. In combining smaller memory components to form a memory array, focus has been on the desired width or depth of the memory array, and the address signals used. [0005]
  • Some design systems allow designers to create a circuit of connected components selected from a design library. The maximum number of write ports on any memory device to be included in the circuit is limited by the memory components available in the design library. For the case of Field Programmable Gate Arrays (FPGAs), the design library includes the primitive hardware structures of the FPGA (e.g. configurable logic blocks or block RAMs) and any higher-level design elements provided by a “core generator” or other such FPGA design tools. Similarly, for Application Specific Integrated Circuits (ASICs), the design library includes a fixed number of standard-cell or other pre-verified component designs. For these and other technologies, any design that involves a memory with more than the maximum number of write ports supported by the design library is unrealizable in that technology. [0006]
  • SUMMARY OF THE INVENTION
  • Exemplary embodiments of the present invention are directed to providing a memory having N write ports, where N is greater than one. The memory includes a first data memory unit having a plurality of storage locations addressable by a range of addresses and having less than N write ports; the memory also includes a second data memory unit having a plurality of storage locations addressable by the range of addresses, the second data memory having less than N write ports. The memory further includes a control unit configured to select among the first and second memory units in response to a read command having an associated read address which falls within the address range. The control unit includes multiple control memory units each with less than N write ports. [0007]
  • Exemplary embodiments of the present invention are also directed to a method for operating a memory including the steps of providing a memory having N write ports, where N is greater than one. The memory is constructed from multiple data memory units each having less than N write ports and a range of addressable storage locations, and a control unit including multiple control memory units, each with less than N write ports. The method comprises supplying information to an addressable location of the memory which falls within the range of addressable locations, and updating the at least one control memory unit in the control unit so that the data in the control memory unit for the addressable storage location can be used to determine the data memory unit that contains the most recently written data for the addressable location. [0008]
  • Exemplary embodiments of the present invention are further directed to a system including a memory. The memory has N write ports, wherein N is greater than 1. The memory includes a first data memory unit having a plurality of storage locations addressable by a range of addresses. The first data memory unit has less than N write ports. The memory includes a second data memory unit having a plurality of storage locations addressable by the range of addresses. The second data memory unit has less than N write ports. The memory includes a control unit configured to select among the first data memory unit and the second data memory unit in response to a read command having an associated read address which falls within the address range. The control unit includes multiple control memory units each with less than N write ports. The system includes logic configured to access the memory.[0009]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Other objects and advantages of the present invention will become apparent to those skilled in the art upon reading the following detailed description of preferred embodiments, in conjunction with the accompanying drawings wherein: [0010]
  • FIG. 1 is a diagram of an exemplary embodiment of the present invention that illustrates a memory constructed of multiple data memory units and a control unit with control memory units having read and write ports. [0011]
  • FIG. 2 is a diagram that illustrates an exemplary embodiment of a control unit. [0012]
  • FIG. 3 is a diagram that illustrates an exemplary embodiment of a control unit. [0013]
  • FIG. 4 is a diagram that illustrates memory write port expansion using a control unit of an exemplary embodiment. [0014]
  • FIGS. 5 and 6 are diagrams that illustrate an exemplary control unit constructed of control subunits. [0015]
  • FIG. 7 is a flow chart that illustrates a method of an exemplary embodiment of the present invention. [0016]
  • FIG. 8 is a diagram of an exemplary embodiment of a system including a memory constructed of multiple data memory units and a control unit.[0017]
  • DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
  • In an exemplary embodiment of the present invention, a memory, such as [0018] memory 100 of FIG. 1, has N write ports, where N is greater than one. The memory comprises a first data memory unit, such as data memory unit 102 of FIG. 1, having a plurality of storage locations addressable by a range of addresses. The first memory unit has less than N write ports. The memory includes a second data memory unit, such as data memory unit 104 of FIG. 1, having a plurality of storage locations addressable by the range of addresses. The second data memory unit has less than N write ports.
  • In the example of FIG. 1, the [0019] data memory units 102 and 104 are implemented with any type of memory device, alone or in combination. Examples of memory devices include static memory, dynamic memory, memories operating at a multiple of the system clock frequency, and the like. The memory devices used to create the data memory units can be designed using a design library such as a Field Programmable Gate Array (FPGA) or Application Specific Integrated Circuit (ASIC) design library. The memory 100 can have a greater number of write ports than the maximum number of write ports available for a memory device selectable using the design library.
  • Multiple memory devices can be combined to increase the width or depth of the data memory units. Multiple memory devices can also be combined to form data memory units with an increased number of read ports. [0020]
  • In an exemplary embodiment, the memory comprises a control unit configured to select among the first data memory unit and the second data memory unit in response to a read command having an associated read address that falls within the address range. [0021]
  • The control unit, such as [0022] control unit 108, can include multiple control memory units, such as the control memory units 110 and 112 of FIG. 1.
  • In an exemplary embodiment, the control memory units, such as [0023] control memory unit 110 of FIG. 1, include read and write ports such as read port 114 and write port 116 of the control memory unit 110 of FIG. 1. The use of a control memory unit with read and write ports allows for efficient storage of the information required to select among the first and second data memory units. Additionally, when the memory is constructed using a design library, component memories with read and write ports can be selected from the design library for use in the control unit.
  • In an exemplary embodiment, a multiplexer, such as the [0024] multiplexer 120 of FIG. 1, is coupled with the first data memory unit and the second data memory unit. The multiplexer is configured to receive a select memory signal from the control unit and to produce read data for the memory. The select memory signal produced by the control unit allows the selection of the correct read data from the different data memory units.
  • The control unit can be operably connected to the N write ports to receive write addresses and enables provided to the memory. In an exemplary embodiment, the write address and write enable signals are sent to the control unit to enable the control unit to determine the data memory unit that has been most recently written for an addressable location. [0025]
  • A number of different control units with control memory units can be used with the system of the present invention. The control units include control units with a read-modify-write design and control units with a write-only design. [0026]
  • FIG. 2 illustrates a control unit of the read-modify-write design. An advantage of the read-modify-write design over the write-only form is that control memory units with a single write port can be used in the control unit. [0027]
  • In an exemplary embodiment, the control unit, such as the [0028] control unit 200 of FIG. 2, is configured to use data from a control memory unit to determine insert data for another control memory unit. The control unit can include at least one write insert unit, such as write insert unit 202 of FIG. 2, configured to produce insert data for one of the control memory units, such as control memory unit 204 of FIG. 2, and configured to receive read data from at least one other control memory unit such as control memory unit 206 of FIG. 2. In one example, the write insert units receive read data from all but one control memory unit.
  • Read data from the control memory units can be Exclusive-ORed together with a constant to produce the insert data. In the example of FIG. 2, no actual write insert unit is required for [0029] control memory unit 206 since the Exclusive-OR of the read value from control memory unit 204 and the constant ‘0’ is just the read value. The write insert unit 202 for control memory unit 204 is an inverter; the inversion of the inverter's input value being equivalent to Exclusive-ORing the value with the constant ‘1’, the constant ‘1’ indicating the data memory unit ‘1’.
  • Additional details of the read-modify-write control unit are given in the patent application, MEMORY HAVING MULTIPLE WRITE PORTS AND WRITE INSERT UNIT, AND METHOD OF OPERATION. [0030]
  • In an exemplary embodiment, the control unit includes at least one select unit, such as [0031] select unit 208 of FIG. 2. If the memory has more than one read port, the control unit can use multiple select units, a select unit associated with each read port.
  • FIG. 3 illustrates an alternate embodiment of a control memory using a write-only design. The write-only design does not require the reading of data from the control memory units in advance of writing the control memory units. The control memory units used in the write-only embodiment require at least two write ports. The control memory unit of FIG. 3 can be used with a system associated with two data memory units, each having two write ports. In the example of FIG. 3, data memory unit ‘0’has write ports ‘0 a ’ and ‘0b’, and data memory unit ‘1’has write ports ‘01a’ and ‘1b’. [0032]
  • In an exemplary embodiment, one of the multiple control memory units, such as [0033] control memory unit 302 of FIG. 3, has first and second write ports, and is configured such that a first value is written through the first write port when a predetermined write port associated with the first data memory unit is used to write, and such that a second value is written through the second write port when another predetermined write port associated with the second data memory unit is used to write.
  • The first and second values can be constants. In the example of FIG. 1, when write port ‘0a’ is used to write, the constant ‘0’ is written through the first write port of the [0034] control memory unit 302. When write port ‘1a’ is used to write, a constant ‘1’ is written through the second write port of the control memory unit 302.
  • In the example of FIG. 3, each of the [0035] control memory units 302, 304, 306 and 308 determine for each address in the address range whether the data was more recently written to the address through a write port associated with data memory unit ‘0’ or a write port associated with data memory unit ‘1’. In this example, the control memory unit 302 determines for each address in the address range whether the write port ‘1a’ was used to write the address more recently than write port ‘0a’. The control memory unit 304 determines for each address in the address range whether the write port ‘1a’ was used to write the address more recently than write port ‘0b’. The control memory unit 306 determines for each address in the address range whether the write port ‘1b’ was used to write the address more recently than write port ‘0a’, and control memory unit 308 determines for each address in the address range whether the write port ‘1b’ was used to write the address more recently than write port ‘0b’.
  • In the example of FIG. 3, the outputs of the control memory unit are sent to select [0036] logic 310, which produces a select signal that is used to indicate the data memory unit that has been written to most recently for a given address.
  • Additional details of the write-only control unit are given in the patent application, MEMORY HAVING MULTIPLE WRITE PORTS AND MULTIPLE CONTROL MEMORY UNITS, AND METHOD OF OPERATION. [0037]
  • Although FIG. 1 illustrates two data memory units, more than two data memory units can be used with memories of the present invention. When more than two data memory units are used, the control units use additional control memory units. [0038]
  • FIG. 4 illustrates the write port memory expansion of memory units having R read ports and W write ports by a “write port expansion factor” of K to form a memory having R read ports and W*K write ports. Further, an N write port memory can be constructed from M write port memories by using K=┌N/M┐ data memory units. In the example of FIG. 4, K data memory units are used. Each of the R read address inputs to the [0039] memory 400 is connected in common to a read address input of all K data memory units. The memory 400 includes R multiplexers, each receiving one read data output from each of the K data memory units and a select signal from the control unit and producing a read data output of the memory. The read data inputs to a given multiplexer are all associated with the same read address of the memory. The memory 400 includes a control unit with R select units producing R select signals.
  • In an exemplary embodiment, the control unit includes control subunits such as the [0040] control subunits 502, 504, 506, 508, 510 and 512 of the control unit 500 of FIG. 5. The control subunits can be produced using a design such as that of FIG. 2 or 3, or an alternate control unit design. Each control subunit is configured to indicate which data memory unit, from a pair of data memory units, was most recently written to for a given address. Logic is used to determine, from all of the subunit output select signals, which data memory unit was most recently written to for a given address. The example of FIG. 5 illustrates the production of a select signal to indicate whether data memory unit ‘0’, data memory unit ‘1’, data memory unit ‘2’ or data memory unit ‘3’ contains the most recent data.
  • FIG. 6 is a diagram of an exemplary embodiment of the present invention which illustrates a [0041] memory 600 constructed of four data memory units: data memory unit 602, data memory unit 604, data memory unit 606 and data memory unit 608. The memory 600 also includes a control unit 610 with six control subunits 612, 614, 616, 618, 620, and 622. The control subunits 612, 614, 616, 618, 620 and 622 determine which data memory unit of the memory units was written to more recently. An example embodiment for each of the control subunits of control unit 610 is shown in FIG. 3. The subunit write port inputs labeled ‘0’, ‘1’, ‘2’, and ‘3’ in FIG. 6 correspond to the write port address and enable input signals labeled ‘0a ’, ‘0b’, ‘1a’ and ‘1b ’ respectively in FIG. 3. In FIG. 6, the select output is provided to the multiplexer 630. The select output of control unit 610 is generated based on a read address input by read select circuitry, an example of which is shown in FIG. 5.
  • FIGS. 5 and 6 illustrate the case where the number of data memory units is three or greater and shows how a control unit can be made of control subunits. FIGS. 5 and 6 specifically show an example where there are four data memory units. For an arbitrary number, K, of data memory units, the number of control subunits can be K*(K−1)/2. [0042]
  • The data memory units can have more than one write port. In the example of FIG. 6, the data memory units have two write ports. [0043]
  • FIG. 7 is a flow chart that illustrates a method of an exemplary embodiment of the present invention. In [0044] step 702, a memory having N write ports, where N is greater than 1 is provided. The memory is constructed from multiple data memory units, each data memory unit having less than N write ports and a range of addressable storage locations. The memory includes a control unit comprising multiple control memory units, each control unit having less than N write ports.
  • In [0045] step 704, information is supplied to an addressable location of the memory which falls within the range of addressable storage locations. In step 706, at least one control memory unit in the control unit is updated so that the data in the control memory units for the addressable storage location can be used to determine the data memory unit that contains the most recent data for the addressable location.
  • The updating of the control memory unit can comprise writing a first value through a first write port of the control memory unit when a predetermined write port associated with a first data memory unit is used to write and writing a second value through a second write port of the control memory unit when another predetermined write port associated with a second data memory unit is used to write. In this example, the first and second values are determined independently of data read from a control memory unit. [0046]
  • The updating of the control memory unit can include reading at least one value of at least one control memory unit, determining an insert value from the at least one value of at least one control memory unit, and writing the insert value into a control memory unit. [0047]
  • The method can include sending a read command and an associated address to the memory; retrieving data values from each of the multiple data memory units; and selecting one of the data values to provide a current value. [0048]
  • FIG. 8 is a diagram of an exemplary embodiment of a [0049] system 800 including a memory 802 constructed of multiple data memory units 804 and 806 and a control unit 808.
  • The [0050] memory 802 has N write ports, wherein N is greater than 1. The memory 802 includes a first data memory unit 804 having a plurality of storage locations addressable by a range of addresses. The first data memory unit 804 has less than N write ports. The memory 802 includes a second data memory unit 806 having a plurality of storage locations addressable by the range of addresses. The second data memory unit 806 has less than N write ports. The memory 802 includes a control unit 808 configured to select among the first data memory unit 804 and the second data memory unit 806 in response to a read command having an associated read address which falls within the address range. The control unit 808 includes multiple control memory units 810 and 812 each with less than N write ports.
  • The [0051] system 800 includes logic 814 configured to access the memory 802. In the example of FIG. 8, the logic 814 accesses the memory using read port 816 and write ports 818 and 820.
  • The [0052] logic 814 can include a processor 822. The processor 822 can be part or all of the logic 814.
  • The [0053] logic 814 and the memory 802 can be on a single chip. This chip can be a reconfigurable logic chip or another type of chip such as an ASIC.
  • The [0054] logic 814 and the memory 802 can be on different chips. In one embodiment, the logic 814 comprises a processor chip and the memory 802 is part of a separate chip, such as a reconfigurable logic chip or an ASIC.
  • The [0055] control unit 808 can be configured to use data read from a control memory unit to determine insert data for another control memory unit. An example of such a control unit is shown in FIG. 2.
  • One of the multiple control memory units of the [0056] control unit 808 can have first and second write ports and be configured such that a first value is written through the first write port when a predetermined write port associated with the first data memory unit is used to write and such that a second value is written through the second write port when another predetermined write port associated with the second data memory unit is used to write. In this example, the first and second values are determined independently of data read from a control memory unit. FIG. 3 shows such a control unit.
  • While there has been described what are believed to be the preferred embodiments of the present invention, those skilled in the art will recognize that other and further changes and modifications may be made thereto without departing from the spirit of the invention which is defined by the appended claims, and it is intended to claim all such changes and modifications as fall within the true scope of the invention. The presently disclosed embodiments are therefore considered in all respects to be illustrative and not restricted. The scope of the invention described by the foregoing includes all changes that come within the meaning, range and equivalence thereof and is intended to be embraced therein. [0057]

Claims (22)

What is claimed is:
1. A memory having N write ports, wherein N is greater than 1, comprising:
a first data memory unit having a plurality of storage locations addressable by a range of addresses, and having less than N write ports;
a second data memory unit having a plurality of storage locations addressable by the range of addresses, the second data memory unit having less than N write ports; and
a control unit configured to select among the first data memory unit and the second data memory unit in response to a read command having an associated read address which falls within the address range, the control unit including multiple control memory units each with less than N write ports.
2. The memory of claim 1, comprising a multiplexer coupled with the first data memory unit and the second data memory unit, the multiplexer configured to receive a select memory signal from the control unit and to produce read data for the memory.
3. The memory of claim 1, wherein the control unit is operably connected to the N write ports to receive write addresses and write enables provided to the memory.
4. The memory of claim 1, wherein the control unit is configured to use data read from a control memory unit to determine insert data for another control memory unit.
5. The memory of claim 1, wherein the control unit includes at least one write-insert unit configured to produce insert data for one of the control memory units, the at least one write-insert unit configured to receive read data from at least one other control memory unit.
6. The memory of claim 1, wherein the control unit comprises at least one select unit receiving read data from the control memory units at the associated read address, the at least one select unit producing a select memory signal.
7. The memory of claim 6, wherein the memory has more than one read port and the control unit has a select unit associated with each read port.
8. The memory of claim 1 wherein one of the multiple control memory units has first and second write ports and is configured such that a first value is written through the first write port when a predetermined write port associated with the first data memory unit is used to write and such that a second value is written through the second write port when another predetermined write port associated with the second data memory unit is used to write and the first and second values are determined independently of data read from a control memory unit.
9. The memory of claim 8, wherein the first and second values are constants.
10. The memory of claim 1, wherein the control unit includes control subunits configured to select, from a pair of data memory units, the data memory unit that was most recently written to for an address.
11. The memory of claim 1, wherein the data memory units have more than one write port.
12. A method for operating a memory comprising:
providing a memory having N write ports, where N is greater than 1, the memory being constructed from multiple data memory units, each having less than N write ports and a range of addressable storage locations, and a control unit comprising multiple control memory units, each with less than N write ports;
supplying information to an addressable location of the memory which falls within the range of addressable storage locations; and
updating at least one control memory unit in the control unit so that the data in the control memory units for the addressable storage location can be used to determine the data memory unit that contains the most recent data for the addressable location.
13. The method of claim 12, wherein the updating step comprises writing a first value through a first write port of the control memory unit when a predetermined write port associated with a first data memory unit is used to write and by writing a second value through a second write port of the control memory unit when another predetermined write port associated with a second data memory unit is used to write and the first and second values are determined independently of data read from a control memory unit.
14. The method of claim 12 wherein the updating step includes reading at least one value of at least one control memory unit, determining an insert value from the at least one value of at least one control memory unit; and writing the insert value into a control memory unit.
15. The method of claim 12, comprising:
sending a read command and an associated address to the memory;
retrieving data values from each of the multiple data memory units; and
selecting one of the data values to provide a current value.
16. A system comprising:
a memory having N write ports, wherein N is greater than 1, the memory including a first data memory unit having a plurality of storage locations addressable by a range of addresses, and having less than N write ports, the memory including a second data memory unit having a plurality of storage locations addressable by the range of addresses, the second data memory unit having less than N write ports; and
a control unit configured to select among the first data memory unit and the second data memory unit in response to a read command having an associated read address which falls within the address range, the control unit including multiple control memory units each with less than N write ports; and
logic configured to access the memory.
17. The system of claim 16, wherein the logic includes a processor.
18. The system of claim 16, wherein the logic and the memory are on a single chip.
19. The system of claim 18, wherein the chip is a reconfigurable logic chip.
20. The system of claim 16, wherein the logic and the memory are on different chips.
21. The system of claim 16, wherein the control unit is configured to use data read from a control memory unit to determine insert data for another control memory unit.
22. The system of claim 16 wherein one of the multiple control memory units has first and second write ports and is configured such that a first value is written through the first write port when a predetermined write port associated with the first data memory unit is used to write and such that a second value is written through the second write port when another predetermined write port associated with the second data memory unit is used to write and the first and second values are determined independently of data read from a control memory unit.
US10/326,091 2002-12-23 2002-12-23 Memory having multiple write ports and method of operation Expired - Fee Related US6813215B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/326,091 US6813215B2 (en) 2002-12-23 2002-12-23 Memory having multiple write ports and method of operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/326,091 US6813215B2 (en) 2002-12-23 2002-12-23 Memory having multiple write ports and method of operation

Publications (2)

Publication Number Publication Date
US20040120207A1 true US20040120207A1 (en) 2004-06-24
US6813215B2 US6813215B2 (en) 2004-11-02

Family

ID=32593942

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/326,091 Expired - Fee Related US6813215B2 (en) 2002-12-23 2002-12-23 Memory having multiple write ports and method of operation

Country Status (1)

Country Link
US (1) US6813215B2 (en)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325204A (en) * 1992-05-14 1994-06-28 Hitachi America, Ltd. Narrowband interference cancellation through the use of digital recursive notch filters
US5563829A (en) * 1994-03-24 1996-10-08 Quickturn Design Systems, Inc. Multi-port memory emulation using tag registers
US5629901A (en) * 1995-12-05 1997-05-13 International Business Machines Corporation Multi write port register
US5802003A (en) * 1995-12-20 1998-09-01 International Business Machines Corporation System for implementing write, initialization, and reset in a memory array using a single cell write port
US5923608A (en) * 1997-10-31 1999-07-13 Vlsi Technology, Inc. Scalable N-port memory structures
US5940603A (en) * 1993-06-24 1999-08-17 Quickturn Design Systems, Inc. Method and apparatus for emulating multi-ported memory circuits
US6005794A (en) * 1997-06-27 1999-12-21 Texas Instruments Incorporated Static memory with low power write port
US6078995A (en) * 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6104663A (en) * 1999-01-06 2000-08-15 Virage Logic Corp. Memory array with a simultaneous read or simultaneous write ports
US6151258A (en) * 1997-07-16 2000-11-21 Quickturn Design Systems, Inc. Programmable logic device with multi-port memory
US6212122B1 (en) * 1998-09-17 2001-04-03 National Semiconductor Corporation Dual port memory operation method with synchronized read and write pointers
US6216205B1 (en) * 1998-05-21 2001-04-10 Integrated Device Technology, Inc. Methods of controlling memory buffers having tri-port cache arrays therein
US6233659B1 (en) * 1998-03-05 2001-05-15 Micron Technology, Inc. Multi-port memory device with multiple modes of operation and improved expansion characteristics
US6243294B1 (en) * 1999-03-05 2001-06-05 Xilinx, Inc. Memory architecture for non-volatile storage using gate breakdown structure in standard sub 0.35 micron process
US6271866B1 (en) * 1998-12-23 2001-08-07 Honeywell International Inc. Dual port memory system for buffering asynchronous input to a raster scanned display
US6282143B1 (en) * 1998-05-26 2001-08-28 Hewlett-Packard Company Multi-port static random access memory design for column interleaved arrays

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325504A (en) 1991-08-30 1994-06-28 Compaq Computer Corporation Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325204A (en) * 1992-05-14 1994-06-28 Hitachi America, Ltd. Narrowband interference cancellation through the use of digital recursive notch filters
US5940603A (en) * 1993-06-24 1999-08-17 Quickturn Design Systems, Inc. Method and apparatus for emulating multi-ported memory circuits
US5563829A (en) * 1994-03-24 1996-10-08 Quickturn Design Systems, Inc. Multi-port memory emulation using tag registers
US5629901A (en) * 1995-12-05 1997-05-13 International Business Machines Corporation Multi write port register
US5802003A (en) * 1995-12-20 1998-09-01 International Business Machines Corporation System for implementing write, initialization, and reset in a memory array using a single cell write port
US6078995A (en) * 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6005794A (en) * 1997-06-27 1999-12-21 Texas Instruments Incorporated Static memory with low power write port
US6151258A (en) * 1997-07-16 2000-11-21 Quickturn Design Systems, Inc. Programmable logic device with multi-port memory
US5923608A (en) * 1997-10-31 1999-07-13 Vlsi Technology, Inc. Scalable N-port memory structures
US6233659B1 (en) * 1998-03-05 2001-05-15 Micron Technology, Inc. Multi-port memory device with multiple modes of operation and improved expansion characteristics
US6216205B1 (en) * 1998-05-21 2001-04-10 Integrated Device Technology, Inc. Methods of controlling memory buffers having tri-port cache arrays therein
US6282143B1 (en) * 1998-05-26 2001-08-28 Hewlett-Packard Company Multi-port static random access memory design for column interleaved arrays
US6212122B1 (en) * 1998-09-17 2001-04-03 National Semiconductor Corporation Dual port memory operation method with synchronized read and write pointers
US6271866B1 (en) * 1998-12-23 2001-08-07 Honeywell International Inc. Dual port memory system for buffering asynchronous input to a raster scanned display
US6104663A (en) * 1999-01-06 2000-08-15 Virage Logic Corp. Memory array with a simultaneous read or simultaneous write ports
US6243294B1 (en) * 1999-03-05 2001-06-05 Xilinx, Inc. Memory architecture for non-volatile storage using gate breakdown structure in standard sub 0.35 micron process

Also Published As

Publication number Publication date
US6813215B2 (en) 2004-11-02

Similar Documents

Publication Publication Date Title
US6992947B1 (en) Dual-port SRAM in a programmable logic device
JPH03132212A (en) Configurable logic array
US7221604B2 (en) Memory structure with repairing function and repairing method thereof
US20170047931A1 (en) Reconfigurable semiconductor device
KR20030014584A (en) Semiconductor integrated circuit device
US6256233B1 (en) Distributed signal drivers in arrayable devices
US6459303B1 (en) High speed programmable address decoder
KR20030057470A (en) Semiconductor memory device with high-speed operation and methods of using and designing thereof
US6654308B1 (en) Memory having multiple write ports and multiple control memory units, and method of operation
US7640467B2 (en) Semiconductor memory with a circuit for testing the same
CN100561591C (en) Reconfigurable electronic equipment with data storage device of interconnection
US7248491B1 (en) Circuit for and method of implementing a content addressable memory in a programmable logic device
JP2549601B2 (en) Register control circuit
US6813215B2 (en) Memory having multiple write ports and method of operation
US6625067B2 (en) Semiconductor memory device for variably controlling drivability
US6754130B1 (en) Memory having multiple write ports and write insert unit, and method of operation
US6611929B1 (en) Test circuit for memory
EP0714100B1 (en) Synchronous memory device
US6704229B2 (en) Semiconductor test circuit for testing a semiconductor memory device having a write mask function
US7978547B2 (en) Data I/O control signal generating circuit in a semiconductor memory apparatus
JP2982902B2 (en) Semiconductor memory
US5654934A (en) Semiconductor memory employing a block-write system
US6499089B1 (en) Method, architecture and circuitry for independently configuring a multiple array memory device
US6304103B1 (en) FPGA using RAM control signal lines as routing or logic resources after configuration
KR100510458B1 (en) Apparatus and method for latching address for synchronous semiconductor memory

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD COMPANY, COLORADO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CARTER, RICHARD J.;REEL/FRAME:013635/0017

Effective date: 20021219

AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., COLORAD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:013776/0928

Effective date: 20030131

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.,COLORADO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:013776/0928

Effective date: 20030131

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
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: 20121102