When a data storage request is issued, data is stored at an address
indicated by a pointer that indicates the start of a free area, and when
a data fetch request is issued, data is fetched from a data storage area
indicated by an oldest index. Moreover, when a condense request is
issued, after temporarily saving data from the data storage area to a
save area, the saved data is restored to a contiguous area starting from
an address indicated by a pointer which indicates the start of the free
area, and the pointer which indicates the start of the free area is
advanced by an amount equivalent to the size of the data storage area
required to restore the data. Therefore even during the condense
processing, data can be stored in the address indicated by the pointer
indicating the start of the free area.