US20050270188A1 - V.42bis standalone hardware accelerator and architecture of construction - Google Patents
V.42bis standalone hardware accelerator and architecture of construction Download PDFInfo
- Publication number
- US20050270188A1 US20050270188A1 US10/919,907 US91990704A US2005270188A1 US 20050270188 A1 US20050270188 A1 US 20050270188A1 US 91990704 A US91990704 A US 91990704A US 2005270188 A1 US2005270188 A1 US 2005270188A1
- Authority
- US
- United States
- Prior art keywords
- characters
- string
- codeword
- command
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000010276 construction Methods 0.000 title description 3
- 238000012545 processing Methods 0.000 claims abstract description 102
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000013144 data compression Methods 0.000 claims abstract description 14
- 230000006837 decompression Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 25
- 238000007906 compression Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Definitions
- Certain embodiments of the invention relate to encoding and decoding of data. More specifically, certain embodiments of the invention relate to a V.42bis standalone hardware accelerator and architecture of construction.
- V.42bis standard utilizes a variant of the Lempel-Ziv-Welch (LZW) compression algorithm and describes a data compression standard for use with modems and v-Series data circuit terminating equipment (DCE), including handheld devices such as mobile telephones.
- LZW Lempel-Ziv-Welch
- DCE data circuit terminating equipment
- the LZW compression algorithm used in the V.42bis compression procedure encodes strings of characters into codewords. During decoding, strings of characters may be generated from received codewords.
- the V.42bis standard may be implemented in modem hardware, for example, as well as in software that interfaces to a non-compressing modem. In this manner, a device utilizing the V.42bis standard may be adapted to send both compressed and non-compressed data.
- a plurality of processing commands may be utilized during encoding and/or decoding of a string of characters.
- a processor operating in a conventional V.42bis environment may execute one processing command in one operating cycle.
- many types of memory modules may be utilized, such as on-chip and off-chip memory modules. Such continuous repetition of the data processing commands and the execution of one processing command in one operating cycle, as well as the utilization of different types of memory modules, may lead to a significant increase in CPU processing time, CPU overload and reduction in the overall device processing speed and efficiency.
- Certain embodiments of the invention may be found in a method and system for on-chip processing of data. Aspects of the method may include generating a plurality of data processing commands for data compression.
- a first string of characters may be encoded in one operating cycle utilizing the generated plurality of data processing commands for data compression.
- the plurality of data processing commands may comprise a branch command, a register moving command, a register setting command, a memory load command, a memory store command, and/or a register compare command.
- the generated plurality of data processing commands may be stored and at least a portion of the stored data processing commands may be decoded. The decoded portion of the stored data processing commands may then be sequenced.
- the first string of characters may be acquired from a character space and matched with at least one existing codeword.
- the matched existing codeword may be stored into a codeword space. If the acquired first string of characters does not match the existing codeword, a new codeword may be generated corresponding to the acquired first string of characters.
- a plurality of data processing commands for data decompression may be generated. At least one codeword may be decoded in one operating cycle utilizing the generated plurality of data processing commands for data decompression.
- the codeword may be matched with a second string of characters, and the matched second string of characters may be stored into a character space.
- Another embodiment of the invention may provide a machine-readable storage, having stored thereon, a computer program having at least one code section executable by a machine, thereby causing the machine to perform the steps as described above, for on-chip processing of data.
- aspects of the system for on-chip processing of data may include an accelerator that generates a plurality of data processing commands for data compression.
- the accelerator may encode a first string of characters in one operating cycle utilizing the generated plurality of data processing commands for data compression.
- the plurality of data processing commands may comprise at least one of a branch command, a register moving command, a register setting command, a memory load command, a memory store command, and/or a register compare command.
- the accelerator may store the generated plurality of data processing commands and may decode at least a portion of the stored data processing commands.
- the accelerator may sequence the decoded portion of the stored data processing commands.
- the accelerator may acquire the first string of characters from a character space and may match the acquired first string of characters with at least one existing codeword. The accelerator may then store the matched existing codeword into a codeword space. If the acquired first string of characters does not match the existing codeword, the accelerator may generate a new codeword corresponding to the acquired first string of characters. The accelerator may generate a plurality of data processing commands for data decompression and may decode at least one codeword in one operating cycle utilizing the generated plurality of data processing commands. The accelerator may match the codeword with a second string of characters and the matched second string of characters may be stored into a character space.
- FIG. 1A is a block diagram of internal memory organization utilizing V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- FIG. 1B is an exemplary tree-based representation of a dictionary that may be utilized in accordance with an embodiment of the invention.
- FIG. 1C is a block diagram of an exemplary dictionary structure, in accordance with an embodiment of the invention.
- FIG. 1D is a block diagram of an exemplary dictionary entry within the dictionary structure of FIG. 1C , in accordance with an embodiment of the invention.
- FIG. 2 is a flow diagram of an exemplary method for encoding a string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- FIG. 3 is a flow diagram of an exemplary method for decoding an encoded string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- FIG. 4A is a block diagram of an exemplary V.42bis hardware accelerator very long instruction word (VLIW), in accordance with an embodiment of the invention.
- VLIW very long instruction word
- FIG. 4B is a diagram of an exemplary bit arrangement in a LOAD/STORE/COMPARE command within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- FIG. 4C is a diagram of an exemplary bit arrangement in a SET command within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- FIG. 4D is a diagram of an exemplary bit arrangement in a MOVE command sequence within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- FIG. 4E is a diagram of an exemplary bit arrangement in a BRANCH command sequence within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- FIG. 4F is a flow diagram of an exemplary method for processing the BRANCH command sequence of FIG. 4E , in accordance with an embodiment of the invention.
- FIG. 5 is a block diagram of an exemplary V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- a hardware accelerator may be provided that performs a substantial portion of encoding and decoding operations that may be required during V.42bis processing of data.
- the hardware accelerator may be adapted to offload certain processing tasks from an internal memory and to process such processing tasks in one operating cycle. For example, compression and decompression operations according to the V.42bis standard may be repeated numerous times during data processing. The repeating compression/decompression operations may be performed on-chip by a V.42bis hardware accelerator, for example, to achieve increased data processing efficiency.
- a V.42bis hardware accelerator may perform a plurality of compression/decompression processing commands in a single operating cycle.
- a processor or a digital signal processor (DSP) may control the operation of a V.42bis hardware accelerator for added efficiency.
- the hardware accelerator may generate a plurality of data processing commands for data compression. During compression, a string of characters may be encoded in one operating cycle utilizing the data processing commands.
- the plurality of data processing commands may be executed by the accelerator as a single very long instruction word (VLIW).
- the data processing commands within a VLIW may include a branch command, a register moving command, a memory load command, a memory store command, and/or a register compare command, for example.
- the hardware accelerator may be adapted to store a plurality of VLIWs, each corresponding to a different plurality of data processing commands.
- a codeword may be generated from a string of characters by matching the string of characters with codewords within an on-chip dictionary, such as an encoding dictionary.
- the on-chip dictionary may comprise an encoding dictionary and a decoding dictionary used during encoding and decoding, respectively. If the string of characters is matched with a codeword within the on-chip encoding dictionary, the corresponding codeword may be saved within a codeword space for further processing, such as output. If the string of characters is not matched with a codeword within the on-chip encoding dictionary, the hardware accelerator may utilize one or more VLIWs to encode the string of characters and generate a corresponding codeword. The on-chip encoding dictionary may then be updated with the generated codeword.
- a codeword may be decoded in one operating cycle, for example, to obtain one or more corresponding strings of characters. More specifically, data processing commands generated by a hardware accelerator may be utilized within a VLIW during the decoding process. A codeword may be decoded in one operating cycle by the hardware accelerator utilizing the VLIW. During decoding, the codeword may be initially matched against a plurality of character strings within the on-chip decoding dictionary. If the codeword is matched with a string of characters within the on-chip decoding dictionary, the corresponding string of characters may be saved within a character space for further processing, such as output.
- the hardware accelerator may utilize one or more VLIWs to decode the codeword and generate a corresponding character stream.
- the on-chip decoding dictionary may then be updated with the generated character stream.
- FIG. 1A is a block diagram of internal memory organization 100 utilizing V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- the internal memory organization 100 may comprise internal RAM 101 and a V.42bis hardware accelerator 103 .
- the internal RAM 101 may comprise an encoding dictionary 105 , a decoding dictionary 106 , a character space 107 and a codeword space 109 .
- the encoding dictionary 105 comprises suitable circuitry, logic and/or code and may be adapted to store codewords. Each codeword may comprise 9, 10 and/or 11 bits, for example, and may correspond to one or more alphanumeric characters.
- the encoding dictionary 105 may be utilized during encoding of strings of characters into codewords. More specifically, the dictionary 105 may be utilized to match a string of characters to a corresponding codeword, prior to compression. Each string of characters corresponding to a codeword may be saved as a separate dictionary entry within the encoding dictionary 105 . The matched corresponding codeword may then be stored in the codeword space 109 for further processing, such as output.
- the decoding dictionary 106 comprises suitable circuitry, logic and/or code and may be adapted to store one or more alphanumeric characters that correspond to codewords.
- the decoding dictionary 106 may be utilized during decoding of strings of characters into codewords.
- the decoding dictionary 106 may be utilized to match a codeword with a string of characters. The matched corresponding string of characters may then be stored in the character space 107 for further processing, such as output.
- the character space 107 comprises suitable circuitry, logic and/or code and may be adapted to store one or more alphanumeric characters for input during encoding and/or for output during decoding.
- the alphanumeric characters stored in the character space 107 may form strings of characters to facilitate codeword recognition by the decoding dictionary 106 during a V.42bis decoding process, for example.
- the corresponding character stream may be stored in the character space 107 for further processing, such as outputting the character stream.
- the codeword space 109 comprises suitable circuitry, logic and/or code and may be adapted to store one or more codewords for input during decoding and/or for output during encoding.
- the codewords stored in the codeword space 108 may facilitate character recognition by the encoding dictionary 105 during a V.42bis encoding process, for example. After a string of characters is encoded, the corresponding codeword may be stored in the codeword space 107 for further processing, such as outputting the corresponding codeword.
- the V.42bis hardware accelerator 103 comprises suitable circuitry, logic and/or code and may be utilized during a V.42bis encoding and/or decoding for providing necessary operational commands.
- the V.42bis hardware accelerator 103 may generate a plurality of operational commands that may be implemented as a single very long instruction word (VLIW).
- the VLIW may be used by the hardware accelerator 103 to encode a string of characters and/or to decode a codeword in one operational cycle.
- An operational cycle may be associated with one CPU clock cycle of the data processing device containing the internal RAM 101 and the V.42bis hardware accelerator 103 .
- one or more alphanumeric characters may be obtained from the character space 107 and may be matched by the encoding dictionary 105 to one or more codewords. If the string of characters is matched with a corresponding codeword within the encoding dictionary 105 , the resulting matched codeword may be stored in the codeword space 109 for further processing, such as outputting the codeword. If the encoding dictionary 105 does not have a matching codeword entry, the V.42bis hardware accelerator 103 may utilize a VLIW to encode the string of characters. In this manner, a new codeword may be generated by the V.42bis hardware accelerator 103 .
- the new codeword After the new codeword is generated, it may be stored, together with the corresponding string of characters, into the encoding dictionary 105 so that it may be available for any future encoding. Since the encoding dictionary 105 may initially contain only a limited number of basic codewords, after each encoding cycle the encoding dictionary 105 may be adapted to update its codeword content by storing codewords generated by the V.42bis hardware accelerator 103 .
- one or more codewords may be obtained from the codeword space 109 and may be matched by the decoding dictionary 106 to one or more alphanumeric characters. If the codeword is matched with a corresponding string of characters within the decoding dictionary 106 , the resulting matched string of characters may be stored in the character space 107 for further processing, such as outputting the string of characters. If the decoding dictionary 106 does not have a matching alphanumeric character entry, the V.42bis hardware accelerator 103 may utilize a VLIW to decode the codeword. In this manner, a new string of characters may be generated by the V.42bis hardware accelerator 103 .
- the decoding dictionary 106 may initially contain only a limited number of alphanumeric characters, after each decoding cycle the decoding dictionary 106 may be adapted to update its alphanumeric characters content by storing strings of characters generated by the V.42bis hardware accelerator 103 .
- FIG. 1B is an exemplary tree-based representation 110 of a dictionary that may be utilized in accordance with an embodiment of the invention.
- FIG. 1B there is illustrated an abstract data structure representation of a dictionary that may be utilized during a V.42bis encoding and/or decoding process, such as the encoding dictionary 105 and the decoding dictionary 106 of FIG. 1A .
- a dictionary used in accordance with a V.42bis encoding and/or decoding may contain a set of trees, as shown in FIG. 1B , each with a root corresponding to a single American Standard Code for Information Interchange (ASCII) character, or a total of 256 possible ASCII characters for each root.
- a dictionary tree may represent a set of known character strings beginning with one specific character, and each node or point in the tree may represent one set of character strings.
- the character trees in FIG. 1B may represent character strings AC, AI, AIG, AS, ASP, B, CK, CKL, CKLQ, CD, CDF, D, EG and EGA.
- characters A, B, C, D and E have no parent represented by a hierarchically higher level in the tree and may, therefore, be referred to as root nodes.
- characters C, I and S may be referred to as A's children, or A may be referred to as a parent for nodes C, I and S.
- Lower level nodes G, P, Q, F and A have no dependent nodes and may be referred to as leaf nodes.
- Node L has a leaf node Q but has no parent node directly connected to it.
- Node L may, therefore, be referred to as the brother of node K, both nodes L and K having root node C as a parent.
- Node K may also be referred to as the youngest child from the children group ⁇ K; L ⁇ since only node K has a direct connection with the parent node C.
- an encoding and/or a decoding dictionary utilized during V.42bis encoding and/or decoding may be adapted to store one or more alphanumeric characters as separate dictionary entries.
- corresponding codewords may be associated with and may uniquely identify strings of characters.
- the codewords may also be stored in such encoding and/or decoding dictionary to facilitate V.42bis processing. In this manner, a codeword may be easily matched with a string of characters, for example in a decoding dictionary, and a string of characters may be easily matched with a corresponding codeword, for example in an encoding dictionary.
- FIG. 1C is a block diagram of an exemplary dictionary structure 120 , in accordance with an embodiment of the invention.
- the dictionary structure 120 may comprise a plurality of single character entries 122 and a plurality of multiple character entries 124 .
- Dictionary entries DE 0 through DE 2 may be reserved for command functions relating to dictionary management and structure. For example, DE 0 through DE 2 may be utilized if the dictionary is expanded and additional entry space may be required.
- an encoding and/or a decoding dictionary such as the encoding dictionary 105 and/or the decoding dictionary 106 of FIG. 1A , may be adapted to store N number of codewords, CW 0 through CW(N ⁇ 1 ), and corresponding N number of dictionary entries, DE 3 through DE(N+ 2 ).
- Each codeword CW 0 through CW(N- 1 ) may comprise 9, 10 and/or 11 bits, and may be referred to as a dictionary index entry.
- Each dictionary entry DE 3 through DE(N+ 2 ) may store one or more alphanumeric characters.
- the first 256 dictionary entries, or the single character entries 122 , DE 3 through DE 258 may each store a single ASCII character.
- All subsequent dictionary entries may each store a string of characters corresponding to a codeword. Both the codeword and the dictionary entries may be represented with a tree diagram, as illustrated in FIG. 1B .
- FIG. 1D is a block diagram of an exemplary dictionary entry 130 within the dictionary structure of FIG. 1C , in accordance with an embodiment of the invention.
- the dictionary entry 130 may comprise a total of 32 bits, b 0 through b 31 , for example.
- Bits b 24 through b 31 may be utilized to store an ASCII character 140 associated with the dictionary entry 130 .
- the ASCII character 140 may represent the single character associated with the dictionary entry 130 .
- the dictionary entry 130 comprises a multiple character dictionary entry
- the ASCII character 140 may represent the first of the characters, within the string of characters, associated with the dictionary entry 140 .
- Bits b 13 through b 23 may be utilized to store a “brother of” indicator 138 .
- the “brother of” indicator 138 may indicate whether the ASCII character 140 is a brother of another character node within a dictionary tree node structure.
- bits b 2 through b 12 may be utilized to store a “child of” indicator 136 .
- the “child of” indicator 136 may indicate whether the ASCII character 140 is a child of another character node within a dictionary tree node structure.
- Bit b 0 may store a leaf node information 132 and bit b 1 may store a youngest child information 134 .
- the leaf node information 132 may indicate whether or not the ASCII character 140 within the dictionary entry 130 is a leaf node.
- the youngest child information 134 may indicate whether the ASCII character 140 within the dictionary entry 130 is a youngest child node.
- the tree node structure within a decoding and/or encoding dictionary may be efficiently accessed during a V.42bis decoding and/or encoding process.
- dictionary entry 130 comprises a single character dictionary entry
- only bits b 24 through b 31 may be utilized as the ASCII character information 140 may represent the single ASCII character associated with the dictionary entry 130 .
- the ASCII character information 140 may identify the first character within the string of characters.
- the remaining dictionary entry information, the “brother of” indicator 138 , the “child of” indicator 136 , the youngest child information 134 and the leaf node information 132 may identify any additional characters within the character node tree of the ASCII character 140 .
- a leaf node and/or a root node may be identified for the ASCII character 140 , as well as any nodes located between a leaf node and a root node for the ASCII character 140 .
- V.42bis encoding and/or decoding may utilize matching a string of characters against an existing string of characters within an encoding and/or a decoding dictionary.
- a string of characters may be matched with a dictionary entry by first matching their leaf nodes and then each subsequent hierarchically higher level node. If there is a full match, a corresponding codeword, for example, may be obtained.
- FIG. 2 is a flow diagram of an exemplary method 200 for encoding a string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- a single character or a character stream may be obtained from a character space, for example.
- the obtained character stream may be referenced with entries in an encoding dictionary.
- it may be determined whether the character stream matches any codewords within the encoding dictionary. If the character stream matches a codeword within the encoding dictionary, at 211 , the codeword may be outputted and stored in a codeword space for further processing.
- the character stream may be encoded utilizing a very long instruction word (VLIW), for example, from a V.42bis hardware accelerator to generate a corresponding codeword.
- VLIW very long instruction word
- the encoding dictionary may be updated with the generated codeword.
- the codeword may be outputted and stored in a codeword space for further processing.
- FIG. 3 is a flow diagram of an exemplary method for decoding an encoded string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- a codeword may be obtained from a codeword space, for example.
- the obtained codeword may be referenced with entries in a decoding dictionary.
- it may be determined whether the codeword matches any strings of characters within the decoding dictionary. If the codeword matches a string of characters, at 311 , the string of characters may be outputted and stored in a character space for further processing.
- the codeword may be decoded utilizing a very long instruction word (VLIW), for example, from a V.42bis hardware accelerator to generate a corresponding string of characters.
- VLIW very long instruction word
- the decoding dictionary may be updated with the generated string of characters.
- the string of characters may be outputted and stored in a character space for further processing.
- FIG. 4A is a block diagram of an exemplary V.42bis hardware accelerator very long instruction word (VLIW) 400 , in accordance with an embodiment of the invention.
- the V.42bis hardware accelerator VLIW 400 may comprise 64 bits and may include a plurality of command instructions used for encoding and/or decoding during V.42bis processing.
- the VLIW 400 may comprise two branch (BR) commands 401 and 403 , two register moving (MOV) commands 405 and 407 , a register setting (SET) command 409 and an additional command 411 .
- the additional command 411 may include a memory load (LD) command, a memory store (ST) command or a register compare (CMP) command.
- LD memory load
- ST memory store
- CMP register compare
- a VLIW such as the VLIW 400
- V.42bis hardware accelerator within a data processing device during V.42bis encoding and/or decoding operations.
- the VLIW 400 may comprise several processing commands and may be executed by a central processing unit (CPU), or a digital signal processor (DSP), within the data processing device during a single operational cycle.
- CPU central processing unit
- DSP digital signal processor
- the VLIW 400 may comprise 64 bits, the invention is not limited in this manner. For example, other command words with different bit-sizes may also be utilized.
- a command word utilized by a V.42bis hardware accelerator may include other combinations of operational commands.
- FIG. 4B is a diagram of an exemplary bit arrangement 400 in a LOAD/STORE/COMPARE command within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- a load (LD) or a store (ST) command within a VLIW may comprise 7 bits, whereas a compare (CMP) command may comprise 11 bits.
- an LD or ST command may comprise an index pointer 405 stored in bit 0 through bit 3 , a register selection indicator 403 stored in bit 4 and an operation 401 stored in bits 5 and 6 .
- the ST command may be applied to a register within a V.42bis hardware accelerator and/or a dictionary entry or a codeword entry within a decoding and/or encoding dictionary.
- the index pointer information 405 may be associated with the following accelerator registers and/or dictionary entries: REGISTER DICTIONARY ENTRY iSelf nextCodeword iNext prevCodeword iLast charToIndex iPrevious iTemp eSelf_brother IncReg eSelf_Child eOld_Brother eOld_Child
- the register selection indicator 403 may refer to eSelf or eOld registers, for example.
- the eSelf and eOld registers may comprise 32-bit registers within a V.42bis hardware accelerator that may be associated with 32-bit dictionary entries.
- the operation 401 may comprise the following operation codes:
- the compare command CMP may be utilized to compare two operand values, a first operand 406 and a second operand 408 .
- Bit 4 may be left unused and bits 5 and 6 may comprise a command.
- bits 5 and 6 may comprise an indicator value indicating the compare CMP command.
- the operand values 406 and 408 may be associated with the following registers, referring to dictionary entries, and/or constant values: REGISTERS CONSTANTS iSelf Length iNext maxLength iLast zero iParent one iPrevious seventeen iTemp eSelf_brother eSelf_child eOld_brother eSelf_Char eOld_child
- FIG. 4C is a diagram of an exemplary bit arrangement 410 in a SET command within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- a SET command within a VLIW used for V.42bis encoding and/or decoding may comprise 13 bits. More specifically, the SET command may comprise a leaf flag 420 , a youngest flag 418 , operation on a child indicator 416 , operation on a brother indicator 414 and a register indicator 412 .
- a SET command may be utilized by a V.42bis hardware accelerator to change a value of an encoding and/or decoding dictionary entry to a different value.
- the register indicator 412 may indicate whether eSelf or eOld registers may be utilized during the SET operation, where eSelf and eOld may comprise 32-bit registers associated with 32-bit dictionary entries.
- the youngest flag 418 and the leaf flag 420 may indicate operations associated with a youngest character node and with a leaf character node within a dictionary tree structure. For example, the youngest flag 418 and the leaf flag 420 may include the following operations: None, Set and/or Clear.
- the SET operations on a brother 414 and operations on a child 416 may be associated with a brother and/or a child node, respectively, within a dictionary tree structure. These set operations may comprise the following: OPERATION DEFINITION set2zero set to zero set2iSelf set to content of register iSelf set2iNext set to content of register iNext set2iLast set to content of register iLast set2iParent set to content of register iParent set2iPrevious set to content of register iPrevious set2iTemp set to content of register iTemp set2nextCodeword set content equal to next codeword set2eSelf_brother set to content of register eSelf_brother set2eSelf_child set to content of register eSelf_child set2eOld_brother set to content of register eOld_brother set2eOld_child set to content of register eOld_child set2CharToIndex set to content of
- FIG. 4D is a diagram of an exemplary bit arrangement 422 in a MOVE command sequence within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- a move (MOV) command within a VLIW used for V.42bis encoding and/or decoding may comprise 9 bits. More specifically, the MOV command may comprise a source indicator 426 stored in the first 5 bits and a destination indicator 424 stored in the next 4 bits.
- a second MOV command, MOV 2 may also be utilized within a VLIW and during V.42bis processing. The second MOV command, MOV 2 , may also comprise 9 bits storing a source indicator 430 in the first 5 bits and a destination indicator 428 in the next 4 bits.
- a MOV command may be utilized by a V.42bis hardware accelerator to move filed values from one register within a V.42bis hardware accelerator to another register.
- the destination indicators 424 and 428 , as well as the source indicators 426 and 430 may be associated with any of the following registers, referring to dictionary entries, and/or constant values within the V.42bis hardware accelerator: REGISTER REGISTERS CONTENT TYPE CONSTANTS iSelf 11-bit index zero iNext 11-bit index one iLast 11-bit index three iParent 11-bit index five iPrevious 11-bit index seventeen iTemp 11-bit index thirty-three nextCodeword 11-bit codeword increg 11-bit register eSelf_char 8-bit character eOld_char 8-bit character next_char 8-bit character length 8-bit reference char_Reg 8-bit character eSelf 32-bit entry eOld 32-bit entry status 8-bit reference eSelf_brother 11
- FIG. 4E is a diagram of an exemplary bit arrangement 432 in a BRANCH command sequence within the VLIW of FIG. 4A , in accordance with an embodiment of the invention.
- a branch (BR) command within a VLIW used for V.42bis encoding and/or decoding may comprise 13 bits. More specifically, a first branch command, BR 1 , may comprise a program counter value 434 , a negating operation 436 , a first condition 438 and a second condition 440 .
- a second BR command, BR 2 may also be utilized within a VLIW and during V.42bis processing.
- the BR 2 may also comprise 13 bits and may store a program counter value 442 , a negating operation 444 , a first condition 446 and a second condition 448 .
- a BR command may be utilized by a V.42bis hardware accelerator to increase the number of command instructions that may be performed by the V.42bis hardware accelerator within one operational cycle.
- V.42bis encoding and decoding efficiency may be further increased by including additional BR commands within the same VLIW.
- the VLIW of FIG. 4A may utilize two BR commands.
- a V.42bis hardware accelerator may verify whether the two conditions within the BR command are valid. If the two conditions are valid, a specific command instruction may be performed. If either condition is invalid, a default instruction may be performed. Referring again to FIG. 4E , BR 1 and BR 2 commands may be performed sequentially. If condition 438 and condition 440 are valid, a specific command instruction may be performed. If either condition 438 or 440 is invalid, a default instruction may be performed. The specific command instruction or the default instruction may be generated by utilizing the program counter value 434 . The first branch command BR 1 may then be followed by a second branch command BR 2 for increased V.42bis efficiency by processing additional command instructions in the same operating cycle.
- the first condition indicators 438 and 446 may comprise any of the following conditions: CONDITION DEFINITION NONE None CHARS_EMPTY Register CHARS is empty eSelf_youngest Register eSelf has youngest node local cycles_exc Local cycles exceeded decode_mode Current decode mode root_codeword Root codeword codes_empty Register CODES empty length_exceeded Length exceeded eSelf_leaf Register eSelf has leaf node eOld_leaf Register eOld has leaf node eOld_youngest Register eOld has youngest node char_lt Character less than char_eq Character equal to char_gt Character greater than undef_codeword Undefined codeword cmp_eq Whether output of a last compare instruction is equal or not
- the second condition indicators 440 and 448 may comprise any of the following conditions: CONDITION DEFINITION NONE None CHARS_EMPTY Register CHARS is empty eSelf_youngest Register eSelf has youngest node eSelf_notyoungest Register eSelf does not have youngest node
- FIG. 4F is a flow diagram of an exemplary method 450 for processing the BRANCH command sequence of FIG. 4E , in accordance with an embodiment of the invention.
- a first condition and a second condition within a first branch command, BR 1 are met. If the two conditions within BR 1 are met, a first processing instruction may be executed at 454 . If either of the two conditions are not met, at 456 , it may be determined whether a first and a second condition within a second branch command, BR 2 , are met. If the two conditions within BR 2 are met, a second programming instruction may be executed at 458 . If either of the two conditions within BR 2 are not met, at 460 , a default processing instruction may be executed.
- FIG. 5 is a block diagram 500 of an exemplary V.42bis hardware accelerator, in accordance with an embodiment of the invention.
- the V.42bis hardware accelerator 501 may comprise a program memory 505 , an instruction decoder 507 , a program counter 509 , and a plurality of program registers 511 , 513 , 515 and 517 .
- the V.42bis hardware accelerator 501 may be coupled to an internal memory 503 .
- the internal memory 503 may reside outside the V.42bis hardware accelerator 501 and may comprise an encoding dictionary, a decoding dictionary, a character set and a codeword space, for example, similar to the configuration of the internal RAM 101 of FIG. 1A .
- the V.42bis hardware accelerator 501 and/or the internal memory 503 may be embedded in an integrated circuit (IC). Both the V.42bis hardware accelerator 501 and the internal memory 503 may be coupled to a CPU 502 .
- the CPU 502 may be utilized during V.42bis encoding and/or decoding for added efficiency.
- the program memory 505 comprises suitable circuitry, logic and/or code and may be adapted to store command instructions in the form of very long instruction words (VLIW).
- VLIW very long instruction words
- Each of the command instructions within a VLIW stored in the program memory 505 may be associated with specific command operations that may be utilized during V.42bis encoding/decoding.
- the program memory 505 may comprise 64 VLIWs, VLIW 0 through VLIW 63 , each 64 bits long.
- the program memory 505 may be adapted to communicate one or more VLIWs to the instruction decoder 507 .
- the present invention contemplates a program memory that may utilize 64 VLIWs, 64-bits long, the invention is not limited in this manner.
- a different number of VLIWs may be utilized, where each VLIW may be of different bit size.
- a V.42bis hardware accelerator may utilize a different number of internal registers.
- the instruction decoder 507 comprises suitable circuitry, logic and/or code and may be adapted to decode command instructions within a VLIW communicated from the program memory 505 .
- the instruction decoder 507 may be adapted to decode a branch command (BR), a register moving command (MOV), a register setting command (SET), a memory load command (LD), a memory store command (ST), and a register compare command (CMP).
- BR branch command
- MOV register moving command
- SET register setting command
- LD memory load command
- ST memory store command
- CMP register compare command
- a memory store command 508 may be issued by the instruction decoder 507 and may be communicated to the internal memory 503 .
- data may be moved from the program registers 511 , 513 , 515 and/or 517 and stored in the internal memory 503 .
- a dictionary entry may be updated or a codeword and/or a character space may be updated with a new entry.
- a memory load command (LD) 510 may be issued by the instruction decoder 507 and may cause the internal memory 503 to communicate data from the internal memory 503 to the V.42bis hardware accelerator 501 for storage at one of the program registers 511 , 513 , 515 and/or 517 .
- LD memory load command
- the program counter 509 may comprise suitable circuitry, logic and/or code and may be adapted to sequence the execution of the operational command instructions generated by the instruction decoder 507 after decoding a VLIW from the program memory 505 .
- the program counter 509 may be utilized to monitor branch commands (BR) and/or register compare commands (CMP).
- a VLIW may be communicated from the program memory 505 to the instruction decoder 507 .
- the instruction decoder 507 may decode the communicated VLIW and may generate a plurality of command instructions.
- the generated plurality of command instructions may be performed within the V.42bis hardware accelerator 501 within one operational cycle.
- the V.42bis hardware accelerator 501 may obtain a string of characters from a character space within the internal memory 503 and may compare the string of characters with dictionary entries within an encoding dictionary.
- the V.42bis hardware accelerator 501 may utilize the load command 510 to load the string of characters for encoding.
- One or more VLIWs from the program memory 505 may be decoded by the instruction decoder 507 to generate a plurality of command instructions used for encoding.
- the generated command instructions may be applied to the string of characters to generate a codeword.
- the plurality of registers 511 through 517 may be utilized, as well as the load and store commands 510 and 508 to exchange information between the internal memory 503 and the V.42bis hardware accelerator 501 needed for encoding.
- the encoded stream of characters in the form of a codeword may be communicated back to the internal memory 503 for further processing.
- the V.42bis hardware accelerator 501 may obtain a codeword from a codeword space within the internal memory 503 and may compare the codeword with codeword entries within a decoding dictionary. If the codeword is not matched with a codeword entry, the V.42bis hardware accelerator 501 may utilize the load command 510 to load the codeword for decoding.
- One or more VLIWs from the program memory 505 may be decoded by the instruction decoder 507 to generate a plurality of command instructions used for decoding. The generated command instructions may be applied to the codeword to generate a string of characters.
- the plurality of registers 511 through 517 may be utilized, as well as the load and store commands 510 and 508 to exchange information between the internal memory 503 and the V.42bis hardware accelerator 501 needed for decoding.
- the decoded codeword in the form of a string of characters may be communicated back to the internal memory 503 for further processing.
- the encoding and decoding operations within the V.42bis hardware accelerator 501 may utilize the following pseudo code to perform encoding, or compression, and decoding, or decompression:
- Do read NEW_CODE STRING get translation of NEW_CODE output STRING add (get translation of OLD CODE) & CHARACTER to the S_TABLE OLD_
- aspects of the invention may be realized in hardware, software, firmware or a combination thereof.
- the invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited.
- a typical combination of hardware, software and firmware may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
- One embodiment of the present invention may be implemented as a board level product, as a single chip, application specific integrated circuit (ASIC), or with varying levels integrated on a single chip with other portions of the system as separate components.
- the degree of integration of the system will primarily be determined by speed and cost considerations. Because of the sophisticated nature of modern processors, it is possible to utilize a commercially available processor, which may be implemented external to an ASIC implementation of the present system. Alternatively, if the processor is available as an ASIC core or logic block, then the commercially available processor may be implemented as part of an ASIC device with various functions implemented as firmware.
- the invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods.
- Computer program in the present context may mean, for example, any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
- other meanings of computer program within the understanding of those skilled in the art are also contemplated by the present invention.
Abstract
Description
- This application makes reference to, claims priority to, and claims the benefit of U.S. Provisional Patent Application 60/577,358 (Attorney Docket number 15599US01), filed on Jun. 4, 2004 and entitled “V.42bis Standalone Hardware Accelerator And Architecture Of Construction,” the complete subject matter of which is hereby incorporated herein by reference in its entirety.
- Certain embodiments of the invention relate to encoding and decoding of data. More specifically, certain embodiments of the invention relate to a V.42bis standalone hardware accelerator and architecture of construction.
- Recommendation for the V.42bis standard was approved by the International Telegraph and Telephone Consultative Committee on Jan. 31, 1990 as an addition to the v.42 error-correction protocol for modems. The V.42bis standard utilizes a variant of the Lempel-Ziv-Welch (LZW) compression algorithm and describes a data compression standard for use with modems and v-Series data circuit terminating equipment (DCE), including handheld devices such as mobile telephones. The LZW compression algorithm used in the V.42bis compression procedure encodes strings of characters into codewords. During decoding, strings of characters may be generated from received codewords. The V.42bis standard may be implemented in modem hardware, for example, as well as in software that interfaces to a non-compressing modem. In this manner, a device utilizing the V.42bis standard may be adapted to send both compressed and non-compressed data.
- In accordance with the V.42bis standard, a plurality of processing commands may be utilized during encoding and/or decoding of a string of characters. A processor operating in a conventional V.42bis environment may execute one processing command in one operating cycle. During encoding and decoding operations that are performed according to the V.42bis standard, there may be processing commands that are continuously repeated during operating cycles of a DCE. In addition, during the encoding and/or decoding operations in a V42bis compliant environment, many types of memory modules may be utilized, such as on-chip and off-chip memory modules. Such continuous repetition of the data processing commands and the execution of one processing command in one operating cycle, as well as the utilization of different types of memory modules, may lead to a significant increase in CPU processing time, CPU overload and reduction in the overall device processing speed and efficiency.
- Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.
- Certain embodiments of the invention may be found in a method and system for on-chip processing of data. Aspects of the method may include generating a plurality of data processing commands for data compression. A first string of characters may be encoded in one operating cycle utilizing the generated plurality of data processing commands for data compression. The plurality of data processing commands may comprise a branch command, a register moving command, a register setting command, a memory load command, a memory store command, and/or a register compare command. The generated plurality of data processing commands may be stored and at least a portion of the stored data processing commands may be decoded. The decoded portion of the stored data processing commands may then be sequenced.
- The first string of characters may be acquired from a character space and matched with at least one existing codeword. The matched existing codeword may be stored into a codeword space. If the acquired first string of characters does not match the existing codeword, a new codeword may be generated corresponding to the acquired first string of characters. A plurality of data processing commands for data decompression may be generated. At least one codeword may be decoded in one operating cycle utilizing the generated plurality of data processing commands for data decompression. The codeword may be matched with a second string of characters, and the matched second string of characters may be stored into a character space.
- Another embodiment of the invention may provide a machine-readable storage, having stored thereon, a computer program having at least one code section executable by a machine, thereby causing the machine to perform the steps as described above, for on-chip processing of data.
- Aspects of the system for on-chip processing of data may include an accelerator that generates a plurality of data processing commands for data compression. The accelerator may encode a first string of characters in one operating cycle utilizing the generated plurality of data processing commands for data compression. The plurality of data processing commands may comprise at least one of a branch command, a register moving command, a register setting command, a memory load command, a memory store command, and/or a register compare command. The accelerator may store the generated plurality of data processing commands and may decode at least a portion of the stored data processing commands. The accelerator may sequence the decoded portion of the stored data processing commands.
- The accelerator may acquire the first string of characters from a character space and may match the acquired first string of characters with at least one existing codeword. The accelerator may then store the matched existing codeword into a codeword space. If the acquired first string of characters does not match the existing codeword, the accelerator may generate a new codeword corresponding to the acquired first string of characters. The accelerator may generate a plurality of data processing commands for data decompression and may decode at least one codeword in one operating cycle utilizing the generated plurality of data processing commands. The accelerator may match the codeword with a second string of characters and the matched second string of characters may be stored into a character space.
- These and other advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
-
FIG. 1A is a block diagram of internal memory organization utilizing V.42bis hardware accelerator, in accordance with an embodiment of the invention. -
FIG. 1B is an exemplary tree-based representation of a dictionary that may be utilized in accordance with an embodiment of the invention. -
FIG. 1C is a block diagram of an exemplary dictionary structure, in accordance with an embodiment of the invention. -
FIG. 1D is a block diagram of an exemplary dictionary entry within the dictionary structure ofFIG. 1C , in accordance with an embodiment of the invention. -
FIG. 2 is a flow diagram of an exemplary method for encoding a string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention. -
FIG. 3 is a flow diagram of an exemplary method for decoding an encoded string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention. -
FIG. 4A is a block diagram of an exemplary V.42bis hardware accelerator very long instruction word (VLIW), in accordance with an embodiment of the invention. -
FIG. 4B is a diagram of an exemplary bit arrangement in a LOAD/STORE/COMPARE command within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. -
FIG. 4C is a diagram of an exemplary bit arrangement in a SET command within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. -
FIG. 4D is a diagram of an exemplary bit arrangement in a MOVE command sequence within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. -
FIG. 4E is a diagram of an exemplary bit arrangement in a BRANCH command sequence within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. -
FIG. 4F is a flow diagram of an exemplary method for processing the BRANCH command sequence ofFIG. 4E , in accordance with an embodiment of the invention. -
FIG. 5 is a block diagram of an exemplary V.42bis hardware accelerator, in accordance with an embodiment of the invention. - Certain embodiments of the invention may be found in a method and system for on-chip processing of data. A hardware accelerator may be provided that performs a substantial portion of encoding and decoding operations that may be required during V.42bis processing of data. The hardware accelerator may be adapted to offload certain processing tasks from an internal memory and to process such processing tasks in one operating cycle. For example, compression and decompression operations according to the V.42bis standard may be repeated numerous times during data processing. The repeating compression/decompression operations may be performed on-chip by a V.42bis hardware accelerator, for example, to achieve increased data processing efficiency. In one aspect of the invention, a V.42bis hardware accelerator may perform a plurality of compression/decompression processing commands in a single operating cycle. In this manner, redundant operations within a DCE, for example, may be reduced and on-chip data processing time may be decreased. As a result, on-chip resources, including memory modules, may be accessed faster and utilized more efficiently and effectively. A processor, or a digital signal processor (DSP) may control the operation of a V.42bis hardware accelerator for added efficiency.
- The hardware accelerator may generate a plurality of data processing commands for data compression. During compression, a string of characters may be encoded in one operating cycle utilizing the data processing commands. The plurality of data processing commands may be executed by the accelerator as a single very long instruction word (VLIW). The data processing commands within a VLIW may include a branch command, a register moving command, a memory load command, a memory store command, and/or a register compare command, for example. The hardware accelerator may be adapted to store a plurality of VLIWs, each corresponding to a different plurality of data processing commands.
- During a V.42bis encoding process, a codeword may be generated from a string of characters by matching the string of characters with codewords within an on-chip dictionary, such as an encoding dictionary. The on-chip dictionary may comprise an encoding dictionary and a decoding dictionary used during encoding and decoding, respectively. If the string of characters is matched with a codeword within the on-chip encoding dictionary, the corresponding codeword may be saved within a codeword space for further processing, such as output. If the string of characters is not matched with a codeword within the on-chip encoding dictionary, the hardware accelerator may utilize one or more VLIWs to encode the string of characters and generate a corresponding codeword. The on-chip encoding dictionary may then be updated with the generated codeword.
- During a V.42bis decoding process, a codeword may be decoded in one operating cycle, for example, to obtain one or more corresponding strings of characters. More specifically, data processing commands generated by a hardware accelerator may be utilized within a VLIW during the decoding process. A codeword may be decoded in one operating cycle by the hardware accelerator utilizing the VLIW. During decoding, the codeword may be initially matched against a plurality of character strings within the on-chip decoding dictionary. If the codeword is matched with a string of characters within the on-chip decoding dictionary, the corresponding string of characters may be saved within a character space for further processing, such as output. If the codeword is not matched with a character string within the on-chip decoding dictionary, the hardware accelerator may utilize one or more VLIWs to decode the codeword and generate a corresponding character stream. The on-chip decoding dictionary may then be updated with the generated character stream.
-
FIG. 1A is a block diagram ofinternal memory organization 100 utilizing V.42bis hardware accelerator, in accordance with an embodiment of the invention. Referring toFIG. 1A , theinternal memory organization 100 may compriseinternal RAM 101 and a V.42bis hardware accelerator 103. Theinternal RAM 101 may comprise anencoding dictionary 105, adecoding dictionary 106, acharacter space 107 and acodeword space 109. - The
encoding dictionary 105 comprises suitable circuitry, logic and/or code and may be adapted to store codewords. Each codeword may comprise 9, 10 and/or 11 bits, for example, and may correspond to one or more alphanumeric characters. Theencoding dictionary 105 may be utilized during encoding of strings of characters into codewords. More specifically, thedictionary 105 may be utilized to match a string of characters to a corresponding codeword, prior to compression. Each string of characters corresponding to a codeword may be saved as a separate dictionary entry within theencoding dictionary 105. The matched corresponding codeword may then be stored in thecodeword space 109 for further processing, such as output. - The
decoding dictionary 106 comprises suitable circuitry, logic and/or code and may be adapted to store one or more alphanumeric characters that correspond to codewords. Thedecoding dictionary 106 may be utilized during decoding of strings of characters into codewords. During a V.42bis decoding process, thedecoding dictionary 106 may be utilized to match a codeword with a string of characters. The matched corresponding string of characters may then be stored in thecharacter space 107 for further processing, such as output. - The
character space 107 comprises suitable circuitry, logic and/or code and may be adapted to store one or more alphanumeric characters for input during encoding and/or for output during decoding. The alphanumeric characters stored in thecharacter space 107 may form strings of characters to facilitate codeword recognition by thedecoding dictionary 106 during a V.42bis decoding process, for example. After a codeword is decoded, the corresponding character stream may be stored in thecharacter space 107 for further processing, such as outputting the character stream. - The
codeword space 109 comprises suitable circuitry, logic and/or code and may be adapted to store one or more codewords for input during decoding and/or for output during encoding. The codewords stored in the codeword space 108 may facilitate character recognition by theencoding dictionary 105 during a V.42bis encoding process, for example. After a string of characters is encoded, the corresponding codeword may be stored in thecodeword space 107 for further processing, such as outputting the corresponding codeword. - The V.
42bis hardware accelerator 103 comprises suitable circuitry, logic and/or code and may be utilized during a V.42bis encoding and/or decoding for providing necessary operational commands. In one aspect of the invention, the V.42bis hardware accelerator 103 may generate a plurality of operational commands that may be implemented as a single very long instruction word (VLIW). The VLIW may be used by thehardware accelerator 103 to encode a string of characters and/or to decode a codeword in one operational cycle. An operational cycle may be associated with one CPU clock cycle of the data processing device containing theinternal RAM 101 and the V.42bis hardware accelerator 103. - During a V.42bis encoding operation, one or more alphanumeric characters may be obtained from the
character space 107 and may be matched by theencoding dictionary 105 to one or more codewords. If the string of characters is matched with a corresponding codeword within theencoding dictionary 105, the resulting matched codeword may be stored in thecodeword space 109 for further processing, such as outputting the codeword. If theencoding dictionary 105 does not have a matching codeword entry, the V.42bis hardware accelerator 103 may utilize a VLIW to encode the string of characters. In this manner, a new codeword may be generated by the V.42bis hardware accelerator 103. After the new codeword is generated, it may be stored, together with the corresponding string of characters, into theencoding dictionary 105 so that it may be available for any future encoding. Since theencoding dictionary 105 may initially contain only a limited number of basic codewords, after each encoding cycle theencoding dictionary 105 may be adapted to update its codeword content by storing codewords generated by the V.42bis hardware accelerator 103. - During a V.42bis decoding operation, one or more codewords may be obtained from the
codeword space 109 and may be matched by thedecoding dictionary 106 to one or more alphanumeric characters. If the codeword is matched with a corresponding string of characters within thedecoding dictionary 106, the resulting matched string of characters may be stored in thecharacter space 107 for further processing, such as outputting the string of characters. If thedecoding dictionary 106 does not have a matching alphanumeric character entry, the V.42bis hardware accelerator 103 may utilize a VLIW to decode the codeword. In this manner, a new string of characters may be generated by the V.42bis hardware accelerator 103. After the new string of characters is generated, it may be stored, together with the corresponding codeword, into thedecoding dictionary 106 so that it is available for any future decoding. Since thedecoding dictionary 106 may initially contain only a limited number of alphanumeric characters, after each decoding cycle thedecoding dictionary 106 may be adapted to update its alphanumeric characters content by storing strings of characters generated by the V.42bis hardware accelerator 103. -
FIG. 1B is an exemplary tree-basedrepresentation 110 of a dictionary that may be utilized in accordance with an embodiment of the invention. Referring toFIG. 1B , there is illustrated an abstract data structure representation of a dictionary that may be utilized during a V.42bis encoding and/or decoding process, such as theencoding dictionary 105 and thedecoding dictionary 106 ofFIG. 1A . - In one aspect of the invention, a dictionary used in accordance with a V.42bis encoding and/or decoding may contain a set of trees, as shown in
FIG. 1B , each with a root corresponding to a single American Standard Code for Information Interchange (ASCII) character, or a total of 256 possible ASCII characters for each root. A dictionary tree may represent a set of known character strings beginning with one specific character, and each node or point in the tree may represent one set of character strings. For example, the character trees inFIG. 1B may represent character strings AC, AI, AIG, AS, ASP, B, CK, CKL, CKLQ, CD, CDF, D, EG and EGA. - Referring again to
FIG. 1B , characters A, B, C, D and E have no parent represented by a hierarchically higher level in the tree and may, therefore, be referred to as root nodes. Within the root node A, for example, characters C, I and S may be referred to as A's children, or A may be referred to as a parent for nodes C, I and S. Lower level nodes G, P, Q, F and A have no dependent nodes and may be referred to as leaf nodes. Node L has a leaf node Q but has no parent node directly connected to it. Node L may, therefore, be referred to as the brother of node K, both nodes L and K having root node C as a parent. Node K may also be referred to as the youngest child from the children group {K; L} since only node K has a direct connection with the parent node C. - By utilizing a character tree structure, such as the character tree structure of
FIG. 1B , an encoding and/or a decoding dictionary utilized during V.42bis encoding and/or decoding may be adapted to store one or more alphanumeric characters as separate dictionary entries. In addition, corresponding codewords may be associated with and may uniquely identify strings of characters. The codewords may also be stored in such encoding and/or decoding dictionary to facilitate V.42bis processing. In this manner, a codeword may be easily matched with a string of characters, for example in a decoding dictionary, and a string of characters may be easily matched with a corresponding codeword, for example in an encoding dictionary. -
FIG. 1C is a block diagram of anexemplary dictionary structure 120, in accordance with an embodiment of the invention. Referring toFIG. 1C , thedictionary structure 120 may comprise a plurality ofsingle character entries 122 and a plurality ofmultiple character entries 124. Dictionary entries DE0 through DE2 may be reserved for command functions relating to dictionary management and structure. For example, DE0 through DE2 may be utilized if the dictionary is expanded and additional entry space may be required. - In one aspect of the invention, an encoding and/or a decoding dictionary, such as the
encoding dictionary 105 and/or thedecoding dictionary 106 ofFIG. 1A , may be adapted to store N number of codewords, CW0 through CW(N−1), and corresponding N number of dictionary entries, DE3 through DE(N+2). Each codeword CW0 through CW(N-1) may comprise 9, 10 and/or 11 bits, and may be referred to as a dictionary index entry. Each dictionary entry DE3 through DE(N+2) may store one or more alphanumeric characters. For example, the first 256 dictionary entries, or thesingle character entries 122, DE3 through DE258, may each store a single ASCII character. All subsequent dictionary entries, themultiple character entries 124, DE259 through DE(N+2), may each store a string of characters corresponding to a codeword. Both the codeword and the dictionary entries may be represented with a tree diagram, as illustrated inFIG. 1B . -
FIG. 1D is a block diagram of anexemplary dictionary entry 130 within the dictionary structure ofFIG. 1C , in accordance with an embodiment of the invention. Referring toFIG. 1D , thedictionary entry 130 may comprise a total of 32 bits, b0 through b31, for example. - Bits b24 through b31 may be utilized to store an
ASCII character 140 associated with thedictionary entry 130. For example, if thedictionary entry 130 comprises a single character dictionary entry, theASCII character 140 may represent the single character associated with thedictionary entry 130. However, if thedictionary entry 130 comprises a multiple character dictionary entry, theASCII character 140 may represent the first of the characters, within the string of characters, associated with thedictionary entry 140. - Bits b13 through b23 may be utilized to store a “brother of”
indicator 138. The “brother of”indicator 138 may indicate whether theASCII character 140 is a brother of another character node within a dictionary tree node structure. Similarly, bits b2 through b12 may be utilized to store a “child of”indicator 136. The “child of”indicator 136 may indicate whether theASCII character 140 is a child of another character node within a dictionary tree node structure. - Bit b0 may store a
leaf node information 132 and bit b1 may store ayoungest child information 134. Theleaf node information 132 may indicate whether or not theASCII character 140 within thedictionary entry 130 is a leaf node. Similarly, theyoungest child information 134 may indicate whether theASCII character 140 within thedictionary entry 130 is a youngest child node. - By utilizing a dictionary entry structure as illustrated on
FIG. 1D , the tree node structure within a decoding and/or encoding dictionary may be efficiently accessed during a V.42bis decoding and/or encoding process. For example, ifdictionary entry 130 comprises a single character dictionary entry, only bits b24 through b31 may be utilized as theASCII character information 140 may represent the single ASCII character associated with thedictionary entry 130. - If the
dictionary entry 130 comprises a multiple characters dictionary entry, then theASCII character information 140 may identify the first character within the string of characters. The remaining dictionary entry information, the “brother of”indicator 138, the “child of”indicator 136, theyoungest child information 134 and theleaf node information 132, may identify any additional characters within the character node tree of theASCII character 140. In this manner, a leaf node and/or a root node may be identified for theASCII character 140, as well as any nodes located between a leaf node and a root node for theASCII character 140. - In one aspect of the invention, V.42bis encoding and/or decoding may utilize matching a string of characters against an existing string of characters within an encoding and/or a decoding dictionary. A string of characters may be matched with a dictionary entry by first matching their leaf nodes and then each subsequent hierarchically higher level node. If there is a full match, a corresponding codeword, for example, may be obtained.
-
FIG. 2 is a flow diagram of anexemplary method 200 for encoding a string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention. Referring toFIG. 2 , at 201, a single character or a character stream may be obtained from a character space, for example. At 203, the obtained character stream may be referenced with entries in an encoding dictionary. At 205, it may be determined whether the character stream matches any codewords within the encoding dictionary. If the character stream matches a codeword within the encoding dictionary, at 211, the codeword may be outputted and stored in a codeword space for further processing. - If the character stream does not match any characters within the encoding dictionary, at 207, the character stream may be encoded utilizing a very long instruction word (VLIW), for example, from a V.42bis hardware accelerator to generate a corresponding codeword. At 209, the encoding dictionary may be updated with the generated codeword. At 211, the codeword may be outputted and stored in a codeword space for further processing.
-
FIG. 3 is a flow diagram of an exemplary method for decoding an encoded string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention. Referring toFIG. 3 , at 301, a codeword may be obtained from a codeword space, for example. At 303, the obtained codeword may be referenced with entries in a decoding dictionary. At 305, it may be determined whether the codeword matches any strings of characters within the decoding dictionary. If the codeword matches a string of characters, at 311, the string of characters may be outputted and stored in a character space for further processing. - If the codeword does not match any strings of characters within the decoding dictionary, at 307, the codeword may be decoded utilizing a very long instruction word (VLIW), for example, from a V.42bis hardware accelerator to generate a corresponding string of characters. At 309, the decoding dictionary may be updated with the generated string of characters. At 311, the string of characters may be outputted and stored in a character space for further processing.
-
FIG. 4A is a block diagram of an exemplary V.42bis hardware accelerator very long instruction word (VLIW) 400, in accordance with an embodiment of the invention. Referring toFIG. 4A , the V.42bishardware accelerator VLIW 400 may comprise 64 bits and may include a plurality of command instructions used for encoding and/or decoding during V.42bis processing. For example, theVLIW 400 may comprise two branch (BR) commands 401 and 403, two register moving (MOV) commands 405 and 407, a register setting (SET)command 409 and anadditional command 411. Theadditional command 411 may include a memory load (LD) command, a memory store (ST) command or a register compare (CMP) command. - In operation, a VLIW, such as the
VLIW 400, may be generated and utilized by a V.42bis hardware accelerator within a data processing device during V.42bis encoding and/or decoding operations. TheVLIW 400 may comprise several processing commands and may be executed by a central processing unit (CPU), or a digital signal processor (DSP), within the data processing device during a single operational cycle. Even though theVLIW 400 may comprise 64 bits, the invention is not limited in this manner. For example, other command words with different bit-sizes may also be utilized. In addition, a command word utilized by a V.42bis hardware accelerator may include other combinations of operational commands. -
FIG. 4B is a diagram of anexemplary bit arrangement 400 in a LOAD/STORE/COMPARE command within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. Referring toFIG. 4B , a load (LD) or a store (ST) command within a VLIW may comprise 7 bits, whereas a compare (CMP) command may comprise 11 bits. More specifically, an LD or ST command may comprise anindex pointer 405 stored inbit 0 throughbit 3, aregister selection indicator 403 stored inbit 4 and anoperation 401 stored inbits index pointer information 405 may be associated with the following accelerator registers and/or dictionary entries:REGISTER DICTIONARY ENTRY iSelf nextCodeword iNext prevCodeword iLast charToIndex iPrevious iTemp eSelf_brother IncReg eSelf_Child eOld_Brother eOld_Child - The
register selection indicator 403 may refer to eSelf or eOld registers, for example. The eSelf and eOld registers may comprise 32-bit registers within a V.42bis hardware accelerator that may be associated with 32-bit dictionary entries. Theoperation 401 may comprise the following operation codes: -
- NOP, for no operation
- CMP, for compare
- ST, for store
- LD, for load
- The compare command CMP may be utilized to compare two operand values, a
first operand 406 and asecond operand 408.Bit 4 may be left unused andbits bits REGISTERS CONSTANTS iSelf Length iNext maxLength iLast zero iParent one iPrevious seventeen iTemp eSelf_brother eSelf_child eOld_brother eSelf_Char eOld_child -
FIG. 4C is a diagram of anexemplary bit arrangement 410 in a SET command within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. Referring toFIG. 4C , a SET command within a VLIW used for V.42bis encoding and/or decoding may comprise 13 bits. More specifically, the SET command may comprise aleaf flag 420, a youngest flag 418, operation on a child indicator 416, operation on abrother indicator 414 and aregister indicator 412. - In one aspect of the invention, a SET command may be utilized by a V.42bis hardware accelerator to change a value of an encoding and/or decoding dictionary entry to a different value. The
register indicator 412 may indicate whether eSelf or eOld registers may be utilized during the SET operation, where eSelf and eOld may comprise 32-bit registers associated with 32-bit dictionary entries. The youngest flag 418 and theleaf flag 420 may indicate operations associated with a youngest character node and with a leaf character node within a dictionary tree structure. For example, the youngest flag 418 and theleaf flag 420 may include the following operations: None, Set and/or Clear. - The SET operations on a
brother 414 and operations on a child 416 may be associated with a brother and/or a child node, respectively, within a dictionary tree structure. These set operations may comprise the following:OPERATION DEFINITION set2zero set to zero set2iSelf set to content of register iSelf set2iNext set to content of register iNext set2iLast set to content of register iLast set2iParent set to content of register iParent set2iPrevious set to content of register iPrevious set2iTemp set to content of register iTemp set2nextCodeword set content equal to next codeword set2eSelf_brother set to content of register eSelf_brother set2eSelf_child set to content of register eSelf_child set2eOld_brother set to content of register eOld_brother set2eOld_child set to content of register eOld_child set2CharToIndex set to content of register CharToIndex set2nop set to no operation -
FIG. 4D is a diagram of anexemplary bit arrangement 422 in a MOVE command sequence within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. Referring toFIG. 4D , a move (MOV) command within a VLIW used for V.42bis encoding and/or decoding may comprise 9 bits. More specifically, the MOV command may comprise a source indicator 426 stored in the first 5 bits and a destination indicator 424 stored in the next 4 bits. A second MOV command, MOV2, may also be utilized within a VLIW and during V.42bis processing. The second MOV command, MOV2, may also comprise 9 bits storing a source indicator 430 in the first 5 bits and a destination indicator 428 in the next 4 bits. - In one aspect of the invention, a MOV command may be utilized by a V.42bis hardware accelerator to move filed values from one register within a V.42bis hardware accelerator to another register. The destination indicators 424 and 428, as well as the source indicators 426 and 430 may be associated with any of the following registers, referring to dictionary entries, and/or constant values within the V.42bis hardware accelerator:
REGISTER REGISTERS CONTENT TYPE CONSTANTS iSelf 11-bit index zero iNext 11-bit index one iLast 11-bit index three iParent 11-bit index five iPrevious 11-bit index seventeen iTemp 11-bit index thirty-three nextCodeword 11-bit codeword increg 11-bit register eSelf_char 8-bit character eOld_char 8-bit character next_char 8-bit character length 8-bit reference char_Reg 8-bit character eSelf 32-bit entry eOld 32-bit entry status 8-bit reference eSelf_brother 11-bit index eSelf_child 11-bit index eOld_brother 11-bit index eOld_child 11-bit index charT_index 11-bit index maxlength 8-bit reference declength 11-bit reference prevCodeword 11-bit codeword local Cycles 11-bit reference -
FIG. 4E is a diagram of anexemplary bit arrangement 432 in a BRANCH command sequence within the VLIW ofFIG. 4A , in accordance with an embodiment of the invention. Referring toFIG. 4E , a branch (BR) command within a VLIW used for V.42bis encoding and/or decoding may comprise 13 bits. More specifically, a first branch command, BR1, may comprise a program counter value 434, a negatingoperation 436, a first condition 438 and a second condition 440. A second BR command, BR2, may also be utilized within a VLIW and during V.42bis processing. The BR2 may also comprise 13 bits and may store aprogram counter value 442, a negatingoperation 444, a first condition 446 and a second condition 448. - In one aspect of the invention, a BR command may be utilized by a V.42bis hardware accelerator to increase the number of command instructions that may be performed by the V.42bis hardware accelerator within one operational cycle. V.42bis encoding and decoding efficiency may be further increased by including additional BR commands within the same VLIW. For example, the VLIW of
FIG. 4A may utilize two BR commands. - During BR command execution, a V.42bis hardware accelerator may verify whether the two conditions within the BR command are valid. If the two conditions are valid, a specific command instruction may be performed. If either condition is invalid, a default instruction may be performed. Referring again to
FIG. 4E , BR1 and BR2 commands may be performed sequentially. If condition 438 and condition 440 are valid, a specific command instruction may be performed. If either condition 438 or 440 is invalid, a default instruction may be performed. The specific command instruction or the default instruction may be generated by utilizing the program counter value 434. The first branch command BR1 may then be followed by a second branch command BR2 for increased V.42bis efficiency by processing additional command instructions in the same operating cycle. The first condition indicators 438 and 446 may comprise any of the following conditions:CONDITION DEFINITION NONE None CHARS_EMPTY Register CHARS is empty eSelf_youngest Register eSelf has youngest node local cycles_exc Local cycles exceeded decode_mode Current decode mode root_codeword Root codeword codes_empty Register CODES empty length_exceeded Length exceeded eSelf_leaf Register eSelf has leaf node eOld_leaf Register eOld has leaf node eOld_youngest Register eOld has youngest node char_lt Character less than char_eq Character equal to char_gt Character greater than undef_codeword Undefined codeword cmp_eq Whether output of a last compare instruction is equal or not - The second condition indicators 440 and 448 may comprise any of the following conditions:
CONDITION DEFINITION NONE None CHARS_EMPTY Register CHARS is empty eSelf_youngest Register eSelf has youngest node eSelf_notyoungest Register eSelf does not have youngest node -
FIG. 4F is a flow diagram of anexemplary method 450 for processing the BRANCH command sequence ofFIG. 4E , in accordance with an embodiment of the invention. Referring toFIG. 4F , at 452, it may be determined whether a first condition and a second condition within a first branch command, BR1, are met. If the two conditions within BR1 are met, a first processing instruction may be executed at 454. If either of the two conditions are not met, at 456, it may be determined whether a first and a second condition within a second branch command, BR2, are met. If the two conditions within BR2 are met, a second programming instruction may be executed at 458. If either of the two conditions within BR2 are not met, at 460, a default processing instruction may be executed. -
FIG. 5 is a block diagram 500 of an exemplary V.42bis hardware accelerator, in accordance with an embodiment of the invention. The V.42bis hardware accelerator 501 may comprise aprogram memory 505, aninstruction decoder 507, aprogram counter 509, and a plurality of program registers 511, 513, 515 and 517. The V.42bis hardware accelerator 501 may be coupled to aninternal memory 503. Theinternal memory 503 may reside outside the V.42bis hardware accelerator 501 and may comprise an encoding dictionary, a decoding dictionary, a character set and a codeword space, for example, similar to the configuration of theinternal RAM 101 ofFIG. 1A . The V.42bis hardware accelerator 501 and/or theinternal memory 503 may be embedded in an integrated circuit (IC). Both the V.42bis hardware accelerator 501 and theinternal memory 503 may be coupled to aCPU 502. TheCPU 502 may be utilized during V.42bis encoding and/or decoding for added efficiency. - The
program memory 505 comprises suitable circuitry, logic and/or code and may be adapted to store command instructions in the form of very long instruction words (VLIW). Each of the command instructions within a VLIW stored in theprogram memory 505 may be associated with specific command operations that may be utilized during V.42bis encoding/decoding. - In one aspect of the invention, the
program memory 505 may comprise 64 VLIWs, VLIW0 through VLIW63, each 64 bits long. Theprogram memory 505 may be adapted to communicate one or more VLIWs to theinstruction decoder 507. Even though the present invention contemplates a program memory that may utilize 64 VLIWs, 64-bits long, the invention is not limited in this manner. A different number of VLIWs may be utilized, where each VLIW may be of different bit size. In addition, a V.42bis hardware accelerator may utilize a different number of internal registers. - The
instruction decoder 507 comprises suitable circuitry, logic and/or code and may be adapted to decode command instructions within a VLIW communicated from theprogram memory 505. For example, theinstruction decoder 507 may be adapted to decode a branch command (BR), a register moving command (MOV), a register setting command (SET), a memory load command (LD), a memory store command (ST), and a register compare command (CMP). After an individual instruction is decoded by theinstruction decoder 507, the plurality ofregisters 511 through 517 may be utilized to process date from theinternal memory 503 and to move data between the V.42bis hardware accelerator 501 and theinternal memory 503. - For example, a
memory store command 508 may be issued by theinstruction decoder 507 and may be communicated to theinternal memory 503. After thememory store command 508 is issued by theinstruction decoder 507, data may be moved from the program registers 511, 513, 515 and/or 517 and stored in theinternal memory 503. More specifically, a dictionary entry may be updated or a codeword and/or a character space may be updated with a new entry. In another aspect of the invention, a memory load command (LD) 510 may be issued by theinstruction decoder 507 and may cause theinternal memory 503 to communicate data from theinternal memory 503 to the V.42bis hardware accelerator 501 for storage at one of the program registers 511, 513, 515 and/or 517. - The
program counter 509 may comprise suitable circuitry, logic and/or code and may be adapted to sequence the execution of the operational command instructions generated by theinstruction decoder 507 after decoding a VLIW from theprogram memory 505. In one aspect of the invention, theprogram counter 509 may be utilized to monitor branch commands (BR) and/or register compare commands (CMP). - In operation, a VLIW may be communicated from the
program memory 505 to theinstruction decoder 507. Theinstruction decoder 507 may decode the communicated VLIW and may generate a plurality of command instructions. The generated plurality of command instructions may be performed within the V.42bis hardware accelerator 501 within one operational cycle. During a V.42bis encoding operation, the V.42bis hardware accelerator 501 may obtain a string of characters from a character space within theinternal memory 503 and may compare the string of characters with dictionary entries within an encoding dictionary. - If the string of characters is not matched with a dictionary entry, the V.
42bis hardware accelerator 501 may utilize theload command 510 to load the string of characters for encoding. One or more VLIWs from theprogram memory 505 may be decoded by theinstruction decoder 507 to generate a plurality of command instructions used for encoding. The generated command instructions may be applied to the string of characters to generate a codeword. During encoding, the plurality ofregisters 511 through 517 may be utilized, as well as the load and store commands 510 and 508 to exchange information between theinternal memory 503 and the V.42bis hardware accelerator 501 needed for encoding. The encoded stream of characters in the form of a codeword may be communicated back to theinternal memory 503 for further processing. - During a V.42bis decoding operation, the V.
42bis hardware accelerator 501 may obtain a codeword from a codeword space within theinternal memory 503 and may compare the codeword with codeword entries within a decoding dictionary. If the codeword is not matched with a codeword entry, the V.42bis hardware accelerator 501 may utilize theload command 510 to load the codeword for decoding. One or more VLIWs from theprogram memory 505 may be decoded by theinstruction decoder 507 to generate a plurality of command instructions used for decoding. The generated command instructions may be applied to the codeword to generate a string of characters. During decoding, the plurality ofregisters 511 through 517 may be utilized, as well as the load and store commands 510 and 508 to exchange information between theinternal memory 503 and the V.42bis hardware accelerator 501 needed for decoding. The decoded codeword in the form of a string of characters may be communicated back to theinternal memory 503 for further processing. - In a different aspect of the invention, the encoding and decoding operations within the V.
42bis hardware accelerator 501 may utilize the following pseudo code to perform encoding, or compression, and decoding, or decompression:LZW Compression ROUTINE LZW_COMP STRING = get input character WHILE (there are still input character) DO CHARACTER = get input character IF STRING & CHARACTER is in the STABLE THEN STRING = STRING & CHARACTER ELSE output the codeword for STRING add STRING & CHARACTER to the S_TABLE STRING = CHRACTER END IF END WHILE output the codeword for STRING LZW Decompression ROUTINE LZW_DECOMP read NEW_CODE output NEW-CODE OLD_CODE = NEW_CODE WHILE (there are still input codes) Do read NEW_CODE STRING = get translation of NEW_CODE output STRING add (get translation of OLD CODE) & CHARACTER to the S_TABLE OLD_CODE = NEW_CODE END WHILE - Accordingly, aspects of the invention may be realized in hardware, software, firmware or a combination thereof. The invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware, software and firmware may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
- One embodiment of the present invention may be implemented as a board level product, as a single chip, application specific integrated circuit (ASIC), or with varying levels integrated on a single chip with other portions of the system as separate components. The degree of integration of the system will primarily be determined by speed and cost considerations. Because of the sophisticated nature of modern processors, it is possible to utilize a commercially available processor, which may be implemented external to an ASIC implementation of the present system. Alternatively, if the processor is available as an ASIC core or logic block, then the commercially available processor may be implemented as part of an ASIC device with various functions implemented as firmware.
- The invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context may mean, for example, any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form. However, other meanings of computer program within the understanding of those skilled in the art are also contemplated by the present invention.
- While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
Claims (39)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/919,907 US7079054B2 (en) | 2004-06-04 | 2004-08-17 | V.42bis standalone hardware accelerator and architecture of construction |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US57735804P | 2004-06-04 | 2004-06-04 | |
US10/919,907 US7079054B2 (en) | 2004-06-04 | 2004-08-17 | V.42bis standalone hardware accelerator and architecture of construction |
Publications (2)
Publication Number | Publication Date |
---|---|
US20050270188A1 true US20050270188A1 (en) | 2005-12-08 |
US7079054B2 US7079054B2 (en) | 2006-07-18 |
Family
ID=35447081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/919,907 Active 2024-11-03 US7079054B2 (en) | 2004-06-04 | 2004-08-17 | V.42bis standalone hardware accelerator and architecture of construction |
Country Status (1)
Country | Link |
---|---|
US (1) | US7079054B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070002780A1 (en) * | 2005-06-30 | 2007-01-04 | Nokia Corporation | Signal message compression |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11791838B2 (en) | 2021-01-15 | 2023-10-17 | Samsung Electronics Co., Ltd. | Near-storage acceleration of dictionary decoding |
Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5151697A (en) * | 1990-10-15 | 1992-09-29 | Board Of Regents Of The University Of Washington | Data structure management tagging system |
US5396228A (en) * | 1992-01-16 | 1995-03-07 | Mobile Telecommunications Technologies | Methods and apparatus for compressing and decompressing paging data |
US5412384A (en) * | 1993-04-16 | 1995-05-02 | International Business Machines Corporation | Method and system for adaptively building a static Ziv-Lempel dictionary for database compression |
US5627533A (en) * | 1994-08-05 | 1997-05-06 | Hayes Microcomputer Products, Inc. | Adjusting encoding table size and memory allocation for data compression in response to input data |
US5673042A (en) * | 1994-03-16 | 1997-09-30 | Fujitsu Limited | Method of and an apparatus for compressing/decompressing data |
US5692139A (en) * | 1988-01-11 | 1997-11-25 | North American Philips Corporation, Signetics Div. | VLIW processing device including improved memory for avoiding collisions without an excessive number of ports |
US5737732A (en) * | 1992-07-06 | 1998-04-07 | 1St Desk Systems, Inc. | Enhanced metatree data structure for storage indexing and retrieval of information |
US5754556A (en) * | 1996-07-18 | 1998-05-19 | Teradyne, Inc. | Semiconductor memory tester with hardware accelerators |
US5951623A (en) * | 1996-08-06 | 1999-09-14 | Reynar; Jeffrey C. | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
US6026478A (en) * | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6104323A (en) * | 1997-12-20 | 2000-08-15 | Daewoo Electronics Co., Ltd. | Data compression apparatus for compensating a deviation of a compression rate |
US6115716A (en) * | 1997-03-14 | 2000-09-05 | Nokia Telecommunications Oy | Method for implementing an associative memory based on a digital trie structure |
US6359548B1 (en) * | 2000-10-16 | 2002-03-19 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings |
US6404362B1 (en) * | 1999-09-21 | 2002-06-11 | Unisys Corporation | Method and apparatus for reducing the time required for decompressing compressed data |
US6597812B1 (en) * | 1999-05-28 | 2003-07-22 | Realtime Data, Llc | System and method for lossless data compression and decompression |
US6750791B1 (en) * | 2003-02-07 | 2004-06-15 | Nokia Corporation | Method and device for text data compression |
US6779101B1 (en) * | 2000-03-07 | 2004-08-17 | University Of Washington | Method and apparatus for processing compressed VLIW subinstruction opcodes |
US6859870B1 (en) * | 2000-03-07 | 2005-02-22 | University Of Washington | Method and apparatus for compressing VLIW instruction and sharing subinstructions |
US6892292B2 (en) * | 2002-01-09 | 2005-05-10 | Nec Corporation | Apparatus for one-cycle decompression of compressed data and methods of operation thereof |
US6903668B1 (en) * | 2003-11-18 | 2005-06-07 | M-Systems Flash Disk Pioneers Ltd. | Decompression accelerator for flash memory |
US6927706B2 (en) * | 2003-02-24 | 2005-08-09 | Oki Electric Industrial, Co., Ltd | Data compressing apparatus and data decoding apparatus |
US6961011B2 (en) * | 2001-08-27 | 2005-11-01 | Freescale Semiconductor, Inc. | Data compression system |
-
2004
- 2004-08-17 US US10/919,907 patent/US7079054B2/en active Active
Patent Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5692139A (en) * | 1988-01-11 | 1997-11-25 | North American Philips Corporation, Signetics Div. | VLIW processing device including improved memory for avoiding collisions without an excessive number of ports |
US5151697A (en) * | 1990-10-15 | 1992-09-29 | Board Of Regents Of The University Of Washington | Data structure management tagging system |
US5396228A (en) * | 1992-01-16 | 1995-03-07 | Mobile Telecommunications Technologies | Methods and apparatus for compressing and decompressing paging data |
US5737732A (en) * | 1992-07-06 | 1998-04-07 | 1St Desk Systems, Inc. | Enhanced metatree data structure for storage indexing and retrieval of information |
US5412384A (en) * | 1993-04-16 | 1995-05-02 | International Business Machines Corporation | Method and system for adaptively building a static Ziv-Lempel dictionary for database compression |
US5673042A (en) * | 1994-03-16 | 1997-09-30 | Fujitsu Limited | Method of and an apparatus for compressing/decompressing data |
US5627533A (en) * | 1994-08-05 | 1997-05-06 | Hayes Microcomputer Products, Inc. | Adjusting encoding table size and memory allocation for data compression in response to input data |
US5754556A (en) * | 1996-07-18 | 1998-05-19 | Teradyne, Inc. | Semiconductor memory tester with hardware accelerators |
US5951623A (en) * | 1996-08-06 | 1999-09-14 | Reynar; Jeffrey C. | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
US6115716A (en) * | 1997-03-14 | 2000-09-05 | Nokia Telecommunications Oy | Method for implementing an associative memory based on a digital trie structure |
US6026478A (en) * | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6104323A (en) * | 1997-12-20 | 2000-08-15 | Daewoo Electronics Co., Ltd. | Data compression apparatus for compensating a deviation of a compression rate |
US6597812B1 (en) * | 1999-05-28 | 2003-07-22 | Realtime Data, Llc | System and method for lossless data compression and decompression |
US6404362B1 (en) * | 1999-09-21 | 2002-06-11 | Unisys Corporation | Method and apparatus for reducing the time required for decompressing compressed data |
US6779101B1 (en) * | 2000-03-07 | 2004-08-17 | University Of Washington | Method and apparatus for processing compressed VLIW subinstruction opcodes |
US6859870B1 (en) * | 2000-03-07 | 2005-02-22 | University Of Washington | Method and apparatus for compressing VLIW instruction and sharing subinstructions |
US6359548B1 (en) * | 2000-10-16 | 2002-03-19 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings |
US6961011B2 (en) * | 2001-08-27 | 2005-11-01 | Freescale Semiconductor, Inc. | Data compression system |
US6892292B2 (en) * | 2002-01-09 | 2005-05-10 | Nec Corporation | Apparatus for one-cycle decompression of compressed data and methods of operation thereof |
US6750791B1 (en) * | 2003-02-07 | 2004-06-15 | Nokia Corporation | Method and device for text data compression |
US6927706B2 (en) * | 2003-02-24 | 2005-08-09 | Oki Electric Industrial, Co., Ltd | Data compressing apparatus and data decoding apparatus |
US6903668B1 (en) * | 2003-11-18 | 2005-06-07 | M-Systems Flash Disk Pioneers Ltd. | Decompression accelerator for flash memory |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070002780A1 (en) * | 2005-06-30 | 2007-01-04 | Nokia Corporation | Signal message compression |
US7882263B2 (en) * | 2005-06-30 | 2011-02-01 | Nokia Corporation | Signal message compression |
Also Published As
Publication number | Publication date |
---|---|
US7079054B2 (en) | 2006-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8291150B2 (en) | Table device, variable length coding apparatus, variable length decoding apparatus, and variable length coding and decoding apparatus | |
US6563439B1 (en) | Method of performing Huffman decoding | |
US20030212879A1 (en) | Method and apparatus for object code compression and decompression for computer systems | |
US6621429B2 (en) | Huffman decoding method and decoder, huffman decoding table, method of preparing the table, and storage media | |
CN109889205B (en) | Coding method and system, decoding method and system, coding and decoding method and system | |
US8106799B1 (en) | Data compression and decompression using parallel processing | |
CN104904123A (en) | High bandwidth compression to encoded data streams | |
US8542137B2 (en) | Decoding encoded data | |
US5617089A (en) | Huffman code decoding circuit | |
US7523294B2 (en) | Maintaining original per-block number of instructions by inserting NOPs among compressed instructions in compressed block of length compressed by predetermined ratio | |
US7002494B2 (en) | Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels | |
US7079054B2 (en) | V.42bis standalone hardware accelerator and architecture of construction | |
JP4930435B2 (en) | Variable length code decoding apparatus, variable length code decoding method and program | |
US6661358B1 (en) | Decoding variable length codes without conditional branching | |
JPH05183443A (en) | Code conversion method | |
US20060101484A1 (en) | Decoding apparatus and encoding apparatus | |
WO2007108395A1 (en) | Variable-length code decoder and decoding method | |
EP1378999B1 (en) | Code compression process, system and computer program product therefor | |
CN110233627B (en) | Hardware compression system and method based on running water | |
US5233695A (en) | Microprocessor with a reduced size microprogram | |
US20070118722A1 (en) | Method for compressing instruction codes | |
JP3350385B2 (en) | Code generation method and coding method | |
JP2537551B2 (en) | Variable length code decoding circuit | |
US20060015704A1 (en) | Operation apparatus and instruction code executing method | |
JP3054787B2 (en) | Variable length code decoding device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: BROADCOM CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHU, HON FAI;REEL/FRAME:015310/0436 Effective date: 20040812 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001 Effective date: 20160201 Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001 Effective date: 20160201 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001 Effective date: 20170120 Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001 Effective date: 20170120 |
|
AS | Assignment |
Owner name: BROADCOM CORPORATION, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041712/0001 Effective date: 20170119 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553) Year of fee payment: 12 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE Free format text: MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:047196/0097 Effective date: 20180509 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0097. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:048555/0510 Effective date: 20180905 |