GB2297399A - Efficient storage of data items of different sizes - Google Patents
Efficient storage of data items of different sizes Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/26—Devices for calling a subscriber
- H04M1/27—Devices whereby a plurality of signals may be stored simultaneously
- H04M1/274—Devices 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/2745—Devices 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.
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)
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)
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 |
-
1995
- 1995-01-18 GB GB9500906A patent/GB2297399B/en not_active Expired - Fee Related
Patent Citations (4)
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)
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 |
---|---|---|
EP1187143A3 (en) | Electronic control unit including flash memory and method and apparatus for storing a control data group into flash memory | |
US6675278B1 (en) | Method and apparatus for managing memory | |
WO1995018997A3 (en) | Virtual memory management system and method using data compression | |
EP1619585A2 (en) | Dynamic allocation for efficient management of variable sized data within a nonvolatile memory | |
US20080133855A1 (en) | Memory and method for data compression and management | |
US6742078B1 (en) | Management, data link structure and calculating method for flash memory | |
US6581133B1 (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 | |
US20020078317A1 (en) | First-in, first-out (FIFO) memory with moving boundary | |
US5635983A (en) | Electronic still camera system and auxiliary unit containing control program | |
EP0381418A2 (en) | A small fast lookup table for use in a data processing system | |
US6757805B2 (en) | Partitioning method for configuring a data storage medium with a number of virtual partitioned areas | |
GB2297399A (en) | Efficient storage of data items of different sizes | |
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 | |
EP0766176A3 (en) | Replacement semiconductor read-only memory | |
US20040098554A1 (en) | Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system | |
US7024535B2 (en) | Method for dynamically allocating memory workspace by elementary memory blocks to a data structure, and corresponding onboard system | |
CN103354925A (en) | Memory controller | |
US6871256B2 (en) | Method and arrangement in a stack having a memory segmented into data groups having a plurality of elements |
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 |