Patent ID: 7898441

Claim:
Apparatus that transcodes an n code unit block of UTF-8 input data in the form of eight parallel n-bit segments of u 8 -indexed bit streams u 8 bit 0 through u 8 bit 7 into UTF-16 output data in the form of sixteen parallel n-bit segments of u 16 -indexed bit streams u 16 bit 0 through u 16 bit 15 where n is 4 or more, which apparatus comprises: a UTF-8 Input Register File, responsive to the UTF-8 input data, which stores parallel n-bit segments each of the input data streams u 8 bit 0 through u 8 bit 7 ; responsive to the input data in the UTF-8 Input Register File, a UTF-8 Byte Classification Module computes parallel bit stream segments which are property stream segments that classify the code units at each position, and stores the computed parallel bit streams in a Control Register File; responsive to the input data in the UTF-8 Input Register File and the computed parallel bit streams in the Control Register File, a UTF-16 Bit Decoder Module computes initial values of UTF-16 stream segments in u 8 -indexed form, and stores them in a UTF-16 Output Register File; responsive to the computed parallel bit streams stored in the Control Register File, a UTF-16 Deletion Control Module: (a) computes deletion information, and stores the deletion information in the Control Register File, and (b) computes a first number equal to a number of UTF-8 code units processed and a second number equal to a number of transcoded UTF-16 code units and stores them in a Code Unit Count Register File; and responsive to the initial values of UTF-16 stream segments in u 8 -indexed form stored in the UTF-16 Output Register File and the deletion information stored in the Control Register File, a UTF-16 Stream Compression Module converts the initial values of UTF-16 stream segments in u 8 -indexed form stored in the UTF-16 Output Register File to u 16 -indexed form; wherein the UTF-8 Input Register File, the Control Register File, and the UTF-16 Output Register File each comprises a set of bit registers that store parallel n-bit segments of bit stream data; and the Code Unit Count Register File comprises two registers which store the first integer and the second number, respectively.