US20050270188A1 - V.42bis standalone hardware accelerator and architecture of construction - Google Patents

V.42bis standalone hardware accelerator and architecture of construction Download PDF

Info

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
Application number
US10/919,907
Other versions
US7079054B2 (en
Inventor
Hon Chu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Priority to US10/919,907 priority Critical patent/US7079054B2/en
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHU, HON FAI
Publication of US20050270188A1 publication Critical patent/US20050270188A1/en
Application granted granted Critical
Publication of US7079054B2 publication Critical patent/US7079054B2/en
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: BROADCOM CORPORATION
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROADCOM CORPORATION
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Assigned to AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED reassignment AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED MERGER (SEE DOCUMENT FOR DETAILS). Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Assigned to AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED reassignment AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0097. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; 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
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating 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

Methods and systems for on-chip processing of data are disclosed. 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. At least a portion of the stored data processing commands may be decoded. The decoded portion of the stored data processing commands may be sequenced. The first string of characters may be acquired from a character space. The acquired first string of characters may be matched with at least one existing codeword.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS/INCORPORATION BY REFERENCE
  • 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.
  • FIELD OF THE INVENTION
  • 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.
  • BACKGROUND OF THE INVENTION
  • 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.
  • BRIEF SUMMARY OF THE INVENTION
  • 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.
  • BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE 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 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.
  • 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.
  • DETAILED DESCRIPTION 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 of internal memory organization 100 utilizing V.42bis hardware accelerator, in accordance with an embodiment of the invention. Referring to FIG. 1A, 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. During a V.42bis decoding process, 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. After a codeword is decoded, 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. 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 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.
  • During a V.42bis encoding operation, 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. 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.
  • During a V.42bis decoding operation, 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. After the new string of characters is generated, it may be stored, together with the corresponding codeword, into the decoding dictionary 106 so that it is available for any future decoding. Since 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. Referring to 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.
  • 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 in FIG. 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 an exemplary dictionary structure 120, in accordance with an embodiment of the invention. Referring to FIG. 1C, the dictionary structure 120 may comprise a plurality of single character entries 122 and a plurality of multiple 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 the decoding dictionary 106 of FIG. 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 the single character entries 122, DE3 through DE258, may each store a single ASCII character. All subsequent dictionary entries, the multiple 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 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. Referring to FIG. 1D, the dictionary 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 the dictionary entry 130. For example, if the dictionary entry 130 comprises a single character dictionary entry, the ASCII character 140 may represent the single character associated with the dictionary entry 130. However, if 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 b13 through b23 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. Similarly, bits b2 through b12 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 b0 may store a leaf node information 132 and bit b1 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. Similarly, the youngest child information 134 may indicate whether the ASCII character 140 within the dictionary 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, if dictionary entry 130 comprises a single character dictionary entry, only bits b24 through b31 may be utilized as the ASCII character information 140 may represent the single ASCII character associated with the dictionary entry 130.
  • If the dictionary entry 130 comprises a multiple characters dictionary entry, then 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. In this manner, 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.
  • 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 an exemplary method 200 for encoding a string of characters utilizing a V.42bis hardware accelerator, in accordance with an embodiment of the invention. Referring to FIG. 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 to FIG. 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 to FIG. 4A, 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. For example, 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.
  • 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. 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. Even though 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. 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 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. Referring to FIG. 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 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:
      • 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 a second operand 408. Bit 4 may be left unused and bits 5 and 6 may comprise a command. For example, 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. Referring to FIG. 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 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.
  • 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 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 register CharToIndex
    set2nop set to no operation
  • 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. Referring to FIG. 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 an exemplary bit arrangement 432 in a BRANCH command sequence within the VLIW of FIG. 4A, in accordance with an embodiment of the invention. Referring to FIG. 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 negating operation 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 a program counter value 442, a negating operation 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 an exemplary method 450 for processing the BRANCH command sequence of FIG. 4E, in accordance with an embodiment of the invention. Referring to FIG. 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 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). 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.
  • In one aspect of the invention, the program memory 505 may comprise 64 VLIWs, VLIW0 through VLIW63, each 64 bits long. The program memory 505 may be adapted to communicate one or more VLIWs to the instruction 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 the program memory 505. For example, 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). After an individual instruction is decoded by the instruction decoder 507, the plurality of registers 511 through 517 may be utilized to process date from the internal memory 503 and to move data between the V.42bis hardware accelerator 501 and the internal memory 503.
  • For example, a memory store command 508 may be issued by the instruction decoder 507 and may be communicated to the internal memory 503. After the memory store command 508 is issued by the instruction decoder 507, data may be moved from the program registers 511, 513, 515 and/or 517 and stored in the internal 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 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.
  • 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. In one aspect of the invention, the program 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 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. During a V.42bis encoding operation, 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.
  • If the string of characters is not matched with a dictionary entry, 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. During encoding, 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.
  • During a V.42bis decoding operation, 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. During decoding, 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.
  • 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)

1. A method for on-chip processing of data, the method comprising:
generating a plurality of data processing commands for data compression; and
encoding a first string of characters in one operating cycle utilizing said generated plurality of data processing commands for data compression.
2. The method according to claim 1, wherein said plurality of data processing commands 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 a register compare command.
3. The method according to claim 1, further comprising storing said generated plurality of data processing commands.
4. The method according to claim 3, further comprising decoding at least a portion of said stored data processing commands.
5. The method according to claim 4, further comprising sequencing said decoded at least a portion of said stored data processing commands.
6. The method according to claim 1, further comprising acquiring said first string of characters from a character space.
7. The method according to claim 6, further comprising matching said acquired first string of characters with at least one existing codeword.
8. The method according to claim 7, further comprising storing said matched at least one existing codeword into a codeword space.
9. The method according to claim 7, further comprising generating a new codeword corresponding to said acquired first string of characters, if said acquired first string of characters does not match said at least one existing codeword.
10. The method according to claim 1, further comprising generating a plurality of data processing commands for data decompression.
11. The method according to claim 10, further comprising decoding at least one codeword in one operating cycle utilizing said generated plurality of data processing commands for data decompression.
12. The method according to claim 11, further comprising matching said at least one codeword with a second string of characters.
13. The method according to claim 11, further comprising storing said matched second string of characters into a character space.
14. A machine-readable storage having stored thereon, a computer program having at least one code section for on-chip processing of data, the at least one code section being executable by a machine for causing the machine to perform steps comprising:
generating a plurality of data processing commands for data compression; and
encoding a first string of characters in one operating cycle utilizing said generated plurality of data processing commands for data compression.
15. The machine-readable storage according to claim 14, wherein said plurality of data processing commands 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 a register compare command.
16. The machine-readable storage according to claim 14, further comprising code for storing said generated plurality of data processing commands.
17. The machine-readable storage according to claim 16, further comprising code for decoding at least a portion of said stored data processing commands.
18. The machine-readable storage according to claim 17, further comprising sequencing said decoded at least a portion of said stored data processing commands.
19. The machine-readable storage according to claim 14, further comprising code for acquiring said first string of characters from a character space.
20. The machine-readable storage according to claim 29, further comprising code for matching said acquired first string of characters with at least one existing codeword.
21. The machine-readable storage according to claim 20, further comprising code for storing said matched at least one existing codeword into a codeword space.
22. The machine-readable storage according to claim 20, further comprising code for generating a new codeword corresponding to said acquired first string of characters, if said acquired first string of characters does not match said at least one existing codeword.
23. The machine-readable storage according to claim 14, further comprising code for generating a plurality of data processing commands for data decompression.
24. The machine-readable storage according to claim 23, further comprising code for decoding at least one codeword in one operating cycle utilizing said generated plurality of data processing commands for data decompression.
25. The machine-readable storage according to claim 24, further comprising code for matching said at least one codeword with a second string of characters.
26. The machine-readable storage according to claim 25, further comprising code for storing said matched second string of characters into a character space.
27. A system for on-chip processing of data, the system comprising:
an accelerator that generates a plurality of data processing commands for data compression; and
said accelerator encodes a first string of characters in one operating cycle utilizing said generated plurality of data processing commands for data compression.
28. The system according to claim 27, wherein said plurality of data processing commands 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 a register compare command.
29. The system according to claim 27, wherein said accelerator stores said generated plurality of data processing commands.
30. The system according to claim 29, wherein said accelerator decodes at least a portion of said stored data processing commands.
31. The system according to claim 30, wherein said accelerator sequences said decoded at least a portion of said stored data processing commands.
32. The system according to claim 27, wherein said accelerator acquires said first string of characters from a character space.
33. The system according to claim 32, wherein said accelerator matches said acquired first string of characters with at least one existing codeword.
34. The system according to claim 33, wherein said accelerator stores said matched at least one existing codeword into a codeword space.
35. The system according to claim 33, wherein said accelerator generates a new codeword corresponding to said acquired first string of characters, if said acquired first string of characters does not match said at least one existing codeword.
36. The system according to claim 27, wherein said accelerator generates a plurality of data processing commands for data decompression.
37. The system according to claim 36, wherein said accelerator decodes at least one codeword in one operating cycle utilizing said generated plurality of data processing commands for data decompression.
38. The system according to claim 37, wherein said accelerator matches said at least one codeword with a second string of characters.
39. The system according to claim 38, wherein said accelerator stores said matched second string of characters into a character space.
US10/919,907 2004-06-04 2004-08-17 V.42bis standalone hardware accelerator and architecture of construction Active 2024-11-03 US7079054B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (22)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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