FR2788866A1 - Method of online decompression of a computer program - Google Patents

Method of online decompression of a computer program Download PDF

Info

Publication number
FR2788866A1
FR2788866A1 FR9900877A FR9900877A FR2788866A1 FR 2788866 A1 FR2788866 A1 FR 2788866A1 FR 9900877 A FR9900877 A FR 9900877A FR 9900877 A FR9900877 A FR 9900877A FR 2788866 A1 FR2788866 A1 FR 2788866A1
Authority
FR
France
Prior art keywords
pointers
instructions
memory
bits
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9900877A
Other languages
French (fr)
Other versions
FR2788866B1 (en
Inventor
Christian Piguet
Flavio Rampogna
Jean Marc Masgonty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Centre Suisse dElectronique et Microtechnique SA CSEM
Original Assignee
Centre Suisse dElectronique et Microtechnique SA CSEM
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 Centre Suisse dElectronique et Microtechnique SA CSEM filed Critical Centre Suisse dElectronique et Microtechnique SA CSEM
Priority to FR9900877A priority Critical patent/FR2788866B1/en
Publication of FR2788866A1 publication Critical patent/FR2788866A1/en
Application granted granted Critical
Publication of FR2788866B1 publication Critical patent/FR2788866B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

Abstract

The instructions are addressed via pointers (P). Instructions are stored (16,19) in order of frequency of appearance. During decompression pointers are extracted from memory using addresses generated by the program counter (14), and used to address instruction extraction tables. A number (U) of low order bits of addresses supplied by the program counter are used to extract pointers.

Description

La présente invention est relative à un procédé de décompression d'unThe present invention relates to a method for decompressing a

programme d'ordinateur se présentant  presenting computer program

sous forme comprimée.in compressed form.

Plus particulièrement, l'invention concerne un procédé de ce type par lequel la décompression est réalisée en ligne, au fur et à mesure du déroulement du programme.  More particularly, the invention relates to a method of this type by which the decompression is carried out online, as the program proceeds.

Dans la présente description, le terme "ordinateur"  In the present description, the term "computer"

désigne tout type de processeur capable d'exécuter un  means any type of processor capable of executing a

programme informatique, y compris les microprocesseurs.  computer program, including microprocessors.

Par ailleurs, dans l'ensemble de la description, on  Furthermore, throughout the description, we

utilisera le mot "pointeur" pour désigner un groupe de  will use the word "pointer" to denote a group of

bits "pointant" vers une instruction à exécuter.  bits "pointing" to an instruction to execute.

L'utilisation de pointeurs permet de ne ranger dans une mémoire que des instructions différentes, quand bien même ces instructions sont utilisées plusieurs fois par le programme. L'ensemble des instructions occupe ainsi moins de place en mémoire; c'est pourquoi on parle de  The use of pointers makes it possible to store in a memory only different instructions, even if these instructions are used several times by the program. The set of instructions thus occupies less space in memory; that's why we talk about

programme "comprimé"."compressed" program.

La figure 1 des dessins annexés représente l'un des procédés de décompression les plus courants dans la technique. Ce procédé met en oeuvre une mémoire 1 d'une largeur de M bits qui est adressée par un compteur de programme 2 faisant partie d'un processeur 3. La mémoire 1 contient des pointeurs P d'une largeur de M bits qui servent d'adresses pour une mémoire ou table d'instructions 4 d'une largeur de N bits. Les pointeurs de M bits sont plus courts que les instructions de N bits (M < N). La mémoire, ou table, 4 contient toutes les instructions nécessaires au fonctionnement du  Figure 1 of the accompanying drawings shows one of the most common methods of pressure relief in the art. This method implements a memory 1 with a width of M bits which is addressed by a program counter 2 forming part of a processor 3. The memory 1 contains pointers P with a width of M bits which serve as addresses for a memory or instruction table 4 with a width of N bits. The pointers of M bits are shorter than the instructions of N bits (M <N). The memory, or table, 4 contains all the instructions necessary for the operation of the

processeur 3.processor 3.

Ce procédé permet effectivement de réduire la taille de la mémoire 4, qui ne contient que des instructions différentes, mais il a l'inconvénient de nécessiter des pointeurs de même taille M pour tous les pas de programme (ou instructions), que l'instruction soit très fréquemment ou très rarement exécutée. Or, il arrive fréquemment, que certaines instructions sont utilisées bien plus souvent que d'autres dans un  This method effectively makes it possible to reduce the size of the memory 4, which contains only different instructions, but it has the disadvantage of requiring pointers of the same size M for all the program steps (or instructions), than the instruction either very frequently or very rarely performed. However, it often happens that certain instructions are used much more often than others in a

programme donné.given program.

Il serait donc plus intéressant d'avoir des pointeurs courts pour les instructions très fréquentes et plus longs pour des instructions rares, afin  It would therefore be more interesting to have short pointers for very frequent instructions and longer for rare instructions, so

d'améliorer les performances de la compression.  improve compression performance.

Dans un autre procédé connu illustré à la figure 2, la mémoire 1 a une largeur de N+1 bits et contient à la fois des instructions "rares" Ir, d'une largeur de N bits, et des pointeurs P ayant chacun une largeur N/2 bits et disposés dans des blocs B de la mémoire. Le bit le plus significatif du mot mémoire est ici utilisé pour désigner s'il s'agit d'une instruction Ir ou d'un bloc B de pointeurs P. Les pointeurs P sont utilisés comme adresses de la table d'instructions 4 contenant les instructions "fréquentes" If dont le nombre peut être au maximum égal à la valeur maximale 2N/2 que peut prendre un pointeur P. Les sorties de la mémoire 1 et de la table 4 sont connectées à un multiplexeur 5 à travers lequel passent les instructions vers le processeur 3 en fonction de la valeur du bit le plus significatif de l'adresse  In another known method illustrated in FIG. 2, the memory 1 has a width of N + 1 bits and contains both "rare" instructions Ir, with a width of N bits, and pointers P each having a width N / 2 bits and arranged in blocks B of the memory. The most significant bit of the memory word is used here to designate whether it is an Ir instruction or a block B of pointers P. The pointers P are used as addresses of the instruction table 4 containing the "frequent" instructions If the number of which can be at most equal to the maximum value 2N / 2 that a pointer P can take. The outputs of memory 1 and of table 4 are connected to a multiplexer 5 through which the instructions pass to processor 3 according to the value of the most significant bit of the address

appliquée à la mémoire 1.applied to memory 1.

Une autre façon d'agencer les pointeurs dans la mémoire consiste à utiliser le codage de Huffman, bien connu des spécialistes. Dans ce cas, les instructions sont rangées selon la hiérarchie de leur fréquence d'apparition dans le programme à exécuter. Par exemple, comme représenté sur la figure 3, on utilise un pointeur de 5 bits codé par un code opératoire de un bit égal à 1 pour les 16 instructions les plus fréquentes, un pointeur de 7 bits avec deux bits (01) de code opératoire pour les 32 instructions moins fréquentes, un pointeur de 10 bits avec trois bits (001) de code opératoire pour 128 instructions encore moins fréquentes et enfin un pointeur de 13 bits avec quatre bits (0001)  Another way to arrange pointers in memory is to use Huffman coding, well known to specialists. In this case, the instructions are arranged according to the hierarchy of their frequency of appearance in the program to be executed. For example, as shown in FIG. 3, a 5-bit pointer coded by a one-bit operating code equal to 1 is used for the 16 most frequent instructions, a 7-bit pointer with two bits (01) of operating code for the 32 less frequent instructions, a 10-bit pointer with three bits (001) of operating code for 128 even less frequent instructions and finally a 13-bit pointer with four bits (0001)

de code opératoire pour 512 instructions rares.  of operating code for 512 rare instructions.

Pour un tel cas, on peut agencer la mémoire selon l'exemple représenté sur la figure 4 qui suppose une largeur de la mémoire 1 de 22 bits plus 2 bits de codage. Selon le rang hiérarchique des pointeurs, ceux-ci sont ici disposés en blocs totalisant 22 bits codés respectivement par les codes 01, 10 et 11 pour des pointeurs de 11, 7 et 5 bits respectivement, tandis que des instructions très rares Itr peuvent être mémorisées en entier (appelées aussi "instructions natives") et  For such a case, the memory can be arranged according to the example shown in FIG. 4 which assumes a width of the memory 1 of 22 bits plus 2 coding bits. According to the hierarchical rank of the pointers, these are here arranged in blocks totaling 22 bits coded respectively by the codes 01, 10 and 11 for pointers of 11, 7 and 5 bits respectively, while very rare instructions Itr can be memorized in full (also called "native instructions") and

codées 00.coded 00.

La figure 5 représente un procédé connu de décompression pouvant faire usage des exemples que l'on vient de décrire. La mémoire 1 est ici connectée à un décompresseur 6 qui peut décharger des instructions dans une mémoire cache auxiliaire 7 contenant des instructions non comprimées qui sont utilisées par le processeur 3. Le compteur de programme 2 détermine si l'instruction doit provenir de la mémoire cache 7 ou si des instructions doivent être extraites de la mémoire 1 (respectivement connexions 8 et 9). Comme un mot de mémoire (ou bloc de pointeurs) comporte un nombre variable de pointeurs, la détermination de l'adresse de ce bloc de pointeurs o se trouve un pointeur donné adressé par le compteur de programme n'est pas immédiate. Les adresses doivent, à cet effet, être converties dans une table 10 de "traduction" d'adresses pour obtenir le bloc de pointeurs qui va permettre de rechercher les instructions nécessaires au stade correspondant du déroulement du programme. Les instructions désignées par les pointeurs sont chargées dans la mémoire cache 7 pour pouvoir être exécutées par  FIG. 5 represents a known method of decompression which can make use of the examples which have just been described. The memory 1 is here connected to a decompressor 6 which can download instructions into an auxiliary cache memory 7 containing uncompressed instructions which are used by the processor 3. The program counter 2 determines whether the instruction must come from the cache memory 7 or if instructions must be extracted from memory 1 (connections 8 and 9 respectively). As a memory word (or block of pointers) comprises a variable number of pointers, the determination of the address of this block of pointers where there is a given pointer addressed by the program counter is not immediate. The addresses must, for this purpose, be converted into an address translation table 10 in order to obtain the block of pointers which will make it possible to search for the instructions necessary at the corresponding stage of the course of the program. The instructions designated by the pointers are loaded into the cache memory 7 so that they can be executed by

le processeur.the processor.

Les systèmes de décompression de la technique antérieure que l'on vient de décrire présentent tous des inconvénients. Par exemple, si on utilise une décompression selon la figure 2, deux pointeurs désignant deux instructions consécutives du programme doivent toujours être contigus et rangés à des adresses adjacentes dans la mémoire pour que les instructions correspondantes soient correctement  The decompression systems of the prior art which have just been described all have drawbacks. For example, if a decompression according to FIG. 2 is used, two pointers designating two consecutive instructions of the program must always be contiguous and stored at adjacent addresses in the memory for the corresponding instructions to be correctly

appliquées au processeur.applied to the processor.

Pour pouvoir effectuer des branchements (ou "jumps"), l'adresse fournie par le compteur de programme nécessite une mémoire avec des instructions natives, ce  To be able to make connections (or "jumps"), the address provided by the program counter requires a memory with native instructions, this

qui rend nécessaire une table de traduction d'adresses.  which requires an address translation table.

De plus, le compteur de programme ne doit pas progresser si un mot dans la mémoire comporte plusieurs pointeurs. De la sorte, pour mettre en oeuvre un tel  In addition, the program counter should not progress if a word in the memory has more than one pointer. In this way, to implement such a

procédé, le processeur doit être conçu spécialement.  process, the processor must be specially designed.

Enfin, un dernier inconvénient réside dans le fait que la traduction d'adresse nécessite beaucoup de temps et demande une mémoire supplémentaire, ce qui fait perdre en partie le bénéfice de l'économie réalisée par  Finally, a final drawback lies in the fact that address translation requires a lot of time and requires additional memory, which in part loses the benefit of the savings made by

la compression du programme.compression of the program.

L'invention a pour but de fournir un procédé de - IT- décompression d'un programme comprimé, ce procédé devant être dépourvu des inconvénients de la technique antérieure. Elle a donc pour objet un procédé de décompression d'un programme comprimé destiné à être exécuté dans un processeur, le programme comprimé étant constitué d'au moins une première série d'instructions fréquemment utilisées et rangées dans une première table, une deuxième série d'instructions moins fréquemment utilisées et rangées dans une deuxième table et des pointeurs ayant une longueur de bits inférieure à celle des instructions et étant rangés en blocs successifs dans une mémoire de pointeurs, le procédé consistant à extraire sélectivement lesdits pointeurs de ladite mémoire à l'aide d'adresses engendrées par l'intermédiaire d'un compteur de programme, et à utiliser sélectivement ces pointeurs pour l'adressage desdites tables et l'extraction desdites instructions au fur et à mesure du déroulement dudit programme, caractérisé en ce que lesdits blocs de pointeurs contiennent, chacun, un même nombre S = 2 pointeurs et en ce que les U bits de plus faible poids de chaque adresse fournie par ledit compteur de programme sont utilisés pour l'extraction successive desdits pointeurs  The object of the invention is to provide a method for decompressing a compressed program, this method having to be free from the drawbacks of the prior art. It therefore relates to a method of decompressing a compressed program intended to be executed in a processor, the compressed program consisting of at least a first series of frequently used instructions and stored in a first table, a second series of instructions less frequently used and stored in a second table and pointers having a bit length shorter than that of the instructions and being stored in successive blocks in a memory of pointers, the method consisting in selectively extracting said pointers from said memory at the using addresses generated by means of a program counter, and using these pointers selectively for the addressing of said tables and the extraction of said instructions as and when said program proceeds, characterized in that said blocks of pointers each contain the same number S = 2 pointers and in that the U bits d the lowest weight of each address supplied by said program counter are used for the successive extraction of said pointers

du bloc de pointeurs dans lequel ils sont rangés.  the block of pointers in which they are stored.

Il résulte de ces caractéristiques que les U bits de plus faible poids peuvent être utilisés pour identifier dans chaque bloc le pointeur qui va appeler l'instruction utilisée par le processeur pendant le pas de programme suivant et ce, que ce pas de programme  It follows from these characteristics that the U least significant bits can be used to identify in each block the pointer which will call the instruction used by the processor during the next program step and this, this program step

implique un branchement ou non.implies a connection or not.

Selon d'autres caractéristiques avantageuses de l'invention: - le nombre de bits de plus faible poids de ladite adresse est appliqué à un multiplexeur qui est chargé successivement avec les blocs contenus dans ladite mémoire et les pointeurs d'un bloc sont sélectionnés à l'aide desdits bits de plus faible poids; - un registre à décalage est chargé successivement avec le contenu des blocs de ladite mémoire de pointeurs et on fait progresser ledit registre à décalage à l'aide dudit nombre de bits de faible poids, pour appliquer lesdits pointeurs en tant qu'adresses à au moins l'une desdites première et seconde tables; - des pointeurs de valeur prédéterminés sont utilisés en tant qu'adresses d'une table de manière à extraire de celle-ci lesdites instructions moins fréquentes et lesdites instructions sont appliquées, le  According to other advantageous characteristics of the invention: - the number of least significant bits of said address is applied to a multiplexer which is loaded successively with the blocks contained in said memory and the pointers of a block are selected at l using said least significant bits; a shift register is loaded successively with the content of the blocks of said pointer memory and said shift register is advanced using said number of least significant bits, in order to apply said pointers as addresses to at least one of said first and second tables; - predetermined value pointers are used as addresses of a table so as to extract therefrom said less frequent instructions and said instructions are applied, the

cas échéant, audit processeur.if applicable, said processor.

- lesdits pointeurs de valeur prédéterminée sont utilisés en tant qu'adresses d'une troisième table contenant des pointeurs secondaires, utilisés pour adresser ladite seconde table, lesdites instructions moins fréquentes étant ainsi extraites de celle-ci; - lesdits pointeurs contiennent un code de Huffman et lesdites tables contenant lesdites instructions sont sélectivement adressées par lesdits pointeurs en fonction d'au moins un des bits de poids forts desdits pointeurs représentant ledit code de Huffman; - lors d'un branchement, ledit nombre de bits de plus faible poids du contenu dudit compteur de programme est utilisé pour désigner dans un bloc de ladite mémoire le pointeur sur lequel le branchement doit être effectué; - pour désigner le premier pointeur à utiliser lors d'un branchement, les pointeurs présents dans ledit registre à décalage sont amenés à progresser au fur et à mesure du déroulement dudit programme, le nombre de progressions est compté et ce nombre est comparé à la valeur représentée par lesdits bits de faible poids du contenu dudit compteur de programme; - certains pointeurs dans au moins certains desdits blocs contiennent un code NOP et une instruction NOP est appliquée audit processeur, lorsqu'un pointeur  - said pointers of predetermined value are used as addresses of a third table containing secondary pointers, used to address said second table, said less frequent instructions being thus extracted therefrom; - Said pointers contain a Huffman code and said tables containing said instructions are selectively addressed by said pointers as a function of at least one of the most significant bits of said pointers representing said Huffman code; - during a connection, said number of least significant bits of the content of said program counter is used to designate in a block of said memory the pointer to which the connection must be made; - to designate the first pointer to be used during a connection, the pointers present in said shift register are caused to progress as the program proceeds, the number of progressions is counted and this number is compared with the value represented by said low weight bits of the content of said program counter; - certain pointers in at least some of said blocks contain an NOP code and an NOP instruction is applied to said processor, when a pointer

ainsi codé est extrait de ladite mémoire.  thus coded is extracted from said memory.

D'autres caractéristiques et avantages de  Other features and benefits of

l'invention apparaîtront au cours de la description qui  the invention will appear during the description which

va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés sur lesquels: - les figures 1 à 5 représentent plusieurs solutions connues de la technique antérieure pour réaliser un système de décompression d'un programme comprimé; - la figure 6 est une représentation schématique d'un système de décompression d'un programme comprimé pour un processeur mettant en oeuvre le procédé suivant l'invention; - la figure 7 est une variante du système représenté sur la figure 6; et - la figure 8 montre une représentation schématique d'un second mode de mise en oeuvre de l'invention. On va maintenant se référer à la figure 6 qui représente un système de décompression d'un programme d'ordinateur permettant l'exécution d'un premier mode de  will follow, given solely by way of example and made with reference to the appended drawings in which: - Figures 1 to 5 show several solutions known from the prior art for producing a system for decompressing a compressed program; - Figure 6 is a schematic representation of a system for decompressing a compressed program for a processor implementing the method according to the invention; - Figure 7 is a variant of the system shown in Figure 6; and - Figure 8 shows a schematic representation of a second embodiment of the invention. We will now refer to FIG. 6 which represents a system for decompressing a computer program allowing the execution of a first mode of

mise en oeuvre de l'invention.implementation of the invention.

Une mémoire 11 dont chaque mot de mémoire comporte M bits contient le programme de travail sous forme comprimée d'un processeur 12 représenté en bas de la figure. Ce processeur 12 utilise des instructions d'une  A memory 11 of which each memory word comprises M bits contains the work program in compressed form of a processor 12 shown at the bottom of the figure. This processor 12 uses instructions from a

largeur de N bits.width of N bits.

Les mots de la mémoire 11 sont au nombre de X et forment chacun un bloc 13 de S pointeurs P ayant chacun T bits. La largeur d'un bloc est donc M=TxS bits. S est une puissance entière de deux, cette puissance étant désignée par U. Par conséquent, le nombre S de pointeurs  The words of the memory 11 are X in number and each form a block 13 of S pointers P each having T bits. The width of a block is therefore M = TxS bits. S is an integer power of two, this power being designated by U. Consequently, the number S of pointers

par bloc est égal à 2u.per block is equal to 2u.

Dans un exemple non limitatif de l'invention illustré sur la figure 6, ces nombres peuvent avoir les  In a nonlimiting example of the invention illustrated in FIG. 6, these numbers can have the

valeurs suivantes: M=96; N=22; S=16; T=6; U=4.  following values: M = 96; N = 22; S = 16; T = 6; U = 4.

La mémoire 11 est adressée par un compteur de programme 14 dont les U bits les moins significatifs ne sont pas utilisés pour configurer chaque adresse de  The memory 11 is addressed by a program counter 14 whose U least significant bits are not used to configure each address of

cette mémoire 11.this memory 11.

La sortie de la mémoire 11 est connectée à un multiplexeur 15 qui, pour adresser un pointeur donné de chaque bloc 13, utilise les U bits les moins significatifs qui lui sont chaque fois appliqués par le  The output of memory 11 is connected to a multiplexer 15 which, in order to address a given pointer from each block 13, uses the U least significant bits which are applied to it each time by the

compteur de programme 14.program counter 14.

La sortie du multiplexeur 15 est reliée à une table 16 d'instructions fréquentes If dans laquelle sont enregistrées les instructions qui sont utilisées le plus fréquemment pendant le déroulement du programme de travail. La sortie du multiplexeur 15 est également connectée à un décodeur 17 qui décode sur 3 bits par exemple, les valeurs les plus élevées que peut prendre un pointeur. En considérant l'exemple chiffré ci-dessus, le décodeur 17 peut décoder des pointeurs ayant les valeurs 56 à 63, les valeurs 0 à 55 étant réservées  The output of the multiplexer 15 is connected to a table 16 of frequent instructions If in which the instructions which are used most frequently during the course of the work program are recorded. The output of the multiplexer 15 is also connected to a decoder 17 which decodes on 3 bits for example, the highest values that a pointer can take. Considering the example encrypted above, the decoder 17 can decode pointers having the values 56 to 63, the values 0 to 55 being reserved

-T--TT-T - TT

comme adresses de la table 16, qui dans ce cas peut donc  as addresses from table 16, which in this case can therefore

loger au maximum 55 instruction If les plus fréquentes.  house a maximum of 55 most frequent If statements.

Les valeurs 56 à 63 sont décodées de la façon suivante: Code bits  The values 56 to 63 are decoded as follows: Bit code

56 00056,000

57 00157 001

58 01058,010

59 01159,011

60 10060 100

61 10161 101

62 11062 110

63 11163,111

Les bits correspondants décodés par le décodeur 17 servent comme une partie d'adresse d'une deuxième table 18 dans laquelle sont stockés des pointeurs Pi secondaires ayant par exemple une longueur V, V pouvant être égal à 11, par exemple. L'adresse destinée à cette table 18 de pointeurs Pi est composé de S - U bits provenant du compteur de programme 14, plus en tant que bits les moins significatifs, les trois bits décodés respectifs provenant  The corresponding bits decoded by the decoder 17 serve as an address part of a second table 18 in which secondary pointers Pi are stored, for example having a length V, V possibly being equal to 11, for example. The address intended for this table 18 of pointers Pi is composed of S - U bits coming from the program counter 14, more as the least significant bits, the respective three decoded bits coming

du décodeur 17.decoder 17.

L'adresse ainsi complétée est utilisée pour désigner les pointeurs Pl, ceux-ci étant appliqués à une troisième table 19 contenant des instructions Imf utilisées moins fréquemment que les instructions If pendant le déroulement  The address thus completed is used to designate pointers Pl, these being applied to a third table 19 containing instructions Imf used less frequently than the instructions If during the course

du programme de travail.of the work program.

Ainsi, la table 18 est adressée par les S - U bits les plus significatifs du compteur de programme 14 et par les U-1 bits sortant du décodeur 17, soit avec S-1 bits au total. La table 18 a donc une taille de 2.S - 1 mots de 11 bits, soit moitié moins de mots que les pointeurs de six  Thus, the table 18 is addressed by the S - U most significant bits of the program counter 14 and by the U-1 bits leaving the decoder 17, ie with S-1 bits in total. Table 18 therefore has a size of 2.S - 1 words of 11 bits, that is to say half as many words as the pointers of six

bits de la mémoire 11.memory bits 11.

--if' Les sorties des tables 16 et 19 sont appliquées en  --if 'The outputs of tables 16 and 19 are applied in

parallèle au processeur 12.parallel to processor 12.

On va maintenant décrire le fonctionnement du système de décompression de la figure 6 en prenant comme exemple les valeurs spécifiées ci- dessus. Le compteur de programme 14 à seize bits adresse la mémoire 11 en sélectionnant l'un des blocs 13 à l'aide de ses douze bits les plus significatifs et l'un des pointeurs de ce bloc à l'aide des quatre bits les moins  We will now describe the operation of the decompression system of Figure 6 taking as an example the values specified above. The sixteen-bit program counter 14 addresses the memory 11 by selecting one of the blocks 13 using its twelve most significant bits and one of the pointers of this block using the least four bits

significatifs.significant.

Deux cas peuvent alors se produire.Two cases can then occur.

Si le pointeur sélectionné a une valeur entre 0 et , il adresse directement la table 16 qui contient les cinquante-six instructions les plus utilisées par le  If the selected pointer has a value between 0 and, it directly addresses table 16 which contains the fifty-six instructions most used by the

processeur 12.processor 12.

Par contre, si le pointeur à une valeur entre 56 et  However, if the pointer has a value between 56 and

63, c'est qu'il s'agit d'une instruction Imf peu utilisée.  63 is that it is an Imf instruction that is little used.

Dans l'exemple, le bloc illustré dans la mémoire comporte sept de ces pointeurs, codés de 56 à 62. Un bloc de pointeurs peut contenir au maximum huit de ces pointeurs  In the example, the block illustrated in the memory has seven of these pointers, coded from 56 to 62. A block of pointers can contain a maximum of eight of these pointers

(codés de 56 à 63).(coded from 56 to 63).

On suppose maintenant que le compteur de programme 14 et le multiplexeur 15 sélectionnent le deuxième pointeur du bloc 13, qui a ici la valeur 56. Cette valeur est décodée par le décodeur 17 qui fournit les trois bits les  It is now assumed that the program counter 14 and the multiplexer 15 select the second pointer of block 13, which here has the value 56. This value is decoded by the decoder 17 which supplies the three bits the

moins significatifs (ici 000) à la table 18.  less significant (here 000) at table 18.

La table 18 comporte, pour chaque bloc de seize pointeurs de six bits adressé par les douze bits les plus significatifs du compteur de programme 14, un bloc d'au maximum huit pointeurs, de onze bits chacun, adressé par la même adresse formée par les douze bits les plus significatifs provenant du compteur de programme 14. Le premier de ces pointeurs dans chaque bloc de huit, correspond en fait au code 56, le second au code 57 etc., le dernier correspondant au code 63. Dans l'exemple discuté ici, seulement sept pointeurs de six bits (mémoire 11) codés de 56 à 62 sont utilisés. Les pointeurs de la table 18 sont ensuite utilisés pour adresser la table 19 contenant 2048 instructions Imf avec lesquelles peut  Table 18 comprises, for each block of sixteen six-bit pointers addressed by the twelve most significant bits of the program counter 14, a block of maximum eight pointers, of eleven bits each, addressed by the same address formed by the twelve most significant bits from program counter 14. The first of these pointers in each block of eight actually corresponds to code 56, the second to code 57 etc., the last corresponding to code 63. In the example discussed here, only seven six-bit pointers (memory 11) coded from 56 to 62 are used. The pointers of table 18 are then used to address the table 19 containing 2048 Imf instructions with which can

travailler le processeur 12.work processor 12.

Un simple calcul permet de mettre en évidence la réduction de place de mémoire que l'on peut ainsi réaliser. Antérieurement (figure 1) il fallait 64k instructions de 22 bits chacun soit 1 441 792 bits. Le système de la figure 6 nécessite Mémoire 11: 64k x 6 = 393 216 bits Table 16: 56 x 22 = 1 232 bits Table 18: 32k x 11 = 360 448 bits Table 19: 2k x 22= 45 056 bits Total 799 952 bits soit un réduction d'environ 45% par rapport au système  A simple calculation makes it possible to highlight the reduction in memory space that can thus be achieved. Previously (Figure 1), 64k instructions of 22 bits each were needed, or 1,441,792 bits. The system of figure 6 requires Memory 11: 64k x 6 = 393 216 bits Table 16: 56 x 22 = 1 232 bits Table 18: 32k x 11 = 360 448 bits Table 19: 2k x 22 = 45 056 bits Total 799 952 bits a reduction of about 45% compared to the system

selon la figure 1.according to figure 1.

La figure 7 représente une variante du système de décompression de la figure 6. Dans ce cas, une mémoire 11A adressée par un compteur de programme 14A comprend des blocs 13A constitués chacun de seize pointeurs de huit bits. Parmi ces pointeurs, ceux avec les quatre valeurs les plus élevées 252 à 255 sont destinés à adresser la table 18A, tandis que les autres pointeurs ayant une valeur jusqu'à 251 sont utilisés pour adresser la table 16A qui contient les instructions If les plus fréquentes  FIG. 7 represents a variant of the decompression system of FIG. 6. In this case, a memory 11A addressed by a program counter 14A comprises blocks 13A each made up of sixteen eight-bit pointers. Among these pointers, those with the highest four values 252 to 255 are intended to address the table 18A, while the other pointers having a value up to 251 are used to address the table 16A which contains the most frequent If statements

envoyées vers le processeur 12A.sent to processor 12A.

La table 18A contient alors directement des blocs de quatre instructions moins fréquentes Imf pour ce même processeur. Dans ce cas, la mémoire 11A contient: Mémoire 11A: 64k x 8 = 524 288 bits Table 16A: 250 x 22 = 5500 bits Table 18A: 16k x 22 = 360 448 bits Total 890 236 bits soit un réduction de 40%, environ. Le système de la figure 8 comprend une mémoire 11 associée à des moyens pour permettre l'adressage d'un pointeur P quelconque dans un bloc 13 quelconque au cas o le programme de travail prescrit un branchement sur un tel pointeur. Dans ce cas, l'adresse de branchement provenant du processeur 12 est appliquée au compteur de programme 14 dont, dans ce cas, les U bits vont servir à désigner le pointeur P sur lequel le branchement doit être fait. Les bits de poids supérieur du contenu du compteur de programme 14 sont utilisés dans ce cas également pour désigner le bloc 13 dans lequel se trouve le pointeur P à atteindre. La sortie de la mémoire 11 est connectée à un  Table 18A then directly contains blocks of four less frequent instructions Imf for this same processor. In this case, the memory 11A contains: Memory 11A: 64k x 8 = 524 288 bits Table 16A: 250 x 22 = 5500 bits Table 18A: 16k x 22 = 360 448 bits Total 890 236 bits or a reduction of 40%, approximately . The system of FIG. 8 comprises a memory 11 associated with means for enabling the addressing of any pointer P in any block 13 in the event that the work program prescribes connection to such a pointer. In this case, the connection address from the processor 12 is applied to the program counter 14, the U bits of which in this case will be used to designate the pointer P to which the connection must be made. The most significant bits of the content of the program counter 14 are also used in this case to designate the block 13 in which the pointer P to be reached is located. The output of memory 11 is connected to a

registre à décalage 20.shift register 20.

Ce système comprend également un décodeur 21 de la partie U de l'adresse de branchement commandant la progression des pointeurs du bloc 13 concerné dans le registre à décalage 20. Ce décodeur 21 est donc relié à cet effet au registre 20. Il est également relié à un compteur 22 destiné à comptabiliser le nombre de décalages ayant lieu dans le registre 20. La partie U de l'adresse de branchement est également appliquée à l'une des entrées d'un comparateur 23 qui compare la position du compteur 22 à la valeur de la partie U de l'adresse. Lorsque le comparateur 23 constate l'égalité entre ses deux entrées, le décalage dans le registre 20 cesse et le pointeur P est  This system also includes a decoder 21 of the part U of the connection address controlling the progress of the pointers of the block 13 concerned in the shift register 20. This decoder 21 is therefore connected for this purpose to the register 20. It is also connected to a counter 22 intended to record the number of shifts taking place in the register 20. The part U of the connection address is also applied to one of the inputs of a comparator 23 which compares the position of the counter 22 with the value of the U part of the address. When the comparator 23 finds equality between its two inputs, the shift in the register 20 ceases and the pointer P is

extrait du registre à décalage 20.  extract from the shift register 20.

Chaque pointeur P contenu dans les blocs 13 de la mémoire de programme 11 comporte ici un code de Huffman permettant d'adresser sélectivement une pluralité de tables d'instructions (quatre tables 24 à 27 sont prévues dans l'exemple représenté) sous la commande d'un décodeur 28. Celui-ci décode un nombre prédéterminé de bits de poids fort de chaque pointeur P pour désigner laquelle des tables 24 à 27 va devoir fournir l'instruction suivante du  Each pointer P contained in the blocks 13 of the program memory 11 here comprises a Huffman code making it possible to selectively address a plurality of instruction tables (four tables 24 to 27 are provided in the example shown) under the command d a decoder 28. This decodes a predetermined number of most significant bits of each pointer P to designate which of the tables 24 to 27 will have to provide the following instruction of the

programme de travail.work program.

Les instructions dans les tables 24 à 27 se présentent avec une fréquence dégressive d'apparition dans le programme et sont désignées par des pointeurs P de  The instructions in tables 24 to 27 are presented with a decreasing frequency of appearance in the program and are designated by pointers P of

longueur de bits croissante.increasing bit length.

Ainsi, par exemple, les instructions fréquentes If de la table 24 peuvent être désignées par seize pointeurs de cinq bits chacun dont quatre servent d'adresse à la table  Thus, for example, the frequent instructions If of the table 24 can be designated by sixteen pointers of five bits each, four of which serve as the address of the table

24 qui comportera alors seize instructions If fréquentes.  24 which will then include sixteen frequent If instructions.

Le cinquième bit du pointeur désigne la table 24. Dans ce cas, le décodeur 28 décale chaque fois de cinq bits le  The fifth bit of the pointer designates the table 24. In this case, the decoder 28 shifts each time by five bits the

registre à décalage 20.shift register 20.

De même, si le code détecté par le décodeur 28 est "01", c'est la table 25 qui est désignée. Celle-ci comporte 32 instructions Imf moins fréquentes, les pointeurs P ayant alors une taille de sept bits, ce dont le registre à décalage 20 est décalé à chaque pas de programme. Les tables 26 et 27 peuvent contenir respectivement des instructions Iemf encore moins fréquentes et des instructions Ir rares au nombre de 128 et de 256, respectivement. Les pointeurs correspondants ont alors une longueur de dix et de treize bits, ce dont le décodeur doit décaler le registre 20 à chaque pas de programme correspondant. Bien entendu, le code utilisé pour désigner la table à sélectionner parmi les tables 24 à 27 peut être I TV différent de celui décrit. Par exemple, selon une variante, on peut choisir de remplir certains blocs 13 de la mémoire de programme avec des instructions Ir directement utilisables par le processeur 12 en utilisant pour cela un code "1" et de remplir d'autres blocs 13 avec des pointeurs P codés comme indiqué ci-dessus afin de désigner les instructions fréquentes If, moins fréquentes  Similarly, if the code detected by the decoder 28 is "01", it is the table 25 which is designated. This comprises 32 less frequent Imf instructions, the pointers P then having a size of seven bits, which the shift register 20 is shifted at each program step. Tables 26 and 27 can contain even less frequent Iemf instructions and rare Ir instructions 128 and 256 respectively, respectively. The corresponding pointers then have a length of ten and thirteen bits, which the decoder must shift the register 20 at each corresponding program step. Of course, the code used to designate the table to be selected from tables 24 to 27 can be I TV different from that described. For example, according to a variant, it is possible to choose to fill certain blocks 13 of the program memory with instructions Ir directly usable by the processor 12 using for this a code "1" and to fill other blocks 13 with pointers P coded as indicated above to designate the frequent If instructions, less frequent

Imf et encore moins fréquentes Iemf.  Imf and even less frequent Iemf.

Cette façon de coder permet par exemple avec des blocs 13 d'une largeur de 92 bits d'avoir, par bloc, quatre instructions rares Ir de 22 bits et huit instructions de 11 bits en tant qu'instructions Imf moins fréquentes. L'objectif du codage consiste ainsi à remplir  This way of coding makes it possible, for example with blocks 13 with a width of 92 bits, to have, per block, four rare instructions Ir of 22 bits and eight instructions of 11 bits as less frequent Imf instructions. The objective of coding thus consists in filling

au mieux l'espace disponible dans chaque bloc.  at best the space available in each block.

On a vu précédemment, que la gestion selon l'invention du compteur de programme 14 prévoit que chaque bloc 13 de la mémoire de pointeurs 11 conduit toujours à l'exécution d'un même nombre d'instructions. Cependant, il serait intéressant du point de vue de l'obtention d'un taux de compression le meilleur possible, de pouvoir avoir une certaine liberté dans le choix du nombre  We have seen previously that the management according to the invention of the program counter 14 provides that each block 13 of the pointer memory 11 always leads to the execution of the same number of instructions. However, it would be interesting from the point of view of obtaining the best possible compression ratio, to be able to have a certain freedom in the choice of the number

d'instructions à exécuter par bloc 13.  instructions to execute by block 13.

Pour remédier à ces deux exigences apparemment contradictoires, il est avantageux selon l'invention, d'utiliser parfois des pointeurs P qui ne conduisent pas à l'exécution d'une instruction dans le processeur 12 mais qui contiennent un code particulier appelé NOP (sigle  To remedy these two apparently contradictory requirements, it is advantageous according to the invention, to sometimes use pointers P which do not lead to the execution of an instruction in the processor 12 but which contain a particular code called NOP (acronym

signifiant "No OPeration" en anglais).  meaning "No OPeration" in English).

Pour insérer une telle instruction, qui ne provoque pas d'opération active dans le processeur 12, le code du pointeur décelé par le décodeur 28 est, dans ce cas, un signal de commande envoyé à un multiplexeur 29 qui, en fonction de ce signal, envoie l'instruction NOP vers le I IT- processeur 12 au lieu des instructions provenant des tables 24 à 27. Il est à noter que, bien que cela ne soit pas représenté, un tel agencement peut également être  To insert such an instruction, which does not cause an active operation in the processor 12, the pointer code detected by the decoder 28 is, in this case, a control signal sent to a multiplexer 29 which, according to this signal , sends the instruction NOP to the I IT-processor 12 instead of the instructions from tables 24 to 27. It should be noted that, although this is not shown, such an arrangement can also be

prévu dans les cas des figures 6 et 7.  provided in the cases of FIGS. 6 and 7.

Selon une autre variante, il est possible d'insérer entre les tables 16 et 19 de la figure 6 ou les tables 24 à 27, d'une part, et le processeur 12, d'autre part, une mémoire cache contenant un jeu d'instructions non comprimées avec lesquelles le processeur 12 travaille très fréquemment, ce qui permet, dans certains cas, d'éviter de  According to another variant, it is possible to insert between the tables 16 and 19 of FIG. 6 or the tables 24 to 27, on the one hand, and the processor 12, on the other hand, a cache memory containing a set of uncompressed instructions with which the processor 12 works very frequently, which makes it possible, in certain cases, to avoid

passer par le processus de décompression.  go through the decompression process.

Claims (9)

REVENDICATIONS 1. Procédé de décompression d'un programme comprimé destiné à être exécuté dans un processeur (12; 12A), le programme comprimé étant constitué d'au moins une première série d'instructions (If) fréquemment utilisées et rangées dans une première table (16; 16A; 24), une deuxième série d'instructions (Imf; Iemf; Ir) moins fréquemment utilisées et rangées dans une deuxième table et des pointeurs (P) ayant une longueur de bits inférieure à celle des instructions et étant rangés en blocs successifs (13: 13A) dans une mémoire de pointeurs (11; 11A), le procédé consistant à extraire sélectivement lesdits pointeurs (P) de ladite mémoire (11; 11A) à l'aide d'adresses engendrées par l'intermédiaire d'un compteur de programme (14; 14A), et à utiliser sélectivement ces pointeurs pour l'adressage desdites tables et l'extraction desdites instructions au fur et à mesure du déroulement dudit programme, caractérisé en ce que lesdits blocs (13; 13A) de pointeurs (P) contiennent, chacun, un même nombre S = 2u pointeurs et en ce que les U bits de plus faible poids de chaque adresse fournie par ledit compteur de programme (14; 14A) sont utilisés pour l'extraction successive desdits pointeurs (P) du bloc de pointeurs (13; 13A) dans  1. A method of decompressing a compressed program intended to be executed in a processor (12; 12A), the compressed program consisting of at least a first series of instructions (If) frequently used and stored in a first table ( 16; 16A; 24), a second series of instructions (Imf; Iemf; Ir) less frequently used and stored in a second table and pointers (P) having a bit length shorter than that of the instructions and being stored in blocks successive (13: 13A) in a pointer memory (11; 11A), the method consisting in selectively extracting said pointers (P) from said memory (11; 11A) using addresses generated by means of a program counter (14; 14A), and to selectively use these pointers for addressing said tables and extracting said instructions as and when said program proceeds, characterized in that said blocks (13; 13A) of pointers (P) each contain the same number S = 2u pointers and in that the U least significant bits of each address supplied by said program counter (14; 14A) are used for the successive extraction of said pointers (P) from the block of pointers (13; 13A) in lequel ils sont rangés.which they are stored. 2. Procédé suivant la revendication 1, caractérisé en ce qu'il consiste à appliquer le nombre de bits (U) de plus faible poids de ladite adresse à un multiplexeur (15; A), à charger ce multiplexeur successivement avec les blocs (13; 13A) contenus dans ladite mémoire (11; 11A) et à sélectionner les pointeurs d'un bloc à l'aide desdits  2. Method according to claim 1, characterized in that it consists in applying the number of least significant bits (U) of said address to a multiplexer (15; A), in loading this multiplexer successively with the blocks (13 ; 13A) contained in said memory (11; 11A) and in selecting the pointers of a block using said bits de plus faible poids.least significant bits. 3. Procédé suivant la revendication 1, caractérisé en ce qu'il consiste à charger un registre à décalage (20) successivement avec le contenu des blocs (13) de ladite mémoire de pointeurs(11) et à faire progresser ledit registre à décalage (20) à l'aide dudit nombre de bits (U) de faible poids, pour appliquer lesdits pointeurs (P) en tant qu'adresses à au moins l'une desdites première et  3. Method according to claim 1, characterized in that it consists in loading a shift register (20) successively with the content of the blocks (13) of said pointer memory (11) and in advancing said shift register ( 20) using said number of bits (U) of low weight, to apply said pointers (P) as addresses to at least one of said first and seconde tables (24 à 27).second tables (24 to 27). 4. Procédé suivant l'une quelconque des  4. Method according to any one of revendications 1 à 2, caractérisé en ce que des pointeurs  claims 1 to 2, characterized in that pointers (P) de valeur prédéterminée sont utilisés en tant qu'adresses d'une table (18A) de manière à extraire de celle-ci lesdites instructions moins fréquentes (Imf) et à appliquer lesdites instructions, le cas échéant, audit processeur.  (P) of predetermined value are used as addresses of a table (18A) so as to extract therefrom said less frequent instructions (Imf) and to apply said instructions, if necessary, to said processor. 5. Procédé suivant la revendication 4, caractérisé en ce que des lesdits pointeurs de valeur prédéterminée sont utilisés en tant qu'adresses d'une troisième table (18) contenant des pointeurs secondaires (Pl), utilisés pour adresser ladite seconde table (19) et extraire ainsi de celle-ci lesdites instructions moins fréquentes (Imf);5. Method according to claim 4, characterized in that said pointers of predetermined value are used as addresses of a third table (18) containing secondary pointers (Pl), used to address said second table (19) and thereby extract therefrom said less frequent instructions (Imf); 6. Procédé suivant la revendication 3, caractérisé en ce que lesdits pointeurs (P) contiennent un code de Huffman et en ce que lesdites tables (24 à 27) contenant lesdites instructions (If, Imf, Iemf; Ir) sont sélectivement adressées par lesdits pointeurs en fonction d'au moins un des bits de poids fort desdits pointeurs6. Method according to claim 3, characterized in that said pointers (P) contain a Huffman code and in that said tables (24 to 27) containing said instructions (If, Imf, Iemf; Ir) are selectively addressed by said pointers as a function of at least one of the most significant bits of said pointers représentant ledit code de Huffman.  representing said Huffman code. 7. Procédé suivant l'une quelconque des  7. Method according to any one of revendications précédentes, caractérisé en ce que, lors  previous claims, characterized in that, when d'un branchement, ledit nombre de bits (U) de plus faible poids du contenu dudit compteur de programme (14) est utilisé pour désigner dans un bloc (13) de ladite mémoire (11) le pointeur sur lequel le branchement doit être effectué.  of a branch, said number of least significant bits (U) of the content of said program counter (14) is used to designate in a block (13) of said memory (11) the pointer to which the branch is to be carried out . 8. Procédé suivant la revendication 7, lorsqu'elle dépend de la revendication 3, caractérisé en ce que, pour désigner le premier pointeur à utiliser lors d'un branchement, les pointeurs (P) présents dans ledit registre à décalage (15) sont amenés à progresser au fur et à mesure du déroulement dudit programme, en ce que le nombre de progressions est compté (22) et en ce que ce nombre est comparé (23) à la valeur représentée par lesdits bits (U) de faible poids du contenu dudit compteur8. Method according to claim 7, when it depends on claim 3, characterized in that, to designate the first pointer to be used during a connection, the pointers (P) present in said shift register (15) are brought to progress as the said program proceeds, in that the number of progressions is counted (22) and in that this number is compared (23) to the value represented by said low-weight bits (U) of the content of said counter de programme (14).program (14). 9. Procédé suivant l'une quelconque des  9. Method according to any one of revendications 1 à 8, caractérisé en ce que certains  claims 1 to 8, characterized in that certain pointeurs dans au moins certains desdits blocs contiennent un code NOP et en ce qu'une instruction NOP est appliquée audit processeur (12), lorsqu'un pointeur ainsi codé est  pointers in at least some of said blocks contain an NOP code and in that an NOP instruction is applied to said processor (12), when a pointer so encoded is extrait de ladite mémoire (11).extract from said memory (11). -r-T--r-T-
FR9900877A 1999-01-27 1999-01-27 METHOD FOR DECOMPRESSION OF A COMPUTER PROGRAM Expired - Fee Related FR2788866B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9900877A FR2788866B1 (en) 1999-01-27 1999-01-27 METHOD FOR DECOMPRESSION OF A COMPUTER PROGRAM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9900877A FR2788866B1 (en) 1999-01-27 1999-01-27 METHOD FOR DECOMPRESSION OF A COMPUTER PROGRAM

Publications (2)

Publication Number Publication Date
FR2788866A1 true FR2788866A1 (en) 2000-07-28
FR2788866B1 FR2788866B1 (en) 2001-03-23

Family

ID=9541260

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9900877A Expired - Fee Related FR2788866B1 (en) 1999-01-27 1999-01-27 METHOD FOR DECOMPRESSION OF A COMPUTER PROGRAM

Country Status (1)

Country Link
FR (1) FR2788866B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668969A (en) * 1993-09-20 1997-09-16 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
WO1998027486A1 (en) * 1996-12-16 1998-06-25 Hewlett-Packard Company Method and apparatus for storing and expanding programs for vliw processor architectures
US5796989A (en) * 1995-03-20 1998-08-18 Apple Computer, Inc. Method and system for increasing cache efficiency during emulation through operation code organization
US5896538A (en) * 1996-11-26 1999-04-20 International Business Machines Corporation System and method for multi-phased performance profiling of single-processor and multi-processor systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668969A (en) * 1993-09-20 1997-09-16 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5796989A (en) * 1995-03-20 1998-08-18 Apple Computer, Inc. Method and system for increasing cache efficiency during emulation through operation code organization
US5896538A (en) * 1996-11-26 1999-04-20 International Business Machines Corporation System and method for multi-phased performance profiling of single-processor and multi-processor systems
WO1998027486A1 (en) * 1996-12-16 1998-06-25 Hewlett-Packard Company Method and apparatus for storing and expanding programs for vliw processor architectures

Also Published As

Publication number Publication date
FR2788866B1 (en) 2001-03-23

Similar Documents

Publication Publication Date Title
FR2673779A1 (en) Method of digital filtering, filter and analog-digital converter for implementing this method
EP0397564B1 (en) Method and apparatus for coding audio signals
EP0154340A1 (en) Inverse discrete cosine transform processor
FR2510795A1 (en) SPEECH CONTROL APPARATUS
FR2509549A1 (en) ANALOG-TO-DIGITAL CONVERTER
EP0820151A1 (en) Method and device for compression and decompression of messages
FR2724074A1 (en) DIGITAL COMPRESSED SOUND RECORDER.
EP0154341A1 (en) Discrete cosine transform processor
EP0329533B1 (en) Variable-length coding and decoding method, coding and decoding device for carrying out this method
EP0338899B1 (en) Method for coding and decoding blocks of data and apparatus for carrying out said coding and decoding method
FR2788866A1 (en) Method of online decompression of a computer program
EP0237382B1 (en) Digital sampled signal cosine transforming device
EP3147811B1 (en) Storage and retrieval of a message authentication code from an external memory.
FR2834146A1 (en) A compact turbo-decoder having high efficiency, comprises two sets of processors for computing in parallel the syndromes and for updating in parallel the block, respectively
EP2320572A1 (en) Two bit successive approximation type analogue-to-digital converter
EP0438340B1 (en) Method and device for data compression
WO2003034204A1 (en) Microprocessor having an extended addressable memory space
FR2563349A1 (en) Systolic matrix multiplier for digital data processing
FR2757287A1 (en) MICROPROCESSOR DEDICATED TO PROCESSING BIT STREAMS IN A COMPRESSION / DECOMPRESSION SYSTEM OF MOVED IMAGES
EP0733977B1 (en) Computer system having hierarchical memories
FR2757288A1 (en) MICROPROCESSOR DEDICATED TO PROCESSING BIT STREAMS IN A COMPRESSION / DECOMPRESSION SYSTEM OF MOVED IMAGES
WO2008096063A1 (en) Device for analysing variable magnitudes by simultaneous multiple windowing
WO2011121136A1 (en) Processing device for extracting a set of data from a data word, and corresponding electronic circuit and data extraction method
FR2656706A1 (en) ARITHMETIC TREATMENT ORGAN ASSOCIATED WITH A MICROPROCESSOR CENTRAL UNIT.
EP1307051A2 (en) Copying method for compressed digital data

Legal Events

Date Code Title Description
ST Notification of lapse