1. Technical Field
The present invention relates to a memory device for recording two-dimensionally arrayed data including digital image data, a memory controller of the memory device, and a memory system. Particularly, the present invention relates to a memory device, memory controller and memory system for increasing an effective bandwidth indicating the number of data items that can be processed per unit time.
2. Prior Art
The market size of the memory devices for recording two-dimensionally arrayed data, like digital image data, has been gradually increasing along with the popularization of video distribution through digital broadcasting or the Internet. Digital image data is a group of data obtained by constituting gradation information of pixels using a plurality of bits (e.g., 256 gradation levels of 8 bits). For example, one frame of image data for high-definition broadcasting is constituted by 1920×1040 pixels. Each frame of this image data is arranged in an address space within image memory in accordance with a predetermined mapping method.
Such memory mapping is defined so that the most efficient access can be made, on the basis of the configuration and operation of synchronous DRAM (SDRAM) that is presently popular. For example, SDRAM has a plurality of banks, and each bank has a plurality of word lines and bit lines, a plurality of memory cells that are at the intersections of the word lines and bit lines, and sense amplifiers corresponding to the bit lines. The plurality of banks can independently execute active operation. The active operation performed in the SDRAM is a series of operations for selecting a word line and activating the corresponding sense amplifier on the basis of a row address. Further, read operation performed in the SDRAM is a series of operations for outputting a bit-line potential as read data to an input/output terminal on the basis of a column address, the bit-line potential being amplified by the sense amplifier, while write operation is a series of operations for inputting selected write data, which is inputted from the input/output memory, to a bit line that is selected based on the column address.
An address space within a memory of the SDRAM is constituted by a plurality of page areas each of which can be selected by a bank address and a row address, and each of the page areas has a group of bits or a group of bytes that can be selected by a column address. The group of bytes (or the group of bits) that are selected by the column address are inputted/outputted via a plurality of input/output terminals.
According to a generally known mapping method, a pixel of digital image data is associated with each byte (or bits) of the group of bytes (or the group of bits) that can be selected by the column address within a page area. Moreover, according to this mapping method, each of the banks of the SDRAM can independently execute the active operation and the read or write operation, thus the plurality of page areas associated with an arrangement of pixels of the digital image data are arranged so that page areas that are vertically and horizontally adjacent to each other on the image correspond to different bank addresses respectively. For example, if the SDRAM is constituted by four banks, the page areas corresponding to bank addresses BA=0, 1 are alternately arranged in the odd-numbered rows, while the page areas corresponding to bank addresses BA=2, 3 are alternately arranged in the even-numbered rows. By arranging the page areas in this manner, when reading or writing one frame of image data, different banks can execute the active operation and the read or write operation alternately and temporally overlapped, and a bandwidth, which is the number of processable pixels per a unit time, can be increased remarkably.
Patent Documents 1 and 2 describe that the access efficiency is improved by allowing simultaneous access to a plurality of rows in a semiconductor memory for storing image data.
Furthermore, Patent Document 3 describes a memory device that is provided with a sub-array selection circuit for performing control to activate, simultaneously, a sub-array allocated to an input row address and a sub-array allocated to a row address right above the input row address, in order to solve the increased reading time and power consumption since the data in every other row need to be read when using the DRAM in image expansion processing. However, Patent Document 3 is designed to enhance the efficiency of horizontal accesses that are made continuously in a row direction of the image, and thus does not describe the rectangular access.
Moreover, Patent Document 4 describes a data processing system in which a bus controller issues an address active command, in response to an access instruction sent from a data processing section, to a storage area different from a storage area accessed in a burst mode, and thereby setting of an access address is made possible. Specifically, while the memory controller activates and accesses one bank, an active command is issued to other bank to perform active operation before hand on this bank, whereby acceleration of read/write operation can be realized.
Also, Patent Document 5 discloses an image processing device having: an image memory; and a control unit for continuously generating a column address while accessing an arbitrary bank, to continuously access an arbitrary address within the same page, and row-activating a bank to be subsequently accessed in advance and thereby immediately accessing the bank to be newly accessed even if accessed bank is switched to another bank. Specifically, there is described that the memory controller has an address order prediction circuit to predict a bank to be subsequently accessed and issue an active command to the memory.
[Patent Document 1] Japanese Unexamined Patent Publication No. 2001-312885
[Patent Document 2] Japanese Unexamined Patent Publication No. H08-180675
[Patent Document 3] Japanese Unexamined Patent Publication No. h09-231746
[Patent Document 4] Japanese Unexamined Patent Publication No. 2002-132577
[Patent Document 5] Japanese Unexamined Patent Publication No. H10-105367
A memory device for storing digital image data and the like requires: a horizontal access in which writing and reading image data are performed in order of arrangement of a matrix of pixels; and a rectangular access in which writing and reading image data are performed on a partial rectangular area of the matrix of pixels. The horizontal access corresponds to a raster scanning operation for writing or reading one frame of image data by repeatedly performing horizontal scanning of the image data. Further, the rectangular access corresponds to an operation for reading a small rectangular block of image data to obtain a motion vector when performing an operation of encoding, for example, an MPEG file, or corresponds to an operation for reading and writing a block of image data when reproducing an image by means of a decoding operation.
However, since the image data of a pixel is stored in an address space of a memory by means of the above-mentioned mapping method, the problem is that an effective bandwidth is decreased when the rectangular access is made. First of all, a group of bytes, i.e., a plurality of bytes (or a plurality of bits) is accessed simultaneously by column addresses in the page area selected by the bank addresses and row addresses. However, in the case where a rectangular area to be accessed using the rectangular access does not match with the plurality of bytes (or the plurality of bits) that are selected by the column addresses, unnecessary input/output data is generated when access is made by one column address. Secondly, in the case where the rectangular image area to be accessed using the rectangular access does not match with the page area within the address space, access needs to be made to a plurality of page areas exceeding the boundary of page areas, requiring complicated memory control accordingly.
The abovementioned first and second problems bring further complicated memory control and decrease of an effective bandwidth if the rectangular image area as a target of access does not match with the page areas as well as a plurality of bytes (or a plurality of bits) selected by the column addresses.
An object of the present invention, therefore, is to provide a memory device that solves the above problems caused in the rectangular access of the memory device, a memory controller of the memory device, and a memory system.
In order to achieve the above object, a first aspect of the present invention is a memory device having: a plurality of banks, each of which has a memory cell array having a plurality of page areas that are selected by row addresses respectively, and each of which is selected by a bank address; a row controller that controls activation of the page areas within each of the banks in response to a first operation code; and a group of data input/output terminals. A memory unit area within each of the activated page areas is accessed based on a column address, the row controller generates bank activation signals for the plurality of banks in response to multi-bank information data and a supplied bank address that are supplied along with the first operation code, and generates a row address of each of the plurality of banks in accordance with the supplied bank address and a supplied row address. The plurality of banks activate the page areas in response to the bank activation signal and the row addresses generated by a row address calculator.
According to the first aspect described above, the plurality of banks indicated by the multi-bank information data can be activated in response to a single first operation code, thus, in a subsequent column access, desired data can be accessed from the plurality of banks. Therefore, it is possible to improve the efficiency of access made to the data of an area straddling the plurality of banks in two-dimensionally arrayed data items.
In order to achieve the above object, a second aspect of the present invention is a memory device that stores a plurality of data items and accesses the stored data items in response to a bank address, a row address and a column address, the memory device having:
a plurality of banks, each of which has a memory cell array having a plurality of page areas that are selected by row addresses respectively, and each of which is selected by a bank address;
a row controller that controls activation of the page areas within each of the banks in response to a first operation code;
a group of data input/output terminals; and
an input/output unit that is provided between the memory cell array and the plurality of input/output terminals, wherein
a memory unit area within each of the activated page areas is accessed based on the column address,
the row controller has a multi-bank activation controller that generates a bank activation signal for each of the plurality of banks in response to multi-bank information data, that is supplied along with the first operation code, and a supplied bank address, and a row address calculator that generates the row address of each of the plurality of banks in response to the supplied bank address and a supplied row address,
the plurality of banks activate the page areas in response to the bank activation signals and the row addresses generated by the row address calculator,
a plurality of bytes or bits of data corresponding to the plurality of input/output terminals are stored in the memory unit area, and
the memory cell array and the input/output unit accesses a first memory unit area corresponding to the column address in a first bank of the supplied bank address, and to a second memory unit area that is within a second bank adjacent to the first bank and is adjacent to the first memory unit area, on the basis of information on a combination of the bytes or bits in response to a third operation code, and, from the plurality of bytes or bits within the accessed first and second memory unit areas, associates a combination of a plurality of bytes or bits based on the combination information, with the plurality of input/output terminals.
According to the second aspect described above, in the case of accessing the area straddling the plurality of banks of the two-dimensionally arrayed data items, and accessing an arbitrary combination of a plurality of byte or bit data items within each of the plurality of memory unit areas, the number of times that the first operation code is issued can be reduced, and invalid data to be inputted/outputted can be eliminated, whereby the access efficiency can be improved.
In order to achieve the above object, according to a third aspect of the present invention, a memory system has: the memory device of the first aspect; and a memory controller that includes a command/address generating section for supplying the multi-bank information data to the memory device, supplying the first operation code once along with the bank address and the row address, and thereafter supplying, a number of times, the bank address and the column address along with a third operation code to the plurality of activated banks; and that reads or writes data from or to the memory device.
In order to achieve the above object, a fourth aspect of the present invention is a memory controller that controls the memory device described above, the memory controller having a command/address generating section that supplies the multi-bank information data to the memory device, supplies the first operation code once along with the bank address and the row address, and thereafter supplies, a number of times, the bank address and the column address along with a second operation code to the plurality of activated banks, and reading or writing data from or to the memory device.
According to the present invention, the plurality of banks storing data to be accessed can be activated in response to a single first operation code, thus the access efficiency can be improved.
Embodiments of the present invention are described with reference to the drawings. However, the technical field of the present invention is not limited to these embodiments, and thus covers the matters described in the patent claims and equivalents thereof.
[Memory Mapping of Image Memory, and Problems involved in the Mapping Memory]
Meanwhile, the image memory 15 is generally constituted by a high-capacity and high-speed semiconductor memory device in which an integrated circuit is formed on a semiconductor substrate such as SDRAM. Such image memory is constituted by a plurality of banks Bank 0 through 3 (four banks as shown in
According to the memory mapping 12 for the display image data, page areas 14, each of which is specified by the bank address BA and row address RA, are placed in rows and columns. As shown in an enlarged area 14E, one page area 14 has 128 memory unit areas that are specified by the column addresses CA0 through 127, and each of the memory unit areas stores the 4 bytes of data items, BY 0 through 3. The 4 bytes of data items, BY 0 through 3, are inputted/outputted via a total of 32 input/output terminals of a memory, i.e., via input/output terminals DQ 0 through 7, DQ 8 through 15, DQ 16 through 23, and DQ 24 through 31. 8-bit data of each byte corresponds to signal data of a pixel.
The memory map 12 is suitable for operating, at high speed, the image memory 15 such as the SDRAM constituted by a plurality of banks. In response to an active command provided along with both the bank address BA and the row address RA, the SDRAM performs the active operation that drives the selected word line within the selected bank, reads the data stored in a memory cell into the bit line, activates the sense amplifier associated with the bit line to amplify the bit line potential, and thereafter, in response to a read command provided along with the column address CA, performs the read operation for reading the data from the selected bit line. Alternatively, after performing the active operation the SDRAM responds to a write command provided along with the column address CA and write data, to perform the write operation for writing the write data into the selected bit line. Precharge operation using a precharge command is performed after the read operation or the write operation, and then the active operation and the read or write operation are performed again. In this manner, in the SDRAM each bank can independently perform the active operation, read operation and write operation.
According to the memory map 12 shown in
By adopting the memory mapping for allocating the page areas on an image without causing the page areas having the same bank to be adjacent to each other in the row direction or the column direction, the horizontal access that is a representative access made to the image memory, i.e., the access in which the page areas 14 are moved in the row direction and one page area is selected, can be made to the image memory, while the active operation and the read/write operation are executed simultaneously by using two banks, whereby the access efficiency can be improved. The same is true for the case where the image memory is accessed in a vertical direction.
Generally, in an image system using an image memory, the transfer rate of transferring the image memory, which is a frame memory, is set faster than the speed of image display operation, so that, while the image data read by horizontally accessing the image memory is displayed on a screen, new frame data is created by means of the rectangular access, and that frame data is continuously created and outputted. Therefore, both horizontal access and rectangular access are made in an actual image system.
In the horizontal access, scanning is performed in the horizontal direction 20, thus memory access can be made efficiently, while activating adjacent banks simultaneously. In the rectangular access, on the other hand, the position of the rectangular area 22 to be accessed is not caused to go beyond a single bank and a page area within the bank, whereby the data within the rectangular area 22 can be accessed by performing single active operation for specifying the bank address BA and the row address RA, thus efficient memory access can be performed, as with the horizontal access.
A burst length BL is set to 4 as a premise. When the active operation is performed on the page area with BA 0/RA 4 by an active command ACT 32 and an instruction is issued by a read command RD 33 to read the page area with BA 0/CA 0, four 32-bit data items are successively outputted from the input/output terminals DQ in four clock cycles after a predetermined latency (four clock in the figure). Specifically, each of the four 32-bit data items in the respective column addresses CA 0 through 3 within the page area BA 0/RA 4 is outputted four times successively. This burst operation is required to the SDRAM as a standard. The above-described operation suggests that each 4 byte (32-bit) data item of each of the column addresses CA 0 through 3 within the page area 14E enlarged in
Next, 4 bytes of data items of the page area BA 1/RA 4 are outputted by means of an active command ACT 34 and a read command RD 35. Similarly, 4 bytes of data items of the page area BA 0/RA 5 are outputted by means of an active command ACT 36 and a read command RD 37, and 4 bytes of data items of the page area BA 1/RA 5 are outputted by means of an active command ACT 38 and a read command RD 39.
At this point, when an automatic refresh command AREF 40 for specifying a row address RA 6 is generated, the SDRAM memory configuring the image memory executes a refresh operation on all incorporated banks, i.e., four banks BA 0 through 3, in parallel. Specifically, the word lines of the respective row addresses RA 6 within the respective four banks are driven simultaneously, the corresponding sense amplifiers are activated, rewriting is performed, and then the precharge operation is performed. This refresh operation is performed on four page areas 31 within the memory map 12 shown in
Since the refresh operation is performed for four banks simultaneously by means of the refresh command AREF, the horizontal access is stopped temporarily when the refresh command is generated while the horizontal access is made, thus the effective bandwidth becomes narrow. This is the problem occurring in the horizontal access.
Therefore, although the horizontal access is made relatively economically, unnecessary input/output of data occurs in the rectangular access, thus the effective bandwidth decreases.
In the horizontal access shown in
On the other hand, in the rectangular access shown in
As described above, even if the data to be accessed has the same number of bytes, in the rectangular access 24 bytes of data need to be inputted/outputted by sending the read command RD six times, but in the horizontal access 16 bytes of data may be inputted/outputted by sending the read command RD four times. Therefore, in the rectangular access that exceeds the boundary of the 4-byte area (memory unit area) 45 selected by a single column address, the effective bandwidth decreases. This is the first problem of the rectangular access.
In the case of the rectangular area 22(A), 16 bytes of data can be inputted/outputted by issuing an active command ACT (50 in the figure) once for the page area BA 1/RA 6 and a read command RD (52 in the figure) four times for the column addresses CA 6, 7, 10 and 11, as shown in the timing chart.
In the case of the rectangular area 22(B), on the other hand, 16 bytes of data cannot be inputted/outputted unless an active command ACT (54 in the figure) is issued four times for the page areas BA 3/RA 2, BA 2/RA 3, BA 1/RA 6 and BA 0/RA 7 and unless a read command RD (56 in the figure) is issued four times for the column addresses CA 127 (BA 3), CA 124 (BA 2), CA 3 (BA 1) and CA 0 (BA 0), as shown in the timing chart. Specifically, in the case where the rectangular area 22 includes adjacent page areas, the active commands ACT are issued a number of times in order to perform the active operation on different banks, and the read commands RD or write commands WR have to be issued for the column addresses within the respective banks. Therefore, the amount of data that can be accessed per unit time is reduced, and the effective bandwidth is narrowed.
In the case where the rectangular area 22(B) shown in
As described above, in the case of adopting the memory mapping, that utilizes the structural characteristics of the SDRAM, in the image memory, there are the first problem in which the horizontal access is stopped due to the occurrence of the refresh command when the horizontal access is performed, the second problem in which unnecessary input/output data is generated when the rectangular access area exceeds the boundary of the memory unit area (4-byte area) selected by a column address, and a third problem in which a plurality of bank active commands are required to be issued when the rectangular access area exceeds the boundary of the page areas specified by the bank addresses.
Hereinafter, configurations and operations for solving these problems are described briefly.
The present embodiment is to solve the discontinuation of the access that is caused by the refresh operation, the decrease of the access efficiency that is caused by the rectangular access, and other problems, wherein, first of all, the refresh operation can be performed in the background along with an access operation at the time of the horizontal access, secondly, at the time of the rectangular access, a function of efficiently accessing an area straying from or exceeding the memory unit (4-byte area) selected by a column address is made possible, and, thirdly, a function of efficiently accessing a rectangular area exceeding the boundary of the page areas and containing a plurality of page areas is made possible.
In this case, in the rectangular access, access is generated in an arbitrary bank of the memory, while, in the horizontal access, access is generated only in a predetermined bank for a certain period of time. For example, in the horizontal access in the first row of the memory map 12, access is generated only in the banks BA 0 and 1, and no access is generated in the banks BA 2 and 3 in the second row. On the other hand, in the horizontal access in the second row, access is generated only in the banks BA 2 and 3, and no access is generated in the banks BA 0 and 1 in the first row.
Therefore, in the horizontal access 20-1, a background refresh command BREN for specifying a bank in which no access is generated for some time to come is issued before memory access is made, and information of the bank in which no access is generated, SA=2/3, is notified to the memory. Specifically, subsequent automatic refresh operation is allowed in the bank SA specified by the background refresh command BREN. Therefore, normal access is not allowed to the bank SA=2, 3 to which the refresh operation is applied.
In the horizontal access 20-1 shown in
During the period of this horizontal access 20-1, when an automatic refresh request (not shown), which is activated by the background refresh command BREN within the image memory, is issued, the refresh operation is started on the banks BA 2 and 3. However, in the horizontal access, access is generated only in the banks BA 0 and 1 and different banks can independently perform the active operation in the SDRAM, thus the horizontal access can be prevented from being disturbed and stopped by the refresh operation performed on the banks BA 2 and 3.
Next, in the rectangular access shown in
However, in the present embodiment, a read command RD (62 in the figure) is issued to the column address CA 0 (63 in the figure), and byte combination information SB (64 in the figure) on the access is supplied, whereby 4 bytes corresponding to the byte combination information SB can be automatically associated with the input/output terminal DQ. In the example described above, byte shift information SB=2, which means the bytes following 2 bytes, is specified as the byte combination information SB, whereby, out of the 4 bytes of data items of the column address CA 0, the data items of the bytes BY 2 and 3 subsequent to the 2 bytes are automatically outputted along with the data items of the first two bytes BY 0 and 1 of the 4 bytes of data items of the adjacent column address CA 1.
In the rectangular access shown in
Furthermore, when the read command RD specifying BA 2/CA 4 is issued along with the combination information SB=2, the image memory outputs 4 bytes of data constituted by 2 bytes of data of column addresses CA 4 and 5. When the read command RD specifying BA 2/CA 8 is issued along with the combination information SB=2, the image memory outputs 4 bytes of data constituted by 2 bytes of data of column addresses CA 8 and 9. When the read command RD specifying BA 2/CA 12 is issued along with the combination information SB=2, the image memory outputs 4 bytes of data constituted by 2 bytes of data of column addresses CA 12 and 13.
As a result, even if the rectangular access area 22 includes the memory unit areas (four byte areas) of the eight column addresses CA 0, 1, 4, 5, 8, 9, 12 and 13, it is only necessary to issue the read command RD to the column addresses CA 0, 4, 8 and 12 four times, and unnecessary data is not outputted to the input/output terminals, thus the access efficiency can be improved by two times.
In the horizontal access 20-2 subsequent to the rectangular access, since the page areas in the second row of the memory map 12 are accessed, thus normal access is not generated in the banks BA 0 and 1 for a while. Therefore, as with the above explanation, SA=1 is specified along with the background refresh command BREN (65 in the figure) as the bank information SA on a bank (66 in the figure) in which the fresh operation can be performed, and the automatic refresh operation is allowed in the banks BA 0 and 1 in parallel with normal access to the subsequent banks BA 2 and 3.
As described above, the horizontal accesses 20-1 and 20-2 allow the automatic refresh operation in the background when normal access is made, but the rectangular access does not allow the automatic refresh operation in the background. As a result, in the horizontal access 20-1, the normal access operation can be performed in the banks BA 0 and 1 in parallel with the refresh operation in the banks BA 2 and 3, and in the horizontal access 20-2, the normal access operation can be performed in the banks BA 2 and 3 in parallel with the refresh operation in the banks BA 0 and 1. Accordingly, the horizontal accesses can be prevented from being disturbed by the refresh operation, and the effective bandwidth can be prevented from decreasing.
Furthermore, in the rectangular access, the background refresh operation is prohibited. Accordingly, the rectangular access made to an arbitrary area can be prevented from being stopped by the refresh operation. Therefore, the effective bandwidth can be totally prevented from decreasing.
Also, in the rectangular access, the byte combination information SB is specified along with the read command, whereby combined byte data, which is obtained by combining arbitrary bytes with a column address CA of the read command as a start area, can be outputted to the 4 bytes of input/output terminals DQ. The byte combination information SB can also be specified along with a command for setting a mode register in advance of the active command.
As with
In the example of the rectangular access shown in
If the multi-bank information SA′ indicates “two banks in the lateral direction”, a bank on the right side of an upper left bank corresponding to the bank address BA supplied by the active command ACT is also subjected to the active operation simultaneously. If the multi-bank information SA′ indicates “two banks in the vertical direction”, a bank that is located below the upper left bank is also subjected to the active operation simultaneously. Similarly, if the multi-bank information SA′ indicates “four banks in the lateral and vertical directions”, four banks that are located on the right side, below, and on the lower right side of the upper left bank are also subjected to the active operation simultaneously. Therefore, in order to perform the active operation automatically on multiple banks, it is preferred to previously set, in the register or the like, information indicating how the row addresses RA in the respective rows of the memory map are arranged, or indicating, specifically, in what unit the row addresses RA are wrapped (row address step information).
In the rectangular access method shown in
The image processing chip 80 has: an image processing controller 81 for performing image processing, such as an encoder or decoder that responds to image compression and expansion of, for example, MPEG; and a memory controller 82 for controlling an access to the image memory chip 86 in response to a memory access request that includes image area specification issued from the image processing controller 81. The memory controller 82 has: a background refresh controller 84 for controlling the background refresh operation in the horizontal access; a byte boundary controller 85 for controlling an access to an arbitrary combination of bytes in the memory unit area (4-byte area) in the rectangular access; and a multi-bank activating controller 83 for controlling accesses to a plurality of areas in the rectangular access. By performing these control operations, commands required in each operation, bank addresses, row addresses, column addresses, byte combination information SB, refresh bank information SA, multi-bank information SA′ and the like are issued to the image memory 86.
The image memory 86 has a plurality of banks Bank 0 through 3 within memory core 92, and further has a row controller 87 for controlling mainly the active operation, a column controller 90 for controlling the read or write operation, and a background refresh controller 89, there controllers performing control with respect to the memory core 92. The row controller 87 has a multi-bank activation controller 88, and the column controller 90 has a byte boundary controller 91. A row decoder RowDec, column decoder ColDec, memory area MA, sense amplifier group SA, and input/output unit 93 for associating the memory area MA with the input/output terminals DQ are provided in each of the banks Bank 0 through 3.
It should be noted that the terminals SB, SA′ and SA, that are required in the abovementioned byte boundary function, a multi-bank access function, and the background refresh function, can be realized using a common special pin. These information items are supplied along with different commands, thus input data at special pin may be set to a corresponding register in response to the supplied commands.
Also, these terminals SB, SA′ and SA can be realized using unused terminals. For example, in the case where row addresses are inputted at address terminals Add 0 through 12 and column addresses are inputted at the address terminals Add 0 through 9, the address terminals Add 10 through 12 are not used when the column addresses are inputted. Therefore, control data SB, SA′ and SA can be inputted from the address terminals Add 10 through 12 that are not used when inputting the column addresses.
The group of external terminals 93 are connected to internal circuits via buffers 94 respectively. The abovementioned group of commands is inputted to a command controller 95, and control signals corresponding to the commands are supplied to the internal circuits. Also, in response to a mode register set command, the command controller 95 sets a predetermined set value to a mode register 96 on the basis of a set data supplied to an address pin Add. The set information that is set by the mode register 96 is supplied to the internal circuits. The row controller 87 has the multi-bank activation controller 88 and a row address calculator 97 required for multi-bank activation. An active pulse is supplied from the multi-bank activation controller 88 to a bank to be activated. Furthermore, a row address to be activated is supplied from the row address calculator 97 to each bank. The bank Bank is provided with a refresh row address designator 98 that designates a row address to be refreshed within the bank. The refresh row address designator 98 has, for example, a refresh counter for generating a row address required when automatically generating a refresh command. The internal configuration of the bank is as explained above.
Hereinafter, image memory and memory controller are described in detail with reference to the byte boundary function, multi-bank active function, background refresh function illustrated in
<<Byte Boundary>>
On the other hand,
Then, the input/output unit of the image memory extracts a total of 4 bytes out of byte data corresponding to a different column address CA within a page, on the basis of byte combination information consisting of the first and second information, and associates the 4 bytes with the input/output terminals DQ 0 through 31. Then, required 4-byte data is inputted/outputted once from 32 bit input/output terminals DQ.
The image memory associates 2-byte data (BY 2, 3), which is the second half of the 4-byte area selected by a column address CA=1, with 2-byte data (BY 0, 1), which is the first half of the 4-byte area selected by a column address CA=2, in a manner shown by DQ 16-23, DQ 24-31, DQ 0-7, and DQ 8-15, on the basis of the byte combination information SB=2 and BMR=UP. This association is performed in the input/output unit 93 by the byte boundary controller 91 shown in
In
“0 through 3”, which indicate 4 bits within a 4-bit area selected by a row address RA and a column address CA, are shown within each of the memory logical spaces 15-1 and 15-2, and correspond to the input/output terminals DQ 0 through 3 respectively. Also, “0 through 3”, which indicate 4 bits within each memory logical space corresponding to the pixels of the image, are shown in each of the memory mappings 12-1 and 12-2 on the left side. Specifically, the memory mapping shows how each pixel of the image is associated with each of the input/output terminals DQ 0 through 3 of the memory.
In the image system, a system designer can freely associate an image pixel with any of the 4 bit input/output terminal DQ 0 through 3 that are simultaneously accessed using certain addresses BA, RA and CA. The mapping 12-1 is an example of mapping four pixels arranged from left to right in the figure onto the input/output terminals DQ 0 through 3 arranged in the same direction as the incrementing direction of the addresses (from left to right), and this mapping is called “big endian”. On the other hand, the mapping 12-2 is an example of mapping four pixels onto the input/output terminals DQ 3 through 0 arranged in the direction opposite to the incrementing direction of the addresses, and this mapping is called “little endian”.
In mapping 12-1 and mapping 12-2, the rectangular access is generated in four pixels 123 and 127 between the 6th pixel to the 9th pixel on the upper left corner of the image. However, such mapping is performed in the direction opposite to that of 4 bits within the memory, thus different accesses are required. Specifically, in the case of the mapping 12-1, it is necessary to input/output data with respect to the pixels arranged from left to right in the image, in order of DQ1 within CA=1, DQ2 within CA=1, DQ3 within CA=1, and DQ0 within CA=2, as shown by the arrow 120. In the case of the mapping 12-2, on the other hand, it is necessary to input/output data with respect to the pixels arranged from left to right in the image, in order of DQ2 within CA=1, DQ1 within CA=1, DQ0 within CA=1, and DQ3 within CA=2, as shown by the arrow 124.
The bit combination information items SB, BMR are set in order to respond to such different types of mapping. Specifically, in the case of the mapping 12-1, as shown by 121 in the figure, a starting address constituted by BA=0 and CA=1 and bit combination information constituted by SB=1 and BMR=UP are issued along with a read command RD, and, in response to this issuance, 3 bits of CA=1, i.e., DQ 1, 2 and 3, and DQ 0 of CA=2 are simultaneously outputted as shown by 122 in the figure.
In the case of the mapping 12-2, on the other hand, as shown by 125 in the figure, a starting address constituted by BA=0 and CA=1 and bit combination information constituted by SB=1 and BMR=DOWN are issued along with a read command RD, and, in response to this issuance, 3 bits of CA=1, i.e., DQ0, 1 and 2, and DQ 3 of CA=2 are simultaneously outputted as shown by 126 in the figure.
In this manner, the bit combination information SB and BMR are specified in accordance with the different memory mappings such as big endian and little endian, whereby the image memory can input/output 4 bits simultaneously in response to the memory mapping on the system side. By increasing the types of such bit combination information, a flexible 4 bit access can be realized on various mapping types.
Pixel positions (X 0 through X 11) in the screen indicate physical positions on the same screen. “Information on each pixel” that each pixel position has is designated as “A” through “L” in both systems, and this means that both systems display the same image.
In the big endian system, the pixel positions X 0 through 3 are associated with DQ 0 through 3 of address CA 0 of the memory, the pixel positions X 4 through 7 are associated with DQ 0 through 3 of address CA 1 of the memory, and the pixel positions X 8 through 11 are associated with DQ 0 through 3 of address CA 2 of the memory.
In the little endian system, on the other hand, the pixel positions X 0 through 3 are associated with DQ 3 through 0 of the address CA 0 of the memory, the pixel positions X 4 through 7 are associated with DQ 3 through 0 of the address CA 1 of the memory, and the pixel positions X 8 through 11 are associated with DQ 3 through 0 of the address CA 2 of the memory.
Specifically, when comparing the both systems, the relationship between each of the pixels X 0 through 3 within the image processing system and each of the input/output terminals T 0 through 3 in the big endian is opposite to that in the little endian. Therefore, the pixel information “A” of the pixel position X0 is stored in the physical positions (DQ 0 of CA 0 and DQ 3 of CA 0) of different memory cells in the big endian system and the little endian system.
Here, in the case where the image processing system generates a rectangular access (130 in the figure) to pixel information “F-G-H-I” of the pixel positions X 5 through 8, the memory has to access the physical positions 132 and 134 of different memory cells in the big endian system and the little endian system. Therefore, the minimum amount of information items that are required to be supplied to the memory are three information items, i.e., the information BMR on whether the system is the big endian (Up) or the little endian (Down), the address CA having a bit as a starting point, and the positional information SB of the bit which is the starting point within an address.
The big endian and the little endian are the same when the memory unit area that is accessed with the addresses RA, CA is a 4-byte area (byte group).
In the figure, the memory mappings 12 on the left side each shows which bit of the memory is allocated to each pixel within a frame image. In this example, one pixel is constituted by 2 bits of information. For example, an even-numbered bit holds data on luminance, while an odd-numbered bit holds data on a color difference.
Grouping-1 means a rectangular access that collects only the luminance information (even-numbered bits) of pixels from the second pixel through the fifth pixel, and Grouping-2 means a rectangular access that collects only the color difference information (odd-numbered bits) of pixels from the second pixel to the fifth pixel on the upper left corner. In this case, although both Grouping-1/2 are rectangular accesses made to the second pixel through the fifth pixel on the upper left corner of the image, the accesses from the image processing system to the memory and the input/output terminals DQ that are shown in the timing charts are as follows, due to the difference between the luminance (even-numbered bits) shown by the arrow 140 and the color difference (odd-numbered bits) shown by the arrow 144.
In this manner, the same DQs (DQ0 and DQ2 in Grouping-1, for example) are accessed simultaneously within the 4-bit area of different column addresses, thus the input/output units for transferring the data to the input/output terminals DQ need to perform processing of switching the terminals for some data, i.e., processing of using a data bus of a different DQ.
The pixel positions (X 0 through 5) on the screen indicate the same physical positions on the screen on both right and left. The pixel positions hold “A, C, E, G, I, K” respectively as “luminance information”, and “B, D, F, H, J, L” respectively as “color difference information”.
Here, in the case where the image processing system generates a rectangular access 151 to the luminance information “C-E-G-I” of the pixel positions X 1 through 4, the memory has to access only the even-numbered DQs (153 in the figure) as shown in
The minimum information items that the memory needs to receive in order to make such accesses are three information items, i.e., information indicating whether the system adopts a method of holding the luminance information in the even-numbered DQs and the color difference information on the odd-numbered DQs (whether access needs to be made every other DQ) (BMR=AL), the address having a bit as a starting point (CA), and position information (SB) of the bit which is the starting point in the 4-bit area of the address. The column address CA and bit combination information SB and BMR are already explained in
In this case, since the same DQs (DQ0 and DQ2 in Grouping-1, for example) are accessed with different addresses, the input/output unit for transferring the data to the input/output terminals needs to perform the processing of switching the terminals so as to use the data bus of a different DQ. Therefore, a plurality of switches shown by white circles and black circles are provided in the memory, and these switches are controlled based on the above-described information SB and MBR.
In
The abovementioned second information BMR=V can have various information on the big endian (V=UP), little endian (V=DOWN), and the cases where the luminance information is stored in the even-numbered DQs and the color difference information is stored in the odd-numbered DQs (V=AL).
The image system can realize the byte boundary functions in the rectangular access in any methods of (A) and (B) of
As with
As described above, in the timing chart (A), a read command RD or a write command WT, which is not shown, is supplied simultaneously with the byte combination information SB and BMR (166 in the figure). Also, in the timing chart (B), a mode register set command EMRS (167 in the figure) is supplied simultaneously with the second information BMR, and the read command RD or the write command WT, which is not shown, is supplied simultaneously with the first information SB.
In the example shown in
In this manner, the bit boundary or byte boundary functions can be realized even in the case where the width of the input/output terminals DQ is 4 bits or 32 bits (4 bytes).
In the example shown in
Specifically, in the case where the memory mapping on the system side is designed for the little endian, the switching means 190 is provided to switch the input/output terminals 0 through 3 in the image memory 86 to 3 through 0 in the memory controller 82. As a result, to the image memory, the system side appears to respond to the big endian. Therefore, even if the system is configured to have a memory only for the second information BMR=UP, the byte boundary functions for the little endian can be realized.
In FIG. 20(1), in the case where an access is made in units of addresses (A), the pixel positions (X 0 through 7) on the screen are associated one-on-one with addresses (CA) on the memory side (X 0 through 3 and CA=0, X 4 through 7 and CA=1), thus there is no problem. However, in the case where a signal SB is specified to make an access in units of bits (B), a shift in the pixel positions (X 1 through 4 (BCDE), 200 in the figure) does not match with a shift in the physical positions of memory cells (CBAH, 201 in the figure) in the memory where the only bit boundary functions (BMR=UP only) corresponding to the big endian exists, thus wrong data CBAH is transferred. In this case, the BCDE on the memory cells can be outputted by means of the bit boundary functions (BMR=DOWN) corresponding to the little endian. However, if the bit boundary functions that are capable of responding to both the big endian and the little endian are provided in the memory, increase in costs is caused.
Therefore, as shown in FIG. 20(2), the connecting unit 190 for cross-connecting the input/output terminals on the system side and the memory side is provided so that the pixels X 0 through 3 on the image correspond to the DQ 0 through 3 on the memory cells, whereby the image processing system 80 for little endian appears to the memory 86 to be a system for big endian. Accordingly, the shift 200 of the pixel positions matches with the shift 202 of the physical positions of the memory cells, and thereby normal data BCDE can be transferred even if an access is made while shifting bits so as to respond to the big endian.
As described above, by using the connecting unit 190 capable of performing cross-conversion to switch the terminals connecting the system and the memory, even in the case of the memory having the bit boundary (or byte boundary) functions for big endian, the bit boundary (or byte boundary) functions can be realized in the image processing system for little endian. Moreover, in the case of the memory having the bit boundary (byte boundary) functions for both big endian and little endian, the memory and the system may be connected to each other via the connecting unit 200 that makes connection without switching the terminals.
The arbitrary number of bits (Nb) described above means concept including both bit units and byte units, and Nb=8 (1 byte) is set according to the above-described embodiment. Also, the multiple number (N) explains that data items of many times of the arbitrary number of bits (Nb) are accessed from one address, and Nb×N corresponds to the number of input/output terminals. N=4 is set according to the above-described embodiment, thus the multiple number corresponds to the input/output terminals, the number of which is equivalent to 4 bytes. More concretely, the number of input/output terminals is Nb×N, thus the number of input/output terminals=32 (=8×4).
Also, Ng indicating the plurality (Ng) of bit groups is the number of groups of all bits or bytes (groups of Nb bits) that the memory has, and is equivalent to the number obtained by dividing the capacity of the entire storage area by Nb. Normally, the number of Ng is much larger than the multiple number (N) that is the number of bit groups inputted/outputted at once. For example, in the case of a 64 M-bit memory, if Nb=1, Ng=64 M, and if Nb=8, Ng=8 M. According to the previous examples, when considering the 64 M-bit memory, if Nb=8, Ng=8 M. According to the previous examples, the address information that can select any one bit group is information (SB) indicating a bit which is a starting point of an address (BA, RA, CA), wherein data that is narrowed down to 4 bytes by the address (BA, RA, CA) is limited to a byte as a starting point by the information (SB) indicating a byte as a starting point.
Selecting the same number of bit groups as the multiple number (N) in accordance with a rule means that, according to the previous examples, a plurality of bytes are selected in accordance with the information on a combination of bytes (BMR) that are selected simultaneously with a start byte. Since N=4, when BMR=Up, 4 bytes that continue in the Up direction can be accessed simultaneously from an arbitrary byte.
The image processing system accesses, via 32-bit (=Nb×N) input/output terminals, 4 bytes that are selected by the information capable of selecting any one bit group (1 byte according to the previous examples) (BA, RA, CA), the information on a byte that is a starting point (SB), and the information on a combination of bytes (BMR) that are accessed simultaneously.
The amount of memory of a memory device shown in
If the address is incremented by one bit in the same 64 bit memory, the number of bit groups with a bit unit of 4 (Nb=4) is 16 (Ng=16), and if the input/output terminals remain Nb×N=32, the predetermined multiple number becomes 8 (N=8), thus seven other bit groups are selected by the combination information BMR.
[Memory with Byte Boundary Functions]
The configuration of the image memory having the byte boundary functions is described next in detail. According to the byte boundary functions, 4 bytes of data beyond a memory unit area (4-byte area) can be selected, the memory unit area being selected by the column address. Therefore, functions for inputting/outputting 4-byte to be required data are added to the memory. Hereinafter, for simplification, there is described an example in which only the first information SB (referred to as “start byte” or “start bit”) is provided as the byte combination information. The second information BMR is an example of UP only.
[Example of Internal Column Control]
First of all, several specific examples of column control performed on the inside of the memory are described.
As shown in
The memory bank 92 is divided into byte areas 0 through 3, which are four memory blocks. Each byte area has a memory cell array 224, a second amplifier 225, a pair of data latches 226 and 227, and a data bus switch 228, and inputs/outputs one byte (8 bits) of data at one access. A total of 32 bits (4 bytes) of data are inputted/outputted to an I/O bus from the four byte areas. The I/O bus is connected to 32 bits of input/output terminals DQ 0 through 31 via buffers. It should be noted that
The column controller 90 has a column timing controller 220 for controlling the timing for operating the column decoder 222, and a data latch selector 221 for controlling the data latch circuits 226 and 227 and the data bus switch 228. The data latch selector 221 controls the data latch circuits 226 and 227 and data bus switch 228 within each of the byte areas 0 through 3 in response to a column address CA and a start byte SB.
As shown in
The memory chip 86 shown in
The right side of
Specifically, the column decoder selects column lines (bit lines) equivalent to one byte in each byte area at one access. When the read operation is performed, data equivalent to 1 bytes are selected from the memory cell array 224 of each byte area, are then amplified by the second amplifier 225 and cached to the data latch circuits 226 and 227. At this moment, memory cells that are mapped by the same column address CA are accessed in each byte area. In order to realize a byte boundary access made across the boundaries of the memory unit areas (four byte areas) that can be selected by the column address, the column decoder 222 selects a column line again after ending the first access. The address of this column line is CA 1, which is an address after the previous address CA 0. 1 byte of data that is read from the memory cell array 224 is amplified by the second amplifier, and cached to the data latch circuit 227 different from the first access.
Therefore, 8 bytes of data items, which are twice as large as the 4-byte data required by the input/output terminals DQ in one access, are present in the data latch circuits 226 and 227, thus the data bus switch 228 selects 1 byte of data, i.e., half data, from 2-byte data cached to the data latch circuits of each byte area, and transfers this data to the I/O bus. The data latch selector 221 controls cache operation on the data latch circuits 226 and 226 within each byte area and switching operation on the data bus switch 228, in response to the column address CA0 and the start byte signal SB=1. Accordingly, byte data corresponding to different column address CA 0 and CA 1 can be transferred from each byte area to the I/O bus.
As a result, as shown in
The configuration shown in
In the case of a write command, the 4-byte data that is supplied to the input/output terminals DQ is stored into the two data latch circuits 226 or 226 via the data bus switch 228 that is switched and controlled in response to the column address CA and the start byte signal SB, and then written to the two memory cell arrays 224-0 or 224-1.
In
In the next clock cycle, the column decoder 222 issues decode signals 222D0 and 222D1 corresponding to column address CA 4 and CA 5, and further caches 8 bytes of data Q16 through Q23 to the data latch circuits. Then, the data bus switch 228 transfers 4 bytes of data Q 09 through 12. In the next clock cycle, the data bus switch 228 transfers 4 bytes of data Q 13 through 16 to the input/output bus. At this moment, it is not necessary to cache new 8-byte data from the memory cell arrays.
As with the above explanation, the write operation is performed such that, if the burst length BL is 4, 4 bytes of data are supplied to the input/output terminals DQ in four cycles, and then stored in the data latch circuits 226 and 227 via the data bus switch 228. Then, in response to the decode signals of the column addresses CA 0, 1, CA 2, 3, and CA 4, 5 from the column decoder 222, a total of 16 bytes of data are written to the memory cell arrays in three cycles.
Specifically, 8 bytes of data Q 00 through 07 are cached first, and thereafter 4 bytes of data Q 08 through 11, Q 12 through 15, and Q 16 through 19 are cached to the data latch circuits. Then, the data bus switch 228 transfers the 4 bytes of data DQ 1 through 4, Q 05 through 08, Q 09 through 12, and Q 13 through 16 to be transferred, to the input/output bus sequentially. In this case as well, the selected signal S221 of the data latch selector 221 consists of 8 bits (2 bits in each byte area). As described above, in the read operation, the memory cell arrays cache the data to the data latch circuits in four cycles by means of the decode signals of the column addresses, and the data transfer operation with respect to the input/output bus from the data latch circuits is also performed in four cycles.
In the case of writing operation as well, 4 bytes of data are supplied to the input/output terminals DQ in four cycles, and stored in the data latch circuits 226 and 227 via the data bus switch 228 in four cycles. Thereafter, in response to the decode signals of the column addresses CA 0/1, CA 2, CA 3 and CA 4 from the column decoder 222, a total of 16 bytes of data are written to the memory cell arrays in four cycles.
Since the input/output rate is doubled in this manner, it is necessary to double the amount of data in the memory that needs to be cached. In the example shown in
In order to enable such collective caching of the 16-byte data as shown in
It should be noted that the example shown in
Moreover, in the next clock cycle, the column decoder 222 issues internal decode signals of column addresses CA 4 through 7 to the four memory cell arrays, and further caches 4 bytes of data to the four data latch circuits. Accordingly, 16 bytes of data Q 16 through 31 are latched to the data latch circuits, and selected 4 bytes of data out of the 16 bytes of data, i.e., Q 13 through 16, and 4 bytes of data Q 17 through 20 are outputted at the rising edge and the trailing edge of the clock respectively.
In the write operation, write data is written in a direction opposite to the above-described direction into the memory cell arrays from the input/output terminals DQ via the data latch circuits.
In the case of
As shown in
Therefore, the read operation and write operation shown in
As shown in
According to
As described above, in the third example shown in
In the read operation, 1-byte data corresponding to a column address provided from the column decoder 222 in each byte area is outputted to the data latch circuit 226, and then transferred to the input/output terminals DQ via the data bus switch 228. In the write operation, the 4-byte data that is inputted to the input/output terminals DQ is latched to the data latch circuit 226 via the data bus switch 228 in each byte area. Thereafter, the latched data is written to a memory corresponding to the column address from the column decoder 222 in each byte area.
In the case where the memory unit area selected by a column address is constituted by 4 bits, the four byte areas within the bank shown in
[Control of Relationship with Input/Output Terminals]
Next, there is described an example of control of a relation between the input/output terminals DQ within the image memory and a bus or data latch circuit within the memory cell array.
In the case where the input/output terminals DQ are not switched around, data that is stored as the data of Byte 1 is outputted to the DQ terminal corresponding to Byte 1, without depending on the start byte signal SB. Therefore, connections between the memory cell array 224 and input/output buffers 94I/O are always fixedly allocated. Therefore, designation of the start byte signal SB is performed for simply determining which bus of the column address CA in the memory cell array 224 should be connected to the input/output butter 94I/O.
The example shown in
In this manner, if the input/output terminals DQ are not switched around, the data Q 01 that is outputted from Byte 1 Area of the memory cell is definitely connected to the input/output terminal DQ[15:8] corresponding to Byte 1 of the input/output buffer 94I/O. Therefore, the control of the data bus switch 228 using the byte start signal SB means control of connecting the input/output buffers 94I/O to either one of the data latch circuits of an area corresponding to the two column addresses CA.
The data bus switches 228 within the respective four byte areas 0 through 3 shown in
As is clear from
In this manner, the input/output terminals DQ are switched around with respect to the busses or data latch circuits within the memory cell array according to the start byte signal SB. Specifically, the byte data Q 01 that is outputted from the byte area Byte 1 within the memory cell array is connected to the DQ[7:0] corresponding to Byte 0 of the input/output buffer 94I/O when SB=“1”, and is also connected to DQ[15:8] if SB=“0”. The byte data Q05 of the byte area Byte 1 is connected to DQ[23:16 ] hen SB=“3”, and is also connected to DQ[31:24] when SB=“2”. Specifically, the positions of the four switches in the closed state as shown in
Next, control of a relation between the big endian and little endian is described with reference to the control of the relation with the input/output terminals.
In the figure, the mode register 96 is provided with the second information BMR as the byte combination information indicating the up mode or down mode, and the mode is set to either one of the modes. However, the memory core 350 having the column decoder, memory cell array, and second amplifier that are shown in
On the other hand,
In the example in
For example, when the column address CA 0 and start byte SB=1 as shown in
In this manner, the column address to be provided to the four byte areas Byte 0 through 3 within the respective memory cores are switched around by the column shifter 291 in accordance with the up mode or down mode. Then, a combination of column addresses, which is uniquely determined by the start byte signal SB and the mode signal BMR, is supplied to each byte area of each memory core 350 via the column shifter 291. This column shifter 291 selects one of the two column addresses required to be switched around, in accordance with the up mode/down mode Up/Down, the two column addresses being selected from four column addresses caby0z through caby3z from a column address controller 90A. Specifically, in the byte area Byte 0, either caby0z or caby3z is selected. In the byte area Byte 1, either caby1z or caby2z is selected. In the byte area Byte 2, either caby1z or caby2z is selected. Also, in the byte area Byte 3, either caby0z or caby3z is selected.
In the case of a single data rate (SDR), 4 bytes of data is only able to be accessed at one access, thus, as described with reference to
In the case of a double data rate (DDR), on the other hand, 4 bytes of 8-byte data need to be inputted/outputted at one access. Therefore, in the configuration shown in
As shown in
As described above, in the case of the DDR memory, each byte area within the memory cell array has the block of even column addresses (CA[0]=0) and a block of odd column addresses (CA[0]=1), then a controlled combination of column addresses caby is supplied to these blocks, and a controlled combination of column addresses for switching the data buses, daby, is supplied to the data bus switch 228.
Specifically, CA 1 is inputted as a base column address CA. Along with this input, the column addresses CA that are supplied to the even block (CA[0]=“0”) and odd block (CA[0]=“1”) within each of the byte areas Byte 0 through 3 are controlled. A column line of the column address CA 2 is activated in the area of the even block (CA[0]=“0”). A column line of the column address CA 3 is activated in the byte area Byte 0, and column lines of the column addresses CA 1 are activated in the byte areas Bytes 1, 2 and 3 in the area of the odd block (CA[0]=“1”).
As a result, the data items Q 05 through 12 are outputted to the core buses of the memory cores. Specifically, the data items Q 08 through 11 are outputted to the core buses of the even block, and the data items Q 5 through 7 and also Q 12 are outputted to the core buses of the odd block.
In the DDR memory, it is necessary to transfer 4 bytes of data from this 8-byte data to the I/O bus. Here, on the basis of the start byte signal SB and the column address CA, the data bus switch selects the data of the even block (CA[0]=“0”) in the byte area Byte 0 only. As a result, the data items Q 05 through 08 can be outputted to the input/output terminals DQ.
Here, in each of even block area and odd block area (CA[0]=“0”/“1”), the internal column address cabyaz selects caby0z, an internal column address cabybz selects caby1z, cabycz selects caby2z, and cabydz selects caby3z. Similarly, in each of even block area and odd block area (CA[0]=“0”/“1”), the column address for data bus, dabyaz, selects daby0z. Similarly, dabybz selects daby1z, dabycz selects daby2z, and dabydz selects daby3z.
In this case, CA 1 is inputted as the base column address CA. Along with this input, the column addresses CA that are supplied to the even block (CA[0]=“0”) and odd block (CA[0]=“1”) within each of the byte areas Byte 0 through 3 are controlled. A column line of the column address CA 2 is activated in the even block (CA[0]=“0”). A column line of the column address CA 3 is activated in the byte area Byte 3, and column lines of the column addresses CA 1 are activated in the byte areas Bytes 2, 1 and 0 in the odd block (CA[0]=“1”).
As a result, the data items Q 05 through 12 are outputted to the core buses of the memory cores. Specifically, the data items Q 08 through 11 are outputted to the core buses of the even block, and the data items Q 5 through 7 and also Q 12 are outputted to the core buses of the odd block.
In the DDR memory, it is necessary to transfer 4 bytes of data from this 8-byte data to the I/O bus. Here, on the basis of the start byte signal SB and the column address CA, the data bus switch selects the data Q 08 of the even block (CA[0]=“0”) in the byte area Byte 3 only, and selects the data items Q 05 through 07 from the odd block for the rest of the byte areas. Accordingly, 4 bytes of data items Q 05 through 08 can be outputted to the input/output terminals DQ.
Here, in each of even block area and odd block area (CA[0]=“0”/“1”), the internal column address cabyaz selects caby3z, an internal column address cabybz selects caby2z, cabycz selects caby1z, and cabydz selects caby0z. Similarly, in each of even block area and odd block area (CA[0]=“0”/“1”), the column address for data bus, dabyaz selects daby3z. Similarly, dabybz selects daby2z, dabycz selects daby1z, and dabydz selects daby0z.
As described above, when comparing the down mode shown in
In this case, the relationship between the start byte SB and the shift value SV changes in the up mode and the down mode in accordance with the two modes of the endian. Specifically, in the case of the up mode, since the byte data items are arranged in the manner of Byte 0 through 3, SB and SV are the same. However, in the case of the down mode, the byte data items are arranged in the manner of Byte 3 through 0, thus SB and SV are different and in an opposite relationship.
Therefore, in the case where the image memory has a start byte signal SB terminal only and the internal structure is controlled in accordance with the shift value SV, it is necessary to non-invert or invert the start byte signal SB so as to obtain the shift value SV depending on whether the mode is the up mode or down mode. The same is true for the case where the image memory has a shift value SV terminal only and the internal structure is controlled in accordance with the start byte SB.
[Column Address Control in Rectangular Access]
As shown in
By this mapping of wrapping the memory unit area selected by the column address at a predetermined wrap width, efficiency of a rectangular access that is made frequently in the image memory can be improved. Specifically, while a page area is subjected to active operation by an active command, a read command and a write command are repeatedly issued in accordance with a rectangular area to be accessed, whereby an access can be made to the rectangular area within the same page area. Since an access can be made to the rectangular area within the same page area by performing the active operation once, an efficient access can be made.
As shown in
Explanation is provided with reference to the timing chart shown in
An internal column address caz[7:0] that is issued for the first access is CA=#0B/#0C, as shown in
The configuration of the image memory corresponding to this automatic rectangular access is as shown in, for example,
In the above example, the rectangular width Rwidth at the time of rectangular access is supplied along with the read command, but the rectangular width Rwidth may be set beforehand by means of the mode register set command in the mode register. Alternatively, the rectangle size BL and rectangular width Rwidth may be supplied along with the read command. The wrap width CAWrap of the column address is set by the image system beforehand, thus it is preferred that the wrap width CAWrap is set by means of the mode register set command.
In this manner, in the case of the rectangular access, if the column address CA as a starting point, the rectangular width Rwidth, and the rectangle size (BL) are provided, an internal column address to be accessed can be generated automatically on the basis of the wrap width CAWrap of the column address that is set beforehand. Therefore, the rectangular access can be made by issuing a read command once.
[Byte Boundary Functions of Page Area Boundary]
The byte boundary functions can efficiently access predetermined bytes (4 bytes) of data across the boundary of a memory unit area (4-byte area) selected by a column address. However, in the case of performing a rectangular access across a page area boundary, adjacent page areas need to be subjected to the active operation again by means of another active command.
If the abovementioned access is made, unnecessary data is outputted. In order to make an access to an adjacent page area from the end of the above page area, it is necessary to issue a new active command to perform active operation on the adjacent page area.
Specifically, in the up mode, when SB=1, 2 and 3, an access is made to the byte data of CA=#FF within the page area where RA=#n and to the byte data of CA=#00 within the page area where RA=#n+1. In the down mode, when SB=0, 1 and 2, an access is made to the byte data of CA=#FF within the page area where RA=#n and to the byte data of CA=#00 within the page area where RA#n+1. In this case, an access needs to be made to adjacent page areas, thus the page area with the row address RA=#n that is provided along with the active command ACT is activated, and, in response to the column address CA=#FF and start byte signal SB=2 that are supplied along with the read command RD, the page area with the adjacent row address RA=#n+1 is activated. Thus, word lines within a plurality of banks are activated in response to one active command ACT.
When control is performed such that the plurality of banks are activated simultaneously, data of required areas can be inputted/outputted economically, even if the byte boundary functions are requested at the end of the page area.
[Other Application of Byte Boundary Functions]
The byte boundary functions can input/output data efficiently when storing the image data to the memory and accessing the data corresponding to an arbitrary pixel. The byte boundary functions have the same benefits in an application other than the image memory.
However, there is a case where the size of data to be processed by the system is less than that of the word configuration of the memory. As a countermeasure for such a case, there is a method padding so that the data of the word configuration size or smaller does not extend across a plurality of column address CA areas. In the example shown in
Suppose that there is a case where data 0 through 5 of the sizes, 2 Byte, 4 Byte, 1 Byte, 2 Byte, 2 Byte and 1 Byte, are continuously stored in the memory, as with the write data 482 shown in the figure. In this case, by performing the write operation as in 481 in the figure, padding is performed in several byte areas within the memory as shown in 483 in the figure, and a total of 4 bytes of areas are not used effectively for storing the data. In this case, the amount of memory is not used effectively. However, by outputting data in a unit of 4 bytes by the column address CA, each data item can be read at one column address access, thus reading speed increases.
However, in order to eliminate the abovementioned redundant storage capacity, the data items may be stored continuously in to the byte areas of the memory without performing padding. For example, the data is written in three cycles by means of a write command WR as shown in 491 in
By writing the data in the manner shown in
Therefore, as shown in 500 in
[Memory Controller for Byte Boundary Functions]
Next, the memory controller for the byte boundary functions is described. The image processing system is described with reference to
An MPEG decoder decodes current image data on the basis of the reference image R-IMG within a past image or future image that is read from the memory on the basis of the motion vector, and on the basis of differential data between the reference image and the current image data. Therefore, an operation is frequently performed in which a rectangular reference image located in the position of the motion vector is read out from the image that is temporarily stored in the image memory 86. In this rectangular access control, the access efficiency can be improved by using the image memory 86 having the byte boundary functions and the memory controller 82 corresponding to the byte boundary functions.
On the other hand, the memory controller 82 computes addresses Add within the memory space (bank address, row address, column address) on the basis of the information items (POSX, POSY), SIZEY and SIZEX specifying the reference image area, and supplies the command CMD, addresses Add, multi-bank access information SA′, start byte signal SB, write data Data and the like to the memory 86. Also, the memory controller 82 receives the read data Data read from the memory 86.
The command CMD issued by the memory controller 82 includes, for example, the mode register set command, active command, read command, write command, precharge command, refresh command, and other commands required in normal SDRAM. Furthermore, in a setting register 543 within the memory controller 82, the address of an upper-left pixel of the frame image FM-IMG, the memory mapping information, and information on the functions provided in the memory 86 are set. The functions provided in the memory are the multi-bank access function, the function of switching around the arrangements of the data corresponding to the endians, and other functions. The presence of the functions provided in the memory, the target of control, is set in the setting register 543.
The reference image specifying information (POSX, POSY), SIZEY, and SIZEX that are computed in the manner described above are outputted from the reference image controller 514 to the memory controller 82, and, on the basis of the reference image specifying information, memory mapping information, and upper-left addresses in the frame area that are set in the setting register 543, the command/address generating sections 542 within the memory controller 82 generates an address of the memory space required in rectangular access.
POSX=0+8+13=21
POSY=0+8+4=12
SIZEX=8, SIZEY=8
The rectangular area of the reference image RIMG does not conform to the unit of a 4-byte area selected by a column address. In order to conform the rectangular area to the unit of the 4-byte area, an access needs to be made to the area with the upper-left coordinate (20 and 12), width 12 and height 8, such as an enlarged area E-RIMG in
In
In response to this access request REQ, the memory controller issues an active command ACT, bank address BA=0, and row address RA=0 to the image memory, and causes the memory to perform active operation. Thereafter, the memory controller issues an read command RD, bank address BA=0, and column address CA=5, 6, 7 through 117, 118, 119 (24 times) in synchronization with a clock CLK, and receives 4-byte data twenty-four times. Then, the memory controller changes the level of a strobe signal STB to H level, and sends the received data to the reading controller.
In this case, the same signal as the one shown in
Also, although not shown, in the memory having the automatic internal column address generating function shown in
As shown in
The memory controller issues a bank address BA=0, row address RA=0, and multi-bank access information SA′=10 (showing an access to two adjacent banks in a lateral direction) along with an active command ACT. In response to this issuance, the image memory performs active operation on the bank BA=0. The memory controller then issues start byte signal SB=01, bank address BA, and column address CA sequentially along with a read command RD. In response to this column address CA=15, the image memory performs active operation on the bank of BA=1. The memory controller receives 16 bytes of data in response to the read command RD issued 16 times. Moreover, the memory controller sends the received 16-byte data to the reference image reading controller.
In this manner, the memory controller may issue the active command once to the memory having the multi-bank access function, even in the case of data across a different bank boundary.
The memory controller computes BA, RA, CA, SB and SA′ to be issued when making the rectangular access, on the basis of these rectangular parameters (POSX, POSY) (SIZEX, SIZEY), and the memory map information and information on the frame image address that are set in the setting register (S4). When the multi-bank active function is ON (YES in S5), the memory controller receives read data while issuing the BA, RA, and SA′ along with an active command ACT and further issuing the BA, CA, and SB along with a read command RD (S6, S7 and S8). In the case of the write operation, the memory controller outputs write data while sequentially issuing the BA, CA and SB along with a write command WR instead of a read command.
Moreover, when the multi-bank active function is OFF (NO in S5), the memory controller checks whether or not the requested rectangle extends across the page area, i.e., bank (S9). If the rectangle does not extend across the bank (NO in S9), the memory controller receive the read data while issuing BA and RA along with the active command ACT and further issuing BA, CA and SB along with the read command RD sequentially (10, 11 and 12). In the case of the write operation, the memory controller outputs write data while sequentially issuing the BA, CA and SB along with a write command WR instead of a read command.
Furthermore, if the rectangle extends across the bank
(YES in S9), the byte boundary functions cannot be used, hence the memory controller computes the coordinate POSX and the width SIZEX of the enlarged rectangular area E-RIMG shown in
It should be noted that when the byte boundary functions are set to OFF in the setting register of the memory controller, the memory controller issues the active command, read command, and required addresses by performing the configurations S13 through S18 of
In this manner, the memory controller can set ON and OFF of the byte boundary functions and ON and OFF of the multi-bank active functions into the built-in setting register, and appropriately issues required commands and addresses, as well as the multi-bank information, start byte information, and byte combination information such as the up mode, down mode and alternative, in accordance with the functions of the image memory to be controlled.
Next, the memory controller computes BA, RA, CA, SB and SA′ to be issued when making the rectangular access, on the basis of these rectangular parameters (POSX and POSY) (SIZEX and SIZEY), and the memory map information and information on the frame image address that are set in the setting register (S23). Then, when the output data rearranging function is set to ON (YES in S24), the memory controller issues the bank address BA, row address RA and multi-bank information SA′ along with the active command, and further issues the bank address BA, column address CA, and start byte information SB along with the read command (S25). Thereafter, the memory controller repeatedly issues the read command, BA, CA, and SB until reading of all data items is finished (S26 and S27).
On the other hand, when the output data rearranging function is set to OFF (NO in S24), the memory controller issues the bank address BA, row address RA, and multi-bank information SA′ along with the active command, and further issues the bank address BA, column address CA, and start byte information SB along with the read command (S25).
Thereafter, the memory controller repeatedly issues the read command, BA, CA, and SB until reading of all data items is finished, and rearranges the data items so that the received data items are arranged in order of the original image data items (S28, S29 and S30).
It should be noted that the present embodiment explains an example of the image memory that stores digital image data in which image data items of a plurality of pixels are arranged two-dimensionally. However, the present invention can applied to not only the image memory for storing image data, but also a memory device that stores two-dimensionally arranged data, other than image data, on the basis of a predetermined mapping rule. When the stored data items are arranged two-dimensionally, in the case where an arbitrary rectangular area within the two-dimensionally arranged data is accessed, sometimes the data extending across a plurality of memory unit areas needs to be accessed. In this case as well, the present invention can be applied.
<<Multi-Bank Access>>
Next, there is described multi-bank access for preventing the decrease of access efficiency caused when accessing a rectangular area having a plurality of page areas as a problem of the rectangular access. The multi-bank access function involved in rectangular access has been already described with reference to
According to the memory mapping 12, page areas that are adjacent to each other horizontally and vertically are allocated to different banks. Therefore, in order to access the rectangular area 22 shown in
In the present embodiment, therefore, the memory device is set into a mode register that incorporates therein raw address step information RS=4 (a reference numeral 671 in the figure) supplied along with a command, in response to an extended mode register set command EMRS (a reference numeral 670 in the figure), as shown in the timing chart in
Once a rectangular access is generated, the memory device is supplied with a bank address BA=3, row address RA=0 and multi-bank information SA′=4 (a reference numeral 673 in the figure) along with an active command ACT (a reference numeral 672 in the figure). More specifically, once the memory controller detects that the rectangular area to be accessed straddles the four page areas on the memory map, i.e., that the access needs to be made to the four banks, the memory controller supplies the number of access target banks, namely “4”, as the multi-bank information SA′ to the image memory device, in response to a rectangular access request sent from the image processing unit.
In response to this active command ACT and the multi-bank information SA′, the memory device activates, the bank BA3, the bank BA2 adjacent thereto in the row direction, the bank BA1 adjacent to the same in the column direction, and the bank BA0 in the lower right. In this case, the row controller within the image memory generates a bank activation signal for each of the plurality of banks, and further generates a row address as a target of active operation within each bank, on the basis of the bank address BA=3, row address RA=0 and multi-bank information SA′=4 that are supplied along with the active command ACT, as well as the row address step information RS=4 that is stored in the mode register. According to the memory mapping 12 shown in the figure, the four row addresses as the target of active operation are, respectively, RA, RA+1, RA+RS, RA+RS+1, with respect to the supplied row address RA. These four row addresses are supplied to the corresponding four banks in response to the supplied bank address BA. Then, the plurality of banks within the memory device perform active operation on the basis of the bank activation signals and row addresses generated within the image memory.
Therefore, in the example shown in
Then, the memory device repeatedly supplies read commands RD (a reference numeral 674 in the figure) along with the bank address BA and the column address CA, and reads the data item of the corresponding memory unit area specified by a bank address BA and a column address CA, in response to each of the read commands. In the case of a write command, the memory device writes the data item to a memory unit area corresponding to a bank address BA and a column address CA that are supplied along with a write command. In the example shown in
In this manner, according to the multi-bank access function of the present embodiment, the memory device responds to a single active command (first operation command) to perform active operation on the page areas of a plurality of access-target banks beforehand, on the basis of the bank address BA and row address RA to be supplied, the multi-bank information SA′, and the row address step information RS that is set in advance. Therefore, in a subsequent column access, a bank address BA and a column address CA are supplied along with a read command or a write command properly, whereby the rectangular access is performed.
It should be noted in the example shown in
Also, in the example shown in
The operation of the memory device corresponding to the above-described two types of multi-bank information SA′ is described hereinafter with reference to
First of all, the memory device sets step number data RS=4 of the row addresses in the memory mapping to the mode register by means of the extended mode register set command EMRS. Then, in response to the bank address BA3 and row address RA2 for specifying the leading page area, as well as the multi-bank information SA′=4 (a reference numeral 673 in the figure), the bank address BA3, row address RA2 and the multi-bank information SA′ being supplied along with the active command ACT, the memory device generates row addresses RA7, 6 and 3 within the four banks Bank 0 through 3, and performs active operation on the page areas corresponding to the four row addresses including the supplied row address RA2 (a reference numeral 690 in the figure). As a result, the four banks enter an active state and memory access thereto is now possible within the memory device.
Thereafter, addresses BA3/CA127, BA2/CA124, BA1/CA3, BA0/CA0 and the like are supplied along with sixteen read commands RD (a reference numeral 674 in the figure), in response to which the memory device outputs 4 bytes of data from the corresponding banks to the input/output terminals DQ respectively, after a predetermined latency.
Supply of SA′=4 as the multi-bank information SA′ proves that an access is made to a 2×2 page area, so that the memory device can execute active operation on the four banks in response to the active command ACT. Moreover, once the row address RA of the leading bank is supplied, row addresses of the rest of the banks can be calculated on the basis of the row address step information RS.
The row address step number data RS=4 (a reference numeral 671 in the figure) and step number data of the column addresses within the page area, CST=128 (a reference numeral 677 in the figure), are set into the mode register by means of the extended mode register set command EMRS. Further, the bank address BA3 and row address RA2 are supplied along with the active command ACT (a reference numeral 672 in the figure), and the size information 8×8 of the rectangular access area (a reference numeral 676 in the figure) is supplied as the multi-bank information SA′ (a reference numeral 675 in the figure). In response to this active command, the memory device performs active operation on the page area having the supplied addresses BA3 and RA2 (a reference numeral 700 in the figure). The memory device then obtains the rest of the banks Bank 0, 1 and 2 to be accessed, and the row addresses thereof RA 7, 6 and 3 on the basis of the step number data CST=128, the column address CA127 supplied along with the first read command RD, and the rectangle size information 8×8, and performs active operation on the page area of each of these banks (a reference numeral 701 in the figure).
Thereafter, the memory device outputs 4 bytes of data from each of the corresponding banks to the input/output terminals DQ (a reference numeral 702 in the figure) in response to the sixteen read commands (a reference numeral 674 in the figure).
In this manner, when the rectangle size is supplied as the multi-bank information SA′, the memory device determines whether access is made across a plurality of banks, on the basis of the supplied column addresses and memory mapping (column address step number CST), generates an activation signal for each bank that is a target of active operation, as well as a row address of each bank, and performs active operation sequentially. Therefore, activation operation is performed on the banks Bank 0, 1 and 2 after the leading column address CA=127 is supplied.
A command controller 95 decodes a command that is supplied from a combination of signals RAS, CAS, WE and CS specifying commands. The row address step number data RS of the memory mapping is supplied along with the extended mode register set command EMRS from address terminals Add, and the row address step number data RS are set into a mode register 96. In this case, the type of data that is set is specified by a bank address BA, and the step number data RS is set into a register area corresponding to this bank address BA.
The command controller 95 generates an active pulse actpz instructing for start of operation on the row side, in response to the active command ACT. The multi-bank activation controller 88 distributes this active pulse actpz to the banks to be activated, which are determined from the supplied bank address BA and the multi-bank number data SA′. This pulse signal to be distributes is the bank activation signals actpz 0 through 3. The multi-bank information SA′ is inputted from the special terminals SP0 and SP1 when the active command ACT is issued. Also, the row addresses RA are inputted from the address terminals Add.
Moreover, the row address calculator 97 generates four row addresses RA, RA+1, RA+RS, and RA+RS+1 on the basis of the bank address BA and row address RA to be supplied, the step number data RS set in the mode register 96, and the memory mapping. Then, these four row addresses are supplied to a group of 2×2 banks having a bank with the supplied bank address BA on the upper left portion.
Each of the banks has a memory core having a memory array MA and a decoder Dec, and a core controller (not shown) that controls the memory core. The core controller performs activation control to the memory core within each bank in response to the bank activation signals actpz 0 through 3 described above. In this case, the above-mentioned bank address BA is supplied to each row decoder, the corresponding word lines are driven, and then a group of sense amplifiers are activated. This is the activation operation (active operation) performed in the banks.
Hereinafter, operation of selecting banks to be activated within the memory device, control of the timing of bank activation, row address generating operation, and bank allocation setting operation in the memory mapping are specifically described as the functions required in the multi-bank access.
[Selecting Banks]
The timing chart is same as the above-mentioned example, wherein, along with the extended mode register set command EMRS, a register setting data V and the step number data RS are inputted to a bank address terminal BA and an address terminal ADD respectively, and then set into the mode register. Furthermore, a bank address BA, a row address RA, and the multi-bank information SA′ are inputted along with the active command ACT.
The memory device latches the multi-bank information items SA′ 0, 1 and bank addresses BA 0, 1 that are inputted to each input buffer 94 to a latch circuit 720 in synchronization with a clock CLK. The multi-bank activation controller 88 has a bank decoder 88A that decodes the bank addresses BA 0 and 1 to generate four bank selection signals bnkz<3:0>, and a bank active pulse output circuit 88B that generates bank activation signals actpz<3:0> allocated with the active pulses actpz, in response to the bank selection signals.
In the case of SA′=01, there are two banks to be activated in the horizontal direction, thus the bank decoder 88A degenerates (ignores) the bank address BA0 and brings the bank selection signal bnkz<3:0> of two banks selected only by the bank address BA1 to H level. Along with this operation, there is generated a bank activation signal actpz<3:0> of the bank selected by the supplied bank address and the adjacent bank, in the row direction.
In the case of SA′=10, there are two banks to be activated in the horizontal direction, thus the bank decoder 88A degenerates (ignores) the bank address BA1 and brings the bank selection signal bnkz<3:0> of two banks selected only by the bank address BA0 to H level. Along with this operation, there is generated a bank activation signal actpz<3:0> of the bank selected by the supplied bank address and the adjacent band, in the column direction.
In the case of SA′=11, there are a total of four banks to be activated in the horizontal and vertical directions, thus the bank decoder 88A degenerates (ignores) the bank addresses BA0 and BA1 and brings the bank selection signals bnkz<3:0> of all four banks to H level. Along with this operation, there are generated bank activation signals actpz<3:0> of four banks adjacent to, in the row and column directions, the banks selected by the supplied bank address.
Degeneration of the bank addresses performed by the bank decoder is a control of bringing the corresponding bank addresses BA and inversion signals/BA thereof to H level. Accordingly, the bank decoder 88A ignores these bank addresses and selects a bank by means of the remaining bank addresses.
Returning to
According to the second example described above, the upper left leading bank is selected by the supplied bank address, and the right, lower, and lower right banks are accordingly selected by 3 bits of simultaneously activated-bank data items SA′ 0 through 2. Therefore, two banks in an oblique direction can be simultaneously activated, or three banks can be simultaneously activated, and a combination of banks to be simultaneously activated can be changed flexibly. Therefore, the second example can be accommodated to an access made to special areas.
As shown in the timing chart of
The activating bank determination circuit 88D of the multi-bank activation controller 88 determines bank to be simultaneously activated, on the basis of the step number data CST, the rectangle size information W, H and the column address CA. This determination algorithm is shown in
As shown in the activating bank determination algorithm of
To explain the example shown in
The activating bank determination circuit 88D uses the above-described determination algorithm to determine banks to be simultaneously activated. As a result, the activating bank determination circuit 88D outputs a bank address degenerate signal 88E to the bank decoder 88A. Specifically, in the case in which the banks in the horizontal direction are straddled, the bank address BA0 is degenerated, and in the case in which the banks in the vertical direction are straddled, the bank address BA1 is degenerated. This degenerate signal 88E is the same as the multi-bank information SA′0, 1 shown in
More specifically, in the third example, the activating bank determination function that the memory controller performs in the first and second examples is provided in the memory device. If the activating bank determination algorithm described above is provided within the memory controller, the multi-bank information SA′0, 1 shown in
As described above, in order to realize the multi-bank activation function, the multi-bank activation controller 88 generates the bank selection signal bnkz<3:0> of a bank to be activated, on the basis of the input data, further generates the bank activation signal actpz<3:0> on the basis of the generated bank selection signal bnkz<3:0>, and controls the activation operation of the banks to be activated.
[Bank Activation Timing]
The multi-bank activation controller 88 supplies the bank activation signal actpz<3:0> to banks to be activated, and each of the banks starts the activation operation on a page area in response to this bank activation signal.
In this case, it is preferred to control the timing for activating a plurality of banks. For example, a control for performing the activation control on the plurality of banks simultaneously, and a control for performing the activation operation on the plurality of banks at different times can be considered. In the former case, there are no restrictions on timings for inputting a subsequent read command or write command. In the latter case, on the other hand, the plurality of banks do not perform the activation operation simultaneously, thus an instantaneous increase of consumed current can be avoided.
Each of banks bank 0 through 3 has a memory core 781 including a memory cell array, and a core control circuit 780 for controlling the memory core. In response to the bank activation signals actpz<3:0>, each core control circuit 780 activates a row decoder within the memory core 780, drives the word lines corresponding to the row addresses, and activates a row of sense amplifiers.
In Example 1 shown in
The multi-bank activation controller 88 is constituted by an activating bank control circuit 88C and the bank active pulse output circuit 88B. The activating bank control circuit 88C has incorporated therein the function of the bank decoder described above, determines an order of performing activation on banks to be activated, on the basis of the supplied bank address BA[1:0] and the multi-bank data SA′ [1:0], and supplies a selection signal 795 to the selectors SEL. This selection signal 795 consists of 8 bits. Two bits of the selection signal are supplied to each selector, and each selector outputs the bank activation signal actpz<3:0> to the banks to be activated, in response to the selection signal 795.
It should be noted that the delay circuits 791 through 793 generate the necessary delay active pulses actpz 1 through 3 in accordance with the activated-bank number data 790, and thereby enables power saving.
In the case in which the multi-bank data SA′ [1:0]=11, all of the four banks are activated, and the activation order (00, 01, 10, 11) differs according to the supplied bank addresses BA[1:0], as shown in the activation order data table 800. For example, in the case in which the supplied bank address BA[1:0]=00, activation control is performed in order of the banks Bank 0, 1, 2 and 3. The activation order data (8 bits of 00, 01, 10, 11) shown in the table 800 corresponds to the 8-bit selection signal 795 that is generated by the activation bank control circuit 88C shown in
Furthermore, in the case in which the supplied bank address BA[1:0]=01, the activation control is performed in order of the banks Bank 1, 0, 3 and 2. The bank activation signals actpz <0> through <3> in this case are shown in the timing chart of
Similarly, in the case in which the multi-bank data SA′ [1:0]=01, two banks in the horizontal direction are activated, and, as shown in the activation order data table 801, two activation order data items (00, 01) are generated in response to the supplied bank addresses BA[1:0].
Similarly, in the case in which the multi-bank data SA′ [1:0]=10, two banks in the vertical direction are activated, and, as shown in the activation order data table 802, two activation order data items (00, 10) are generated in response to the supplied bank addresses BA[1:0].
According to this table 802, in order to activate the two banks, the active pulse actpz 0 and the delay active pulse actpz 2 are used to generate a bank activation signal, since the table 802 and the table 800 are in common. Specifically, as shown in a timing chart 803 below the table 802, the internal active command ACT is generated at the timing of the active pulse actpz 0 and of the delay active pulse actpz 2 in response to a supplied active command ACT.
Therefore, in the case in which the multi-bank data SA′[1:0]=10, the activation order data (00, 01) shown in a table 804 may be generated, in place of the one shown in the table 802. In this case, as shown in a timing chart 805 below the table 804, the internal active command ACT is generated at the timing of the active pulse actpz 0 and of the delay active pulse actpz 1 in response to the supplied active command ACT. Specifically, the two banks to be activated simultaneously are activated successively at different timings.
According to this Example 3, since the delay circuits are the flip-flop circuits 810 through 312 synchronized with the clock CLK, three delay active pulses actpz 1 through 3 are generated from the active pulse actpz 0 at the delay timing synchronized with the clock CLK. Specifically, as shown in the timing chart of
[Generating Row Address]
The multi-bank access function of the present embodiment performs activation control on all page areas of the banks required to be accessed, in response to the active command ACT inputted once, a bank address, and a row address. Therefore, on the basis of the supplied bank address and row address, the banks required to be activated need to be determined, and row addresses need to be generated for specifying page areas required to be activated.
According to this memory mapping 12, in the case of a rectangular area RC0 to be accessed, it is evident from the supplied bank address BA=BA0 (=00) and the supplied row address RA=RA0 that the addresses of page areas to be activated simultaneously are BA0/RA0, BA1/RA0, BA2/RA0, BA3/RA0. In the case of a rectangular area RC1, it is evident from the supplied bank address BA=BA1 (=01) and row address RA=RA0 that the addresses of page areas to be activated simultaneously are BA1/RA0, BA0/RA1, BA3/RA0, BA2/RA1. In the case of a rectangular area RC2, it is evident from the supplied bank address BA=BA2 (=10) and row address RA=RA0 that the addresses of page areas to be activated simultaneously are BA2/RA0, BA3/RA0, BA0/RA(0+RS), BA2/RA(0+RS). In the case of a rectangular area RC3, it is evident from the supplied bank address BA=BA3 (=11) and row address RA=RA0 that the addresses of page areas to be activated simultaneously are BA3/RA0, BA2/RA(0+1), BA1/RA(0+RS), BA2/RA(0+RS+1).
To generalize the above addresses, in the case in which the supplied row address is RA and the step number of the row address of the memory mapping 12 is RS, a row address to be generated in each of the banks Bank 0 through 3 is as shown in the logical value table 820 in response to the supplied bank addresses BA0, BA1. Specifically, the row addresses to be generated are as follows:
Therefore, the row address calculator 97 shown in
For example, in the case in which the supplied bank address BA=01, the row address control circuit 832 generates “01, 00, 01, 00” as the selection signal 835, in response to which each of the selectors SEL selects RA+1, RA, RA+1, RA, beginning at the top, and supplies the selected row addresses to the address decoders 836 of the banks respectively. In the banks, the address decoders 836 of selected banks are activated in response to the above-mentioned bank activation signal actpz<3:0>, the activated address decoders then decode the above-described row addresses RA+1, RA, RA+1, RA, and corresponding word lines are activated.
As described above, the row address calculator 97 generates four necessary row addresses from the row addresses RA to be supplied. Therefore, the memory device can internally generate the four necessary row addresses by inputting the row addresses by means of single active command, whereby a plurality of banks can be activated.
[Memory Mapping Setting]
In order to realize the multi-bank activation function, it is necessary to set the memory mapping information in the memory device. For example, as described with reference to
As shown in the timing chart of
In response to the memory mapping information AR set into the mode register 96, the selectors SEL of the bank address switching circuit 861 selects either 2-bit bank address BA0 or BA1 to generate an internal bank addresses ba0Z and ba1z respectively. As shown in the figure, in the case where memory mapping information AR=L, the internal bank addresses are set into ba0z=BA0 and ba1z=BA1, and in the case where memory mapping information AR=H, the internal bank addresses are set into ba0z=BA1 and ba1z=BA0.
In this manner, by switching the bank addresses BA0, BA1 by means of the input section on the basis of the memory mapping information AR, the bank selection function and row address generation function incorporated in the memory device can be configured based on the common memory mapping 12A.
It should be noted in the above embodiment that although the multi-bank information (SA′), the simultaneously-activated-bank data (SA′ 0 through 2), the rectangular area size data (W, H) and the like are inputted from the special input terminal SP, such input can be realized by unused terminals. For example, in a read operation, if row addresses are inputted by the address terminals Add 0 through 12 and column addresses are inputted by the address terminals Add 0 through 9, the address terminals Add 10 through 12 are not used when the column addresses are inputted. Therefore, these control data items SA′, W, H and the like can be inputted from these unused address terminals Add 10 through 12 when inputting the column addresses. The present invention can be applied to such a case.
Moreover, various information items that are set into the mode register by the extended mode register set command EMRS are not limited to the descriptions of the above embodiment, thus the applicable scope of the present invention comprises inputting these various information items from the address terminals.
<<Multi-Bank Access and Byte Boundary>>
There has been described that the memory device has the byte boundary function in order to respond to a rectangular access that across the boundary of memory unit area selected by bank address and column address. There has also been described that the memory device has the multi-bank access function in order to respond to the case where a rectangular access is made across the boundary of page area selected by bank addresses and row addresses.
Here, in the case in which a rectangular access area acrosses the boundary of page areas as well as memory unit areas, the both functions can allow access to be made by a single input of an active command and can eliminate unnecessary data outputs. Specific examples of this case are described hereinafter.
As the row controllers, there are provided the multi-bank activation controller 88 that generates, from a bank address BA and multi-bank information SA′, bank activation signals actpz<3:0> of banks to be activated, and row address calculators 97-2, 97-3 that calculate a row address of each bank from a bank address BA, row address RA, and step number data RS of the row address. These row address calculators 97-2, 97-3 are each a part of the configurations described with reference to
The column controller 90 has column address controllers 290-2, 290-3 that generate internal column addresses I-CA-2, 3 in each bank from a column address CA and bank address BA to be supplied, as well as from the start byte signal SB and the step number data CST of the column address. These column address controllers 290 are the same as the column address generating section shown in
Moreover, the column controller 90 generates a control signal S221 for selecting data of byte areas Byte 0 through 3 within each bank, on the basis of the bank address BA and column address CA to be supplied, as well as the start byte signal SB. The data latch circuits within these four byte areas Byte 0 through 3 within each bank are selected by the control signal S221, and the selected data latch circuits are connected to an input/output I/O bus. The configurations and operations of the byte areas Bytes 0 through 3 within each bank are the same as those described with reference to
The operation that is performed when the rectangular area 22 shown in
As shown in the timing chart of
Next, bank addresses BA and row addresses RA of page areas with pixels in the upper left portion of the rectangular access, as well as multi-bank information SA′=4 (a reference numeral 873 in the figure), are inputted along with an active command ACT (a reference numeral 876 in the figure). When SA′=4, simultaneous activation of 2×2=4 banks. In response to this, the multi-bank activation controller 88 outputs the bank activation signals actpz<3:0> to these four banks. Furthermore, the row address calculators 97-2, 3 calculate a row address of each of the banks. Then, row decoders of the four banks decode the calculated row address to drive the corresponding word lines, and then the banks are activated.
Thereafter, a bank address BA=3, a column address CA 126, a start byte signal SB=2 (a reference numeral 874 in the figure), and second information of the byte combination information BMR=UP (a reference numeral 875 in the figure) are inputted along with a read command RD (a reference numeral 877 in the figure). The column address controller 290-3 of Bank 3 corresponding to this bank address BA generates a column address CA=126, 127 on the basis of the supplied column address CA=126 and the start byte signal SB=2, and outputs the column address CA=127 as the internal column address I-CA-3. Accordingly, Bank 3 causes each of the byte areas Bytes 0 through 3 to output data on the column addresses 126, 127. Then, in response to the control signal S221 inputted from a data latch selector 221, the byte areas Bytes 2, 3 and the byte areas Bytes 0, 1 output the data on the column address CA=126 and the data on the column address CA=127 to the I/O bus, respectively.
Next, the bank address BA=3, column address CA=127, SB=2, and BMR=UP are inputted along with the read command RD. In response to this, the column address controller 290-3 generates the internal column address I-CA-3=127, and Bank 3 outputs 4-byte data of the column address 127. On the other hand, the column address controller 290-2 detects, from the bank address BA=3, column address CA=127, and start byte signal SB=2, that the data needs to be read from Bank 2, and refers to the step number data CST of the column address to output a column address CA=124 of Bank 2 as the internal column address I-CA-2. Consequently, Bank 2 reads 4-byte data of the column address CA=124. Then, the data latch selector 221 generates the control signal S221 on the basis of the bank address BA=3, column address CA=127, and start byte signal SB=2, and the data on the byte areas Bytes 2, 3 and the data on the byte areas Bytes 0, 1 are outputted from Bank 3 and Bank 2, respectively, to the I/O bus.
Subsequently, column addresses CA=2, 3, 6, 7, . . . corresponding to the bank address BA=1 are inputted along with the read command RD, the column address controllers 290 similarly generate required column addresses, the data latch selector 221 generate the required control signal S221, and 4-byte data of the position corresponding to the start byte signal SB=2 is outputted from the same bank or an adjacent bank.
Although the above description was about the operation of the read command, the same column access control is performed in the case of a write command as well.
According to the present embodiment, with respect to the rectangular access that is made across page areas and straddles a plurality of banks, access can be made from arbitrary bytes (orbits) within a memory unit area to 4-byte data (or 4-bit data), on the basis of the start byte signal SB and the byte combination information BMR.
[Memory Controller Responding to Multi-bank Access]
The memory controller for controlling the memory device having the multi-bank access function is described next. As described with reference to
In this memory mapping 12, eight page areas are arranged in the horizontal direction, and four page areas are arranged in the vertical direction. Therefore, in this memory mapping 12 the number of pixels in the horizontal direction is 128 (=16 pixels×eight page areas), and the number of pixels in the vertical direction is also 128 (=32 rows×four page areas). Various computation processes are described hereinafter based on this memory mapping.
Therefore, the interfaces IF_1 through IF_n exchange data with the access request source blocks 81. There are two types of accesses made from the access source blocks: horizontal access and rectangular access. The arbitration circuit 540 arbitrates the access requests sent from the interfaces, and outputs an access instruction to the sequencer SEQ_n that has acquired the access right. The selector SEL then selects a command and address from the sequencers SEQ_1 through SEQ_n in response to a selections signal S540 sent from the arbitration circuit 540, and outputs the selected command and address to the memory device 86. The selector SEL further selects a data line Data from the interfaces IF_1 through IF_n in response to the selection signal S540.
In a register 543 various parameters are set from the host CPU. The parameters include function data on whether the memory device 86 has the byte boundary function and the multi-bank access function. In addition, configuration parameters include a row address of an upper left pixel on the frame image ROW_BASE_ADR, the number of pixels in the horizontal direction of the frame image PICTURE_MAX_XSIZE, and the like.
The memory device 86 is an image memory having the abovementioned byte boundary function and multi-bank access function. The memory controller 82 and the memory device 86 shown in
It should be noted that the frame image FM-IMG corresponds to the memory mapping 12 in
On the other hand, in the rectangular access (at the time of writing) shown in
In the case of the horizontal access as well, the access source blocks supply the leading address ADR of the horizontal access and horizontal access size SIZE, receive the read data RDATA in the case of reading, and output the write data RDATA in the case of writing. Specifically, as shown in
The sequencer SEQ_n issues a command on the basis of the abovementioned parameters and the parameters set in the register, and begins accessing the memory device 86. In accordance with the status of issuance of the command, the sequencer SEQ_n issues the enable signal EN corresponding to the amount of data, and this enable signal EN is transmitted to the access request source 81_n via the interface IF_n. In the case in which reading is performed, the read data is transmitted from the memory device 86 to the access request source 81_n via the interface IF_n in response to the enable signal EN described above. In the case in which writing is performed, the write data is transferred from the access request source 81_n to the memory device 86 via the interface IF_n in response to the enable signal EN described above.
In this manner, during the access control process in which the command is issued to the memory device 86, the sequencer SEQ_n asserts, to the arbitration circuit 540, an active signal ACTIVE indicating that the data is being accessed. Once the access to the memory is ended, the active signal ACTIVE is negated.
PICTURE_MAX_XSIZE=128
ROW_BASE_ADR=0
(X_POS, Y_POS)=(28, 94)
(X_SIZE, Y_SIZE)=(8, 4)
Moreover,
The intermediate parameter generating section 941 generates the intermediate parameter by means of the following computation.
(1) In the case in which the rectangular data RIMG straddles the four page areas, the upper left bank address BA can be obtained in the manner described next. In the following manner, first of all, the frame pixel coordinates (X_POS, Y_POS) of the upper left pixel of the rectangular data RIMG within the frame image FM-IMG are obtained, and these coordinates are divided by the number of horizontal pixels 16 and the number of vertical pixels 32 of the page area respectively, whereby a bank X address BA_X_ADR and a bank Y address BA_Y_ADR are obtained. Each remainder obtained in this division is rounded.
BA_X_ADR=X_POS/16
BA_Y_ADR=Y_POS/32
The bank X address BA_X_ADR and the bank Y address BA_Y_ADR each indicates which page area in the horizontal direction or vertical direction in the memory mapping 12 the upper left pixel of the rectangular area corresponds. It should be noted that the upper left portion of the memory mapping 12 is located at the 0th page area in the horizontal direction and the 0th page area in the vertical direction.
The following bank addresses BA[1:0] are obtained depending on whether the obtained bank X address BA_X_ADR and the bank Y address BA_Y_ADR are odd or even.
If the BA_X_ADR is an even number and the BA_Y_ADR is an even number, upper left BA=0
If the BA_X_ADR is an odd number and the BA_Y_ADR is an even number, upper left BA=1
If the BA_X_ADR is an even number and the BA_Y_ADR is an odd number, upper left BA=2
If the BA_X_ADR is an odd number and the BA_Y_ADR is an odd number, upper left BA=3
(2) The bank address BA on the right side, the bank address BA on the lower side, and the bank address BA on the lower right bank address BA are obtained as follows. Specifically, according to the memory mapping 12, the right BA, lower BA, and lower right BA are obtained, as shown below, from the upper left BA[1:0] obtained in (1) described above. It should be noted that “˜” means an inverted bank address.
Right BA=[upper left BA [1], ˜upper left BA [0]]
Lower BA=[˜upper left BA [1], upper left BA [0]]
Lower right BA=[˜upper left BA [1], ˜upper left BA [0]]
According to the examples shown in
BA_X_ADR=X_POS/16=28/16=1
BA_Y_ADR=Y_POS/32=94/32=2
are established. Also, since BA_X_ADR=1 is odd and BA_Y_ADR=2 is even, the upper left bank address BA[1:0]=01 is established. That is, BA1 can be obtained.
Moreover,
The right BA, lower BA, lower right BA, BA0, BA3, BA2, can be obtained from the upper left BA=2′b01, as follows.
Right BA=[upper left BA [1], ˜upper left BA [0]]=[00]=0
Lower BA=[˜upper left BA [1], upper left BA [0]]=[11]=3
Lower right BA=[˜upper left BA [1], ˜upper left BA [0]]=[10]=2
(3) An access start row address ROW_ADR within the logical address space S86 of the memory is as follows.
ROW—ADR=ROW_BASE—ADR+[PICTURE_MAX—XSIZE/(16*2)]*[Y—POS/(32*2)]+X—POS/(16*2)
Specifically, ROW_BASE_ADR is a row address of an upper left pixel of the frame image, PICTURE_MAX_XSIZE/(16*2) is the number of row address steps in the horizontal direction within the frame, Y_POS/(32*2) indicates at what number in the vertical direction within the frame the upper left pixel of the rectangular area RIMG is positioned (a reference numeral 961 in
According to the examples shown in
(4) An access start column address COL_ADR in the logical address space S86 of the memory is a column address within a page, and is obtained as follows:
COL—ADR=4*Y—POS%32+(X—POS/4)%4
Here [%] is a remainder. Specifically, the number of steps of the column address within the page area is 4, the number of columns in the horizontal direction in the page area is 4, and the number of rows in the vertical direction is 32, as shown in
According to the examples shown in
COL—ADR=4*Y—POS%32+(X—POS/4)%4 =4*94%32+(28/4)%4=120+3 =123
(5) Next, since the number of pixels in the horizontal direction of a page area is 16 and the number of pixels within the vertical axis of a page area is 32, the X coordinate (BA_X_POS) and Y coordinate (BA_Y_POS) within the bank are obtained as follows:
BA_X_POS=X_POS%16
BA_Y_POS=Y_POS%32
The results correspond to the coordinates (BA_X_POS, BA_Y_POS) of the upper right pixel of the rectangular area RIMG within the upper right bank (BA1/RA4) shown in
(6) X-direction BANK straddling flag and Y-direction BANK straddling flag indicating whether the rectangular area RIMG straddles a bank (page area) are obtained as follows from the X and Y coordinates within the bank, i.e., BA_X_POS, BA_Y_POS, which are obtained in (5), and the sizes of the rectangular area RIMG in the horizontal direction and vertical direction, i.e., X/Y_SIZE:
If BA_X_POS+X_SIZE>15, X-direction BANK straddling flag=1
If BA_Y_POS+Y_SIZE>31, Y-direction BANK straddling flag=1
Specifically, as shown in
To describe the above (5) and (6) by means of the examples shown in
BA_X_POS=X_POS%16=28%16=12
BA_Y_POS=Y_POS%32=94%32=30
X-direction BANK straddling flag and the Y-direction BANK straddling flag are as follows:
BA_X_POS+X_SIZE=12+8=20, which is higher than 15, thus X-direction BANK straddling flag=1, and
BA_Y_POS+Y_SIZE=30+4=34, which is higher than 31, thus Y-direction BANK straddling flag=1,
thus the bank is straddled by RIMG in both X and Y directions.
(7) Next, the sizes in X, Y directions of a rectangular area straddling four banks, i.e., 1ST_X_SIZE, 2ND_X_SIZE, 1ST_Y_SIZE, 2ND_Y_SIZE, are computed as follows:
As shown in
If X-direction BANK straddling flag=1,
1ST_X_SIZE=16−BA_X_POS
2ND_X_SIZE=X_SIZE−1ST_X_SIZE
If X-direction BANK straddling flag=0,
1ST_X_SIZE=X_SIZE
If Y-direction BANK straddling flag=1,
1ST_Y_SIZE=32−BA_Y_POS
2ND_Y_SIZE=Y_SIZE−1ST_Y_SIZE
If Y-direction BANK straddling flag=0,
1ST_Y_SIZE=Y_SIZE
When the examples shown in
since X-direction BANK straddling flag=1,
1ST_X_SIZE=16−BA_X_POS=16−12=4
2ND_X_SIZE=X_SIZE−1ST_X_SIZE=8−4=4
and since Y-direction BANK straddling flag=1,
1ST_Y_SIZE=32−BA_Y_POS=32−30=2
2ND_Y_SIZE=Y_XIZE−1ST_Y_SIZE=4−2=2
(8) Finally, the row address step information RS is the number indicating how many row addresses increase when scanning the frame image 12 (FM-IMG) from the left end to the right end in the horizontal direction, and is obtained by the following equation:
RS=PICTURE_MAX—XSIZE/(16*2)
In the examples shown in
RS=PICTURE_MAX—XSIZE/(16*2)=128/32=4
As described above, the intermediate parameter generating section 94 computes the intermediate parameters (1) through (8) by means of the above equations, and outputs the results to the command/address generating section 942. Then, the command/address generating section 942 generates a command, bank address BA, row address RA, column address CA, row address step information RS and multi-bank information SA′ to be supplied to the memory 86, on the basis of the intermediate parameters.
Since whether the memory device to be controlled has the multi-bank access function or not is set in the register 543, this matter is checked (S43). If the multi-bank access function is not set, the normal control operation is performed to repeatedly issue the active command ACT and read command RD (or write command) in accordance with the number of banks (S44).
In the case in which the multi-bank access function is set, the command/address generating section 942 determines the number of banks on the basis of a bank straddling flag Flag [X:Y] (S46). As a result, the command/address generating section 942 generates the multi-bank information SA′ [1:0] from the bank straddling flag Flag [X:Y]. The relationship therebetween is as follows:
Flag [X:Y]=00 SA′ [1:0]=00 (one bank is activated)
Flag [X:Y]=10SA′ [1:0]=01 (two banks are activated in the X direction)
Flag [X:Y]=01 SA′ [1:0]=10 (two banks are activated in the Y direction)
Flag [X:Y]=11 SA′ [1:0]=11 (four banks are activated)
Therefore, the command/address generating section 942 issues the multi-bank information SA′ along with the active command ACT, leading bank address BA, and leading row address RA (S80, S70, S60, S50).
In the case in which the four banks are activated simultaneously, the command/address generating section 942 within the memory controller issues the multi-bank information SA′=11 along with the active command ACT and row address RA (S50). Then, the command/address generating section 942 issues a read command or write command along with the column address CA within the upper left bank (S51). This read or write command is repeatedly issued while incrementing the column address a number of times, i.e., 1ST_X_SIZE=N times, corresponding to the access size in the X direction within the upper left bank. Moreover, a read command or write command is issued along with the column address CA within the right bank (S52). This read or write command is repeatedly issued while incrementing the column address a number of times, i.e., 2ND_X_SIZE=N times, corresponding to the access size in the X direction within the upper left bank. Then, the number of lines is incremented by one (S53), and the steps S51, S52 and S53 are repeated until the number of lines exceeds the 1ST_Y_SIZE, which is the access size in the Y direction within the upper left bank (S54).
Next, the command/address generating section 942 issues a read command or write command along with the column address CA of the lower bank (S55). This read or write command is repeatedly issued while incrementing the column address a number of times, i.e., 1ST_X_SIZE=N times, corresponding to the access size in the X direction within the lower bank. Furthermore, a read command or write command is issued along with the column address CA of the lower right bank (S56). This read or write command is repeatedly issued while incrementing the column address a number of times, i.e., 2ND_X_SIZE=N times, corresponding to the access size in the X direction of the right bank. Then the number of lines is incremented by one (S57), and the steps S55, S56 and S58 are repeated until the number of lines exceeds the 2ND_Y_SIZE, which is the access size in the Y direction within the lower bank (S58).
The command/address generating section 942 obtains the column address to be issued along with the abovementioned read or write command, from the leading column address COL_ADR=123 and the column address step number data CST=4, which are the intermediate parameters, on the basis of the memory map.
In the case in which two banks are activated simultaneously in the X direction, the command/address generating section 942 within the memory controller issues the multi-bank information SA′=01 along with the active command ACT and row address RA (S60). Then, a read or write command and a column address are issued N times to the upper left bank (S61), and a read or write command and a column address are issued N times to the right bank (S62). These steps S61, S62 and S63 are repeated until the number of lines exceeds the 1ST_Y_SIZE (S64).
In the case in which two banks are activated simultaneously in the Y direction, the command/address generating section 942 within the memory controller issues the multi-bank information SA′=10 along with the active command ACT and row address RA (S70). Then, a read or write command and a column address are issued N times to the upper left bank (S71), and these steps S71 and S72 are repeated until the number of lines exceeds the 1ST_Y_SIZE (S73). Similarly, a read or write command and a column address are issued to the lower bank (S74, S75, S76).
Finally, in the case in which only one bank is activated, the command/address generating section 942 within the memory controller issues the active command ACT, row address RA, and multi-bank information SA′=00 (S80). Then, a read or write command and a column address are issued N times to the upper left bank (S81), and these steps S81 and S82 are repeated until the number of lines exceeds 1ST_Y_SIZE (S83).
As described above, once the access request REQ and access target area data X/Y_POS, X/Y_SIZE are received from the access source block, the memory controller 82 generates the intermediate parameter from the row address of the frame area ROW_BASE_ADR and the number of pixels in the horizontal direction PICTURE_MAX_XSIZE that are set in the register 543, then determines the number of banks to be activated simultaneously, issues the multi-bank information SA′ corresponding to the result of determination, and then activates the bank within the memory device simultaneously. Accordingly, a plurality of banks can be activated by issuing the active command once, whereby memory access can be performed efficiently.
In the example shown in
Furthermore, the memory controller repeatedly issues a read command RD, a bank address BA and a column address CA. As shown in
In the case in which a plurality of banks are activated by a single active command by means of the multi-bank access function, when the byte boundary function is used to access image data in the middle of a 4-byte area, the memory controller issues a read or write command, a bank address BA, a column address CA, start byte information SB, and memory map information BMR, as shown in
It should be noted that the above embodiment has described an example of an image memory that stores the digital image data in which image data items of a plurality of pixels are arranged two-dimensionally. However, the present invention can be applied to not only the image memory for storing the image data, but also a memory device that can also store two-dimensionally arrayed data items besides the image on the basis of predetermined mapping rules. If the stored data items are arranged two-dimensionally, sometimes the data items of a plurality of page areas need to be accessed when accessing any rectangular area within the two-dimensionally arrayed data. The present invention can be applied in such a case as well.
Number | Date | Country | Kind |
---|---|---|---|
2006-345415 | Dec 2006 | JP | national |
2007-010763 | Jan 2007 | JP | national |
This application is a divisional of application Ser. No. 11/707,252, filed Feb. 16, 2007, the entire specification, claims and drawings of which are incorporated herewith by reference.
Number | Name | Date | Kind |
---|---|---|---|
6314048 | Ishikawa | Nov 2001 | B1 |
7483331 | Uchida | Jan 2009 | B2 |
20030067832 | Emmot et al. | Apr 2003 | A1 |
Number | Date | Country |
---|---|---|
1 113 449 | Jul 2001 | EP |
8-180675 | Jul 1996 | JP |
9-231745 | Sep 1997 | JP |
10-105367 | Apr 1998 | JP |
2001-312885 | Nov 2001 | JP |
2002-132577 | May 2002 | JP |
Number | Date | Country | |
---|---|---|---|
20080189467 A1 | Aug 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11707252 | Feb 2007 | US |
Child | 12000840 | US |