integrated circuits are provided that have memory arrays. The memory arrays may include rows and columns of data byte storage locations. To implement algorithms that that process data subwords, a memory array may be partitioned into individual memory banks each of which has its own associated data register and its own associated address decoder. Each address decoder may receive address signals from an associated multiplexer. address mapping circuits may be used to distribute address signals to multiplexer inputs using an non-blocking memory architecture. The memory architecture allows collections of data bytes to be written and read from the memory array using column-wise and row-wise read and write operations. The data bytes that are written to the array and that are read from the array may be stored in adjacent data byte locations in the array.
|
8. A method of accessing data in a memory array formed from multiple memory banks, comprising:
accessing a plurality of subwords of data from adjacent memory locations within the memory array in a single clock cycle, wherein the each subword is stored in a different one of the memory banks.
20. An integrated circuit, comprising:
a memory array partitioned into a plurality of memory banks, wherein the memory array has a plurality of rows and columns of data byte storage locations;
circuitry for storing a plurality of data bytes in the memory array at respective adjacent data byte storage locations by storing each of the plurality of data bytes in a respective one of the memory banks; and
programmable logic that implements processing circuitry that accesses the memory array.
15. An integrated circuit, comprising:
a memory array partitioned into a plurality of memory banks, wherein the memory array has a plurality of rows and columns of data byte storage locations, each data byte storage location storing a single data byte; and
circuitry for storing a plurality of data bytes in the memory array at respective adjacent data byte storage locations by storing each of the plurality of data bytes in a respective one of the memory banks, wherein the circuitry is configured to store each of the plurality of data bytes in a different one of the adjacent data byte storage locations.
16. An integrated circuit, comprising:
a memory array partitioned into a plurality of memory banks, wherein the memory array has a plurality of rows and columns of data byte storage locations; and
circuitry for storing a plurality of data bytes in the memory array at respective adjacent data byte storage locations by storing each of the plurality of data bytes in a respective one of the memory banks, wherein the circuitry comprises:
bit lines; and
a plurality of data register circuits each of which is associated with a respective one of the memory banks and which is connected to that memory bank by a corresponding set of the bit lines.
1. A memory array, comprising:
a plurality of memory banks;
a plurality of respective address decoders that produce respective address signals for addressing the memory banks; and
a plurality of multiplexers each of which has an output that provides a corresponding one of the address signals to a corresponding one of the address decoders, wherein each of the multiplexers has a plurality of inputs, each input having a respective address input and a respective control input, and wherein when a control signal is asserted on the control input of a given one of the inputs of a given multiplexer, address information on the address input of that given one of the inputs is routed to the output of the given multiplexer.
2. The memory array defined in
3. The memory array defined in
4. The memory array defined in
5. The memory array defined in
6. The memory array defined in
7. The memory array defined in
9. The method defined in
10. The method defined in
in different single clock cycle, reading each of the subwords from a respective one of the memory banks to perform a row-wise read operation on the memory array.
11. The method defined in
12. The method defined in
in different single clock cycle, reading each of the subwords from a respective one of the memory banks to perform a column-wise read operation on the memory array.
13. The method defined in
14. The method defined in
17. The integrated circuit defined in
a plurality of address decoders each of which has address lines that are coupled only to a respective one of the memory banks.
18. The integrated circuit defined in
19. The integrated circuit defined in
each of the plurality of different addresses provided by the address mapping circuit is provided to a different one of the multiplexers.
|
This invention relates to integrated circuits, and more particularly, to integrated circuits with memory that is used in processing subwords of data.
Memory is widely used in the integrated circuit industry. Memory arrays are formed as part of integrated circuits such as application specific integrated circuits, programmable logic device integrated circuits, digital signal processors, microprocessors, microcontrollers, and memory chips.
Memory arrays often handle data in the form of relatively large data words. For example, data may be read from and written to memory arrays in 32-bit words. Words of this bit length are used to improve efficiency and reduce circuit overhead.
In arrangements in which data is handled in large words, each data word may contain multiple bytes of data. For example, a 32-bit word may contain four eight-bit bytes of data. The data bytes in the data word may sometimes be referred to as subwords.
Many modern data processing algorithms involve the manipulation of subwords of data. For example, it may be necessary to store and retrieve subwords of image data in a memory array when performing image compression. As another example, wireless communications standards such as the emerging 4G wireless communications standards may require the processing of individual subwords. With processing algorithms such as these, it may be desired, for example, to write subwords into a memory array in a column-wise fashion and to read subwords from the same memory array in a row-wise fashion. Operations such as these can be cumbersome in conventional memory arrays, because they require numerous full-word read and write operations and data manipulations such as data shifting and combining operations.
It would therefore be desirable to be able to provide improved memory circuits for handling subword processing operations on integrated circuits.
In accordance with the present invention, integrated circuits are provided with memory circuitry. The integrated circuits may be programmable integrated circuits such as programmable logic devices that contain blocks of programmable logic. The resources of the blocks of programmable logic or other such circuitry may be configured to implement processing circuitry. The processing circuitry may be used to implement data processing algorithms. In performing the data processing algorithms, the processing circuitry may perform read and write operations on data in the memory circuitry.
The data may be stored in the form of individually addressable data bytes. The data bytes may be stored in rows and columns of data byte locations in a memory array. Multiple adjacent data bytes in the array may be written and read in a single clock cycle. To avoid collisions, the memory array may be partitioned into blocks and each of the adjacent data bytes may be accessed using a different respective memory block within the memory array. Each such memory block may have its own associated data register and its own associated address decoder. Each address decoder may receive address signals from an associated multiplexer. Address mapping circuits may be used to distribute address signals to multiplexer inputs using a non-blocking memory architecture. The memory architecture allows groups of data bytes to be written and read from the memory array using both column-wise and row-wise read and write operations. For example, multiple bytes of data may be written into adjacent locations in the memory array in a column-wise fashion in a single clock cycle. In a different clock cycle, a different set of data bytes may be read from adjacent locations in the memory array in a row-wise fashion (as an example).
Further features of the invention, its nature and various advantages will be more apparent from the accompanying drawings and the following detailed description of the preferred embodiments.
The present invention relates to memory and processing circuitry that may be used in implementing algorithms in which data is read in memory array rows and written in memory array columns or vice versa. For example, the circuitry may be used in corner turning algorithms and the like. These algorithms typically require the manipulation of multiple independent subwords of data (e.g., data in eight-bit bytes) and can be computationally expensive to implement in conventional memory arrays in which data is handled in large data words (e.g., 32-bit data words).
The circuitry of the present invention may be used in any suitable integrated circuits, such as application-specific integrated circuits, electrically programmable and mask-programmable programmable logic device integrated circuits, digital signal processors, microprocessors, microcontrollers, and memory chips. If desired, the circuitry of the present invention may be used in programmable integrated circuits that are not traditionally referred to as programmable logic devices such as microprocessors containing programmable logic, digital signal processors containing programmable logic, custom integrated circuits containing regions of programmable logic, or other programmable integrated circuits that contain programmable logic and one or more memory arrays.
The present invention is sometimes described herein in connection with memory arrays and associated circuitry on programmable integrated circuits such as programmable logic device integrated circuits. This is, however, merely illustrative. Memory circuitry in accordance with the invention may be used on any suitable integrated circuit if desired.
An illustrative integrated circuit device 10 such as a programmable logic device or other programmable integrated circuit in accordance with the present invention is shown in
Device 10 may have input/output circuitry 12 for driving signals off of device 10 and for receiving signals from other devices via input/output pins 14. Interconnection resources 16 such as global and local vertical and horizontal conductive lines and busses may be used to route signals on device 10. Interconnection resources 16 include conductive lines and programmable connections between respective conductive lines and are therefore sometimes referred to as programmable interconnects 16.
Device 10 may contain programmable logic 18 and memory blocks (arrays) 22.
Programmable logic 18 may include combinational and sequential logic circuitry. The programmable logic 18 may be configured to perform a custom logic function. The programmable interconnects 16 may be considered to be a type of programmable logic 18.
As shown in
Memory elements 20 may use any suitable volatile and/or non-volatile memory structures such as random-access-memory (RAM) cells, fuses, antifuses, registers, programmable read-only-memory memory cells, mask-programmed and laser-programmed structures, etc. Because memory elements 20 are loaded with configuration data during programming, memory elements 20 are sometimes referred to as configuration memory or configuration RAM. Mask-programmed programmable logic devices, which are sometimes referred to as structured application specific integrated circuits, are programmed by using lithographic masks to create a custom pattern of connections in an array of vias based on configuration data.
Memory arrays 22 may contain rows and columns of volatile memory elements such as random-access-memory (RAM) cells. The memory arrays 22 may be used to store data signals during normal operation of device 10. For example, memory arrays 22 may be used to store data that is being received and processed as part of a wireless communications channel, data that is associated with an image file, or any other suitable data. If desired, software code may be loaded onto memory arrays 22 and executed by processing circuitry on device 10 (e.g., hardwired processing circuitry and processing circuitry implemented using the resources available in programmable logic 18).
The memory arrays 22 on a given device 10 need not all be the same size. For example, small, medium, and large memory arrays 22 may be included on the same programmable logic device (or other integrated circuit). There may, for example, be hundreds of small memory arrays each having a capacity of about 512 bits, 2-9 large memory arrays each having a capacity of about half of a megabit, and an intermediate number of medium size memory arrays each having a capacity of about 4 kilobits. These are merely illustrative memory array sizes and quantities. In general, there may be any suitable size and number of memory arrays 22 on device 10. There may also be any suitable number of regions of programmable logic 18.
The circuitry of device 10 may be organized using any suitable architecture. As an example, the logic of programmable logic device 10 may be organized in a series of rows and columns of larger programmable logic regions each of which contains multiple smaller logic regions. The resources of device 10 such as programmable logic 18 and memory 22 may be interconnected by programmable interconnects 16. Interconnects 16 generally include vertical and horizontal conductors. These conductors may include global conductive lines that span substantially all of device 10, fractional lines such as half-lines or quarter lines that span part of device 10, staggered lines of a particular length (e.g., sufficient to interconnect several logic areas), smaller local lines, or any other suitable interconnection resource arrangement. If desired, the logic of device 10 may be arranged in more levels or layers in which multiple large regions are interconnected to form still larger portions of logic. Still other device arrangements may use logic that is not arranged in rows and columns.
In addition to the relatively large blocks of programmable logic that are shown in
In accordance with the present invention, an integrated circuit (e.g., a programmable integrated circuit or other integrated circuit) may contain memory circuitry (e.g., memory 22 of
Consider, as an example, the conventional memory circuitry of
Lines 36, which are sometimes referred to as address lines or word lines, may be used to determine which of the columns of memory cells in array 28 are being accessed. Each of lines 36 may be associated with a corresponding address signal (AD0, AD1, AD2, . . . AD15). When it is desired to access a particular column in array 28 for reading or writing, the address that is associated with that column may be asserted, while deasserting the addresses associated with the remaining columns in array 28. For example, if it is desired to access the third column from the left in array 28, address signal AD2 may be asserted (e.g., taken to a logic high value) while address signals AD0, AD1, AD3, AD4, . . . AD15 are deasserted (e.g., taken to a logic low value). When signal AD2 is asserted in this way, data may be written into the third column from the left in array 28 from data registers 32 over bit lines (data lines) 38 or data may be read from the third column in array 28 into data registers 32 over bits lines 38. Data register circuitry 32 may be connected to other circuitry on an integrated circuit such as processing circuitry.
In a typical arrangement, memory circuitry 26 of
Memory circuitry in accordance with embodiments of the present invention can overcome these shortcomings of conventional memory arrays by providing the ability to independently access multiple subwords of data in a single clock cycle. This may be accomplished by partitioning a memory array into multiple memory blocks and providing each memory block with associated address decoder circuitry. Address mapping circuitry may be used to support both row-wise and column-wise access to adjacent subwords in the array without collisions.
An illustrative memory array using a memory architecture in accordance with the present invention is shown in
Each memory bank 42 may have a corresponding set of bit lines 44. During writing operations, data may be loaded into memory banks 42 from associated data register circuits 46 over associated bit lines 44. During data reading operations, data may be read from memory banks 42 and may be passed to associated circuitry such as data register circuits 46 over bit lines 44. There are eight bit lines in the set of bit lines 44 associated with each memory bank in the
Each memory bank 42 may have an associated address decoder 48. Address decoder A may be used to provide address signals to memory bank A, address decoder B may be used to provide address signals to memory bank B, address decoder C may be used to provide address signals to memory bank C, and address decoder D may be used to provide address signals to memory bank D.
Address decoders 48 may have inputs 54 at which encoded versions of the address signals are received. Address decoders 48 may decode these encoded address signals to produce corresponding decoded versions of the address signals on address lines 50. Address lines 50 convey these address signals to banks 42 to provide addressing when accessing the data in the memory cells of banks 42. In the
Each column of the
The address signals that are provided to address inputs 54 may be produced by address mapping circuitry connected to the inputs of multiplexers 52. In an arrangement of the type shown in
The control (selection) signals that are applied to each multiplexer input dictate which address signals for that multiplexer are passed to the multiplexer output. To ensure that there are no collisions between address signals, the control signals for each multiplexer may be encoded using a one-hot encoding scheme. With a one-hot encoding scheme, only one of the control signals is asserted (e.g., taken to a logic high value), while all remaining control signals are deasserted (e.g., taken to a logic low value).
Consider, as an example, the control signals SA0, SA1, SA2, and SA3 that are applied to the control inputs of multiplexer A. If a given one of these control signals is asserted, its associated address signals will be passed to the output of multiplexer A on the four lines that make up the address path 54 between multiplexer A and address decoder A. For example, if signal SAO is taken high, the signal A0 will be routed from the first input of multiplexer A to the output of multiplexer A. Similarly, if signal SA1 is taken high, multiplexer A will route address signal A1 to the output of multiplexer A.
Using a one-hot encoding scheme, the control signals SA0, SA1, SA2, and SA3 never contain more than a single logic high value at a given time. For example, when asserting SA2 to route signal A2 to the output of multiplexer A, signals SA0, SA1, and SA3 may all be taken low. During operation, each multiplexer in memory 22 receives a respective set of one-hot encoded control signals. Multiplexer A receives one-hot encoded control signals SA0, SA1, SA2, and SA3, multiplexer B receives one-hot encoded control signals SB0, SB1, SB2, and SB3, multiplexer C receives one-hot encoded control signals SC0, SC1, SC2, and SC3, and multiplexer D receives one-hot encoded control signals SD0, SD1, SD2, and SD3.
In any given memory access operation (reading or writing), data may be read from or written to each of memory banks A, B, C, and D in a single clock cycle by supplying appropriate address signals and address selection control signals to inputs 56 of multiplexers A, B, C, and D. This allows subwords to be read or written to memory banks A, B, C, and D in various patterns. In accordance with the present invention, a tiled memory architecture is preferably used that prevents access operations for different ports from clashing.
The address mapping functionality required to preventing subword memory access operations in memory 22 from clashing may be embedded in the circuitry of address mapping circuits that produce the addresses and address control signals for the inputs of multiplexers 52. Illustrative address mapping circuitry 58 that may be used to generate the address and control signals for memory 22 of
Each of the address mapping circuits 60 receives an address signal on its input 62 and produces corresponding address and control signals on its outputs 56. For example, in response to address signals supplied to its input 62, address mapping circuit AMC0 may produce address signals A0 and associated control signal SAO on a first output 56, may produce address signals B0 and associated control signal SB0 on a second output 56, may produce address signals C0 and associated control signal SC0 on a third output 56, and may produce address signals D0 and associated control signal SD0 on a fourth output 56. Signals A0 and SAO are presented to the first input of multiplexer A (
Address mapping circuits AMC1, AMC2, and AMC3 operate similarly. Each of these circuits is controlled by address signals provided on a corresponding address signal input 62. Address mapping circuit AMC1 provides signals A1 and SA1 to the second input of multiplexer A, provides signals B1 and SB1 to the second input of multiplexer B, provides signals C1 and SC1 to the second input of multiplexer C, and provides signals D1 and SD1 to the second input of multiplexer D. Address mapping circuit AMC2 provides signals A2 and SA2 to the third input of multiplexer A, provides signals B2 and SB2 to the third input of multiplexer B, provides signals C2 and SC2 to the third input of multiplexer C, and provides signals D2 and SD2 to the third input of multiplexer D. Address mapping circuit AMC3 provides signals A3 and SA3 to the fourth input of multiplexer A, provides signals B3 and SB3 to the fourth input of multiplexer B, provides signals C3 and SC3 to the fourth input of multiplexer C, and provides signals D3 and SD3 to the fourth input of multiplexer D.
The address mapping circuitry associated with memory array circuits of the present invention preferably creates address mappings that avoid collisions when accessing adjacent memory ports in memory 22. In many data processing algorithms implemented using processing circuitry on device 10 it may be desirable to access memory 22 in one dimension (e.g., column-wise) when performing a write operation and in an orthogonal dimension (e.g., row-wise) when performing a read operation. In these operations, subwords (bytes) of data may be accessed individually, without processing extraneous data in relatively large (e.g., 32 bit) data words.
An arrangement of this type is illustrated in the diagram of
Although represented as an 8×8 array of subwords, it will be appreciated that any suitable physical layout shape may be used for a given memory array 22. For example, a 64-byte (512 bit) array may be provided using memory cells that are organized in four banks each with 16 columns of 8 bits each, as described in connection with the illustrative arrangement of
The memory locations of the subwords in the array of
The memory architecture of
Consider, as an example, a column-wise write operation involving the four subwords 64 of
In some data processing algorithms, it may be desirable to perform a row-wise read operation (e.g., after performing a column-wise write operation). For example, the four adjacent subwords 68 of
Address mapping circuitry 58 of
At the same time that address D0 is being provided by address mapping circuit AMC0, address “4” is being provided to the address input 62 of address mapping circuit AMC1, address “5” is being provided to the address input 62 of address mapping circuit AMC2, and address “6” is being provided to the address mapping circuit AMC3. In response, address mapping circuit AMC1 produces a high SA1 control signal (and corresponding address signals A1) and produces low control signals SB1, SC1, and SD1. Because address 4 corresponds to the second memory location in memory bank A that is being used in the array of
When these signals are received by multiplexers 52 of
This type of scheme may be used for any four adjacent subwords in both column-wise addressing schemes and row-wise addressing schemes, and in both write operations and read operations. More than four adjacent subwords can be handled simultaneously by partitioning memory 22 into more memory blocks (e.g., memory blocks E, F, etc.) and by providing corresponding address decoders, multiplexers, and address mapping circuits. If desired, memory architectures such as the memory architecture of
The foregoing is merely illustrative of the principles of this invention and various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention.
Patent | Priority | Assignee | Title |
11270675, | Dec 29 2017 | ZHEJIANG UNIVIEW TECHNOLOGIES CO , LTD | Burst image data reading method and apparatus, electronic device, and readable storage medium |
Patent | Priority | Assignee | Title |
4807189, | Aug 05 1987 | Texas Instruments Incorporated | Read/write memory having a multiple column select mode |
4961171, | May 21 1987 | TEXAS INSTRUMENTS INCORPORATED, 13500 NORTH CENTRAL EXPRESSWAY, DALLAS, TX 75265 A CORP OF DE | Read/write memory having an on-chip input data register |
5638533, | Oct 12 1995 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Method and apparatus for providing data to a parallel processing array |
5812483, | Nov 09 1995 | SAMSUNG ELECTRONICS CO , LTD | Integrated circuit memory devices including split word lines and predecoders and related methods |
5890195, | Mar 13 1997 | COMPLEX MEMORY LLC | Dram with integral sram comprising a plurality of sets of address latches each associated with one of a plurality of sram |
6370073, | Oct 01 1998 | Invensas Corporation | Single-port multi-bank memory system having read and write buffers and method of operating same |
6622197, | Jun 17 1999 | Samsung Electronics Co., Ltd. | Dynamic random access memory device capable of programming a refresh period and a bit organization |
6725349, | Dec 23 1994 | Intel Corporation | Method and apparatus for controlling of a memory subsystem installed with standard page mode memory and an extended data out memory |
7394716, | Apr 01 2005 | Rambus Inc | Bank availability indications for memory device and method therefor |
20050066133, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jul 23 2008 | PERRY, STEVEN | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021303 | /0802 | |
Jul 28 2008 | Altera Corporation | (assignment on the face of the patent) | / | |||
Jul 08 2022 | Altera Corporation | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 060778 | /0032 | |
Jul 18 2022 | Intel Corporation | TAHOE RESEARCH, LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 061827 | /0686 |
Date | Maintenance Fee Events |
Aug 25 2014 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 13 2018 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jun 22 2022 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 29 2014 | 4 years fee payment window open |
Sep 29 2014 | 6 months grace period start (w surcharge) |
Mar 29 2015 | patent expiry (for year 4) |
Mar 29 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 29 2018 | 8 years fee payment window open |
Sep 29 2018 | 6 months grace period start (w surcharge) |
Mar 29 2019 | patent expiry (for year 8) |
Mar 29 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 29 2022 | 12 years fee payment window open |
Sep 29 2022 | 6 months grace period start (w surcharge) |
Mar 29 2023 | patent expiry (for year 12) |
Mar 29 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |