USRE45000E1 - Nonaligned access to random access memory - Google Patents

Nonaligned access to random access memory Download PDF

Info

Publication number
USRE45000E1
USRE45000E1 US13/005,225 US201113005225A USRE45000E US RE45000 E1 USRE45000 E1 US RE45000E1 US 201113005225 A US201113005225 A US 201113005225A US RE45000 E USRE45000 E US RE45000E
Authority
US
United States
Prior art keywords
address
byte
bank
memory
bit
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.)
Active, expires
Application number
US13/005,225
Inventor
Georgiy Shenderovich
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.)
Intellectual Ventures I LLC
Original Assignee
Faust Communications Holdings LLC
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 Faust Communications Holdings LLC filed Critical Faust Communications Holdings LLC
Priority to US13/005,225 priority Critical patent/USRE45000E1/en
Assigned to NEOMAGIC ISRAEL LTD. reassignment NEOMAGIC ISRAEL LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SHENDEROVICH, GEORGIY
Assigned to FAUST COMMUNICATIONS HOLDINGS, LLC reassignment FAUST COMMUNICATIONS HOLDINGS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: NEOMAGIC ISRAEL LTD.
Assigned to INTELLECTUAL VENTURES I LLC reassignment INTELLECTUAL VENTURES I LLC MERGER (SEE DOCUMENT FOR DETAILS). Assignors: FAUST COMMUNICATIONS HOLDINGS, LLC
Application granted granted Critical
Publication of USRE45000E1 publication Critical patent/USRE45000E1/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device

Definitions

  • the present invention relates generally to methods and apparatus for operating memory devices, and particularly to methods and apparatus for organizing random access memories, e.g., SRAM arrays, with nonaligned access, wherein unambiguous access to the bits of the array may be obtained even if two or more column lines and two or more row lines are activated at the same time.
  • random access memories e.g., SRAM arrays
  • Random access memories such as static random access memories (SRAMs) or dynamic random access memories (DRAMs), generally comprise a multiplicity of addresses for writing therein data. Data in the addresses may be accessed, for example, through data latches for performing operations, e.g., programming, on a memory cell array, e.g., a non-volatile memory cell array.
  • SRAMs static random access memories
  • DRAMs dynamic random access memories
  • FIG. 1 illustrates a typical random access memory array 10 of the prior art (the illustrated example is SRAM).
  • the memory array 10 has 8 rows and 8 columns and has a capacity of 64 bits or 8 bytes. Each bit can be read or written by selecting it with an appropriate row line and appropriate column line simultaneously. Selection of the appropriate row and column is done by means of row and column addresses, which are the binary values of the row and column numbers in the memory array 10 .
  • row and column addresses which are the binary values of the row and column numbers in the memory array 10 .
  • three bits are enough for addressing each row and an additional three bits are enough for addressing each column (each row or column address being numbered from 0 to 7, i.e., binary 000 to 111).
  • a common 6-bit address can read or write each of 64 bits in the memory array 10 .
  • Access to the rows may be controlled by a row decoder 12
  • access to the columns may be controlled by a column decoder 14
  • the row and column decoders 12 and 14 may convert 3-bit row addresses and 3-bit column addresses to a single row select and a single column select signal, respectively.
  • memory word length refers to the memory array row length in bits.
  • the memory array capacity is defined by the number of memory rows. Each appropriate bit in every memory array row belongs to a memory array column.
  • the memory array 10 may be accessed with a byte-aligned access using an 8-bit resolution. For such an access, all column lines may be activated and one of the row lines may be activated, thereby selecting all the bits in that row. Thus, a 3-bit row address is sufficient for accessing the whole byte.
  • a “nonaligned memory access” is defined as an access wherein at least two column lines and at least two row lines are activated at the same time.
  • An example of a nonaligned memory access is a request to read the four most significant bits of the top byte and the four least significant bits of the byte below, in a single data transaction.
  • Such an access is impossible with the memory array 10 , because it requires activating a pair of row lines and all the column lines, which creates an ambiguity in the memory array electric scheme.
  • the present invention seeks to provide methods and apparatus for organizing random access memories, e.g., SRAM arrays, with nonaligned access (e.g., with a byte resolution), wherein unambiguous access to the bits of the array may be obtained even if two or more column lines and two or more row lines are activated at the same time, as is described more in detail hereinbelow.
  • random access memories e.g., SRAM arrays
  • nonaligned access e.g., with a byte resolution
  • memory apparatus including a byte-bank organized in N rows and 8 columns, having a capacity of log 2 (N) bytes, a log 2 (N) bit address bus operative to address the byte-bank, an address offset bus operative to generate offsets (e.g., one-bit offsets) to bits of the byte-bank with an address conversion operator, and an adder in operative communication with the address offset bus and the log 2 (N) bit address bus, the adder operative to add addresses of the byte-bank with the offset generated by the address conversion operator and output a result to the log 2 (N) bit address.
  • a random access memory array may include a plurality of the byte-banks.
  • the address conversion operator may convert an unaligned address on a byte resolution into a log 2 (N) address on a data word resolution.
  • the address offset may include shifting the most significant byte from the least significant byte by a distance of 8 bytes.
  • a method including providing a random access memory array including a plurality of the byte-banks, wherein each byte-bank is organized in N rows and 8 columns, each byte-bank having a capacity of log 2 (N) bytes, providing a log 2 (N) bit address bus operative to address the byte-bank, generating address offsets to bits of the byte-bank with an address conversion operator, and adding addresses of the byte-bank with the generated address offset and outputting a result to the log 2 (N) bit address.
  • the method may include performing an unaligned memory access to the byte-banks.
  • the unaligned memory access may include transforming a data word before a memory write or read operation and compensating for the data word rotation with the offsets.
  • FIG. 1 is a simplified schematic illustration of a typical SRAM array of the prior art
  • FIG. 2 is a simplified schematic illustration of a memory array, such as but not limited to, an SRAM, constructed and operative in accordance with an embodiment of the present invention, and including row decoders and a column decoder;
  • FIG. 3 is a simplified schematic illustration of the memory array of FIG. 2 , with all the columns permanently selected and the column decoder omitted;
  • FIG. 4 is a simplified block diagram of a memory partition address distribution, such as a 2 KB 512 ⁇ 64-bit memory partition address distribution, in accordance with an embodiment of the present invention
  • FIG. 5 is a simplified block diagram of a data conversion operator for memory write, in accordance with an embodiment of the present invention.
  • FIG. 6 is a simplified block diagram of a data conversion operator for memory read, in accordance with an embodiment of the present invention.
  • FIG. 7 is a simplified block diagram of an address conversion operator, in accordance with an embodiment of the present invention.
  • FIG. 8 is a simplified block diagram of memory partition internal interleaving, such as a 4 KB memory partition internal interleaving, in accordance with an embodiment of the present invention.
  • FIG. 2 illustrates a random access memory array 20 (such as but not limited to, SRAM).
  • memory array 20 has 8 rows and 8 columns and has a capacity of 64 bits or 8 bytes, but the invention is not limited to these values. Every row may have a dedicated row decoder 22 , whereas access to the columns may be controlled by a column decoder 24 .
  • the dedicated row decoders 22 may provide a separate access to every byte within the whole data word. In other words, for every column, each and every row can be selected separately.
  • memory array 20 for example, a whole 8-byte word may be accessed in a single data transaction.
  • memory array 20 may be constructed wherein all the columns are permanently selected, thereby eliminating the need for the column decoder 24 .
  • the structure of FIG. 3 may serve as a building block (“byte bank”) to organize larger arrays.
  • byte bank building block
  • One non-limiting example is an array of 512 bits, organized with 8 ⁇ 64 memory partitioning.
  • Another example is an array with a memory partition size of 4 KB, which may be organized with the building block arrays of FIG. 3 , that is, an array of 512 ⁇ 64 bits.
  • FIG. 4 illustrates a 2 KB 512 ⁇ 64-bit memory partition address distribution, in accordance with an embodiment of the present invention.
  • the SRAM memory partition of FIG. 4 is built from 8 byte-banks 30 .
  • Each byte-bank 30 has its own 8-bit data bus and row decoder 32 , similar to the building block array of FIG. 3 .
  • FIG. 1 8-bit data bus and row decoder
  • the byte banks 30 and 8-bit data bus and row decoders 32 are numbered from 0 to 7 from the right to the left.
  • the random access memory array of the present invention includes byte-banks organized in N rows and 8 columns, wherein each byte bank has capacity of log 2 (N) bytes and is addressed by a log 2 (N) bit address bus.
  • N log 2
  • N 9-bit address bus
  • the least significant byte-bank (addresses 0, 8, etc.) may provide the least significant byte
  • the most significant byte-bank (addresses 7, F, etc.) may provide the most significant byte.
  • the memory partition distribution of FIG. 4 can also be used in an unaligned data access.
  • the least significant byte may be taken starting from the second byte-bank (1, 9, etc.) or the third byte-bank (2, A, etc.) and so on, whereas the most significant byte may be taken from the first byte-bank (0, 8, etc.) or the second byte-bank (1, 9, etc.) and so on, respectively.
  • Projecting the nonaligned data format on the data bus results in the bytes within the data word being rotated (shifted) depending on the nonaligned address. This shift must be corrected when writing to or reading from memory.
  • FIG. 5 illustrates a data conversion operator for writing to memory, in accordance with an embodiment of the present invention.
  • the first row of the operator function is provided for aligned addressing; hence no conversion is done.
  • the data words, rotated in accordance with the appropriate row of the operator function of FIG. 5 may then be written to the memory.
  • FIG. 6 illustrates a data conversion operator for reading from memory, in accordance with an embodiment of the present invention.
  • the first row of the operator function is provided for aligned addressing; hence no conversion is done.
  • the data word read from the memory may thus be rotated (shifted) in accordance with the appropriate row of the operator function of FIG. 6 .
  • FIG. 7 illustrates address conversion operator functionality for the 4 KB memory partition, in accordance with an embodiment of the present invention.
  • the 9-bit component for the aligned access may be extracted from the most significant bits of this address. This component can be used for simultaneous addressing of all byte-banks.
  • the 64-bit data word location can be started anywhere in the byte-banks 1 to 7.
  • the 64-bit data word location is defined by the location of its least significant byte and depends on the contents of the three least significant bits of the original 12-bit address. As mentioned hereinabove, a distance of 8 bytes separates the least significant byte of the 64-bit data word from the most significant byte in the byte address resolution. Thus, for the most significant byte or bytes of the unaligned 64-bit data word, the selected memory row is shifted downwards by one row with respect to the memory rows for the least significant byte or bytes in the byte-banks.
  • each byte-bank needs a one-bit row offset depending on the starting location of the unaligned 64-bit data word.
  • Such one-bit row offsets may be generated by the address conversion operator shown in FIG. 7 for each byte-bank numbered from 0 to 6 in accordance with all 8 combinations of three least significant buts of the memory partition 12-bit address. No row address offset is required for the byte-bank 7, because it contains the most significant byte of the 64-bit data word only in the case of an aligned access.
  • FIG. 8 illustrates the internal structure of a 4 KB memory partition with unaligned 64-bit access (based on the non-limiting example of FIG. 4 ), in accordance with an embodiment of the present invention.
  • FIG. 8 adds to the architecture shown in FIG. 4 the addition of an adder 36 and a one-bit offset address bus 38 . All 64 bits from all the byte-banks 30 may be addressed in a single memory transaction. Each byte-bank 30 may have its own one-bit offset address bus 38 . In an unaligned memory access, the data words may be rotated (shifted) in accordance with the appropriate row of the operator functions of FIG. 5 (write) or FIG. 6 (read) for each byte-bank 30 , resulting in a one-bit shift, as described above.
  • the adder 36 adds the 9-bit word address and the one-bit offset and outputs a 9-bit result to the common 9-bit address bus 34 .
  • the common 9-bit address bus 34 may then be used to correctly address each byte-bank 30 .
  • the cascade output of FIG. 8 is generated by the appropriate adder 36 when the byte-bank address wraps the boundary of 0 ⁇ 1FF.
  • the architecture of FIG. 8 provides correct organization of the random access memories 20 for nonaligned access, such as with a byte resolution.

Abstract

Memory apparatus including a byte-bank organized in N rows and 8 columns, having a capacity of log2(N) bytes, a log2(N) bit address bus operative to address the byte-bank, an address offset bus operative to generate offsets (e.g., one-bit offsets) to bits of the byte-bank with an address conversion operator, and an adder in operative communication with the address offset bus and the log2(N) bit address bus, the adder operative to add addresses of the byte-bank with the offset generated by the address conversion operator and output a result to the log2(N) bit address. A random access memory array may include a plurality of the byte-banks.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
More than one reissue application has been filed for the reissue of U.S. Pat. No. 6,975,553 B2. The reissue applications for the reissue of U.S. Pat. No. 6,975,553 B2 are application Ser. No. 13/005,225 (the present application), and Ser. No. 11/956,301. Application Ser. No. 13/005,225 (the present application) is a divisional reissue of application Ser. No. 11/956,301 filed Dec. 13, 2007 (the parent reissue application—now abandoned) which is a reissue application of Ser. No. 10/816,849 filed Apr. 5, 2004, now U.S. Pat. No. 6,975,553 B2. This application is a reissue of U.S. Pat. No. 6,975,553 B2.
FIELD OF THE INVENTION
The present invention relates generally to methods and apparatus for operating memory devices, and particularly to methods and apparatus for organizing random access memories, e.g., SRAM arrays, with nonaligned access, wherein unambiguous access to the bits of the array may be obtained even if two or more column lines and two or more row lines are activated at the same time.
BACKGROUND OF THE INVENTION
Random access memories, such as static random access memories (SRAMs) or dynamic random access memories (DRAMs), generally comprise a multiplicity of addresses for writing therein data. Data in the addresses may be accessed, for example, through data latches for performing operations, e.g., programming, on a memory cell array, e.g., a non-volatile memory cell array.
Reference is now made to FIG. 1, which illustrates a typical random access memory array 10 of the prior art (the illustrated example is SRAM). The memory array 10 has 8 rows and 8 columns and has a capacity of 64 bits or 8 bytes. Each bit can be read or written by selecting it with an appropriate row line and appropriate column line simultaneously. Selection of the appropriate row and column is done by means of row and column addresses, which are the binary values of the row and column numbers in the memory array 10. In the illustrated example of FIG. 1, three bits are enough for addressing each row and an additional three bits are enough for addressing each column (each row or column address being numbered from 0 to 7, i.e., binary 000 to 111). Thus, a common 6-bit address can read or write each of 64 bits in the memory array 10.
Access to the rows may be controlled by a row decoder 12, and access to the columns may be controlled by a column decoder 14. The row and column decoders 12 and 14 may convert 3-bit row addresses and 3-bit column addresses to a single row select and a single column select signal, respectively.
It is noted that the “memory word length” refers to the memory array row length in bits. The memory array capacity is defined by the number of memory rows. Each appropriate bit in every memory array row belongs to a memory array column.
The memory array 10 may be accessed with a byte-aligned access using an 8-bit resolution. For such an access, all column lines may be activated and one of the row lines may be activated, thereby selecting all the bits in that row. Thus, a 3-bit row address is sufficient for accessing the whole byte.
The traditional, prior art organization of an SRAM is fine for such byte-aligned accesses, wherein if all the column lines are activated only one row line is activated. There is no ambiguity of two different rows that are both selected.
However, the prior art memory array structure is not capable of performing a nonaligned memory access. A “nonaligned memory access” is defined as an access wherein at least two column lines and at least two row lines are activated at the same time. An example of a nonaligned memory access is a request to read the four most significant bits of the top byte and the four least significant bits of the byte below, in a single data transaction. Such an access is impossible with the memory array 10, because it requires activating a pair of row lines and all the column lines, which creates an ambiguity in the memory array electric scheme.
SUMMARY OF THE INVENTION
The present invention seeks to provide methods and apparatus for organizing random access memories, e.g., SRAM arrays, with nonaligned access (e.g., with a byte resolution), wherein unambiguous access to the bits of the array may be obtained even if two or more column lines and two or more row lines are activated at the same time, as is described more in detail hereinbelow.
There is thus provided in accordance with an embodiment of the present invention memory apparatus including a byte-bank organized in N rows and 8 columns, having a capacity of log2(N) bytes, a log2(N) bit address bus operative to address the byte-bank, an address offset bus operative to generate offsets (e.g., one-bit offsets) to bits of the byte-bank with an address conversion operator, and an adder in operative communication with the address offset bus and the log2(N) bit address bus, the adder operative to add addresses of the byte-bank with the offset generated by the address conversion operator and output a result to the log2(N) bit address. A random access memory array may include a plurality of the byte-banks.
In accordance with an embodiment of the present invention, for each byte-bank, the address conversion operator may convert an unaligned address on a byte resolution into a log2(N) address on a data word resolution. The address offset may include shifting the most significant byte from the least significant byte by a distance of 8 bytes.
There is also provided in accordance with an embodiment of the present invention a method including providing a random access memory array including a plurality of the byte-banks, wherein each byte-bank is organized in N rows and 8 columns, each byte-bank having a capacity of log2(N) bytes, providing a log2(N) bit address bus operative to address the byte-bank, generating address offsets to bits of the byte-bank with an address conversion operator, and adding addresses of the byte-bank with the generated address offset and outputting a result to the log2(N) bit address.
The method may include performing an unaligned memory access to the byte-banks. The unaligned memory access may include transforming a data word before a memory write or read operation and compensating for the data word rotation with the offsets.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be understood and appreciated more fully from the following detailed description, taken in conjunction with the drawings in which:
FIG. 1 is a simplified schematic illustration of a typical SRAM array of the prior art;
FIG. 2 is a simplified schematic illustration of a memory array, such as but not limited to, an SRAM, constructed and operative in accordance with an embodiment of the present invention, and including row decoders and a column decoder;
FIG. 3 is a simplified schematic illustration of the memory array of FIG. 2, with all the columns permanently selected and the column decoder omitted;
FIG. 4 is a simplified block diagram of a memory partition address distribution, such as a 2 KB 512×64-bit memory partition address distribution, in accordance with an embodiment of the present invention;
FIG. 5 is a simplified block diagram of a data conversion operator for memory write, in accordance with an embodiment of the present invention;
FIG. 6 is a simplified block diagram of a data conversion operator for memory read, in accordance with an embodiment of the present invention;
FIG. 7 is a simplified block diagram of an address conversion operator, in accordance with an embodiment of the present invention; and
FIG. 8 is a simplified block diagram of memory partition internal interleaving, such as a 4 KB memory partition internal interleaving, in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
Reference is now made to FIG. 2, which illustrates a random access memory array 20 (such as but not limited to, SRAM). In the illustrated embodiment, memory array 20 has 8 rows and 8 columns and has a capacity of 64 bits or 8 bytes, but the invention is not limited to these values. Every row may have a dedicated row decoder 22, whereas access to the columns may be controlled by a column decoder 24. The dedicated row decoders 22 may provide a separate access to every byte within the whole data word. In other words, for every column, each and every row can be selected separately.
In the structure of memory array 20, for example, a whole 8-byte word may be accessed in a single data transaction. Referring to FIG. 3, memory array 20 may be constructed wherein all the columns are permanently selected, thereby eliminating the need for the column decoder 24.
The structure of FIG. 3 may serve as a building block (“byte bank”) to organize larger arrays. One non-limiting example is an array of 512 bits, organized with 8×64 memory partitioning. Another example is an array with a memory partition size of 4 KB, which may be organized with the building block arrays of FIG. 3, that is, an array of 512×64 bits. Such an example is shown in FIG. 4, which illustrates a 2 KB 512×64-bit memory partition address distribution, in accordance with an embodiment of the present invention. The SRAM memory partition of FIG. 4 is built from 8 byte-banks 30. Each byte-bank 30 has its own 8-bit data bus and row decoder 32, similar to the building block array of FIG. 3. In FIG. 4, the byte banks 30 and 8-bit data bus and row decoders 32 are numbered from 0 to 7 from the right to the left. A common 9-bit address bus 34 (9 bits, because 29=512) may provide an aligned access to a 64-bit data word in every memory partition row.
Thus, in general, the random access memory array of the present invention includes byte-banks organized in N rows and 8 columns, wherein each byte bank has capacity of log2(N) bytes and is addressed by a log2(N) bit address bus. In the above example, N=512 and each byte bank has capacity of 9 bytes and is addressed by a 9-bit address bus (log2(512)=9). If the memory partition distribution of FIG. 4 is used in an aligned data access, the least significant byte-bank (addresses 0, 8, etc.) may provide the least significant byte and the most significant byte-bank (addresses 7, F, etc.) may provide the most significant byte.
In accordance with an embodiment of the present invention, the memory partition distribution of FIG. 4 can also be used in an unaligned data access. In such a case, the least significant byte may be taken starting from the second byte-bank (1, 9, etc.) or the third byte-bank (2, A, etc.) and so on, whereas the most significant byte may be taken from the first byte-bank (0, 8, etc.) or the second byte-bank (1, 9, etc.) and so on, respectively. Projecting the nonaligned data format on the data bus results in the bytes within the data word being rotated (shifted) depending on the nonaligned address. This shift must be corrected when writing to or reading from memory.
For correction of the data word contents rotation (shift), two data conversion operators may be introduced.
Reference is now made to FIG. 5, which illustrates a data conversion operator for writing to memory, in accordance with an embodiment of the present invention. The first row of the operator function is provided for aligned addressing; hence no conversion is done. The second to eight rows of the operator function relates to the nonaligned addressing on a byte resolution. For example, in the second row, the data words for the D(n) bus of the data bus and row decoder 32 are shifted to the D(n+1) bus (for n=0, 1, 2, . . . 6) and the data word for the D7 bus is shifted to the D0 bus. Similarly, in the third row, the data words for the D(n) bus are shifted to the D(n+2) bus (for n=1, 2, . . . 6), and the data words for the D6 and D7 buses are shifted to the D0 and D1 buses, respectively. The data words, rotated in accordance with the appropriate row of the operator function of FIG. 5, may then be written to the memory.
Reference is now made to FIG. 6, which illustrates a data conversion operator for reading from memory, in accordance with an embodiment of the present invention. The first row of the operator function is provided for aligned addressing; hence no conversion is done. The second to eight rows of the operator function relates to the nonaligned addressing on a byte resolution. For example, in the second row, the data words for the D(n) bus are shifted to the D(n−1) bus (for n=7, 6, 5, . . . 1) and the data word for the D0 bus is shifted to the D7 bus. The data word read from the memory may thus be rotated (shifted) in accordance with the appropriate row of the operator function of FIG. 6.
From the foregoing description of the data word rotation, it may be seen that if the least significant byte of the 64-bit data word is located in the byte- bank 1, 2, 3, etc., the most significant byte is then located in the bank 0, 1, 2, etc., respectively. That is, the most significant byte is shifted from the least significant byte by a distance of 8 bytes in the byte address resolution. In a nonaligned data access, this row offset may be manipulated by the structure of the memory array 20, as shown in FIG. 3. Specifically, the fact that every row has its own dedicated row decoder 22 may be used to manipulate the row addresses of each byte-bank of the memory array and complete the nonaligned data access, as is now explained.
Reference is now made to FIG. 7, which illustrates address conversion operator functionality for the 4 KB memory partition, in accordance with an embodiment of the present invention.
In general, for addressing 4 KB, 12 address bits are needed (212=4096). Among 12 bits of the non-aligned address, the 9-bit component for the aligned access may be extracted from the most significant bits of this address. This component can be used for simultaneous addressing of all byte-banks.
When an unaligned memory access takes place, the 64-bit data word location can be started anywhere in the byte-banks 1 to 7. The 64-bit data word location is defined by the location of its least significant byte and depends on the contents of the three least significant bits of the original 12-bit address. As mentioned hereinabove, a distance of 8 bytes separates the least significant byte of the 64-bit data word from the most significant byte in the byte address resolution. Thus, for the most significant byte or bytes of the unaligned 64-bit data word, the selected memory row is shifted downwards by one row with respect to the memory rows for the least significant byte or bytes in the byte-banks. Therefore, each byte-bank needs a one-bit row offset depending on the starting location of the unaligned 64-bit data word. Such one-bit row offsets may be generated by the address conversion operator shown in FIG. 7 for each byte-bank numbered from 0 to 6 in accordance with all 8 combinations of three least significant buts of the memory partition 12-bit address. No row address offset is required for the byte-bank 7, because it contains the most significant byte of the 64-bit data word only in the case of an aligned access.
Reference is now made to FIG. 8, which illustrates the internal structure of a 4 KB memory partition with unaligned 64-bit access (based on the non-limiting example of FIG. 4), in accordance with an embodiment of the present invention.
FIG. 8 adds to the architecture shown in FIG. 4 the addition of an adder 36 and a one-bit offset address bus 38. All 64 bits from all the byte-banks 30 may be addressed in a single memory transaction. Each byte-bank 30 may have its own one-bit offset address bus 38. In an unaligned memory access, the data words may be rotated (shifted) in accordance with the appropriate row of the operator functions of FIG. 5 (write) or FIG. 6 (read) for each byte-bank 30, resulting in a one-bit shift, as described above. The adder 36 adds the 9-bit word address and the one-bit offset and outputs a 9-bit result to the common 9-bit address bus 34. The common 9-bit address bus 34 may then be used to correctly address each byte-bank 30. (The cascade output of FIG. 8 is generated by the appropriate adder 36 when the byte-bank address wraps the boundary of 0×1FF.) Thus the architecture of FIG. 8 provides correct organization of the random access memories 20 for nonaligned access, such as with a byte resolution.
It will be appreciated by persons skilled in the art that the present invention is not limited by what has been particularly shown and described hereinabove. Rather the scope of the present invention includes both combinations and sub-combinations of the features described hereinabove as well as modifications and variations thereof which would occur to a person of skill in the art upon reading the foregoing description and which are not in the prior art.

Claims (18)

What is claimed is:
1. Memory apparatus comprising:
a byte-bank organized in N rows and 8 columns, having a capacity of log2(N) bytes;
a log2(N) bit address bus operative to address said byte-bank;
an address offset bus operative to generate address offsets to bits of said byte-bank with an address conversion operator; and
an adder in operative communication with said address offset bus and said log2(N) bit address bus, said adder operative to add addresses of said byte-bank with the address offset generated by said address conversion operator and output a result to said log2(N) bit address.
2. The memory apparatus according to claim 1, wherein said address offsets comprise one-bit address offsets.
3. The memory apparatus according to claim 1, further comprising a random access memory array comprising a plurality of said byte-banks.
4. The memory apparatus according to claim 3, wherein for each byte-bank, said address conversion operator is operative to convert an unaligned address on a byte resolution into a log2(N) address on a data word resolution.
5. The memory apparatus according to claim 4, wherein said address offsets comprise one-bit address offsets.
6. The memory apparatus according to claim 1, wherein said address offset comprises shifting the most significant byte from the least significant byte by a distance of 8 bytes.
7. A method comprising:
providing a random access memory array comprising a plurality of said byte-banks, wherein each byte-bank is organized in N rows and 8 columns, each byte-bank having a capacity of log2(N) bytes;
providing a log2(N) bit address bus operative to address said byte-bank;
generating address offsets to bits of said byte-bank with an address conversion operator; and
adding addresses of said byte-bank with the generated address offset and outputting a result to said log2(N) bit address.
8. The method according to claim 7, wherein generating the address offsets comprises generating one-bit address offsets.
9. The method according to claim 7, further comprising, for each byte-bank, converting an unaligned address on a byte resolution into a log2(N) address on a data word resolution.
10. The method according to claim 7, wherein generating the address offsets comprises shifting the most significant byte from the least significant byte by a distance of 8 bytes.
11. The method according to claim 7, further comprising performing an unaligned memory access to said byte-banks.
12. The method according to claim 11, wherein the unaligned memory access comprises transforming a data word before a memory write operation and compensating for the data word rotation with the address offsets.
13. The method according to claim 11, wherein the unaligned memory access comprises transforming a data word before a memory read operation and compensating for the data word rotation with the address offsets.
14. An apparatus comprising:
a memory array comprising a plurality of byte banks, wherein individual ones of the plurality of byte banks have a capacity of a number of bytes; and
a plurality of row decoders, individual of the plurality of row decoders capable of being selectively coupled with the memory array, wherein individual ones of the row decoders are coupled to respective individual ones of the plurality of byte banks;
wherein when selectively coupled to the memory array the plurality of row decoders may be capable of providing nonaligned access to the memory array;
an address bus coupled to the plurality of byte banks, wherein the address bus has a width of a number of bits equal to the number of bytes, and wherein the address bus is configured to address the respective individual ones of the byte banks using the number of bits; and
a plurality of address offset buses, individual ones of the plurality of address offset buses associated with respective individual ones of the plurality of byte banks.
15. The apparatus of claim 14, wherein the memory array comprises an SRAM memory array.
16. The apparatus of claim 14, wherein individual ones of the plurality of address offset buses are 1-bit buses.
17. The apparatus of claim 14, further comprising:
a plurality of adders, wherein individual ones of the plurality of adders are configured to receive a word address and a respective input from one of the plurality of address offset buses, wherein individual ones of the plurality of adders are configured to add the word address and the input received from one of the plurality of address offset buses, and wherein individual ones of the plurality of adders are configured to output an address to the address bus.
18. The apparatus of claim 14, further comprising:
an address conversion operator coupled to the plurality of address offset buses and configured to generate address offsets.
US13/005,225 2004-04-05 2011-01-12 Nonaligned access to random access memory Active 2024-05-12 USRE45000E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/005,225 USRE45000E1 (en) 2004-04-05 2011-01-12 Nonaligned access to random access memory

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/816,849 US6975553B2 (en) 2004-04-05 2004-04-05 Nonaligned access to random access memory
US95630107A 2007-12-13 2007-12-13
US13/005,225 USRE45000E1 (en) 2004-04-05 2011-01-12 Nonaligned access to random access memory

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/816,849 Reissue US6975553B2 (en) 2004-04-05 2004-04-05 Nonaligned access to random access memory

Publications (1)

Publication Number Publication Date
USRE45000E1 true USRE45000E1 (en) 2014-07-08

Family

ID=35054118

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/816,849 Ceased US6975553B2 (en) 2004-04-05 2004-04-05 Nonaligned access to random access memory
US13/005,225 Active 2024-05-12 USRE45000E1 (en) 2004-04-05 2011-01-12 Nonaligned access to random access memory

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/816,849 Ceased US6975553B2 (en) 2004-04-05 2004-04-05 Nonaligned access to random access memory

Country Status (1)

Country Link
US (2) US6975553B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6975553B2 (en) 2004-04-05 2005-12-13 Neomagic Israel Ltd. Nonaligned access to random access memory
US11366774B2 (en) * 2020-09-24 2022-06-21 Adesto Technologies Corporation Memory latency reduction in XIP mode

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US6507534B2 (en) 2000-02-29 2003-01-14 Stmicroelectronics S.R.L. Column decoder circuit for page reading of a semiconductor memory
US20030012066A1 (en) * 2001-07-13 2003-01-16 Peter Poechmueller Memory and method for replacing defective memory cells in the same
US6571327B1 (en) * 1998-09-03 2003-05-27 Parthusceva Ltd. Non-aligned double word access in word addressable memory
US20050219933A1 (en) 2004-04-05 2005-10-06 Georgiy Shenderovich Nonaligned access to random access memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US6571327B1 (en) * 1998-09-03 2003-05-27 Parthusceva Ltd. Non-aligned double word access in word addressable memory
US6507534B2 (en) 2000-02-29 2003-01-14 Stmicroelectronics S.R.L. Column decoder circuit for page reading of a semiconductor memory
US20030012066A1 (en) * 2001-07-13 2003-01-16 Peter Poechmueller Memory and method for replacing defective memory cells in the same
US20050219933A1 (en) 2004-04-05 2005-10-06 Georgiy Shenderovich Nonaligned access to random access memory
US6975553B2 (en) 2004-04-05 2005-12-13 Neomagic Israel Ltd. Nonaligned access to random access memory

Also Published As

Publication number Publication date
US6975553B2 (en) 2005-12-13
US20050219933A1 (en) 2005-10-06

Similar Documents

Publication Publication Date Title
US4845664A (en) On-chip bit reordering structure
US8787081B2 (en) Data path for multi-level cell memory, methods for storing and methods for utilizing a memory array
US5315558A (en) Integrated circuit memory with non-binary array configuration
US5220518A (en) Integrated circuit memory with non-binary array configuration
US6430672B1 (en) Method for performing address mapping using two lookup tables
KR970703596A (en) Single chip controller-memory device and a memory architecture and methods suitable for implementing the same
GB1423397A (en) Multi-dimensional access solid state memory
GB1360930A (en) Memory and addressing system therefor
US20060259729A1 (en) Semiconductor memory device, a sector-address conversion circuit, an address-conversion method, and operation method of the semiconductor memory device
WO2012059121A1 (en) Memory arrangement for accessing matrices
US6035381A (en) Memory device including main memory storage and distinct key storage accessed using only a row address
US6525987B2 (en) Dynamically configured storage array utilizing a split-decoder
US5117428A (en) System for memory data integrity
US6453380B1 (en) Address mapping for configurable memory system
USRE45000E1 (en) Nonaligned access to random access memory
US6807610B2 (en) Method and apparatus for virtually partitioning an integrated multilevel nonvolatile memory circuit
US4163281A (en) Method and apparatus for the rotation of a binary-data matrix, intended particularly to be used as a storage unit having a two-way access mode for electronic computers
JP4004847B2 (en) Associative memory device
KR20010085368A (en) Memory chip and data storage method
CN114627919A (en) Memory module, and semiconductor memory device and memory system including the same
CN114944186A (en) Apparatus, system, and method for multi-pump error correction
US7117407B2 (en) Method for testing a semiconductor memory having a plurality of memory banks
US5276846A (en) Fast access memory structure
US7216215B2 (en) Data access method applicable to various platforms
US6310824B1 (en) Integrated memory with two burst operation types

Legal Events

Date Code Title Description
AS Assignment

Owner name: FAUST COMMUNICATIONS HOLDINGS, LLC, DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NEOMAGIC ISRAEL LTD.;REEL/FRAME:025663/0115

Effective date: 20080213

Owner name: NEOMAGIC ISRAEL LTD., ISRAEL

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHENDEROVICH, GEORGIY;REEL/FRAME:025662/0951

Effective date: 20040222

AS Assignment

Owner name: INTELLECTUAL VENTURES I LLC, DELAWARE

Free format text: MERGER;ASSIGNOR:FAUST COMMUNICATIONS HOLDINGS, LLC;REEL/FRAME:026636/0268

Effective date: 20110718

FPAY Fee payment

Year of fee payment: 12