Method for operating a memory

Abstract: The invention provides a method for operating a memory which is capable of storing a two-dimensional page bitmap including one or more two-dimensional rectangular image bitmaps, wherein each image bitmap is represented by a plurality of words forming columns and rows in direction of the first and second dimension respectively. The number of said words in each column is even. In a first step, the sequence of the words of one of said image bitmaps is changed, wherein the words of one set of columns is in sequence and the words of the other set of columns is in a swapped sequence. Then, the image bitmap is loaded into said memory region column by column by sequentially loading the words in the changed sequence, wherein the words of said one set is loaded into sequential locations and the words of said other set is loaded into the location that would result if the least significant bit of each successive addresses was reversed. Finally, the entire page is sequentially read out from said memory, by row or column.

Description: This invention relates to a method for operating a memory. In more detail, the invention relates to a method of loading a rectangular image, in the form of a bit map, into a memory, and reading a page out from the memory. The parent application of this invention has been published in EP-A-0 640 979. Prior art techniques of accessing memory are known from DE 39 13 599 C1 or US-A-4,818,932. DE 39 13 599 C1 discloses an image memory with high speed input and output, having plural memory blocks and plural video channels operated in time multiplex mode. Each memory block has ist own addressing means associated, and images as well as parts thereof may be addressed in full speed along columns as well as rows, forwards or backwards. For having both scan directions selectable, addressing is performed such that, by means of a diagonal multiplex structure, subsequent pixels are located in subsequent memory blocks when scanning along columns as well as along rows. The length of the rows and columns is ZL = N x BZ + 1 and SL = K x BZ + 1, with BZ being the number of memory blocks and N, K being integer numbers. US-A-4,818,932 discloses a concurrent memory access system for providing concurrent access to an addressable memory space by a plurality of data processing devices. The system includes a plurality of independently accessible memory banks, and each bank provides a separate portion of the addressable memory space. Further, there are provided address and data multiplexers corresponding to each memory bank for providing access by any selected one of the data processing devices to the corresponding memory bank. The multiplexers are controlled to permit different processing devices to access different memory banks at the same time while arbitrating competing demands for the same memory bank. Further, a digital oscilloscope is provided. In a typical printing system images are loaded either from an input scanner or from a character generator to a page buffer which builds up a page bit map. When the bit map is complete, the image is sent out, one line at a time, to the printer. At high printing rates, the speed at which this transfer can take place from the page buffer to the printer becomes a potentially limiting factor. What is required is a circuit that will accomplish this transfer at high speed. It is therefore the object of the invention to provide a method for operating a memory, and a printing system capable of accomplishing high speed transfer. This object is solved by the invention as claimed in the independent claims. Preferred embodiments are defined by the dependent claims. The invention arranges the image page buffer in the memory so that the image buffer can be accessed at maximum speed in both slow scan and fast scan directions. The page buffer uses an odd number of locations for the page height and applies data swapping to bytes of partial images with even height. In a preferred embodiment there are, first, provided two buffer registers between the page buffer and the printer, one for transferring words in odd page buffer locations, and one for transferring words in even locations. In this system, one register is being loaded while the other is being read out, thus doubling the speed of the circuit. A problem with the prior art is that if the rows are read out, instead of the columns, the words will either be all odd or all even, depending on the row number, and the odd-even buffer system will not work at its rated speed. To remedy this defect, this two-buffer register system is used in combination with a memory that has an odd number of memory locations per column. To use a specific numerical example, in the prior art a page height may be 1,000 bytes. In this embodiment, the page height would either be 999 or 1,001 bytes. The result is that, if the memory is sequentially loaded, as is the typical case, not only are sequential words in any column alternately odd and even, but sequential words in any row are also alternately odd and even. The result of this is that, when reading out either rows or columns of data, the odd-even buffer registers will operate at rated speed. One additional problem is encountered and must be remedied. If a partial image, such as a text character, contains an even number of words per column and is loaded separately into the memory, the last word of one column and the first word of the next column will both be either odd or even. The remedy is to, first, switch the bytes in every other column so that the odd and even data bytes are reversed, and second, switch the state of the least significant bit of the address for alternate lines while the image is being loaded into memory. Thus, if the first column was read out from the character generator as words 1, 2, 3 and 4, then the second column will be read out 2, 1, 4, 3. Then, when loading this data into the memory the address locations are also switched, so that the data goes into the normal location, but the odd-even sequence will be preserved. On the other hand, odd words present no problem so they will be loaded normally. In this way, partial images of either odd or even height will have their odd and even bytes in a checkerboard pattern. Thus, using normal addressing for partial images having an odd number of words per column, and using addressing where the least significant bit is reversed for words having a even number of words per column results in rated speed in all cases when the entire page is read out. The invention enables the high speed transfer of data along either rows or columns from a page buffer to a printer, the page buffer having, in the preferred embodiment, an odd number of locations and the buffer having two buffer registers, odd and even, to allow data transfer to proceed at burst mode rates in both directions. A method in accordance with the invention will now be described, by way of example, with reference to the accompanying drawings, in which: Fig 1 is a prior art diagram of the readout of a page buffer of even height showing that characters can not be read out along a row in burst mode if the words were read in along columns. Fig 2 is a prior art diagram of the readout of a page buffer of even height showing that characters can not be read out along a column in burst mode if the words were read in along rows. Fig 3 is a diagram showing the checkerboard pattern where images can be read out along columns or rows in burst mode. Fig 4 is a diagram describing data swapping. Fig 5 is a block diagram of the circuit. Fig 6 is a timing diagram. Fig 7 is a block diagram of a circuit for swapping data between a character generator and the memory. Fig 8 is a block diagram of a circuit for swapping the least significant bit of the address lines during the loading of data into memory. Page buffers are usually implemented from DRAM when a large buffer is required. Fig 1 shows a typical prior art system having an even number of locations in each image column. If consecutive accesses are in the same row of the DRAM, that is, if the row address does not change, then the access can utilize the fast page mode, or static column mode, to access DRAM memory, resulting in much better throughput than would result from a series of single accesses. Further, the memory can be divided into two banks of memory, an even bank and an odd bank, so that the two memory banks can be accessed in interleaved fast page mode. When one bank precharges, the other bank can be accessed. The interleaved fast page mode of two banks of memory can achieve one data word access per clock cycle maximum throughput. Using interleaved fast page mode with two DRAM memory banks, the image page buffer can be loaded with character image data so that either the bytes alternate between odd and even banks in the vertical direction, as in Fig 1, or in the horizontal direction, as in Fig 2. In the first case, an attempt to read along a row will not result in alternate odd and even accesses, and in the second case, an attempt to read along a column will not result in alternate odd and even accesses. In either case, both rows and columns can not be accessed at full speed since, in neither case, do the words alternate between the odd and even memory banks. When the image data is arranged along the fast scan direction, as in Fig 1, the addresses of the consecutive data words along the fast scan direction are different by one and the adjacent words along the horizontal direction are different by the page height, which in this case is an even number. The consecutive data in the fast scan direction falls into different banks. In this case, when the data is accessed along the fast scan direction, for example for raster scanline dumping, the maximum throughput can be achieved by alternate accessing of even and odd banks using interleaved fast page mode. However, character imaging usually generates short characters along the slow scan direction. One word high characters, for example, would be loaded into only one bank, and therefore can not be interleaved, and the performance of the circuit degrades by half. When the image buffer is arranged along the slow scan direction, as in Fig 2, the addresses of the consecutive data along the slow scan direction is different by one and the adjacent word along the fast scan direction is different by the page height In this case, the access for short characters is efficient along the slow scan direction but the access along the fast scan direction becomes a bottleneck. As shown in Fig 3, the odd and even words in the image buffer are configured in a checkerboard pattern so that consecutive data words of the page are in different banks, both vertically and horizontally. The memory system is configured along the fast scan direction so that the address of the consecutive data along the fast scan direction is different by one. However, by setting an odd number for the image height, adjacent locations in the slow scan direction are also in different banks. In this case, the accesses along the fast and slow scan directions can both be interleaved in fast page mode to achieve maximum speed. Fig 3 appears to show that when data is read out from a single column, successive words are coming from different rows, and that therefore the memory should not be operating in the page mode. However, in fact, successive words in the image column are most often located in the same row of the device. That is, the device row is so long that several image rows are typically stored in each device row. Therefore, many rows can be read out before an idle cycle is necessary, and in the described embodiment this will happen once for every ten horizontal lines. Therefore, in a four byte high image, for example, this would work out to one idle cycle for every forty lines. For odd word high character imaging, the sequence of the imaging words alternates between the two banks even at the transition between the top word in one column and the lowest word in the next column. Using a numerical example, if the character height is 5 bytes, as shown in Fig 3, a checkerboard pattern would result if the character image were read in sequentially. However, for even word heights the sequence of the loading of bytes would result in alternative odd and even bytes within a scanline, but all bytes in the same row would be the same. A character as short as two words has this disruption of alternate accesses on every other access. Address swapping is designed to improve performance in this special situation when the character height is an even number of words, and the memory height is an odd number of words. First, the bytes in every other column read out from the character generator are swapped. Again, to use an example, if the odd bytes in a swapped line of data are sent directly to the memory, and the even bytes are delayed two clock cycles, then the data will arrive at the memory in swapped order. This process in circuit form is shown in Fig 7. Next, as shown in Fig 8, to load this data into the memory, the addressing sequences of each two consecutive accesses on the odd number of scanlines, (1st, 3rd, ...etc) are swapped to achieve continuous alternate accesses to even and odd memory banks. For example, the access sequence of a 4 word high character, see Fig 4, without address swapping is: E11, 012, E13, O14, Idle, 021, E22, 023, E24, Idle, E31, O32, ... There is an idle cycle between the last data of one scanline and the first word of the next because both are in the same bank. If address swapping is applied, the access sequence is: Idle, 012, E11, 014, E13, 021, E22, 023, E24, 032, E31, 034, E33,.... After address swapping, there is no consecutive access to the same bank, and no wasted cycles at the scanline boundary. Fig 5 is a block diagram of the circuit The page buffer memory is divided into two halves, the even bank 10 and the odd bank 11. The memory control 13 sends address and strobe data to the memory banks alternately, and the words output from the two banks are multiplexed 12 onto a single line and output onto the system bus 14 to the raster output scanner. Similarly, character images from the character generator are transferred over the system bus 14 through the memory control to the odd and even banks 10, 11. The control signals for this circuit are shown in Fig 6. In the page mode the even memory (column) address must be held for two dock cycles, and the even memory control signal ( CAS strobe) occurs mainly during the second half of the address cycle. The output occurs slightly delayed from the strobe. Output words 0, 2, 4 and 6 are shown. The row address line and RAS are not shown here since it is assumed that the page mode is being used, which implies that the row address is kept constant The odd control signals are identical except that they are interleaved with the even control signals, so that the alternate odd output words are output in the dead time between even word outputs. The system multiplexer 12 combines the two data streams to form the system bus data.

Claims: A method for operating a memory (10, 11), the memory being capable of storing a two-dimensional page bitmap including one or more two-dimensional rectangular image bitmaps, each image bitmap being represented by a plurality of words forming columns and rows in direction of the first and second dimension respectively, the number of said words in each column of the image bitmap being even, the memory being divided into a first and second section, one section being for storing words having odd addresses, the other section being for storing words having even addresses, the method comprising the steps of: for one of said image bitmaps, changing the sequence of the words in the memory, wherein the sequence of the words in each column of one set of columns is unchanged and the sequence of the words of the other set of columns is swapped, loading said image bitmap into a memory region column by column, by sequentially loading the words in the sequence obtained by the changing step, wherein the words of said one set are loaded into sequential locations and the words of said other set are loaded into the location that would result if the least significant bit of each successive address was reversed, and sequentially reading out the entire page from said memory, by row or column. The method according to claim 1 wherein the swapped sequence in the other set of columns results when the state of the least significant bit of the number of the word in the column, in binary notation, is reversed. The method according to claim 1 wherein the swapped sequence in the other set of columns results when loading of either the words having even addresses or the words having odd addresses is delayed. The method according to one of claims 1 to 3 wherein the steps of loading in and reading out each comprise the simultaneous steps of: transferring a word in or from said first section of said memory (10, 11), and receiving an address at said second section of said memory. A printing system having means adapted for performing each of the method steps of one of claims 1 to 4.

Inventors: KAO JEAN-SWEY, LIU JACK C, RIDER RONALD E, KAO, JEAN-SWEY, LIU, JACK C., RIDER, RONALD E.
Applicants: XEROX CORP, XEROX CORPORATION
Application year: 1994
Main classification: G11C8
IPC codes: G11C8