GB2297399A - Efficient storage of data items of different sizes - Google Patents

Efficient storage of data items of different sizes Download PDF

Info

Publication number
GB2297399A
GB2297399A GB9500906A GB9500906A GB2297399A GB 2297399 A GB2297399 A GB 2297399A GB 9500906 A GB9500906 A GB 9500906A GB 9500906 A GB9500906 A GB 9500906A GB 2297399 A GB2297399 A GB 2297399A
Authority
GB
United Kingdom
Prior art keywords
stack
data
entry
storage apparatus
entries
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.)
Granted
Application number
GB9500906A
Other versions
GB9500906D0 (en
GB2297399B (en
Inventor
Adrian J Kennard
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.)
Nokia Oyj
Original Assignee
Nokia Mobile Phones Ltd
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 Nokia Mobile Phones Ltd filed Critical Nokia Mobile Phones Ltd
Priority to GB9500906A priority Critical patent/GB2297399B/en
Publication of GB9500906D0 publication Critical patent/GB9500906D0/en
Publication of GB2297399A publication Critical patent/GB2297399A/en
Application granted granted Critical
Publication of GB2297399B publication Critical patent/GB2297399B/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/26Devices for calling a subscriber
    • H04M1/27Devices whereby a plurality of signals may be stored simultaneously
    • H04M1/274Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc
    • H04M1/2745Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc using static electronic memories, e.g. chips

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

"ELECTRONIC DATA STORAGE" This invention relates to improved electronic data storage apparatus. More particularly, the invention relates to improved electronic memory apparatus adapted for the storage of data entries occupying memory locations of fixed, predetermined size.
In certain electronic data storage applications, data entries are stored in a stacktype array, in which each data entry occupies an equal, predetermined amount of memory sufficient to accommodate the largest allowable data entry, regardless of whether a particular data entry requires the full amount of the memory allocated for each entry. Accordingly, for a given total amount of memory a fixed number of data entries can be accommodated, and a certain proportion of the total memory capacity will remain unoccupied, even when the maximum number of data entries have been stored.
This situation arises, for example, in mobile telephones where "short code data" is stored in Electronically Erasable Programmable Read Only Memory (EEPROM). In this case each entry is allocated an amount of memory sufficient to accommodate, typically, a location number, a telephone number and a name and/or other data associated with the telephone number. This data is input by the user, who often will not make use of all of the possible data storage capacity for each entry.
The invention provides data storage apparatus for the storage of fixed length data entries which makes more efficient use of the total available storage capacity.
In accordance with the invention there is provided data storage apparatus comprising a one dimensional memory array having a first end and a second end and adapted to store first data entries having a first predetermined size in a first data stack extending from said first end thereof and to store second data entries having a second predetermined size differing from said first predetermined size in a second data stack extending from said second end thereof.
Data items to be stored are preferably stored in that one of said first and second stacks for which the size of the corresponding data entry exceeds the length of the data item by the least amount. New data entries are preferably added to the tops of the first and second stacks so as to minimise re-writing of existing data.
When a data entry is deleted from one of said first and second stacks, the data entry at the top of the stack from which the entry is deleted is preferably moved to occupy the space vacated by the deleted entry.
The apparatus preferably further includes a third data stack located between said first and second stacks for storing third data entries having a third predetermined size differing from said first and second predetermined sizes. The size of the third data entries is preferably greater than that of the first and second data entries.
The third stack preferably has a first end adjacent the top of said first stack and a second end adjacent the top of said second stack, and new data entries added to said third stack are preferably added to that end of the third stack which is furthest removed from the top of the adjacent first or second stack.
The third stack preferably has a first end adjacent the top of said first stack and a second end adjacent the top of said second stack, and when a data entry is deleted from said third stack, the data entry at that end of the third stack which is closest to the top of the adjacent first or second stack is preferably moved to occupy the space vacated by the deleted entry.
If there is insufficient space between the top of said first or second stack and the adjacent end of said third stack for a first or second data entry to be added to the top of said first or second stack, the data entry stored at said adjacent end of said third stack is preferably moved to the opposite end of said third stack.
The memory array is preferably provided by electronically erasable, programmable, read only memory means.
Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings in which: Figure 1 is a schematic representation of a first embodiment of data storage apparatus in accordance with the invention; Figure 2 shows the data storage apparatus of Figure 1 following deletion of a data entry; Figure 3 is a schematic representation of a second embodiment of data storage apparatus in accordance with the invention; Figure 4 shows the data storage apparatus of Figure 3 following the addition of a data entry; and Figure 5 is a block diagram representation of a data processing system incorporating the data storage apparatus of the present invention.
Referring now to the drawings, Figure 1 shows a first embodiment of a memory for data storage in accordance with the invention. The memory comprises a one dimensional array 10 having a first end 12 and a second end 14, and having a predetermined total capacity. Accordingly, the array can accommodate a predetermined number of data entries of equal predetermined size. In accordance with the invention, first data entries 1 6 of a first predetermined size are added at the first end 1 2 of the array 10, forming a first stack 18, and second data entries 20 of a second predetermined size greater than that of the first data entries are added at the second end 14 of the array 10, forming a second stack 22. As data entries are added, the stacks 18, 22 grow in size towards the middle of the array 10.Each stack is a contiguous section of memory, allowing simple access to the data and scanning of the entries. The shaded portion of the array 10 between the stacks represents available free memory.
Herein, the end of each of the stacks 18, 22 closest to the middle of the array will be referred to as the "top" of the stack, and the end of each of the stacks 18, 22 at the respective ends 12, 14 of the array 10 will be referred to as the "bottom" of the stack.
When an item of data is to be added to the memory, it is stored as a first data entry 1 6 in the first stack 1 8 if the length of the data item is less than or equal to the predetermined size of the first data entries 1 6. Otherwise, it is stored as a second data entry 20 in the second stack 22. In this way, smaller data items occupy less memory than would be the case if all data items were stored as data entries of equal size large enough to accommodate the longest allowable data item, so that more efficient use is made of the total available memory capacity of the array 10.
The invention is particularly intended to be applicable to EEPROM storage. Since the writing of data in EEPROM takes a relatively long time, it is desirable to minimise the extent to which existing data is required to be re-written when a data entry is added. For this reason, it is preferred that new data entries are added to the top of the relevant stack, so that no re-writing of existing data is required.
It is also preferred that when a data entry is deleted from one of the stacks, the data entry at the top of the stack is moved to occupy the space vacated by the deleted entry. This ensures that there are no gaps in the stack, and entails less rewriting than would be the case if all of the data entries above the deleted entry were shifted down by one space to fill the vacated space.
Figure 2 illustrates an example of this, wherein one of the second data entries "d" of the second stack 22 of Figure 1 has been deleted and replaced by the data entry "a" which was previously located at the top of the second stack 22. Obviously, this relocation of data entries does not apply if the entry deleted is the top entry in the stack.
A wider range of data entry sizes can be provided by including one or more additional "floating" stacks, each for storage of data entries of a given predetermined size, between the first and second stacks located at the ends of the memory array. This allows data items to be allocated to data entries that are as close as possible in size to their own length.
An example of this is illustrated in Figure 3, where a third, floating stack 24 is provided for the storage of third data entries 26 of a third predetermined size. The third stack 24 is located between the first and second stacks 18, 22, having a first end adjacent the top of the first stack 1 8 and a second end adjacent the top of the second stack 22.
New data entries can be added to either end of the third stack 24. Preferably, new entries are added to that end which has the greatest amount of space between it and the top of the adjacent first or second stack 18, 22. When deleting entries from the third stack, the space vacated by the deleted entry can be occupied by an entry from either one of the ends of the stack. Preferably, the data entry which replaces the deleted entry will be moved from that end of the stack which has least space between it and the top of the adjacent first or second stack.
By adding new entries to the end of the third stack having the greatest adjacent space and by moving entries, to replace deleted entries, from the end of the third stack having the least adjacent space, the third stack will tend to "float" towards the middle of the available memory space (illustrated by the shaded area in the drawings).
In the event that a first or second data entry 16, 20 is to be added to the top of the first or second stack 18, 22 and there is insufficient space between the top of the relevant stack and the adjacent end of the third stack 24, the third stack 24 can be "rolled" away from the top of the relevant stack by moving a data entry from the adjacent end of the third stack 24 to the opposite end thereof. An example of this is illustrated in Figures 3 and 4 where, in Figure 3, the right hand end of the third stack 24 is too close to the top of the second stack 22 for a further second data entry to be added to the second stack 22. In Figure 4, the data entry "g" has been moved to the opposite end of the third stack 24, making space available for a data entry "x" to be added to the top of the second stack 22.If there is insufficient space at the opposite end of the third stack 24 for it to be rolled along in this manner then the memory is full.
In order to minimise re-writing of data, the third stack 24 is rolled along only when required. No attempt is made to maintain the third stack in the middle of the available memory space. However, as explained above, appropriate choices of the ends of the third stack to which entries are added, or from which entries are moved following deletions, will result in the third stack floating towards the middle of the available memory space.
It is preferred that the third data entries of the third stack are larger than those of either the first and second stacks, as this guarantees that the rolling of a single third data entry will make space for a first or second data entry 16,20. Thus, the memory is used efficiently and the re-writing of data is minimised. If, in contrast, the third entries are smaller than the first or second data entries 16,20, it is possible that more than one third data entry will need to be rolled to make space for a single first or second data entry 16,20.
In principle, there may be multiple floating stacks between the first and second end stacks, and entries may be added to or moved from respective ends of such stacks in a manner similar to that discussed above in order to make space available between the adjacent ends of stacks as required and to cause the stacks to float towards median positions.
The number of stacks and the relative sizes of the different data entries associated therewith may be selected according to the nature of the data to be stored, so as to make the best use of the available memory.
Figure 5 is a block diagram of a typical data processing system employing the memory 10 of the present invention. This system is illustrated by way of example only to demonstrate how the invention might be employed in practice. It will be understood that the details of a data processing system employing such a memory 10 might vary widely in practice, as will be apparent to those of ordinary skill in the art.
This typical system includes a microprocessor 30 which is connected by means of suitable data and address buses etc. to Read Only Memory (ROM) 32, for storing system operating programs, volatile Random Access Memory (RAM) 34 and the memory loans described above, represented here as EEPROM. The microprocessor 30 would typically also be connected to other system components 36 such as input/output devices and, in the case of a mobile telephone, communications components. The microprocessor 30 controls the reading and writing of data to and from the EEPROM lOin accordance with system programs stored in ROM 32. Upon boot-up of the system, the microprocessor might scan the contents of EEPROM 10 and store relevant parameters, such as the current locations of the ends of the various stacks, and possibly selected data, in RAM 34. The operating programs stored in ROM 32 manage the operation of EEPROM 10, and may vary according to the specific application of the system. It will be understood that the management of the EEPROM 10, or other equivalent type of memory, can be effected by any other suitable control means adapted to implement the functionality of the memory 10, besides a microprocessor and associated ROM as described above.
The data storage arrangement provided by the preferred embodiment of the invention makes more efficient use of available memory resources than existing arrangements for storing data entries of a single fixed length, provides near-zero fragmentation of stored data, and allows for minimal, on-going garbage collection.
These characteristics are particularly well suited to EEPROM storage, most particularly for data storage in mobile telephones.

Claims (10)

1. Data storage apparatus comprising a one dimensional memory array having a first end and a second end and adapted to store first data entries having a first predetermined size in a first data stack extending from said first end thereof and to store second data entries having a second predetermined size differing from said first predetermined size in a second data stack extending from said second end thereof.
2. Data storage apparatus as claimed in Claim 1, wherein data items to be stored are stored in that one of said first and second stacks for which the size of the corresponding data entry exceeds the length of the data item by the least amount.
3. Data storage apparatus as claimed in Claim 1 or Claim 2, wherein new data entries are added to the tops of the first and second stacks.
4. Data storage apparatus as claimed in Claim 1, Claim 2 or Claim 3, wherein, when a data entry is deleted from one of said first and second stacks, the data entry at the top of the stack from which the entry is-deleted is moved to occupy the space vacated by the deleted entry.
5. Data storage apparatus as claimed in any preceding Claim, further including a third data stack located between said first and second stacks for storing third data entries having a third predetermined size differing from said first and second predetermined sizes.
6. Data storage apparatus as claimed in Claim 5, wherein said third predetermined size is greater than said first and second predetermined sizes.
7. Data storage apparatus as claimed in Claim 5 or Claim 6, wherein said third stack has a first end adjacent the top of said first stack and a second end adjacent the top of said second stack, and wherein new data entries added to said third stack are added to that end of the third stack which is furthest removed from the top of the adjacent first or second stack.
8. Data storage apparatus as claimed in Claim 5, Claim 6 or Claim 7, wherein said third stack has a first end adjacent the top of said first stack and a second end adjacent the top of said second stack, and wherein, when a data entry is deleted from said third stack, the data entry at that end of the third stack which is closest to the top of the adjacent first or second stack is moved to occupy the space vacated by the deleted entry.
9. Data storage apparatus as claimed in any one of Claims 5 to 8, wherein, if there is insufficient space between the top of said first or second stack and the adjacent end of said third stack for a first or second data entry to be added to the top of said first or second stack, the data entry stored at said adjacent end of said third stack is moved to the opposite end of said third stack.
10. Data storage apparatus as claimed in any preceding Claim, wherein said memory array is provided by electronically erasable, programmable, read only memory means.
GB9500906A 1995-01-18 1995-01-18 Electronic data storage Expired - Fee Related GB2297399B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB9500906A GB2297399B (en) 1995-01-18 1995-01-18 Electronic data storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB9500906A GB2297399B (en) 1995-01-18 1995-01-18 Electronic data storage

Publications (3)

Publication Number Publication Date
GB9500906D0 GB9500906D0 (en) 1995-03-08
GB2297399A true GB2297399A (en) 1996-07-31
GB2297399B GB2297399B (en) 1999-11-03

Family

ID=10768164

Family Applications (1)

Application Number Title Priority Date Filing Date
GB9500906A Expired - Fee Related GB2297399B (en) 1995-01-18 1995-01-18 Electronic data storage

Country Status (1)

Country Link
GB (1) GB2297399B (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000046970A1 (en) * 1999-02-04 2000-08-10 Siemens Aktiengesellschaft Device and method for storing telephone entries
DE19933130A1 (en) * 1999-07-19 2001-01-25 Giesecke & Devrient Gmbh Operand stack and method for operating an operand stack

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1207211A (en) * 1967-05-11 1970-09-30 Int Standard Electric Corp Storage for information items of different length
GB1441816A (en) * 1973-07-18 1976-07-07 Int Computers Ltd Electronic digital data processing systems
GB1459613A (en) * 1973-10-18 1976-12-22 Ibm Data processing system
US4523276A (en) * 1979-10-05 1985-06-11 Hitachi, Ltd. Input/output control device with memory device for storing variable-length data and method of controlling thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1207211A (en) * 1967-05-11 1970-09-30 Int Standard Electric Corp Storage for information items of different length
GB1441816A (en) * 1973-07-18 1976-07-07 Int Computers Ltd Electronic digital data processing systems
GB1459613A (en) * 1973-10-18 1976-12-22 Ibm Data processing system
US4523276A (en) * 1979-10-05 1985-06-11 Hitachi, Ltd. Input/output control device with memory device for storing variable-length data and method of controlling thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000046970A1 (en) * 1999-02-04 2000-08-10 Siemens Aktiengesellschaft Device and method for storing telephone entries
US6772275B1 (en) 1999-02-04 2004-08-03 Siemens Aktiengesellschaft Device and method for storing telephone entries
DE19933130A1 (en) * 1999-07-19 2001-01-25 Giesecke & Devrient Gmbh Operand stack and method for operating an operand stack
US7302550B1 (en) 1999-07-19 2007-11-27 Giesecke & Devrient Gmbh Stack of variable length operands and method for use

Also Published As

Publication number Publication date
GB9500906D0 (en) 1995-03-08
GB2297399B (en) 1999-11-03

Similar Documents

Publication Publication Date Title
US6226728B1 (en) Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
DE69635962T2 (en) Flash memory mass storage system and method therefor
US5021946A (en) Mostly contiguous file allocation technique involving file extension
US6675278B1 (en) Method and apparatus for managing memory
WO1995018997A3 (en) Virtual memory management system and method using data compression
CN1087085C (en) Multi-user data processing system with storage protection
US20080133855A1 (en) Memory and method for data compression and management
US6742078B1 (en) Management, data link structure and calculating method for flash memory
CA2267484C (en) Reclaiming memory from deleted applications
JP3580929B2 (en) Storage device
WO2001084321A1 (en) Method, system and computer program for data management on storage medium
US6813692B2 (en) Receiver apparatus and method
WO2001090899A3 (en) System and method for memory management using fixed-size blocks
AU682713B2 (en) Managing speech memory
EP0381418A2 (en) A small fast lookup table for use in a data processing system
GB2297399A (en) Efficient storage of data items of different sizes
US20030221054A1 (en) Partitioning method for configuring a data storage medium with a number of virtual partitioned areas
US6704851B2 (en) Method of dynamically allocating a memory
US5524214A (en) System for modification of dynamic buffer allocation by comparing modification request with current allocation and updating allocation based upon comparison discrepancy
EP0376486A3 (en) Epm having an improvement in non-volatile memory organization
US7093096B2 (en) Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system
EP0766176A3 (en) Replacement semiconductor read-only memory
CN103354925A (en) Memory controller
US6871256B2 (en) Method and arrangement in a stack having a memory segmented into data groups having a plurality of elements
WO1980002610A1 (en) Portable data entry device including dynamic partitioning of data memory

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)
PCNP Patent ceased through non-payment of renewal fee

Effective date: 20120118