A method and system for simultaneously reading data from multiple indexed arrays, where each indexed array includes one or more memory locations and is coupled to a multiplexing circuit. Each multiplexing circuit includes one or more multiplexers and is driven by a set of input selector signals. The method includes enabling each multiplexing circuit with a distinct combination of the set of input selector signals. The distinct combinations of the set of input selector signals cause each input selector signal to drive a comparable number of multiplexers. Each multiplexing circuit selects a memory location from the coupled indexed array. Further, the method includes reading the data at the selected memory locations through the output of each multiplexing circuit.
|
7. A memory accessing circuit, comprising:
a plurality of buffer elements that drive a set of input selector signals, wherein the buffer elements are distributed in a pre-defined manner among the set of input selector signals; and
one or more multiplexing circuits driven by the set of input selector signals, wherein each multiplexing circuit is connected to one or more memory locations of an indexed array from a plurality of indexed arrays, wherein the one or more memory locations of the plurality of indexed arrays are used for storing data, wherein the data is selected from the one or more memory locations based on distinct combinations of the set of input selector signals, and wherein indexing of the one or more memory locations of each indexed array of the plurality of indexed arrays is rearranged based on the combinations of the set of input selector signals.
1. A method for simultaneously reading data from a plurality of indexed arrays, each of the plurality of indexed arrays comprising one or more memory locations, each indexed array of the plurality of indexed arrays being coupled to a multiplexing circuit, each multiplexing circuit comprising one or more multiplexers, each multiplexing circuit being driven by a set of input selector signals, the method comprising:
enabling each multiplexing circuit with a distinct combination of the set of input selector signals, wherein each multiplexing circuit selects a memory location from the coupled indexed array; and
reading the data at the selected memory locations through an output of each multiplexing circuit, wherein the distinct combinations of the set of input selector signals are generated by interchanging positions of the set of input selector signals for each indexed array of the plurality of indexed arrays.
2. The method for simultaneously reading data from the plurality of indexed arrays of
3. The method for simultaneously reading data from the plurality of indexed arrays of
4. The method for simultaneously reading data from the plurality of indexed arrays of
5. The method for simultaneously reading data from the plurality of indexed arrays of
6. The method for simultaneously reading data from the plurality of indexed arrays of
8. The memory accessing circuit of
|
The present invention relates generally to integrated circuits, and more specifically, to a method and system for simultaneously reading data from a plurality of indexed arrays.
An Integrated Circuit (IC) is a collection of a plurality of electronic circuits that are connected together on a miniature semiconductor chip. Some examples of ICs are microprocessors, microcontrollers, digital memory chips, and the like. Miniaturization results in enhanced performance of the ICs, since small and closely packed circuits consume less power. Further, these circuits have a faster speed due to shorter paths traced by the circuit connections. Typically, speedier circuits are desirable in memory, to execute instructions at a higher speed, resulting in a faster computational rate.
Generally, memory is organized in the form of memory arrays. Typically, circuits for memory access are designed, based on the array structure of memory. The arrays constituting a memory have indexed memory locations that can store data. Typically, circuits for memory access are multiplexing circuits. These multiplexing circuits can selectively access an indexed memory location, based on a value, over a selector line. Simultaneously accessing memory locations from multiple arrays can result in faster memory access.
Currently, there exist one or more methods for simultaneously accessing memory locations from multiple arrays. One such method uses selector lines to select and access a particular memory location. These selector lines are driven by buffer elements, which improve the strength of the signals on the selector lines. The signals on the selector lines drive the multiplexing circuits, which are arranged hierarchically in one or more levels. Each level comprises one or more multiplexers. An output is selected at each level of hierarchy of the multiplexers, based on the signal value of the input selector signals.
Due to the selections made at each level, a higher hierarchical level has less number of inputs as compared to a lower hierarchical level. This results in the use of fewer multiplexers at the higher hierarchical level. Further, the number of multiplexers driven by each selector line varies because each hierarchical level is driven by a different selector line. Due to this arrangement, selector lines that drive a greater number of multiplexers have a larger critical path. This increases the time taken to access the memory. Further, the number of buffer elements required to drive the selector lines at each hierarchical level also varies, resulting in a large chip area being occupied by the buffer elements.
Therefore, in light of the above, it is desirable to reduce the memory access time and decrease the chip area. Consequently, there is a need for a method and system that enables simultaneous reading of data from multiple arrays in comparatively reduced time. Further, the method and system should also utilize less chip area as compared to existing methods.
The following detailed description of the preferred embodiments of the present invention will be better understood when read in conjunction with the appended drawings. The present invention is illustrated by way of example, and not limited by the accompanying figures, in which like references indicate similar elements.
The detailed description, in connection with the appended drawings, is intended as a description of the presently preferred embodiments of the present invention, and is not intended to represent the only form in which the present invention may be practiced. It is to be understood that the same or equivalent functions may be accomplished by different embodiments that are intended to be encompassed within the spirit and scope of the present invention.
In an embodiment of the present invention, a method for simultaneously reading data from a plurality of indexed arrays is provided. Each indexed array of the plurality of indexed arrays includes one or more memory locations. Each indexed array is coupled to a multiplexing circuit that includes one or more multiplexers. Each multiplexing circuit is driven by a set of input selector signals. The method includes enabling each multiplexing circuit with a distinct combination of the set of input selector signals. Each multiplexing circuit selects a memory location from the corresponding coupled indexed array. The method also includes reading the data at the selected memory locations through the output of each multiplexing circuit. In one embodiment, each multiplexing circuit selects the same index from the coupled indexed arrays, corresponding to the set of input selector signals.
In another embodiment of the present invention, a memory accessing circuit is provided. The memory accessing circuit includes a plurality of buffer elements that drive a set of input selector signals. The buffer elements from thee plurality of buffer elements are organized in a pre-defined manner among the set of input selector signals. The memory accessing circuit also includes one or more multiplexing circuits that are driven by the set of input selector signals. Each multiplexing circuit is connected to one or more memory locations of an indexed array from a plurality of indexed arrays.
The one or more memory locations of the plurality of indexed arrays are used to store data. The data is selected from the one or more memory locations, based on distinct combinations of the set of input selector signals.
Embodiments of the present invention provide a method and system for simultaneously reading data from a plurality of indexed arrays. The present invention utilizes distinct combinations of a set of input selector signals to enable/drive a plurality of multiplexing circuits. The distinct combinations of the set of input selector signals cause each input selector signal to drive a comparable number of multiplexers. This can result in a reduction in the fan-out of a worst-hit input selector signal of the set of input selector signals. The fan-out of the worst hit input selector signal is distributed uniformly among the set of input selector signals. The reduction in the fan-out further reduces the timing delay from each input selector signal to the multiplexing circuits. The balancing of the fan-out also results in a reduction in the capacitive load on each of the input selector signals and reduced utilization of buffer elements for the set of input selector signals. As a result of the decrease in the number of buffer elements being used, the multiplexing circuits occupy a reduced chip area.
Referring now to
In an embodiment of the present invention, the one or more multiplexers in each multiplexing circuit are arranged hierarchically into multiple levels. Each hierarchical level derives its input from the output of a lower hierarchical level. Each multiplexing circuit is enabled by a distinct combination of the set of input selector signals, which are input to the hierarchical levels of each multiplexing circuit. Each multiplexing circuit selects the one or more memory locations from the plurality of indexed arrays 110. The one or more memory locations are selected, depending on the value of the set of input selector signals. The selected memory locations are read at the output of the corresponding multiplexing circuits that are coupled to the plurality of indexed arrays 110. In one embodiment of the invention, each multiplexing circuit 108 selects the same index from the coupled indexed arrays 110, corresponding to the set of input selector signals.
Referring now to
Referring now to
Each indexed array of the plurality of indexed arrays 302 is coupled to a multiplexing circuit. The multiplexing circuits 304, 306, 308 and 310 can include one or more multiplexers. Examples of the multiplexers include, but are not limited to, 2-to-1 multiplexers, 4-to-1 multiplexers, 2-to-4 decoders, 3-to-8 decoders, and the like. The one or more multiplexers can be arranged in multiple levels of hierarchy. A typical arrangement of multiplexers is shown in
The set of input selector signals is used to select an output through each of the multiplexing circuits 304, 306, 308 and 310. The set of input selector signals include index(0), index(1), index(2) and index(3) Each selector signal from the set of input selector signals drives a particular level of hierarchy. For example, as shown in
The buffer elements are used to increase the drive strength of the set of input selector signals. The number of buffer elements used for a particular input selector signal is based on the number of multiplexers the input selector signal is driving at a particular level of hierarchy. For example, as shown in
The set of input selector signals can select a memory location from the one or more memory locations in each indexed array. The data at the selected memory location is read as the output from the multiplexing circuits 304, 306, 308 and 310. As shown in
Referring now to
The indexed arrays 410, 412, 414 and 416 are coupled to the multiplexing circuits 418, 420, 422 and 424, respectively. The multiplexing circuits 418 through 424 include one or more multiplexers that are arranged hierarchically in one or more levels. Examples of the one or more multiplexers include, but are not limited to, 2-to-1 multiplexers, 4-to-1 multiplexers, 3-to-8 decoders, and the like. In an embodiment of the present invention, the number of levels of hierarchy in the multiplexing circuits 418 through 424 is based on the number of indices in the indexed arrays 410 through 416. In another embodiment of the present invention, the number of levels of hierarchy in the multiplexing circuits 418 through 424 is based on the number of inputs the one or more multiplexers in the multiplexing circuits 418 through 424 are configured to receive. For example, a multiplexing circuit utilizing 4-to-1 multiplexers has fewer multiplexers at each level of hierarchy, as compared to a multiplexing circuit utilizing 2-to-1 multiplexers. The levels of hierarchy in the multiplexing circuits 418 through 424 are driven by a set of input selector signals buf(0), buf(1), buf(2) and buf(3). The set of input selector signals 402, 404, 406 and 408 pass through the plurality of buffer elements 426 prior to driving the multiplexing circuits.
In an embodiment of the present invention, the plurality of buffer elements 426 are utilized to increase the strength of the set of input selector signals 402 through 408 to drive the levels of hierarchy of the multiplexing circuits 418 through 424. The buffer elements are distributed in a pre-defined manner among the set of input selector signals 402 through 408, to drive the multiplexing circuits 418 through 424. In an embodiment of the present invention, the buffer elements can be distributed equally among each input selector signal in a pre-defined manner. The use of an equal number of buffer elements causes a reduction in the fan-out of the worst-hit input selector signal index(0), as described in conjunction with
In an embodiment of the present invention, distinct combinations of the set of input selector signals can be generated by interchanging the positions of the set of input selector signals buf(0), buf(1), buf(2) and buf(3) for each of the multiplexing circuits 418 through 424. For example, distinct combinations of the set of input selector signals buf(O), buf(1), buf(2) and buf(3) can be obtained by arranging the set of input selector signals buf(0), buf(1), buf(2) and buf(3) in a round-robin manner to each of the multiplexing circuits 418 through 424, as shown in
In an embodiment of the present invention, indexing of the one or more memory locations starts from zero, as shown in
The set of input selector signals buf(0), buf(1), buf(2) and buf(3) can select a memory location from the one or more memory locations in each indexed array. Data at the selected memory location is read as the output from the multiplexing circuits 418 through 424. As shown in
Referring now to
At step 504 each multiplexing circuit is enabled with a distinct combination of the set of input selector signals. A typical example has been described in conjunction with
At step 506, indexing of the plurality of indexed arrays is rearranged, based on the distinct combinations of the set of input selector signals. For example, as shown in
At step 508, a memory location of the one or more memory locations of each indexed array of the plurality of indexed arrays is selected. The selection of memory locations from the one or more memory locations of the plurality of indexed arrays is based on distinct combinations of the set of input selector signals applied to each multiplexing circuit. For example, if logic level 1001 is applied to the set of input selector signals 402 through 408, respectively, data at the ninth memory location is selected from the indexed array 410, data at the 12th memory location is selected from the indexed array 412, data at the sixth memory location is selected from the indexed array 414, and data at the third memory location is selected from the indexed array 416.
At step 510, data at the selected memory location is read through the output of each multiplexing circuit. For example, data is read through the outputs (out(0), out(1), out(2) and out(3)) of the multiplexing circuits 418 through 424. Thereafter, the method for simultaneously reading a plurality of indexed arrays is terminated.
While various embodiments of the present invention have been illustrated and described, it will be clear that the present invention is not limited to these embodiments only. Numerous modifications, changes, variations, substitutions and equivalents will be apparent to those skilled in the art, without departing from the spirit and scope of the present invention, as described in the claims.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6822976, | Nov 03 1999 | Intel Corporation | Method and apparatus for high throughput multiplexing of data |
6914450, | Nov 06 2003 | International Business Machines Corporation | Register-file bit-read method and apparatus |
7095658, | Apr 10 2003 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Flash memory data bus for synchronous burst read page |
7184322, | Nov 13 2003 | Renesas Electronics Corporation | Semiconductor memory device and control method thereof |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 18 2007 | ROY, SOURAV | Freescale Semiconductor, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019336 | /0113 | |
May 24 2007 | Freescale Semiconductor, Inc. | (assignment on the face of the patent) | / | |||
Jul 18 2007 | Freescale Semiconductor, Inc | CITIBANK, N A , AS COLLATERAL AGENT | SECURITY AGREEMENT | 020045 | /0448 | |
Feb 19 2010 | Freescale Semiconductor, Inc | CITIBANK, N A | SECURITY AGREEMENT | 024085 | /0001 | |
Apr 13 2010 | Freescale Semiconductor, Inc | CITIBANK, N A , AS COLLATERAL AGENT | SECURITY AGREEMENT | 024397 | /0001 | |
May 21 2013 | Freescale Semiconductor, Inc | CITIBANK, N A , AS NOTES COLLATERAL AGENT | SECURITY AGREEMENT | 030633 | /0424 | |
Nov 01 2013 | Freescale Semiconductor, Inc | CITIBANK, N A , AS NOTES COLLATERAL AGENT | SECURITY AGREEMENT | 031591 | /0266 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 053547 | /0421 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 053547 | /0421 | |
Dec 07 2015 | CITIBANK, N A , AS COLLATERAL AGENT | Freescale Semiconductor, Inc | PATENT RELEASE | 037354 | /0655 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 041703 | /0536 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 037486 | /0517 | |
May 25 2016 | Freescale Semiconductor, Inc | MORGAN STANLEY SENIOR FUNDING, INC | SUPPLEMENT TO THE SECURITY AGREEMENT | 039138 | /0001 | |
Jun 22 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052915 | /0001 | |
Jun 22 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040928 | /0001 | |
Jun 22 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052915 | /0001 | |
Sep 12 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP, B V F K A FREESCALE SEMICONDUCTOR, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052917 | /0001 | |
Sep 12 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP, B V F K A FREESCALE SEMICONDUCTOR, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052917 | /0001 | |
Sep 12 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP, B V , F K A FREESCALE SEMICONDUCTOR, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040925 | /0001 | |
Nov 07 2016 | Freescale Semiconductor Inc | NXP USA, INC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 040652 | /0180 | |
Nov 07 2016 | Freescale Semiconductor Inc | NXP USA, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180 ASSIGNOR S HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME | 041354 | /0148 | |
Feb 17 2019 | MORGAN STANLEY SENIOR FUNDING, INC | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536 ASSIGNOR S HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 048734 | /0001 | |
Feb 17 2019 | MORGAN STANLEY SENIOR FUNDING, INC | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536 ASSIGNOR S HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 048734 | /0001 | |
Sep 03 2019 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 050744 | /0097 |
Date | Maintenance Fee Events |
Sep 07 2010 | ASPN: Payor Number Assigned. |
Sep 07 2010 | RMPN: Payer Number De-assigned. |
Mar 07 2014 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 12 2017 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Dec 14 2021 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 07 2013 | 4 years fee payment window open |
Mar 07 2014 | 6 months grace period start (w surcharge) |
Sep 07 2014 | patent expiry (for year 4) |
Sep 07 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 07 2017 | 8 years fee payment window open |
Mar 07 2018 | 6 months grace period start (w surcharge) |
Sep 07 2018 | patent expiry (for year 8) |
Sep 07 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 07 2021 | 12 years fee payment window open |
Mar 07 2022 | 6 months grace period start (w surcharge) |
Sep 07 2022 | patent expiry (for year 12) |
Sep 07 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |