GB2231981A - Memory read/write arrangement - Google Patents

Memory read/write arrangement Download PDF

Info

Publication number
GB2231981A
GB2231981A GB8909668A GB8909668A GB2231981A GB 2231981 A GB2231981 A GB 2231981A GB 8909668 A GB8909668 A GB 8909668A GB 8909668 A GB8909668 A GB 8909668A GB 2231981 A GB2231981 A GB 2231981A
Authority
GB
United Kingdom
Prior art keywords
memory
read
write
cells
full
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB8909668A
Other versions
GB8909668D0 (en
Inventor
Jonathan Churchill
Joseph Chan
Alison Shepperd
Sandeep Pant
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STC PLC
Original Assignee
STC PLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STC PLC filed Critical STC PLC
Priority to GB8909668A priority Critical patent/GB2231981A/en
Publication of GB8909668D0 publication Critical patent/GB8909668D0/en
Publication of GB2231981A publication Critical patent/GB2231981A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags

Abstract

A first in first out (FIFO) memory is provided with the Fig 2 generation means for flags FFINT, EFINT indicative of a full or empty memory. The flags are generated by sensing the proximity of read and write pointers. A look-ahead scheme uses the result of the proximity sensing to set up external flags one read or write cycle in advance of the full or empty condition. A half-full flag may also be generated. The proximity sensed may be that the pointers are on the same memory cell row and in adjacent, or adjacent plus one, columns; or that the pointers are on adjacent rows with one pointer at one end column and the other pointer at the opposite end or next-to-end column. <IMAGE>

Description

LOOK-AHEAD FLAG GENERATION IN A MEMORY STORE This invention relates to integrated circuit memories, and in particular to a read/write arrangment for a first in first out (FIFO) memory.
A first in first out (FIFO) memory comprises an array of rows and columns of memory cells into which data are written in sequence. The memory cells are then read in the same sequence to recover the data from the memory. The arrangement thus functions as a buffer store in which the sequential order of the stored data is maintained. In order to preserve the correct data sequence, it is necessary to provide some means of controlling the timing of the read and write operations to ensure that, for example, reading does not overtake writing and cause corruption of data. It is also desirable to indicate the occurence of a full ormempty condition of the memory by corresponding signals commonly referred to as 'flags'.
Conventionally this controlling mechanism is achieved by comparing the numbers of read and write cycles completed, or partially completed, at the beginning of every new read or write cycle. If the difference is zero, an empty flag is output, and further read cycles are disabled until the difference is non-zero. Likewise if the difference is the same as the memory size, a full flag is output and further write cycles are disabled until the difference is less than the memory size. This conventional technique is very slow to generate firstly the difference value and secondly rhe flag from the difference value. In addition, this conventional technique does not provide a look-ahead facility indicative that the memory is approaching a full or empty condition.
The object of the invention is to minimise or to overcome this disadvantage.
According to the invention there is provided a first in first out (FIFO) memory store, including an array of memory cells, means for writing data into and reading data from the memory cells, a read pointer for identifying a cell from which data is to be read, a write pointer for identifying a cell into which data is to be written, and means for determining the relative memory locations of those cells identified by the pointers whereby to generate a look-ahead signal indicative of a full or empty memory, when said identified cells are separated by a predetermined spacing in the memory array.
According to the invention there is further provided a first in first out memory store, including an array of rows and columns of memory cells,means for writing data sequentially into the memory cells, means for reading sequentially the written data from the memory cells, first row and column counters for generating a read pointer whereby a cell to be read is identified, second row and column counters for generating a write pointer whereby a cell to be written into is identified, means for determining one or other of the conditions that the cells identified by the read and write pointers are on the same row and in adjacent columns or on adjacent rows and or opposite end columns of the array, and means responsive to the detection of said one or other conditions for generating an output signal indicative of that condition prior to commencement of a next write or read operation.
The read and write pointers may be coded so that the predetermined spacing" condition occurs one cycle before the last read or last write cycle. By detecting this spacing condition in the memory and latching out an internal flag signifying this condition at the next falling edge of the write signal (for full flag) or the read signal (for empty flag) a look-ahead function is provided. The memory may be employed e.g.
as a buffer store in a high speed data processing system.
An embodiment of the invention will now be determined with reference to the accompanying drawings in which: Fig. 1 is a schematic diagram of a FIFO memory incorporating full and empty look-ahead flag generation; Fig. 2 shows the full and empty flag generation circuitry of the memory of Fig. 1; and Figs. 3 and 4 are timing diagrams corresponding to the flag generation circuit of Fig. 2: Referring to Fig. 1, the FIFO memory includes an array 11 of n rows and rn columns of typically dual port memory cells accessible via row and column read decoders 12, 13 and row and column write decoders 14, 15.
Ring-counters 16 and 17 are associated with the row and column read decoders 12 and 13 respectively.
The ring-counter 16 is as long as the number of rows, n and ring counter 17 is as long as the number of columns m. Thus single logic 1 'bits' in 16 and 17, representing the current read row and column locations, can be thought of as forming a read pointer into the memory (R in Fig. 1), indicating the memory cell currently being read from or last read from.
The same is true of ring counters 18 and 19 providing a write pointer W, indicating the memory cell currently being written to or last written to.
The read (R) and write (W) pointers are coded such that, when they are pointing to adjacent ot "one-apart" sequential memory locations, the memory is either about to become empty or about to become full, on the next read or write cycles, respectively. If the pointers are such that the read pointer R is one location ahead of the write pointer W, the memory will become full on the next write cycle. If the read pointer R is one location behind the write pointer W the memory will become empty on the next read cycle. By detecting this one-apart condition and the sequential orientation of the pointers, an empty or full signal is generated one cycle before it is required, provided the look-ahead provision.Latching out this empty or full signal on the next write (for full flag) or read (for empty flag) cycle, allows the flags to be output very early during these last cycles, giving an early warning of the approach of these error conditions. Flag generation is performed by generator circuit 20 which will be described below with reference to Fig. 2.
Referring now to Fig. 2, the flag generation circuit, 20, of the memory of Fig. 1, consists of several large input term OR gates (21,22,23,24), driven from combinations of the outputs of ring-counters 16,17,18,19 in Fig. 1. The exact combinations are illustrated in Fig. 2 where Wcx represents the output of the xth bit of the write column ring-counter 19 and Wrx represents the xth bit of the write row ring counter 18 and so on. In Fig. 2 standard logic symbols are used to represent the gates and latches.
Fig. 2 assumes a typical memory whete the number of rows n = 64, and the number of columns m = 16, giving a total of 1024 locations. The column ring-counters 17 and 19 are clocked once every read/write cycles respectively, whilst the row ring-counters are clocked once every m cycles.
To detect that the read and write pointers are one location apart, the circuit looks for one of the following conditions; - Both read and write pointers on the same row and in adjacent columns.
- Pointers on adjacent rows and pointers at opposite ends of their respective rows.
In addition, because of the uncertainties involved with look-ahead circuits, described later, the circuit may also advantageously detect the condition that the pointers are two locations apart. To detect the "two-apart" condition the circuit looks for the following options; - Both read and write pointers on the same row and in adjacent plus one columns.
- pointers on adjacent rows and one pointer at a row end and the other pointer one location away from the opposite end of its row.
These conditions are detected and OR'ed together by the OR gates, which perform a boolean F(A.B) + (c.D) ] / operation, to produce the signals EF1, EF2, FF1, FF2, which are effectively OR'ed together by NAND gates 29, 210 to produce an, active high, look-ahead flag signal EFINT and FFINT. These signals are latched out on the appropriate edges of the read (for empty flag) and write (for full flag) cycles. As, for example, the memory cannot be empty after the completion of a valid write cycle, the rising (completing) edge of write clock (vow/) is used to reset the empty flag output latch 211. The reset on latches 211 and 212 are sensitive to the rising edge of the read/write clocks (VR/ and Vow/) only, not to the level of the clocks.
In this embodiment the NOR gates 221-224 are used to minimise the logic for determining the orientation of the pointers. The signals HFF and HFF/ are complementary and indicate whether the memory is greater than or less than half full. HFF and HFF/ are generated in the same way as the empty and full flags by the use of coded pointers and look-ahead techniques.
When the memory is greater than half full, any read cycle cannot be the last one before an empty condition, so no empty flag can occur. Likewise when the memory is less than half full any write cycle cannot be the last one before a full condition, so no full flag can occur.
If desired, the half full/empty flags can be latched out in the same way as the full and empty flags.
The components 213-220, 230-233 are used to overcome uncertainties in the look-ahead scheme, described below.
The look-ahead scheme described above with reference to Fig. 2 is intended to predict the outcome of future read or write cycles. However, under certain startup or end conditions, the use of a simple one-apart pointer detection can result in errors. These possible error conditions are summarised as; - Long write (read) cycle approaching empty (full).
- Second write from empty / second read from full The long read/write approaching full/empty problem is illustrated in Fig. 3. The problem occurs if a long write cycle (read cycle) is still active, aa several read cycles (write cycles) are executed approaching the empty (full) condition. The EF1 (FF1) signal, representing the one-apart signal can occur one cycle too late because the write (read) cycle has not completed even though the read and write pointers have been updated. The EF2 (FF2), two-apart signal, is used in this circumstance (when write (read) is low) to generate the look-ahead signal which can be latched out at the, apparent one-apart, next read (write) cycle.
Fig. 3 also shows that the latched version of the empty (full) flag is reset at the completion of the long write (read). releasing the internal read clock to read out the recently written data.
The second write (read) from empty (full) problem, is illustrated with reference to Fig. 4. This demonstrates how the circuits formed by 213,214,215, 216,230,231 and 217,218,219,220,232,233 (Fig. 2) produce a pulse, generated from the two-apart signal, to fill up the gap formed between the one apart signal going high and the end of the second write pulse, during which thew start of a read cycle would otherwise latch out an incorrect value of the empty (full) flag. This pulse, being OR'ed with the one-apart or EF1 (FF1) signal, extends EFINT (FFINT) over the required period.
Although the look-ahead flag generation technique has been described with particular reference to a semi-conductor memory, it will be appreciated that it can be applied to other memory devices.

Claims (6)

1. A first in first out (FIFO) memory store, including an array of memory cells, means for writing data into and reading data from the memory cells, a read pointer for identifying a cell from which data is to be read, a write pointer for identifying a cell into which data is to be written, and means for determining the relative memory locations of those cells identified by the pointers whereby to generate a look-ahead signal indicative of a full or empty memory, when said identified cells are segmented by a predetermined spacing in the memory array.
2. a first in first out memory store, including an array of rows and columns of memory cells,means for writing data sequentially into the memory cells, means for reading sequentially the written data from the memory cells, first row and column counters for generating a read pointer whereby a cell to be read is identified, second row and column counters for generating a write pointer whereby a cell to be written into is identified, means for determining one or other of the conditions that the cells identified by the read and write pointers are on the same row and in adjacent columns or on adjacent rows and or opposite end columns of the array, and means responsive to the detection of said one or other conditions for generating an output signal indicative of that condition prior to commencement of a next write or read operation.
3. A FIFO memory as claimed in claim 1 or 2, wherein said look-ahead signal is generated in response to the condition that one memory cell is disposed between the cells identified by the read and write pointers.
4. A FIFO memory as described in claim 1, 2 or 3 and including means for generating a further signal indicative of a half full memory.
5. A first ir. first out memory store substantially as described herein with reference to and as shown in the accompanying drawings.
6. Is data processing system incorporating one or more memory stores as claimed any one of claims 1 to 5.
GB8909668A 1989-04-27 1989-04-27 Memory read/write arrangement Withdrawn GB2231981A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB8909668A GB2231981A (en) 1989-04-27 1989-04-27 Memory read/write arrangement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB8909668A GB2231981A (en) 1989-04-27 1989-04-27 Memory read/write arrangement

Publications (2)

Publication Number Publication Date
GB8909668D0 GB8909668D0 (en) 1989-06-14
GB2231981A true GB2231981A (en) 1990-11-28

Family

ID=10655837

Family Applications (1)

Application Number Title Priority Date Filing Date
GB8909668A Withdrawn GB2231981A (en) 1989-04-27 1989-04-27 Memory read/write arrangement

Country Status (1)

Country Link
GB (1) GB2231981A (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3665416A (en) * 1969-10-09 1972-05-23 Mitsuo Hikosaka On-line real time data processing system
GB1356287A (en) * 1970-07-06 1974-06-12 Burroughs Corp Buffer memory having read and write address comparison for indicating
US3836891A (en) * 1973-07-05 1974-09-17 Bendix Corp Tape reader system with buffer memory
GB2088103A (en) * 1980-10-13 1982-06-03 Victor Company Of Japan Memory control circuit
GB2202978A (en) * 1987-03-19 1988-10-05 Apple Computer Video apparatus employing vrams

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3665416A (en) * 1969-10-09 1972-05-23 Mitsuo Hikosaka On-line real time data processing system
GB1356287A (en) * 1970-07-06 1974-06-12 Burroughs Corp Buffer memory having read and write address comparison for indicating
US3836891A (en) * 1973-07-05 1974-09-17 Bendix Corp Tape reader system with buffer memory
GB2088103A (en) * 1980-10-13 1982-06-03 Victor Company Of Japan Memory control circuit
GB2202978A (en) * 1987-03-19 1988-10-05 Apple Computer Video apparatus employing vrams

Also Published As

Publication number Publication date
GB8909668D0 (en) 1989-06-14

Similar Documents

Publication Publication Date Title
US5097442A (en) Programmable depth first-in, first-out memory
EP0312239B1 (en) Message fifo buffer controller
US5587953A (en) First-in-first-out buffer memory
US4933901A (en) Method for assigning priority to read and write requests received closely in time
US5088061A (en) Routing independent circuit components
US5121346A (en) Difference comparison between two asynchronous pointers and a programmable value
US3768071A (en) Compensation for defective storage positions
US3568153A (en) Memory with error correction
US4873667A (en) FIFO buffer controller
US4231089A (en) Data processing system with apparatus for correcting microinstruction errors
US6802036B2 (en) High-speed first-in-first-out buffer
US4815039A (en) Fast real-time arbiter
US5206817A (en) Pipelined circuitry for allowing the comparison of the relative difference between two asynchronous pointers and a programmable value
US4922457A (en) Serial access memory system provided with improved cascade buffer circuit
US4380736A (en) Peripheral interface adapter circuit for counter synchronization
GB2231981A (en) Memory read/write arrangement
US3031646A (en) Checking circuit for digital computers
US5504913A (en) Queue memory with self-handling addressing and underflow
US4972418A (en) Memory readback check apparatus
EP0383891B1 (en) Pipelined address check bit stack controller
US5598552A (en) Error free data transfers
SU1509870A1 (en) Device for comparing numbers with tolerances
JPS5947364B2 (en) Preamble detection device
US6894947B2 (en) Semiconductor integrated circuit for a liquid crystal display driver system
SU1396158A1 (en) Buffer storage

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)