WO1998043248A1 - Computer memory organization - Google Patents

Computer memory organization Download PDF

Info

Publication number
WO1998043248A1
WO1998043248A1 PCT/EP1997/002112 EP9702112W WO9843248A1 WO 1998043248 A1 WO1998043248 A1 WO 1998043248A1 EP 9702112 W EP9702112 W EP 9702112W WO 9843248 A1 WO9843248 A1 WO 9843248A1
Authority
WO
WIPO (PCT)
Prior art keywords
page
flash memory
memory
record table
pool
Prior art date
Application number
PCT/EP1997/002112
Other languages
French (fr)
Inventor
Jean-Claude Sarfati
Christophe Declerck
Original Assignee
Canal+ Societe Anonyme
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 Canal+ Societe Anonyme filed Critical Canal+ Societe Anonyme
Priority to AU27706/97A priority Critical patent/AU744517B2/en
Priority to PL97335753A priority patent/PL335753A1/en
Priority to RU99121838/09A priority patent/RU2182375C2/en
Priority to ZA9703609A priority patent/ZA973609B/en
Priority to CN97182178A priority patent/CN1262754A/en
Priority to EP97921753A priority patent/EP0968468B1/en
Priority to CA002284044A priority patent/CA2284044A1/en
Priority to DE69719377T priority patent/DE69719377D1/en
Priority to PCT/EP1997/002112 priority patent/WO1998043248A1/en
Priority to TR1999/02264T priority patent/TR199902264T2/en
Priority to HU0001495A priority patent/HUP0001495A3/en
Priority to IL13193597A priority patent/IL131935A0/en
Priority to BR9714649-8A priority patent/BR9714649A/en
Priority to NZ500202A priority patent/NZ500202A/en
Priority to AT97921753T priority patent/ATE233415T1/en
Priority to JP54440898A priority patent/JP2001518218A/en
Priority to HU0001470A priority patent/HUP0001470A3/en
Priority to EP97121741A priority patent/EP0872798A1/en
Priority to EP98917012A priority patent/EP0968469A1/en
Priority to CA002284146A priority patent/CA2284146A1/en
Priority to IL13194398A priority patent/IL131943A0/en
Priority to AU70381/98A priority patent/AU740887B2/en
Priority to HU0002917A priority patent/HUP0002917A3/en
Priority to NZ500208A priority patent/NZ500208A/en
Priority to TR1999/02269T priority patent/TR199902269T2/en
Priority to PL98335766A priority patent/PL335766A1/en
Priority to CN98804985A priority patent/CN1255212A/en
Priority to BR9808288-4A priority patent/BR9808288A/en
Priority to IDW991238A priority patent/ID23427A/en
Priority to KR1019997008512A priority patent/KR20000076408A/en
Priority to JP54322998A priority patent/JP2001518217A/en
Priority to PCT/EP1998/001605 priority patent/WO1998043167A1/en
Priority to ZA982384A priority patent/ZA982384B/en
Publication of WO1998043248A1 publication Critical patent/WO1998043248A1/en
Priority to NO994536A priority patent/NO994536L/en
Priority to NO994542A priority patent/NO994542L/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/357Cards having a plurality of specified features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/409Device specific authentication in transaction processing
    • G06Q20/4097Device specific authentication in transaction processing using mutual authentication between devices and transaction partners
    • G06Q20/40975Device specific authentication in transaction processing using mutual authentication between devices and transaction partners using encryption therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/0014Coin-freed apparatus for hiring articles; Coin-freed facilities or services for vending, access and use of specific services not covered anywhere else in G07F17/00
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N17/00Diagnosis, testing or measuring for television systems or their details
    • H04N17/004Diagnosis, testing or measuring for television systems or their details for digital television systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/254Management at additional data server, e.g. shopping server, rights management server
    • H04N21/2543Billing, e.g. for subscription services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4367Establishing a secure communication between the client and a peripheral device or smart card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44236Monitoring of piracy processes or activities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4437Implementing a Virtual Machine [VM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4622Retrieving content or additional data from different sources, e.g. from a broadcast channel and the Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/47805Electronic banking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4782Web browsing, e.g. WebTV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/162Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing
    • H04N7/163Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing by receiver means only
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/167Systems rendering the television signal unintelligible and subsequently intelligible
    • H04N7/1675Providing digital key or authorisation information for generation or regeneration of the scrambling sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof

Definitions

  • the present invention relates to computer memories, and more specifically to the division of memory areas therein and/or to the updating of the contents of flash memory. It finds particular application in a receiver/decoder of a broadcast and reception system, in particular a receiver/decoder of a digital interactive satellite television and/or radio system. However, it will be realized that it is not limited to that system or systems of that type, but is applicable more generally to a wide variety of computer systems.
  • the amount of memory is often limited. This means that the memory must be organized so that the use of memory space by the various functions required by the system is minimized. In addition, it may also be necessary to minimize the time required to access at least some parts of the memory.
  • One aspect of the present invention is particularly concerned with the provision or organization of buffers in the memory.
  • the conventional technique for providing buffers is by a dynamic system for allocating the required buffers.
  • this standard system has certain disadvantages. It tends to result in fragmentation of the memory, and its speed is restricted by the need for overhead operations. Also, if an expansion of the buffers is required, it may require movement of blocks of memory to create space for the expansion.
  • a system for defining and addressing buffers in a memory area in a computer system comprising: pool size storage means for storing a plurality of pool sizes; buffer size storage means for storing, for each pool, a buffer size; and calculating means for calculating therefrom the address of a desired buffer in a desired pool.
  • Preferably means are included for determining the pool sizes in cumulative form and storing them in that form in the pool size storage means.
  • a reserved area may be defined at the beginning of each pool, and means provided for selecting either the cumulative pool size direct or the output of the calculating means.
  • the desired pool number, desired buffer number, and desired byte may be checked for out-of-bounds values.
  • Volatile memory retains its contents only while power is supplied to the memory, losing its contents as soon as its power supply goes off, while non-volatile memory retains its contents indefinitely even if its power supply goes off.
  • the other major distinction is between writable memory and read-only memory.
  • Volatile memory is generally known as RAM, while there are various kinds of non-volatile memory.
  • RAM is normally writable, while read-only memory is known as ROM. This latter distinction is not necessarily hard-and-fast. Any memory must of course be writable in some sense at least once, but some kinds of ROM-like memory can have their contents changed, albeit with some difficulty.
  • PROM programmable (ie writable) read-only memory
  • EEPROM electrically erasable programmable read-only memory
  • Flash Flash.
  • the different kinds of memory have different characteristics (eg different read times and different costs), so it is often desirable to use a combination of several different kinds in a single computer system.
  • a flash memory is generally ROM-like, in that it is non-volatile. It is also intended to be used in a generally ROM-like manner, being read from but not written to.
  • flash memory can be written to, but only with some difficulty.
  • a flash memory is normally divided into pages, typically each of many kilobytes in length, and writing to the flash memory is by page.
  • to write to the flash memory an entire page has to be erased and the new contents then have to be written into the erased page; further, this writing has to be essentially a single uninterruptible operation. (Obviously there can be a gap between the erasing and the writing.)
  • the information in the flash memory may be organized into units of any size from a single word upwards. In practice, however, it will normally be organized into blocks of substantial size.
  • a block may comprise data, eg tables of permanent or semi-permanent information, or a program or sub-routine.
  • the block sizes will normally be chosen to be less than the page size (if a block is larger than a page, it will usually be feasible to split it into sub-blocks which are less than the page size).
  • the block size will not be fixed; that is, different blocks will be different sizes. This can obviously cause difficulty when some existing blocks are to be discarded and fresh blocks are to be added. These difficulties can largely be overcome by allowing the blocks to the movable, so that when a page is updated, the blocks to be retained in the page are rearranged so that any unused areas on the page are merged into a single large unused area.
  • blocks are movable, then they cannot be addressed by fixed addresses. Instead, some sort of block locating or addressing data structure must be maintained so that the blocks can in effect be searched for by using some kind of name or descriptor. With blocks of different sizes, this requires information about both the locations and the nature of the blocks. This can be achieved in various ways. Thus a detailed directory of the blocks (their locations and nature) can be maintained at the beginning of the flash memory, or a location directory of the blocks can be maintained at the beginning of the flash memory and each block can include a header giving the nature of the block. Alternatively, a separate block locating data structure can be maintained for each page of the flash memory.
  • All these block locating data structures have the common characteristic that updating of the flash memory is required for every change in its contents. To write a fresh block obviously requires flash memory updating; deletion of a block similarly requires updating. Although it is not necessary to physically delete the block, the block locating data structure has to be updated to indicate that the block is no longer valid.
  • the need for flash memory- updating can be restricted to the addition of fresh blocks; in other words, blocks can effectively be deleted without requiring updating of the flash memory.
  • the block locating data structure is held at least partially in an external memory outside the flash memory itself, preferably in an EEPROM memory.
  • the external memory may hold the substantially the entire block locating data structure, ie the block addresses and descriptors.
  • the external memory may hold only the locations of the blocks in the flash memory, with the descriptors of the blocks being included in the flash memory as headers of the blocks themselves.
  • the external directory may be organized either as a single structure for the entire flash memory or on a per page basis.
  • this procedure has a problem. If the power supply to the system should be interrupted during this procedure (or some other major system interrupt or crash should occur), the contents of the RAM will be lost, so the updated image of the page being written into the flash memory will be lost. The information previously in the flash memory page being updated will have been erased, as a preliminary to the writing of the updated page back into the flash memory. (And the updated page will have been written back into the flash memory only partially, so some of its contents will have been lost; and, since the precise point at which the power loss occurred will generally not be known, it will not normally be known exactly how much of the contents of the updated page have been written into the flash memory.)
  • One object of the present invention is to alleviate ⁇ overcome this problem.
  • the present invention provides a flash memory system in a computer wherein the flash memory is divided into separately writable pages, comprising: means for copying a page of the flash memory as an image page into RAM memory and updating the image page; means for writing the image page back into a different page in the flash memory; a main record table, held in a separate non-volatile memory, identifying valid pages in the flash memory; and means for updating the main record table when a page in the flash memory has been updated.
  • the memory holding the main record table is preferably EEPROM memory. Access to the flash memory will normally be via the main record table.
  • the main record table will record some pages of the flash memory as valid and others as invalid, "invalid" meaning that the page does not contain valid information.
  • a page can be invalid in various ways; thus it may be empty, it may have been successfully copied into another page, or it may have had its writing interrupted.
  • updating a page involves copying the page being updated from its existing page in the flash memory to another page (with the copying involving updating of the contents of the page). So the present system must always maintain at least one page as invalid; the invalid page or pages can equally well be described as "spare".
  • the main record table is updated only after the copying of the page is completed. Thus if the copying of a page is interrupted, the main record table will remain unchanged, so the original page will remain valid and the new page will remain marked as spare. The copying can either be re-tried later or abandoned.
  • the main record table Since the updating of the main record table will be very rapid compared to the updating of a page of the flash memory, it may be possible to check the state of the power supply immediately before updating the main record table, using a power supply which has sufficient capacity to maintain the system operating for at least as long as is required to update the main record table.
  • the main record table includes an error detection section and is itself copied into a back-up record table immediately after it has been updated.
  • the system will then include means for checking the main record table for error when using it to access the flash memory, and for using the back-up record table if the main record table has an error.
  • the system treats the last updating of the flash memory as invalid, just as if the updating had been interrupted.
  • the main record table will be updated. This updating may be interrupted, as discussed above, and if it is, then the back-up record table has to be used to access the flash memory as it was before the updating. It is therefore undesirable to allow the back-up record table to be faulty. This can conveniently be achieved by copying the main record table into the back-up record table as the first step in updating the flash memory (or at least before the writing of the updated image page from the RAM into the spare page of the flash memory).
  • directory information does not normally change unless the data blocks themselves are changed, so it is therefore convenient to store it in the flash memory along with the data blocks.
  • directory-type information which may change without the data itself changing; that is, whether or not a data block is valid. It is therefore convenient to store data block validity information in the record table. This allows a data block to be effectively deleted without having to update the flash memory; all that need be done is to change the block's indicator from valid to invalid.
  • the record table therefore preferably contains, for each page, a set of data block validity indicators, which may conveniently be in the form of single bits. This increases the size of the record table, which in turn means that a variety of standard techniques can be used to provide the error detection section; it is preferred to use a cyclic redundancy check (CRC), though an error detecting or correcting code or a hash-type function could be used.
  • CRC cyclic redundancy check
  • the block validity indicators for a page in the record table must of course be linked to the blocks themselves in that page in the flash memory. This may be done by keeping the blocks in the page in the flash memory in the same sequence as their indicators in the record table. It is preferred, however, to provide a header in each page in the flash memory which contains a set of pointers to the actual locations of the blocks in that page; this permits greater freedom in the arrangement of the blocks themselves in the page.
  • the identification information (eg block name) for each block in the page may be included either in the page header or as a block header at the start of the block itself. The latter option is the one adopted in the preferred embodiment.
  • This identification information may include block linking information, so that a large unit of data can be split into 2 or more blocks.
  • a further aspect of the present invention provides a receiver/decoder for use in a digital broadcast and reception system including a system or memory system or flash memory as described above.
  • the receiver/decoder further comprises means for receiving a compressed MPEG-type signal, means for decoding the received signal to provide a television and/or radio signal and means for supplying the signal to a television and/or radio.
  • Figure 1 shows the overall architecture of a digital television system according to the preferred embodiment of the present invention
  • Figure 2 shows the architecture of an interactive system of the digital television system
  • Figure 3 shows the arrangement of files within a module downloaded into the memory of an interactive receiver/decoder
  • Figure 4 is a simplified block diagram of the relevant parts of the computer system
  • Figure 5 is a diagram of the organization of a part of the RAM memory
  • Figure 6 shows the structure of a Set Buffers command
  • Figure 7 is diagram of the structure of the memory management unit.
  • Figure 8 is a block diagram of the system
  • Figure 9 shows the logical layout of the flash memory and the record tables.
  • Figure 10 shows the logical layout of a flash memory page and a sub-section of the record table.
  • the invention includes a mostly conventional digital television system 2000 which uses the known MPEG-2 compression system to transmit compressed digital signals.
  • MPEG-2 compressor 2002 in a broadcast centre receives a digital signal stream (typically a stream of video signals).
  • the compressor 2002 is connected to a multiplexer and scrambler 2004 by linkage 2006.
  • the multiplexer 2004 receives a plurality of further input signals, assembles one or more transport streams and transmits compressed digital signals to a transmitter 2008 of the broadcast centre via linkage 2010, which can of course take a wide variety of forms including telecom links.
  • the transmitter 2008 transmits electromagnetic signals via uplink 2012 towards a satellite transponder 2014, where they are electronically processed and broadcast via notional downlink 2016 to earth receiver 2018, conventionally in the form of a dish owned or rented by the end user.
  • the signals received by receiver 2018 are transmitted to an integrated receiver/decoder 2020 owned or rented by the end user and connected to the end user's television set 2022.
  • the receiver/decoder 2020 decodes the compressed MPEG-2 signal into a television signal for the television set 2022.
  • a conditional access system 3000 is connected to the multiplexer 2004 and the receiver/decoder 2020, and is located partly in the broadcast centre and partly in the decoder. It enables the end user to access digital television broadcasts from one or more broadcast suppliers.
  • a smartcard capable of deciphering messages relating to commercial offers (that is, one or several television programmes sold by the broadcast supplier), can be inserted into the receiver/decoder 2020. Using the decoder 2020 and smartcard, the end user may purchase commercial offers in either a subscription mode or a pay-per-view mode.
  • An interactive system 4000 also connected to the multiplexer 2004 and the receiver/decoder 2020 and again located partly in the broadcast centre and partly in the decoder, enables the end user to interact with various applications via a modemmed back channel 4002.
  • Figure 2 shows the general architecture of the interactive television system 4000 of the digital television system 1000 of the present invention.
  • the interactive system 4000 allows an end user to buy items from onscreen catalogues, consult local news and weather maps on demand and play games through his television set.
  • the interactive system 4000 comprises in overview four main elements: an authoring tool 4004 at the broadcast centre (or elsewhere) for enabling a broadcast supplier to create, develop, debug and test applications; an application and data server 4006 the broadcast centre, connected to the authoring tool 4004 for enabling a broadcast supplier to prepare, authenticate and format applications and data for delivery to the multiplexer and scrambler 2004 for insertion into the MPEG-2 transport stream (typically the private section thereof) to be broadcast to the end user; a virtual machine including a run time engihe (RTE) 4008, which is an executable code installed in the receiver/decoder 2020 owned or rented by the end user for enabling an end user to receive, authenticate, decompress, and load applications into the working memory 2024 of the receiver/decoder 2020 for execution.
  • RTE run time engihe
  • the engine 4008 also runs resident, general-purpose applications.
  • the engine 4008 is independent of the hardware and operating system; and a modemmed back channel 4002 between the receiver/decoder 2020 and the application and data server 4006 to enable signals instructing the server 4006 to insert data and applications into the MPEG-2 transport stream at the request of the end user.
  • the interactive television system operates using "applications” which control the functions of the receiver/decoder and various devices contained therein.
  • Applications are represented in the engine 4008 as “resource files”.
  • a “module” is a set of resource files and data. Several modules may be required to make up an application.
  • a "memory volume” of the receiver/decoder is a storage space for modules.
  • An “interface” is used to download modules. Modules may be downloaded into the receiver/decoder 2020 from the MPEG-2 transport stream.
  • an application is a piece of computer code for controlling high level functions of preferably the receiver/decoder 2020. For example, when the end user positions the focus of a remote controller on a button object seen on the screen of the television set 2022 and presses a validation key, the instruction sequence associated with the button is run.
  • An interactive application proposes menus and executes commands at the request of the end user and provides data related to the purpose of the application.
  • Applications may be either resident applications, that is, stored in the ROM (or FLASH or other non-volatile memory) of the receiver/decoder 2020, or broadcast and downloaded into the RAM or FLASH memory of the receiver/decoder 2020.
  • the receiver/decoder 2020 is equipped with a resident initiating application which is an adaptable collection of modules (this term being defined in more detail hereunder) enabling the receiver/decoder 2020 to be immediately operative in the MPEG-2 environment.
  • the application provides core features which can be modified by the broadcast supplier if required. It also provides an interface between the resident application and downloaded applications.
  • the startup application allows any application, either downloaded or resident, to run on the receiver/decoder 2020. This application acts as a bootstrap executed on arrival of a service in order to start the application. Startup is downloaded into RAM and therefore can be updated easily. It can be configured so that the interactive applications available on each channel can be selected and run, either immediately after downloading or after preloading. In the case of preloading, the application is loaded into the memory 2024 and is activated by the startup when required.
  • a Program Guide is an interactive application which gives full information about programming. For example, it may give information about, say, one week's television programmes provided on each channel of a digital television bouquet.
  • the end user By depressing a key on the remote controller 2026, the end user accesses an add-on screen, overlaid on the event shown on the screen of the television set 2022.
  • This add-on screen is a browser giving information on the current and next events of each channel of the digital TV bouquet.
  • the end user By depressing another key on the remote controller 2026, the end user accesses an application which displays a list of information on events over one week. The end user can also search and sort events with simple and customised criteria. The end user can also access directly a selected channel.
  • a Pay Per View application The Pay Per View Application is an interactive service available on each PPV channel of the digital TV bouquet in conjunction with the conditional access system 3000. The end user can access the application using a TV guide * or channel browser.
  • the application starts automatically as soon as a PPV event is detected on the PPV channel.
  • the end user is then able to buy the current event either through his daughter smartcard 3020 or via the communication server 3022 (using a modem, a telephone and DTMF codes, MINITEL or the like).
  • the application may be either resident in the ROM of the receiver/decoder 2020 or downloadable into the RAM of the decoder 2020.
  • the magazine browser application comprises a cyclic video broadcast of images with end user navigation via on-screen buttons.
  • the quiz application is preferably synchronised with a broadcast quiz programme. As an example, multiple choice questions are displayed on the screen of the television 2022, and the user can select an answer using the remote controller 2026. The quiz application can inform the user whether the answer is correct or not, and can keep count of the user's score.
  • a Teleshopping application In one example of the teleshopping application, offers of goods for sale are transmitted to the receiver/decoder 2020 and displayed on the television 2022. Using the remote controller, the user can select a particular item to buy. The order for the item is sent via the modemmed back channel 4002 to the application and data server 4006 or to a separate sales system the telephone number of which has been downloaded to the receiver/decoder, possibly with an order to debit the account for a credit card which has been inserted into one of the card readers 4036 of the receiver/decoder 2020.
  • a Telebanking application In one example of the telebanking application, the user inserts a bank card into one of the card readers 4036 of the receiver/decoder 2020.
  • the receiver/decoder 2020 dials up the user's bank, using a telephone number stored in the bank card or stored in the receiver/decoder, and then the application provides a number of facilities which can be selected using the remote controller 2026, for example for downloading via the telephone line a statement of account, transferring funds between accounts, requesting a cheque book, etc.
  • An Internet Browser application In one example of the Internet browser application, instructions from the user, such as a request to view a web page having a particular URL, are entered using the remote controller 2026, and these are sent by the modemmed back channel 4002 to the application and data server 4006. The appropriate web page is then included in the transmissions from the broadcast centre, received by the receiver/decoder 2020 via the uplink
  • the resource files comprise graphic object description unit files, variables block unit files, instruction sequence files, application files and data files.
  • the graphic object description unit files describe the screens, the man-machine interface of the application.
  • the variables block unit files describe the data structures handled by the application.
  • the instruction sequence files describe the processing operations of the applications.
  • the application files provide the entry points for the applications.
  • the applications constituted in this way can use data files, such as icon library files, image files, character font files, colour table files and ASCII text files.
  • An interactive application can also obtain on-line data by effecting inputs and/or outputs.
  • the engine 4008 only loads into its memory those resource files it needs at a given time. These resource files are read from the graphic object description unit files, instruction sequence files and application files; variables block unit files are stored in memory following a call to a procedure for loading modules and remain locked there until a specific call to a procedure for unloading modules is made.
  • a module 4010 such as a -tele-shopping module, is a set of resource files and data comprising the following: a single application file 4012; an undetermined number of graphic object description unit files 4014; an undetermined number of variables block unit files 4016; an undetermined number of instruction sequence files 4018; and where appropriate, data files 4020 such as icon library files, image files, character font files, colour table files and ASCII text files.
  • each module comprises a group of MPEG tables.
  • Each MPEG table may be formatted as a number of sections.
  • each section has a "size" of up to 4 kbytes.
  • modules similarly are split into tables and sections, the size of the section varying with the transport medium.
  • Modules are transported in the MPEG data stream in the form of data packets of typically 188 bytes within respective types of data stream, for example, video data streams, audio data streams and teletext data streams.
  • Each packet is preceded by a Packet Identifier (PID) of 13 bits, one PID for every packet transported in the MPEG data stream.
  • PID Packet Identifier
  • a programme map table contains a list of the different data streams and defines the contents of each data stream according to the respective PID.
  • a PID may alert a device to the presence of applications in the data stream, the PID being identified using the PMT table.
  • the receiver/decoder comprises a RAM memory 4022 coupled to a microprocessor 20 which is also coupled to a FLASH memory 4024, an EEPROM memory 4024', and a ROM memory 4026 over a bus 21.
  • the RAM memory 4022 is also coupled to a DMA (direct memory access) unit 22 through which data (eg from an MPEG bitstream) can be entered directly into the RAM memory.
  • DMA direct memory access
  • the RAM memory is 256 kbytes long, and -is divided into 3 areas: an area 24 which is reserved for use by the manufacturer of the system an area 25 which is reserved for use by a virtual machine (VM), and a user area 26 which is used to contain a variety of information such as buffers, applications 30, 30', 30", data etc.
  • the system is defined by a functional specification allowing the manufacturer considerable freedom in designing the hardware to implement the system; the memory area 24 is used in effect as an interface between the functions specified by the functional specification and the hardware.
  • the VM in area 25 is in effect a kind of operating system for the computer system, and the VM and the microprocessor 20 can together be regarded as a run time engine (RTE) 4008.
  • RTE run time engine
  • Communication is necessary between the VM and the applications, and between the different applications themselves. This communication is handled primarily by means of buffers, which are common to the VM and the various applications.
  • a command (the Set Buffers command) is used to define a buffer area 32 in the user area 26 and the division of that buffer area into individual buffers. This defines a number of buffer pools; for each pool, the size of the buffers in the pool and the number of buffers in the pool are given.
  • Figure 6 shows the logical format of the Set Buffers command.
  • This comprises an initial entry 35 defining the number of pools NP, followed by a set of entries 36, 36', , one for each pool, with each pool entry consisting of a first sub-entry 37 defining the pool size PS of the pool (ie the number of buffers in the pool) and a second sub-entry 38 defining the buffer size BS of the buffers (ie the number of bytes in the buffers) in the pool.
  • NP number of pools per pool -
  • PS pool size (number of buffers in pool)
  • BS buffer size PN: pool number BN: buffer number (in pool)
  • each pool of buffers includes a reserved section, of 16 bytes, at its beginning. This section is split into a 12-byte sub-section which is available to users for use as buffer flags, etc, and a 4-byte sub-section which is reserved for the use of the VM.
  • the RTE 4008 implements a buffer manager which can be regarded as forming an addressing path 27 between the bus 21 and the user area 26 of the RAM memory 4022.
  • Figure 7 shows the logical organization of the buffer manager. This is first initialized by a Set Buffers command under the control of the microprocessor 20; it is then used to address any desired buffer.
  • the sub-entries PS and BS for each pool in turn are fed to a multiplier 35, which forms their products PS*BS.
  • An accumulator 36 is initialized with the value 64k (which represents the start address of the user area 26 of the RAM 4022), and is fed with the succession of products PS*BS via an adder 37 which adds 16 into each product; this 16 represents the size of the reserved section at the start of each pool.
  • the accumulator 36 therefore contains, in succession, the start addresses of each of the buffer pools in succession. These pool start addresses are fed to a cumulative address register 38 in which they are stored in sequence.
  • the number of pools NP is stored in a number of pools register 39
  • the pool sizes are stored in a pool sizes register 40
  • the buffer sizes BS are stored in the same sequence in a buffer size register 41.
  • the buffers can be addressed.
  • the desired buffer is defined by a pool number PN for the desired pool, a buffer number BN for the desired buffer in that pool, and a byte number ByN for the desired byte within that buffer.
  • the pool number PN is used to select the appropriate entries for that pool from the cumulative register 38 and the buffer size register 40.
  • the buffer size BS is fed to a multiplier 45, where it is multiplied by the buffer number BN.
  • the resulting product is fed to an incrementer 46 which adds 16 to the product.
  • the output of the cumulative register 38 is fed to an adder 47 where it has added to it the byte number ByN.
  • the output of incrementer 46 is fed to an adder 48 where it is added to the output of adder 47.
  • the output of adder 48 passes through a multiplexer 49 as the desired address; that is, the address of the desired byte of the desired buffer of the desired pool.
  • the buffer manager also includes error checking circuitry.
  • the pool number PN is fed to a comparator 53 which is also fed with the number of pools NP from register
  • BN is fed to a comparator 54 which is also fed with the output of the selected entry in the pool size register 40, to check that the selected buffer number is not greater than the number of buffers in the selected pool; that is, to check that the selected buffer is within the selected pool.
  • the selected byte number is fed to a comparator
  • N/C selects between normal buffer accesses and what may for convenience be termed buffer control operations. For normal accesses, buffers are selected; the reserved initial area of a buffer pool is only selected for control operations.
  • the N/C signal is fed to the multiplexer 49.
  • this signal selects the output of adder 48, as described above, for control operations on the reserved area of a pool, however, the multiplexer selects instead the output of adder 47 direct. Since this path from the cumulative register 38 does not pass through the incrementer 46, this results in the selection of the desired byte in the reserved area of the pool rather than in one of the buffers following that reserved area.
  • the comparator 55 For control operations on the buffer area, the comparator 55 needs to be disabled. This comparator is therefore enabled by the signal N/C for normal buffer accesses and disabled for control operations.
  • a further comparator 56 is also fed with the byte number ByN and the number of bytes in the reserved pool areas, ie 16, and is enabled by the signal N/C for system accesses. This comparator check that the desired byte number is not greater than 16; that is, it checks that the selected byte is within the reserved area at the start of the selected pool. Obviously, this check can be refined to discriminate between accesses to the 12-byte sub-section which is available to users for use as buffer flags, etc, and the 4-byte sub-section which is reserved for the use of the RTE.
  • the Set Buffers command may also include a User Memory End parameter 34, as shown in Figure 9, defining the end of the user memory area 26.
  • the last entry into the Set Buffers command would be stored in a suitable register, and can be used to check that the buffer area does not extend beyond the end of the user memory area 26. (This is in general extremely unlikely, as space has to be left for the applications
  • the buffer area can be located somewhere in the middle of the user area rather than at its beginning as described above.
  • the Set Buffers command can be used to initialize the buffer area at any time.
  • re-initializing the buffer area will effectively result in the loss of all (or nearly all) the information already in the buffers, so the Set Buffers command will normally be executed only on system initialization.
  • the system comprises a flash memory 4024, a RAM memory 4022, and an EEPROM memory 4026 all coupled to a microprocessor 120 over a bus 121.
  • the EEPROM memory may be coupled directly to the microprocessor 120.
  • the flash memory is divided into 8 pages P1-P8 of equal size, as shown in Figure 9. Of these pages, page P8 is reserved for the use of the manufacturer; the remaining pages are free for use by the user.
  • Figure 9 also shows the main record table register 122 and back-up record table register 123, which are resident in the EEPROM 4026.
  • the information in these tables is in somewhat compressed and coded form.
  • the final section 125 of table 122 is a CRC byte, and the section 126 before that is a page number which identifies the spare page.
  • the first section 127 of table 122 consists of 6 sub-sections 127-1 to 127-6, one for each of the valid pages of the flash memory (ie the 6 pages left apart from the spare page and the reserved page P8). These sub-sections correspond to these remaining pages in sequence.
  • Figure 10 shows the logical layout of a flash memory page Pn and a sub-section 127-m of the record table and the relationship between them. (Depending on where the spare page is, m may equal n or n-1.)
  • the page has a header 130 which contains 16 sections, one for each possible data block.
  • Each section of the header 130 contains an offset or pointer to the start of its data block; this pointer is in effect the address of the block within the page.
  • the data blocks 131, 131', in the page can therefore be in any order.
  • Each data block contains a respective header 132, 132', which can contain a variety of items relating to the block, such as the name of the block, a version number, the block length, status information, and so on.
  • the sub-section 127-m of the record table consists of 16 bits, each bit being a block validity indicator for the corresponding section in the page header 130 as shown.
  • the main record table in register 122 is checked for validity; that is, the CRC of sections 126 and 127 is calculated and compared to the stored CRC in section 125.
  • the main record table is then copied into the back-up record table register 123 (and, if desired, the back-up record table can then be checked for validity, to ensure that the copying was error-free).
  • the page being updated (the old page) is copied from the flash memory into the RAM memory.
  • the sub-section 127-m in the main record table for that page is extracted, and any data blocks marked as invalid are deleted from the page image in the RAM memory.
  • the new data blocks are written into the page image.
  • the new data blocks will not fit easily into the spaces between the remaining original data blocks. These remaining blocks will in general be separated by blank areas of various sizes. They are therefore shifted up the page image to "squeeze out" the unused areas between them, effectively moving the unused areas to the bottom of the page image to form a single large unused area. This ensures that the new data blocks can be written into the page image (provided, of course, that the page capacity is not exceeded).
  • the block header in the page image is of course updated, by changing its pointers to the new positions of the data blocks in the page image.
  • the sub-section of the record table for the page being updated was previously extracted from the record table. That extracted sub-section is now updated, by setting the validity bits for any new data blocks which have been added to the page image.
  • section 127 of the record table is extracted from the main record table register 122.
  • the sub-section corresponding to the page being updated (the old page) is effectively deleted. This is the sub-section which was previously extracted by itself, and has been updated.
  • This new sub-section (corresponding to the new page, ie the spare page into which the updated page is being written) is inserted into the sequence of sub-sections at the appropriate points For this, the sub-sections for any pages between the old and new pages have to be shifted along to fill up the sub-section which has been deleted and make room for the new sub-section.
  • the updated page image in the RAM memory is copied into the spare page, as identified by the spare page number in section 126 of the main record table.
  • the updated record table is copied into the main record table register 122.
  • the updated contents of the main record table register 122 are copied into the back-up record table register 123, and, if desired, the contents of the main record table in register 122 and/or the back-up record table can be checked for validity.
  • the two record tables may both be checked for validity; if either is found to be invalid, it can be replaced by the valid one (ie. the contents of the valid record table being copied into the invalid record table).
  • PC/ASB/19712 Downloading Data (Attorney Reference No. PC/ASB/19713), Computer Memory Organisation (Attorney Reference No. PC/ASB/19714), Television or Radio Control System Development (Attorney Reference No. PC/ASB/19715), Extracting Data Sections from a Transmitted Data Stream (Attorney Reference No. PC/ASB/19716), Access Control System (Attorney Reference No. PC/ASB/19717), Data Processing System (Attorney Reference No. PC/ASB/19718), and Broadcast and Reception System, and Receiver/Decoder and Remote Controller therefor (Attorney Reference No. PC/ASB/19720).
  • the disclosures of these documents are incorporated herein by reference.
  • the list of applications includes the present application.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Software Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Finance (AREA)
  • General Health & Medical Sciences (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Virology (AREA)
  • Biomedical Technology (AREA)
  • Computer Graphics (AREA)
  • Quality & Reliability (AREA)
  • Discrete Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Saccharide Compounds (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Radiation-Therapy Devices (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Debugging And Monitoring (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

In a memory in a computer system, buffers are defined by a buffer management system. A set Buffers command defines a number (NP) of pools of buffers, and for each pool, a pool size (PS) of the number of buffers in the pool and the size (BS) of the buffers in that pool. The buffer management system is initialized to store the buffer sizes and to cumulate and store the pool sizes. To address a buffer, the buffer management system determines the address of the start of the buffer from the desired pool and buffer numbers, using the stored information. Also, for updating a paged flash memory, a page Pn of the flash memory (4024) is copied as an image page into RAM memory (4022), and the image page is updated and written back into a different page in the flash memory. A main record table (22) is held in a separate non-volatile memory (EEPROM 4026), identifying valid page pages in the flash memory, and is updated when a page in the flash memory has been updated. The main record table includes a CRC error detection section (25), and is copied into a back-up record table (23) immediately after it has been updated.

Description

COMPUTER MEMORY ORGANIZATION
The present invention relates to computer memories, and more specifically to the division of memory areas therein and/or to the updating of the contents of flash memory. It finds particular application in a receiver/decoder of a broadcast and reception system, in particular a receiver/decoder of a digital interactive satellite television and/or radio system. However, it will be realized that it is not limited to that system or systems of that type, but is applicable more generally to a wide variety of computer systems.
In computer systems, particularly systems where the computer system is incorporated in some larger system such as a receiver/decoder for digital television or radio, the amount of memory is often limited. This means that the memory must be organized so that the use of memory space by the various functions required by the system is minimized. In addition, it may also be necessary to minimize the time required to access at least some parts of the memory.
One aspect of the present invention is particularly concerned with the provision or organization of buffers in the memory.
The conventional technique for providing buffers is by a dynamic system for allocating the required buffers. However, in the present context this standard system has certain disadvantages. It tends to result in fragmentation of the memory, and its speed is restricted by the need for overhead operations. Also, if an expansion of the buffers is required, it may require movement of blocks of memory to create space for the expansion.
According to one aspect of the present invention there is provided a system for defining and addressing buffers in a memory area in a computer system, comprising: pool size storage means for storing a plurality of pool sizes; buffer size storage means for storing, for each pool, a buffer size; and calculating means for calculating therefrom the address of a desired buffer in a desired pool. Preferably means are included for determining the pool sizes in cumulative form and storing them in that form in the pool size storage means. A reserved area may be defined at the beginning of each pool, and means provided for selecting either the cumulative pool size direct or the output of the calculating means. The desired pool number, desired buffer number, and desired byte may be checked for out-of-bounds values.
A variety of types of computer memory are now available. One major distinction between different kinds of memory is between volatile and non-volatile memories. Volatile memory retains its contents only while power is supplied to the memory, losing its contents as soon as its power supply goes off, while non-volatile memory retains its contents indefinitely even if its power supply goes off. The other major distinction is between writable memory and read-only memory.
Volatile memory is generally known as RAM, while there are various kinds of non-volatile memory. RAM is normally writable, while read-only memory is known as ROM. This latter distinction is not necessarily hard-and-fast. Any memory must of course be writable in some sense at least once, but some kinds of ROM-like memory can have their contents changed, albeit with some difficulty. Thus there are memory types such as PROM (programmable (ie writable) read-only memory, EEPROM (electrically erasable programmable read-only memory), and Flash.
The different kinds of memory have different characteristics (eg different read times and different costs), so it is often desirable to use a combination of several different kinds in a single computer system.
Another aspect of the present invention is concerned with flash memory. A flash memory is generally ROM-like, in that it is non-volatile. It is also intended to be used in a generally ROM-like manner, being read from but not written to. However, flash memory can be written to, but only with some difficulty. Specifically, a flash memory is normally divided into pages, typically each of many kilobytes in length, and writing to the flash memory is by page. In more detail, to write to the flash memory, an entire page has to be erased and the new contents then have to be written into the erased page; further, this writing has to be essentially a single uninterruptible operation. (Obviously there can be a gap between the erasing and the writing.)
In principle, the information in the flash memory may be organized into units of any size from a single word upwards. In practice, however, it will normally be organized into blocks of substantial size. A block may comprise data, eg tables of permanent or semi-permanent information, or a program or sub-routine. The block sizes will normally be chosen to be less than the page size (if a block is larger than a page, it will usually be feasible to split it into sub-blocks which are less than the page size).
Typically, when a flash memory is updated it is desirable to retain some of the information already in it. This therefore requires the page being updated to be read into RAM to form an image of the page; this image in RAM can then be updated by inserting whatever new information is to be entered into the page. At the same time, any information in the page which is not longer required can be deleted. The updated image can then be written back into the flash memory.
In general, the block size will not be fixed; that is, different blocks will be different sizes. This can obviously cause difficulty when some existing blocks are to be discarded and fresh blocks are to be added. These difficulties can largely be overcome by allowing the blocks to the movable, so that when a page is updated, the blocks to be retained in the page are rearranged so that any unused areas on the page are merged into a single large unused area.
If the blocks are movable, then they cannot be addressed by fixed addresses. Instead, some sort of block locating or addressing data structure must be maintained so that the blocks can in effect be searched for by using some kind of name or descriptor. With blocks of different sizes, this requires information about both the locations and the nature of the blocks. This can be achieved in various ways. Thus a detailed directory of the blocks (their locations and nature) can be maintained at the beginning of the flash memory, or a location directory of the blocks can be maintained at the beginning of the flash memory and each block can include a header giving the nature of the block. Alternatively, a separate block locating data structure can be maintained for each page of the flash memory.
All these block locating data structures have the common characteristic that updating of the flash memory is required for every change in its contents. To write a fresh block obviously requires flash memory updating; deletion of a block similarly requires updating. Although it is not necessary to physically delete the block, the block locating data structure has to be updated to indicate that the block is no longer valid.
We have realized that the need for flash memory- updating can be restricted to the addition of fresh blocks; in other words, blocks can effectively be deleted without requiring updating of the flash memory. To achieve this, the block locating data structure is held at least partially in an external memory outside the flash memory itself, preferably in an EEPROM memory.
The external memory may hold the substantially the entire block locating data structure, ie the block addresses and descriptors. Alternatively, the external memory may hold only the locations of the blocks in the flash memory, with the descriptors of the blocks being included in the flash memory as headers of the blocks themselves. In both cases, the external directory may be organized either as a single structure for the entire flash memory or on a per page basis.
However, it is preferred to minimize the size of the external memory by maintaining in it only the validity of each block, with the block addresses and descriptors being maintained in the flash memory itself. This reduces the external memory to a bitmap of the validity of the blocks. To erase a block in the flash memory, all that is required is to change the bit for that block in the external memory from "valid" to "invalid".
Returning to the general page updating procedure discussed above, this procedure has a problem. If the power supply to the system should be interrupted during this procedure (or some other major system interrupt or crash should occur), the contents of the RAM will be lost, so the updated image of the page being written into the flash memory will be lost. The information previously in the flash memory page being updated will have been erased, as a preliminary to the writing of the updated page back into the flash memory. (And the updated page will have been written back into the flash memory only partially, so some of its contents will have been lost; and, since the precise point at which the power loss occurred will generally not be known, it will not normally be known exactly how much of the contents of the updated page have been written into the flash memory.)
One object of the present invention is to alleviate ΌΓ overcome this problem.
According to this aspect, the present invention provides a flash memory system in a computer wherein the flash memory is divided into separately writable pages, comprising: means for copying a page of the flash memory as an image page into RAM memory and updating the image page; means for writing the image page back into a different page in the flash memory; a main record table, held in a separate non-volatile memory, identifying valid pages in the flash memory; and means for updating the main record table when a page in the flash memory has been updated. The memory holding the main record table is preferably EEPROM memory. Access to the flash memory will normally be via the main record table.
In normal operation, the main record table will record some pages of the flash memory as valid and others as invalid, "invalid" meaning that the page does not contain valid information. A page can be invalid in various ways; thus it may be empty, it may have been successfully copied into another page, or it may have had its writing interrupted.
In the present system, updating a page involves copying the page being updated from its existing page in the flash memory to another page (with the copying involving updating of the contents of the page). So the present system must always maintain at least one page as invalid; the invalid page or pages can equally well be described as "spare". When a page is updated, the main record table is updated only after the copying of the page is completed. Thus if the copying of a page is interrupted, the main record table will remain unchanged, so the original page will remain valid and the new page will remain marked as spare. The copying can either be re-tried later or abandoned.
Even with the system just described, there is a potential difficulty. The system as so far described relies on the updating of the main record table. It is therefore important to ensure that the integrity of this main record table is high.
Since the updating of the main record table will be very rapid compared to the updating of a page of the flash memory, it may be possible to check the state of the power supply immediately before updating the main record table, using a power supply which has sufficient capacity to maintain the system operating for at least as long as is required to update the main record table. Preferably, however, the main record table includes an error detection section and is itself copied into a back-up record table immediately after it has been updated. The system will then include means for checking the main record table for error when using it to access the flash memory, and for using the back-up record table if the main record table has an error. Thus if the main record table has an error, the system treats the last updating of the flash memory as invalid, just as if the updating had been interrupted.
It is of course possible for the copying of the main record table into the back-up record table to be interrupted. This copying occurs only after the main updating of the main record table has been completed, however. Any later access of the flash memory will involve the checking of the main record table; that main record table will be error-free, so the back-up record table will not need to be accessed and its faulty state will be irrelevant.
During the next updating of the flash memory, however, the main record table will be updated. This updating may be interrupted, as discussed above, and if it is, then the back-up record table has to be used to access the flash memory as it was before the updating. It is therefore undesirable to allow the back-up record table to be faulty. This can conveniently be achieved by copying the main record table into the back-up record table as the first step in updating the flash memory (or at least before the writing of the updated image page from the RAM into the spare page of the flash memory).
It follows from the above discussion that the information or data blocks in the flash memory are not located in fixed positions. As the flash memory pages are updated, so the data blocks in them move from page to page, and may also have their positions in the page changed. Some form of directory is therefore required, so that the data blocks can be found when required. This directory information can be held in the record table or in the flash memory pages themselves, or divided between those two locations.
We have realized that in general the directory information does not normally change unless the data blocks themselves are changed, so it is therefore convenient to store it in the flash memory along with the data blocks. However, there is one element of directory-type information which may change without the data itself changing; that is, whether or not a data block is valid. It is therefore convenient to store data block validity information in the record table. This allows a data block to be effectively deleted without having to update the flash memory; all that need be done is to change the block's indicator from valid to invalid.
Of course, if the page with that block is updated at some later time, the blocks with invalid indicators will not be copied from the page into the image page in RAM memory, so they will be deleted in a more physical sense at that point. (They will actually remain in the old page, which becomes the new spare page, but are of course inaccessible there, and when that new spare page is used for the next updating of the flash memory, their physical deletion will be complete.)
The record table therefore preferably contains, for each page, a set of data block validity indicators, which may conveniently be in the form of single bits. This increases the size of the record table, which in turn means that a variety of standard techniques can be used to provide the error detection section; it is preferred to use a cyclic redundancy check (CRC), though an error detecting or correcting code or a hash-type function could be used.
The block validity indicators for a page in the record table must of course be linked to the blocks themselves in that page in the flash memory. This may be done by keeping the blocks in the page in the flash memory in the same sequence as their indicators in the record table. It is preferred, however, to provide a header in each page in the flash memory which contains a set of pointers to the actual locations of the blocks in that page; this permits greater freedom in the arrangement of the blocks themselves in the page.
The identification information (eg block name) for each block in the page may be included either in the page header or as a block header at the start of the block itself. The latter option is the one adopted in the preferred embodiment. This identification information may include block linking information, so that a large unit of data can be split into 2 or more blocks.
A further aspect of the present invention provides a receiver/decoder for use in a digital broadcast and reception system including a system or memory system or flash memory as described above.
Preferably, the receiver/decoder further comprises means for receiving a compressed MPEG-type signal, means for decoding the received signal to provide a television and/or radio signal and means for supplying the signal to a television and/or radio.
Preferred features of the present invention will now be described, purely by way of example, with reference to the accompanying drawings, in which:-
Figure 1 shows the overall architecture of a digital television system according to the preferred embodiment of the present invention; Figure 2 shows the architecture of an interactive system of the digital television system;
Figure 3 shows the arrangement of files within a module downloaded into the memory of an interactive receiver/decoder;
Figure 4 is a simplified block diagram of the relevant parts of the computer system;
Figure 5 is a diagram of the organization of a part of the RAM memory;
Figure 6 shows the structure of a Set Buffers command;
Figure 7 is diagram of the structure of the memory management unit.
Figure 8 is a block diagram of the system;
Figure 9 shows the logical layout of the flash memory and the record tables; and
Figure 10 shows the logical layout of a flash memory page and a sub-section of the record table.
An overview of a digital television system 1000 is shown in Figure 1. The invention includes a mostly conventional digital television system 2000 which uses the known MPEG-2 compression system to transmit compressed digital signals. In more detail, MPEG-2 compressor 2002 in a broadcast centre receives a digital signal stream (typically a stream of video signals). The compressor 2002 is connected to a multiplexer and scrambler 2004 by linkage 2006. The multiplexer 2004 receives a plurality of further input signals, assembles one or more transport streams and transmits compressed digital signals to a transmitter 2008 of the broadcast centre via linkage 2010, which can of course take a wide variety of forms including telecom links. The transmitter 2008 transmits electromagnetic signals via uplink 2012 towards a satellite transponder 2014, where they are electronically processed and broadcast via notional downlink 2016 to earth receiver 2018, conventionally in the form of a dish owned or rented by the end user. The signals received by receiver 2018 are transmitted to an integrated receiver/decoder 2020 owned or rented by the end user and connected to the end user's television set 2022. The receiver/decoder 2020 decodes the compressed MPEG-2 signal into a television signal for the television set 2022.
A conditional access system 3000 is connected to the multiplexer 2004 and the receiver/decoder 2020, and is located partly in the broadcast centre and partly in the decoder. It enables the end user to access digital television broadcasts from one or more broadcast suppliers. A smartcard, capable of deciphering messages relating to commercial offers (that is, one or several television programmes sold by the broadcast supplier), can be inserted into the receiver/decoder 2020. Using the decoder 2020 and smartcard, the end user may purchase commercial offers in either a subscription mode or a pay-per-view mode.
An interactive system 4000, also connected to the multiplexer 2004 and the receiver/decoder 2020 and again located partly in the broadcast centre and partly in the decoder, enables the end user to interact with various applications via a modemmed back channel 4002.
Figure 2 shows the general architecture of the interactive television system 4000 of the digital television system 1000 of the present invention.
For example, the interactive system 4000 allows an end user to buy items from onscreen catalogues, consult local news and weather maps on demand and play games through his television set.
The interactive system 4000 comprises in overview four main elements: an authoring tool 4004 at the broadcast centre (or elsewhere) for enabling a broadcast supplier to create, develop, debug and test applications; an application and data server 4006 the broadcast centre, connected to the authoring tool 4004 for enabling a broadcast supplier to prepare, authenticate and format applications and data for delivery to the multiplexer and scrambler 2004 for insertion into the MPEG-2 transport stream (typically the private section thereof) to be broadcast to the end user; a virtual machine including a run time engihe (RTE) 4008, which is an executable code installed in the receiver/decoder 2020 owned or rented by the end user for enabling an end user to receive, authenticate, decompress, and load applications into the working memory 2024 of the receiver/decoder 2020 for execution. The engine 4008 also runs resident, general-purpose applications. The engine 4008 is independent of the hardware and operating system; and a modemmed back channel 4002 between the receiver/decoder 2020 and the application and data server 4006 to enable signals instructing the server 4006 to insert data and applications into the MPEG-2 transport stream at the request of the end user.
The interactive television system operates using "applications" which control the functions of the receiver/decoder and various devices contained therein. Applications are represented in the engine 4008 as "resource files". A "module" is a set of resource files and data. Several modules may be required to make up an application. A "memory volume" of the receiver/decoder is a storage space for modules. An "interface" is used to download modules. Modules may be downloaded into the receiver/decoder 2020 from the MPEG-2 transport stream.
The elements mentioned in the previous paragraph are now described in more detail.
For the purposes of this specification, an application is a piece of computer code for controlling high level functions of preferably the receiver/decoder 2020. For example, when the end user positions the focus of a remote controller on a button object seen on the screen of the television set 2022 and presses a validation key, the instruction sequence associated with the button is run.
An interactive application proposes menus and executes commands at the request of the end user and provides data related to the purpose of the application. Applications may be either resident applications, that is, stored in the ROM (or FLASH or other non-volatile memory) of the receiver/decoder 2020, or broadcast and downloaded into the RAM or FLASH memory of the receiver/decoder 2020.
Examples of applications are:- • An Initiating Application. The receiver/decoder 2020 is equipped with a resident initiating application which is an adaptable collection of modules (this term being defined in more detail hereunder) enabling the receiver/decoder 2020 to be immediately operative in the MPEG-2 environment. The application provides core features which can be modified by the broadcast supplier if required. It also provides an interface between the resident application and downloaded applications.
• A Startup Application. The startup application allows any application, either downloaded or resident, to run on the receiver/decoder 2020. This application acts as a bootstrap executed on arrival of a service in order to start the application. Startup is downloaded into RAM and therefore can be updated easily. It can be configured so that the interactive applications available on each channel can be selected and run, either immediately after downloading or after preloading. In the case of preloading, the application is loaded into the memory 2024 and is activated by the startup when required. • A Program Guide. The Program Guide is an interactive application which gives full information about programming. For example, it may give information about, say, one week's television programmes provided on each channel of a digital television bouquet. By depressing a key on the remote controller 2026, the end user accesses an add-on screen, overlaid on the event shown on the screen of the television set 2022. This add-on screen is a browser giving information on the current and next events of each channel of the digital TV bouquet. By depressing another key on the remote controller 2026, the end user accesses an application which displays a list of information on events over one week. The end user can also search and sort events with simple and customised criteria. The end user can also access directly a selected channel. • A Pay Per View application. The Pay Per View Application is an interactive service available on each PPV channel of the digital TV bouquet in conjunction with the conditional access system 3000. The end user can access the application using a TV guide* or channel browser. Additionally, the application starts automatically as soon as a PPV event is detected on the PPV channel. The end user is then able to buy the current event either through his daughter smartcard 3020 or via the communication server 3022 (using a modem, a telephone and DTMF codes, MINITEL or the like). The application may be either resident in the ROM of the receiver/decoder 2020 or downloadable into the RAM of the decoder 2020.
• A PC Download application. On request, an end user can download computer software using the PC download application.
• A Magazine Browser application. The magazine browser application comprises a cyclic video broadcast of images with end user navigation via on-screen buttons.
• A Quiz application. The quiz application is preferably synchronised with a broadcast quiz programme. As an example, multiple choice questions are displayed on the screen of the television 2022, and the user can select an answer using the remote controller 2026. The quiz application can inform the user whether the answer is correct or not, and can keep count of the user's score.
• A Teleshopping application. In one example of the teleshopping application, offers of goods for sale are transmitted to the receiver/decoder 2020 and displayed on the television 2022. Using the remote controller, the user can select a particular item to buy. The order for the item is sent via the modemmed back channel 4002 to the application and data server 4006 or to a separate sales system the telephone number of which has been downloaded to the receiver/decoder, possibly with an order to debit the account for a credit card which has been inserted into one of the card readers 4036 of the receiver/decoder 2020.
• A Telebanking application. In one example of the telebanking application, the user inserts a bank card into one of the card readers 4036 of the receiver/decoder 2020. The receiver/decoder 2020 dials up the user's bank, using a telephone number stored in the bank card or stored in the receiver/decoder, and then the application provides a number of facilities which can be selected using the remote controller 2026, for example for downloading via the telephone line a statement of account, transferring funds between accounts, requesting a cheque book, etc.
• An Internet Browser application. In one example of the Internet browser application, instructions from the user, such as a request to view a web page having a particular URL, are entered using the remote controller 2026, and these are sent by the modemmed back channel 4002 to the application and data server 4006. The appropriate web page is then included in the transmissions from the broadcast centre, received by the receiver/decoder 2020 via the uplink
2012, transponder 2014 and downlink 2016, and displayed on the television
2022.
Applications are stored in memory locations in the receiver/decoder 2020 and represented as resource files. The resource files comprise graphic object description unit files, variables block unit files, instruction sequence files, application files and data files.
The graphic object description unit files describe the screens, the man-machine interface of the application. The variables block unit files describe the data structures handled by the application. The instruction sequence files describe the processing operations of the applications. The application files provide the entry points for the applications.
The applications constituted in this way can use data files, such as icon library files, image files, character font files, colour table files and ASCII text files. An interactive application can also obtain on-line data by effecting inputs and/or outputs.
The engine 4008 only loads into its memory those resource files it needs at a given time. These resource files are read from the graphic object description unit files, instruction sequence files and application files; variables block unit files are stored in memory following a call to a procedure for loading modules and remain locked there until a specific call to a procedure for unloading modules is made.
With reference to Figure 3, a module 4010, such as a -tele-shopping module, is a set of resource files and data comprising the following: a single application file 4012; an undetermined number of graphic object description unit files 4014; an undetermined number of variables block unit files 4016; an undetermined number of instruction sequence files 4018; and where appropriate, data files 4020 such as icon library files, image files, character font files, colour table files and ASCII text files.
In the MPEG data stream, each module comprises a group of MPEG tables. Each MPEG table may be formatted as a number of sections. In the MPEG data stream, each section has a "size" of up to 4 kbytes. For data transfer via the serial and parallel port, for example, modules similarly are split into tables and sections, the size of the section varying with the transport medium.
Modules are transported in the MPEG data stream in the form of data packets of typically 188 bytes within respective types of data stream, for example, video data streams, audio data streams and teletext data streams. Each packet is preceded by a Packet Identifier (PID) of 13 bits, one PID for every packet transported in the MPEG data stream. A programme map table (PMT table) contains a list of the different data streams and defines the contents of each data stream according to the respective PID. A PID may alert a device to the presence of applications in the data stream, the PID being identified using the PMT table.
Referring to Figure 4, the receiver/decoder comprises a RAM memory 4022 coupled to a microprocessor 20 which is also coupled to a FLASH memory 4024, an EEPROM memory 4024', and a ROM memory 4026 over a bus 21. The RAM memory 4022 is also coupled to a DMA (direct memory access) unit 22 through which data (eg from an MPEG bitstream) can be entered directly into the RAM memory.
The RAM memory is 256 kbytes long, and -is divided into 3 areas: an area 24 which is reserved for use by the manufacturer of the system an area 25 which is reserved for use by a virtual machine (VM), and a user area 26 which is used to contain a variety of information such as buffers, applications 30, 30', 30", data etc. The system is defined by a functional specification allowing the manufacturer considerable freedom in designing the hardware to implement the system; the memory area 24 is used in effect as an interface between the functions specified by the functional specification and the hardware. The VM in area 25 is in effect a kind of operating system for the computer system, and the VM and the microprocessor 20 can together be regarded as a run time engine (RTE) 4008. A variety of different applications may be loaded into the memory at different times.
Communication is necessary between the VM and the applications, and between the different applications themselves. This communication is handled primarily by means of buffers, which are common to the VM and the various applications.
In the present system, a command (the Set Buffers command) is used to define a buffer area 32 in the user area 26 and the division of that buffer area into individual buffers. This defines a number of buffer pools; for each pool, the size of the buffers in the pool and the number of buffers in the pool are given. Figure 6 shows the logical format of the Set Buffers command. This comprises an initial entry 35 defining the number of pools NP, followed by a set of entries 36, 36', , one for each pool, with each pool entry consisting of a first sub-entry 37 defining the pool size PS of the pool (ie the number of buffers in the pool) and a second sub-entry 38 defining the buffer size BS of the buffers (ie the number of bytes in the buffers) in the pool.
For convenience, these and other parameters used below are listed: NP: number of pools per pool -
PS: pool size (number of buffers in pool)
BS: buffer size PN: pool number BN: buffer number (in pool)
ByN: byte number (in buffer)
In the user memory area 26, the pools of buffers are arranged sequentially from the beginning of that area, as shown in Figure 5. The actual layout shown is for 3 pools, with Pool 1 consisting of 5 buffers of medium size, Pool 2 consisting of 6 buffers of small size, and Pool 3 consisting of 1 buffer of large size. It will also be noted that each pool of buffers includes a reserved section, of 16 bytes, at its beginning. This section is split into a 12-byte sub-section which is available to users for use as buffer flags, etc, and a 4-byte sub-section which is reserved for the use of the VM.
The RTE 4008 implements a buffer manager which can be regarded as forming an addressing path 27 between the bus 21 and the user area 26 of the RAM memory 4022. Figure 7 shows the logical organization of the buffer manager. This is first initialized by a Set Buffers command under the control of the microprocessor 20; it is then used to address any desired buffer.
In the buffer manager, the sub-entries PS and BS for each pool in turn are fed to a multiplier 35, which forms their products PS*BS. An accumulator 36 is initialized with the value 64k (which represents the start address of the user area 26 of the RAM 4022), and is fed with the succession of products PS*BS via an adder 37 which adds 16 into each product; this 16 represents the size of the reserved section at the start of each pool. The accumulator 36 therefore contains, in succession, the start addresses of each of the buffer pools in succession. These pool start addresses are fed to a cumulative address register 38 in which they are stored in sequence. Also, during initialization, the number of pools NP is stored in a number of pools register 39, the pool sizes are stored in a pool sizes register 40, and the buffer sizes BS are stored in the same sequence in a buffer size register 41. Following initialization, the buffers can be addressed. To address a buffer, the desired buffer is defined by a pool number PN for the desired pool, a buffer number BN for the desired buffer in that pool, and a byte number ByN for the desired byte within that buffer.
The pool number PN is used to select the appropriate entries for that pool from the cumulative register 38 and the buffer size register 40. The buffer size BS is fed to a multiplier 45, where it is multiplied by the buffer number BN. The resulting product is fed to an incrementer 46 which adds 16 to the product. The output of the cumulative register 38 is fed to an adder 47 where it has added to it the byte number ByN. The output of incrementer 46 is fed to an adder 48 where it is added to the output of adder 47. The output of adder 48 passes through a multiplexer 49 as the desired address; that is, the address of the desired byte of the desired buffer of the desired pool.
The buffer manager also includes error checking circuitry. The pool number PN is fed to a comparator 53 which is also fed with the number of pools NP from register
39, to check that the selected pool number is not greater than the number of pools; that is, to check that the selected pool is within the buffer area. The buffer number
BN is fed to a comparator 54 which is also fed with the output of the selected entry in the pool size register 40, to check that the selected buffer number is not greater than the number of buffers in the selected pool; that is, to check that the selected buffer is within the selected pool. The selected byte number is fed to a comparator
55 which is also fed with the size of the buffers in the selected pool, to check that the desired byte number is not greater than the length of the buffer; that is, to check that the selected byte is within the selected buffer. These comparators all feed a common output, producing an error signal ERR if any of the checks fail.
The description so far has assumed that a buffer is being addressed. However, it may be desired to address the reserved or special 16-byte initial area of a pool of buffers. The selection between these two options is controlled by a signal N/C, which selects between normal buffer accesses and what may for convenience be termed buffer control operations. For normal accesses, buffers are selected; the reserved initial area of a buffer pool is only selected for control operations.
The N/C signal is fed to the multiplexer 49. For normal buffer accesses, this signal selects the output of adder 48, as described above, for control operations on the reserved area of a pool, however, the multiplexer selects instead the output of adder 47 direct. Since this path from the cumulative register 38 does not pass through the incrementer 46, this results in the selection of the desired byte in the reserved area of the pool rather than in one of the buffers following that reserved area.
For control operations on the buffer area, the comparator 55 needs to be disabled. This comparator is therefore enabled by the signal N/C for normal buffer accesses and disabled for control operations. A further comparator 56 is also fed with the byte number ByN and the number of bytes in the reserved pool areas, ie 16, and is enabled by the signal N/C for system accesses. This comparator check that the desired byte number is not greater than 16; that is, it checks that the selected byte is within the reserved area at the start of the selected pool. Obviously, this check can be refined to discriminate between accesses to the 12-byte sub-section which is available to users for use as buffer flags, etc, and the 4-byte sub-section which is reserved for the use of the RTE.
If desired, the Set Buffers command may also include a User Memory End parameter 34, as shown in Figure 9, defining the end of the user memory area 26. The last entry into the Set Buffers command would be stored in a suitable register, and can be used to check that the buffer area does not extend beyond the end of the user memory area 26. (This is in general extremely unlikely, as space has to be left for the applications
30, 30', 30", However, it may occur if the system is designed so that the buffer area can be located somewhere in the middle of the user area rather than at its beginning as described above.)
In principle, the Set Buffers command can be used to initialize the buffer area at any time. However, re-initializing the buffer area will effectively result in the loss of all (or nearly all) the information already in the buffers, so the Set Buffers command will normally be executed only on system initialization.
Referring to Figure 8, the system comprises a flash memory 4024, a RAM memory 4022, and an EEPROM memory 4026 all coupled to a microprocessor 120 over a bus 121. (Alternatively, the EEPROM memory may be coupled directly to the microprocessor 120.) The flash memory is divided into 8 pages P1-P8 of equal size, as shown in Figure 9. Of these pages, page P8 is reserved for the use of the manufacturer; the remaining pages are free for use by the user.
Figure 9 also shows the main record table register 122 and back-up record table register 123, which are resident in the EEPROM 4026. The information in these tables is in somewhat compressed and coded form. Specifically, the final section 125 of table 122 is a CRC byte, and the section 126 before that is a page number which identifies the spare page. The first section 127 of table 122 consists of 6 sub-sections 127-1 to 127-6, one for each of the valid pages of the flash memory (ie the 6 pages left apart from the spare page and the reserved page P8). These sub-sections correspond to these remaining pages in sequence.
Figure 10 shows the logical layout of a flash memory page Pn and a sub-section 127-m of the record table and the relationship between them. (Depending on where the spare page is, m may equal n or n-1.)
Considering first the flash memory page, this can contain a maximum of 16 blocks of data. The page has a header 130 which contains 16 sections, one for each possible data block. Each section of the header 130 contains an offset or pointer to the start of its data block; this pointer is in effect the address of the block within the page. The data blocks 131, 131', in the page can therefore be in any order. Each data block contains a respective header 132, 132', which can contain a variety of items relating to the block, such as the name of the block, a version number, the block length, status information, and so on. The sub-section 127-m of the record table consists of 16 bits, each bit being a block validity indicator for the corresponding section in the page header 130 as shown.
The process of updating a page in the flash .memory will now be described. All the manipulations required for page updating are performed by the microprocessor 120.
First, the main record table in register 122 is checked for validity; that is, the CRC of sections 126 and 127 is calculated and compared to the stored CRC in section 125. The main record table is then copied into the back-up record table register 123 (and, if desired, the back-up record table can then be checked for validity, to ensure that the copying was error-free).
Next, the page being updated (the old page) is copied from the flash memory into the RAM memory. The sub-section 127-m in the main record table for that page is extracted, and any data blocks marked as invalid are deleted from the page image in the RAM memory. The new data blocks are written into the page image.
It may be that the new data blocks will not fit easily into the spaces between the remaining original data blocks. These remaining blocks will in general be separated by blank areas of various sizes. They are therefore shifted up the page image to "squeeze out" the unused areas between them, effectively moving the unused areas to the bottom of the page image to form a single large unused area. This ensures that the new data blocks can be written into the page image (provided, of course, that the page capacity is not exceeded). The block header in the page image is of course updated, by changing its pointers to the new positions of the data blocks in the page image.
The sub-section of the record table for the page being updated was previously extracted from the record table. That extracted sub-section is now updated, by setting the validity bits for any new data blocks which have been added to the page image.
Next, the whole of section 127 of the record table is extracted from the main record table register 122. The sub-section corresponding to the page being updated (the old page) is effectively deleted. This is the sub-section which was previously extracted by itself, and has been updated. This new sub-section (corresponding to the new page, ie the spare page into which the updated page is being written) is inserted into the sequence of sub-sections at the appropriate points For this, the sub-sections for any pages between the old and new pages have to be shifted along to fill up the sub-section which has been deleted and make room for the new sub-section.
Next, the updated page image in the RAM memory is copied into the spare page, as identified by the spare page number in section 126 of the main record table.
Next, the page number in the spare page section is changed to the page number of the old page, which now becomes the new spare page.
Next, the updated record table is copied into the main record table register 122. Finally, the updated contents of the main record table register 122 are copied into the back-up record table register 123, and, if desired, the contents of the main record table in register 122 and/or the back-up record table can be checked for validity.
When the system is restarted, eg. after powering down, the two record tables may both be checked for validity; if either is found to be invalid, it can be replaced by the valid one (ie. the contents of the valid record table being copied into the invalid record table).
It will be understood that the present invention has been described above purely by way of example, and modifications of detail can be made within the scope of the invention.
Each feature disclosed in the description, and (where appropriate) the claims and drawings may be provided independently or in any appropriate combination.
In the aforementioned preferred embodiments, certain features of the present invention have been implemented using computer software. However, it will of course be clear to the skilled man that any of these features may be implemented using hardware. Furthermore, it will be readily understood that the functions performed by the hardware, the computer software, and such- like are performed on or using electrical and like signals.
Cross reference is made to our co-pending applications, all bearing the same filing date, and entitled Signal Generation and Broadcasting (Attorney Reference no. PC/ASB/19707), Smartcard for use with a Receiver of Encrypted Broadcast Signals, and Receiver (Attorney Reference No. PC/ASB/19708), Broadcast and Reception System and Conditional Access System therefor (Attorney Reference No. PC/ASB/19710), Downloading a Computer File from a Transmitter via a Receiver/Decoder to a Computer (Attorney Reference No. PC/ASB/19711), Transmission and Reception of Television Programmes and Other Data (Attorney Reference No. PC/ASB/19712), Downloading Data (Attorney Reference No. PC/ASB/19713), Computer Memory Organisation (Attorney Reference No. PC/ASB/19714), Television or Radio Control System Development (Attorney Reference No. PC/ASB/19715), Extracting Data Sections from a Transmitted Data Stream (Attorney Reference No. PC/ASB/19716), Access Control System (Attorney Reference No. PC/ASB/19717), Data Processing System (Attorney Reference No. PC/ASB/19718), and Broadcast and Reception System, and Receiver/Decoder and Remote Controller therefor (Attorney Reference No. PC/ASB/19720). The disclosures of these documents are incorporated herein by reference. The list of applications includes the present application.

Claims

1. A system for defining and addressing buffers in a memory area in a computer system, comprising: pool size storage means for storing a plurality of pool sizes; buffer size storage means for storing, for each pool, -a buffer size; and calculating means for calculating therefrom the address of a desired buffer in a desired pool.
2. A system according to claim 1 including means for determining the pool sizes in cumulative form and storing them in that form in the pool size storage means.
3. A system according to either previous claim including means for defining a reserved area at the beginning of each pool.
4. A system according to claims 2 and 3 including means for selecting either the cumulative pool size direct or the output of the calculating means.
5. A system according to any previous claim including means for checking for out-of-bounds values of desired pool number, desired buffer number, and desired byte.
6. A system for defining and addressing buffers in a memory area, substantially as herein described.
7. A memory system in a computer, comprising flash memory which is divided into separately writable pages; RAM memory; separate non-volatile memory for holding a main record table identifying valid pages in the flash memory; means for copying a page of the flash memory as an image page into the RAM memory and updating the image page; means for writing the image page back into a different page in the flash memory; and means for updating the main record table in the non-volatile memory when a page in the flash memory has been updated.
8. A memory system according to claim 7 wherein: the main record table includes an error detection section; and wherein there are provided: a back-up record table into which the main record table is copied immediately after it has been updated; and means for checking the main record table for error when using it to access the flash memory, and for using the back-up record table if the main record table has an error.
9. A memory system according to claim 8 wherein the error detection section is a CRC section.
10. A memory system according to any of claims 7 to 9 wherein the record table includes for each page a set of block validity indicators for the data blocks in the corresponding page.
11. A memory system according to any of claims 7 to 10 wherein identification information for the blocks in a page is included in the page.
12. A memory system according to claim 11 wherein the identification information for each block is included in that block.
13. A memory system according to any of claims 7 to 12 wherein said separate non-volatile memory is EEPROM.
14. A memory system according to any of claims 7 to 13 wherein the record table or tables include a spare page identifier and a sequence of sub-records each relating to a respective valid page.
15. A memory system substantially as herein described.
16. A method of updating a flash memory divided into separately writable pages, comprising: copying a page of the flash memory as an image page into RAM memory and updating the image page; writing the image page back into a different page in the flash memory; providing a main record table, held in a separate non-volatile memory, identifying valid pages in the flash memory; and updating the main record table when a page in the flash memory has been updated.
17. A method according to claim 16 comprising: including an error detection section in the main record; providing a back-up record table into which the main record table is copied immediately after it has been updated; and checking the main record table for error when using it to access the flash memory, and using the back-up record table if the main record table has an error.
18. A method according to claim 17 wherein the error detection section is calculated as a CRC.
19. A method according to any of claims 16 to 18 wherein, for each page, a set of block validity indicators for the data blocks in the corresponding page is included in the record table.
20. A method according to any of claims 16 to 19 wherein identification information for the blocks in a page is included in the page.
21. A method according to claim 20 wherein the identification information for each block is included in that block.
22. A method according to any of claims 16 to 21 wherein the record table or tables are stored in an EEPROM.
23. A method according to any of claims 16 to 22 wherein a spare page identifier and a sequence of sub-records each relating to a respective valid page is included in the record table or tables.
24. A method according to any of claims 16 to 23 wherein the main record table is checked for validity before copying the page of the flash memory as an image page into RAM memory.
25. A method according to claim 24 wherein the main record table is copied into the back-up record table immediately after the checking of the main record table for validity.
26. A method according to claim 25 wherein the back-up record table is checked for validity immediately after the copying of the main record table thereinto.
27. A method according to any of claims 16 to 26 wherein the valid data blocks in the image page are rearranged to eliminate unused spaces between them.
28. A method of updating a flash memory divided into separately writable pages substantially as described.
29. A flash memory system in a computer wherein data is held in blocks in the flash memory and a block locating data structure is maintained determining the locations and descriptors of the blocks, wherein the block locating data structure is held at least partially in an external memory outside the flash memory itself.
30. A flash memory according to claim 29 wherein the external memory is an EEPROM memory.
31. A flash memory according to either of claims 29 and 30 wherein the external memory may hold the substantially the entire block locating data structure.
32. A flash memory according to either of claim 29 and 30 wherein the external memory holds only the locations of the blocks in the flash memory, with the descriptors of the blocks being included in the flash memory as headers of the blocks themselves.
33. A flash memory according to either of claims 31 and 32 wherein the external directory is organized as a single structure for the entire flash memory.
34. A flash memory according to either of claims 31 and 32 wherein the external directory is organized on a per page basis.
35. A flash memory according to any of claims 29 to 34 wherein the external memory contains for each block only a validity bit^with the block addresses and descriptors being maintained in the flash memory itself.
36. A receiver/decoder for use in a digital broadcast and reception system including a system or memory system or flash memory according to any of Claims 1 to 15 or 29 to 35.
37. A receiver/decoder according to Claim 36, further comprising: means for receiving a compressed MPEG-type signal; means for decoding the received signal to provide a television and/or radio signal; and means for supplying the signal to a television and/or radio.
38. A receiver/decoder for use in a digital broadcast and reception system substantially as herein described.
PCT/EP1997/002112 1997-03-21 1997-04-25 Computer memory organization WO1998043248A1 (en)

Priority Applications (35)

Application Number Priority Date Filing Date Title
AU27706/97A AU744517B2 (en) 1997-03-21 1997-04-25 Computer memory organization
PL97335753A PL335753A1 (en) 1997-03-21 1997-04-25 Computer memory organisation
RU99121838/09A RU2182375C2 (en) 1997-03-21 1997-04-25 Computer memory structure
ZA9703609A ZA973609B (en) 1997-03-21 1997-04-25 Computer memory organization.
CN97182178A CN1262754A (en) 1997-03-21 1997-04-25 Computer memory organization
EP97921753A EP0968468B1 (en) 1997-03-21 1997-04-25 Computer memory organization and method therefor
CA002284044A CA2284044A1 (en) 1997-03-21 1997-04-25 Computer memory organization
DE69719377T DE69719377D1 (en) 1997-03-21 1997-04-25 STORAGE ORGANIZATION OF A COMPUTER AND METHOD FOR IT
PCT/EP1997/002112 WO1998043248A1 (en) 1997-03-21 1997-04-25 Computer memory organization
TR1999/02264T TR199902264T2 (en) 1997-03-21 1997-04-25 Computer memory organization
HU0001495A HUP0001495A3 (en) 1997-03-21 1997-04-25 System for defining and addressing buffers in a memory area in a computer system, memory system in a computer, method of updating a flash memory devided into separately writable pages, flash memory system in a computer,..
IL13193597A IL131935A0 (en) 1997-03-21 1997-04-25 Computer memory organization
BR9714649-8A BR9714649A (en) 1997-03-21 1997-04-25 Computer memory organization
NZ500202A NZ500202A (en) 1997-03-21 1997-04-25 Updating of flash memory pages in computer memory system
AT97921753T ATE233415T1 (en) 1997-03-21 1997-04-25 STORAGE ORGANIZATION OF A COMPUTER AND METHOD THEREOF
JP54440898A JP2001518218A (en) 1997-03-21 1997-04-25 Computer memory organization
HU0001470A HUP0001470A3 (en) 1997-03-21 1997-04-25 Signal generation and broadcasting
EP97121741A EP0872798A1 (en) 1997-03-21 1997-12-10 Computer memory organization
CN98804985A CN1255212A (en) 1997-03-21 1998-03-19 Computer memory organization
BR9808288-4A BR9808288A (en) 1997-03-21 1998-03-19 Computer memory organization
CA002284146A CA2284146A1 (en) 1997-03-21 1998-03-19 Computer memory organization
IDW991238A ID23427A (en) 1997-03-21 1998-03-19 COMPUTER MEMORY ORGANIZATION
HU0002917A HUP0002917A3 (en) 1997-03-21 1998-03-19 Method and buffer manager for defining and adressing of buffers in at least one of bufferzones in memory of computer system, as well as receiver and decoder device, and buffer adressing system
NZ500208A NZ500208A (en) 1997-03-21 1998-03-19 Buffer assignment and addressing in a computer memory particularly for MPEG decoder
TR1999/02269T TR199902269T2 (en) 1997-03-21 1998-03-19 Computer memory organization.
PL98335766A PL335766A1 (en) 1997-03-21 1998-03-19 Computer memory organisation
EP98917012A EP0968469A1 (en) 1997-03-21 1998-03-19 Computer memory organization
IL13194398A IL131943A0 (en) 1997-03-21 1998-03-19 Computer memory organization
AU70381/98A AU740887B2 (en) 1997-03-21 1998-03-19 Computer memory organization
KR1019997008512A KR20000076408A (en) 1997-03-21 1998-03-19 Computer memory organization
JP54322998A JP2001518217A (en) 1997-03-21 1998-03-19 Computer memory configuration
PCT/EP1998/001605 WO1998043167A1 (en) 1997-03-21 1998-03-19 Computer memory organization
ZA982384A ZA982384B (en) 1997-03-21 1998-03-20 Computer memory organisation
NO994536A NO994536L (en) 1997-03-21 1999-09-17 Organization of computer memory
NO994542A NO994542L (en) 1997-03-21 1999-09-17 Organization of computer buffer

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP97400650.4 1997-03-21
EP97400650 1997-03-21
PCT/EP1997/002112 WO1998043248A1 (en) 1997-03-21 1997-04-25 Computer memory organization

Publications (1)

Publication Number Publication Date
WO1998043248A1 true WO1998043248A1 (en) 1998-10-01

Family

ID=26070207

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP1997/002112 WO1998043248A1 (en) 1997-03-21 1997-04-25 Computer memory organization

Country Status (17)

Country Link
EP (1) EP0968468B1 (en)
JP (1) JP2001518218A (en)
CN (1) CN1262754A (en)
AT (1) ATE233415T1 (en)
AU (1) AU744517B2 (en)
BR (1) BR9714649A (en)
CA (1) CA2284044A1 (en)
DE (1) DE69719377D1 (en)
HU (2) HUP0001470A3 (en)
IL (1) IL131935A0 (en)
NO (1) NO994536L (en)
NZ (1) NZ500202A (en)
PL (1) PL335753A1 (en)
RU (1) RU2182375C2 (en)
TR (1) TR199902264T2 (en)
WO (1) WO1998043248A1 (en)
ZA (1) ZA973609B (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002050844A3 (en) * 2000-12-18 2002-09-26 Schlumberger Systems & Service Method for the secure updating of data areas in a non volatile memory and device to perform such a method
WO2002103525A2 (en) * 2001-06-19 2002-12-27 Infineon Technologies Ag Method for processing a memory location in a memory of a chip card
EP1282316A2 (en) * 2001-07-31 2003-02-05 LOEWE OPTA GmbH Method for updating and/or substituting operating software or data in consumer electronic communication and information devices
EP1533702A1 (en) * 2002-08-29 2005-05-25 Matsushita Electric Industrial Co., Ltd. Semiconductor memory device and method for writing data into flash memory
EP1550948A1 (en) * 2002-10-08 2005-07-06 Matsushita Electric Industrial Co., Ltd. Program updating method and terminal device
CN1322428C (en) * 2001-06-04 2007-06-20 三星电子株式会社 Flash storage management method
CN100347684C (en) * 1999-07-28 2007-11-07 索尼公司 Recording system, data recording device, memory device, and data recording method
US8126939B2 (en) 2007-03-06 2012-02-28 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
US8560760B2 (en) 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
US10255175B2 (en) 2015-05-11 2019-04-09 Samsung Electronics Co., Ltd. Electronic device and memory allocation method therefor

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565495B2 (en) * 2002-04-03 2009-07-21 Symantec Corporation Using disassociated images for computer and storage resource management
US7093089B2 (en) * 2003-08-18 2006-08-15 Hewlett-Packard Development Company, Lp. Systems and methods for storing data on computer systems
JP4701618B2 (en) * 2004-02-23 2011-06-15 ソニー株式会社 Information processing apparatus, information processing method, and computer program
TWI330783B (en) * 2005-01-13 2010-09-21 Via Tech Inc Memory address monitoring device and method thereof
RU2312388C2 (en) * 2005-09-22 2007-12-10 Андрей Игоревич Ефимов Method for organization of multi-processor computer
US8019854B2 (en) 2005-11-25 2011-09-13 Samsung Electronics Co., Ltd. System and method of providing information on computer memory use
JP4703738B2 (en) * 2009-03-18 2011-06-15 富士通株式会社 Storage device
CN102467472B (en) * 2010-11-08 2015-01-28 中兴通讯股份有限公司 System-on-chip (SoC) chip boot startup device and SoC chip
US8543849B2 (en) 2010-12-06 2013-09-24 Microsoft Corporation Fast computer startup
US9032194B2 (en) * 2010-12-06 2015-05-12 Microsoft Technology Licensing, Llc Fast computer startup
US8788798B2 (en) 2010-12-06 2014-07-22 Microsoft Corporation Fast computer startup
TWI587136B (en) 2011-05-06 2017-06-11 創惟科技股份有限公司 Flash memory system and managing and collection methods for flash memory with invalid page information thereof
US9003103B2 (en) * 2011-09-12 2015-04-07 Microsoft Technology Licensing, Llc Nonvolatile media dirty region tracking
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
RU2716899C1 (en) * 2019-06-28 2020-03-17 Акционерное общество "Актив-софт" Method of emulating eeprom-memory in flash-memory
CN114124850B (en) * 2022-01-26 2022-07-12 浙江宇视系统技术有限公司 Network communication method and device and storage medium

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3596257A (en) * 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
EP0477503A2 (en) * 1990-09-28 1992-04-01 Fuji Photo Film Co., Ltd. Method of recording data in memory card having eeprom and memory card system using the same
GB2251324A (en) * 1990-12-31 1992-07-01 Intel Corp File structure for a non-volatile semiconductor memory
EP0615184A2 (en) * 1993-03-11 1994-09-14 International Business Machines Corporation Nonvolatile memory
US5515333A (en) * 1991-10-29 1996-05-07 Hitachi, Ltd. Semiconductor memory
WO1996019809A2 (en) * 1994-12-20 1996-06-27 Philips Electronics N.V. Method of and device for writing and reading data items in a memory system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3596257A (en) * 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
EP0477503A2 (en) * 1990-09-28 1992-04-01 Fuji Photo Film Co., Ltd. Method of recording data in memory card having eeprom and memory card system using the same
GB2251324A (en) * 1990-12-31 1992-07-01 Intel Corp File structure for a non-volatile semiconductor memory
US5515333A (en) * 1991-10-29 1996-05-07 Hitachi, Ltd. Semiconductor memory
EP0615184A2 (en) * 1993-03-11 1994-09-14 International Business Machines Corporation Nonvolatile memory
WO1996019809A2 (en) * 1994-12-20 1996-06-27 Philips Electronics N.V. Method of and device for writing and reading data items in a memory system

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"MANAGING VIRTUAL STORAGE USING BIT MAPS", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 33, no. 3A, 1 August 1990 (1990-08-01), pages 475/476, XP000120557 *
ANONYMOUS: "Dynamic Quickcell. November 1973.", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 16, no. 6, November 1973 (1973-11-01), NEW YORK, US, pages 1999 - 2004, XP002048172 *
ENGELKAMP H: "HARD- UND SOFTWARE DER SET-TOP-BOXEN", RADIO FERNSEHEN ELEKTRONIK, vol. 45, no. 8, August 1996 (1996-08-01), pages 20 - 23, XP000623888 *
WU M ET AL: "ENVY: A NON-VOLATILE, MAIN MEMORY STORAGE SYSTEM", ACM SIGPLAN NOTICES, vol. 29, no. 11, 1 November 1994 (1994-11-01), pages 86 - 97, XP000491727 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100347684C (en) * 1999-07-28 2007-11-07 索尼公司 Recording system, data recording device, memory device, and data recording method
WO2002050844A3 (en) * 2000-12-18 2002-09-26 Schlumberger Systems & Service Method for the secure updating of data areas in a non volatile memory and device to perform such a method
US7849279B2 (en) * 2000-12-18 2010-12-07 Gemalto Sa Method for the secure updating data areas in non volatile memory, device to perform such a method
CN1322428C (en) * 2001-06-04 2007-06-20 三星电子株式会社 Flash storage management method
WO2002103525A3 (en) * 2001-06-19 2004-09-10 Infineon Technologies Ag Method for processing a memory location in a memory of a chip card
WO2002103525A2 (en) * 2001-06-19 2002-12-27 Infineon Technologies Ag Method for processing a memory location in a memory of a chip card
EP1282316A3 (en) * 2001-07-31 2004-03-24 LOEWE OPTA GmbH Method for updating and/or substituting operating software or data in consumer electronic communication and information devices
EP1282316A2 (en) * 2001-07-31 2003-02-05 LOEWE OPTA GmbH Method for updating and/or substituting operating software or data in consumer electronic communication and information devices
EP1533702A1 (en) * 2002-08-29 2005-05-25 Matsushita Electric Industrial Co., Ltd. Semiconductor memory device and method for writing data into flash memory
EP1533702A4 (en) * 2002-08-29 2007-05-23 Matsushita Electric Ind Co Ltd Semiconductor memory device and method for writing data into flash memory
USRE42648E1 (en) 2002-08-29 2011-08-23 Panasonic Corporation Semiconductor memory apparatus and method for writing data into the flash memory device
EP1550948A1 (en) * 2002-10-08 2005-07-06 Matsushita Electric Industrial Co., Ltd. Program updating method and terminal device
EP1550948A4 (en) * 2002-10-08 2007-09-19 Matsushita Electric Ind Co Ltd Program updating method and terminal device
US8560760B2 (en) 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
US8126939B2 (en) 2007-03-06 2012-02-28 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
US9535625B2 (en) 2007-03-06 2017-01-03 Bohdan Raciborski Selectively utilizing a plurality of disparate solid state storage locations
US10255175B2 (en) 2015-05-11 2019-04-09 Samsung Electronics Co., Ltd. Electronic device and memory allocation method therefor

Also Published As

Publication number Publication date
TR199902264T2 (en) 2000-01-21
CA2284044A1 (en) 1998-10-01
HUP0001470A3 (en) 2002-09-30
RU2182375C2 (en) 2002-05-10
EP0968468B1 (en) 2003-02-26
HUP0001470A2 (en) 2000-09-28
ATE233415T1 (en) 2003-03-15
JP2001518218A (en) 2001-10-09
AU2770697A (en) 1998-10-20
AU744517B2 (en) 2002-02-28
HUP0001495A3 (en) 2001-01-29
NO994536D0 (en) 1999-09-17
NZ500202A (en) 2001-11-30
EP0968468A1 (en) 2000-01-05
ZA973609B (en) 1998-07-17
NO994536L (en) 1999-11-22
PL335753A1 (en) 2000-05-22
CN1262754A (en) 2000-08-09
IL131935A0 (en) 2001-03-19
HUP0001495A2 (en) 2000-09-28
BR9714649A (en) 2002-08-06
DE69719377D1 (en) 2003-04-03

Similar Documents

Publication Publication Date Title
AU744517B2 (en) Computer memory organization
US6938166B1 (en) Method of downloading of data to an MPEG receiver/decoder and MPEG transmission system for implementing the same
AU749089B2 (en) Downloading data
CA2284018C (en) Extracting data sections from a transmitted data stream
EP0968611A1 (en) Data processing system
AU742956B2 (en) Television or radio control system development
KR100641660B1 (en) Management of data in a receiver/ decoder
KR20000076411A (en) Computer memory organization
MXPA99008548A (en) Computer memory organization
WO1998043172A2 (en) Access control system
AU739663B2 (en) Downloading a computer file from a transmitter via a receiver/decoder to a computer
CZ331499A3 (en) Arrangement of computer memory
MXPA01002619A (en) Management of data in a receiver/decoder
MXPA99008549A (en) Method of downloading of data to an mpeg receiver/decoder and mpeg transmission system for implementing the same

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 97182178.X

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH HU IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK TJ TM TR TT UA UG US UZ VN YU

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH KE LS MW SD SZ UG AM AZ BY KG KZ MD RU TJ TM AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
CFP Corrected version of a pamphlet front page
CR1 Correction of entry in section i

Free format text: PAT. BUL. 39/98 UNDER (51) REPLACE THE EXISTING SYMBOL BY "G06F 12/02"

121 Ep: the epo has been informed by wipo that ep was designated in this application
ENP Entry into the national phase

Ref document number: 2284044

Country of ref document: CA

Ref document number: 2284044

Country of ref document: CA

Kind code of ref document: A

Ref document number: 1998 544408

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: PA/a/1999/008548

Country of ref document: MX

Ref document number: 1019997008515

Country of ref document: KR

Ref document number: PV1999-3314

Country of ref document: CZ

Ref document number: 1999/02264

Country of ref document: TR

WWE Wipo information: entry into national phase

Ref document number: 09381524

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 500202

Country of ref document: NZ

WWE Wipo information: entry into national phase

Ref document number: 1997921753

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1997921753

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: PV1999-3314

Country of ref document: CZ

WWP Wipo information: published in national office

Ref document number: 1019997008515

Country of ref document: KR

WWG Wipo information: grant in national office

Ref document number: 1997921753

Country of ref document: EP

WWR Wipo information: refused in national office

Ref document number: 1019997008515

Country of ref document: KR

WWR Wipo information: refused in national office

Ref document number: PV1999-3314

Country of ref document: CZ