# US 12,763,939 B2 · Performing scrambling and/or descrambling on parallel computing architectures

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,763,939 B2
- Document ID: US12763939B2
- Status: Granted
- Kind: B2
- Application number: 18/143,335
- Filed: 2023-05-04
- Published: 2023-09-28
- Granted: 2026-10-13
- Earliest claimed: 2019-09-03
- Assignees: NVIDIA Corporation
- Applicants: NVIDIA Corporation
- Inventors: Andrea Miele
- Web page: https://patentgrep.com/patent/US12763939B2

## CPC

- H04L 9/0866: {involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics}
- G06F 7/584: {using finite field arithmetic, e.g. using a linear feedback shift register}
- H04N 21/8352: involving content or source identification data, e.g. Unique Material Identifier [UMID]
- H04W 12/03: Protecting confidentiality, e.g. by encryption
- H04W 84/042: {Public Land Mobile systems, e.g. cellular systems}
- H04W 88/08: Access point devices
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Apparatuses, systems, and techniques to descramble or scramble data use a graphics processing unit (GPU) to perform descrambling. For example, in at least one embodiment, generation of a descrambling sequence is distributed among GPU threads for parallel calculation of the descrambling sequence and/or descrambling is distributed among GPU threads for descrambling.

## Claims

### Claim 1

A method, comprising:
generating a descrambling sequence derived from one or more many-to-one Linear Feedback Shift Registers (LFSRs) based, at least in part, on two or more threads of one or more parallel processing units (PPUs) operating on two or more one-to-many LFSRs that are advanced through a number of cycles that differ across the two or more threads with outputs of the two or more one-to-many LFSRs provided as inputs to the one or more many-to-one LFSRs.

### Claim 2 (depends on 1)

The method of claim 1, wherein the descrambling sequence is a pseudorandom bit sequence that is a function of a user identifier of a user device having transmitted an input data sequence and of a base station identifier of a base station having received the input data sequence.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
storing the descrambling sequence as a stored descrambling sequence in a shared memory of a graphics processing unit (GPU) in association with a sequence user identifier and a sequence base station identifier;
determining the user identifier and the base station identifier for a subsequent input data sequence;
determining if the user identifier is equal to the sequence user identifier;
determining if the base station identifier is equal to the sequence base station identifier; and
if the user identifier is equal to the sequence user identifier and the base station identifier is equal to the sequence base station identifier, using the stored descrambling sequence for descrambling the subsequent input data sequence.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
storing the descrambling sequence in a shared memory of a graphics processing unit (GPU);
determining a size in bits of the descrambling sequence;
determining a data width of threads; and
determining a number of allocated threads allocated to generate the descrambling sequence based on the size in bits of the descrambling sequence and the data width of the threads, and the number of allocated threads being sufficient to descramble in parallel at least as many input data values as the size in bits of the descrambling sequence.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
storing the descrambling sequence in a shared memory of a graphics processing unit (GPU);
determining a size in bits of the descrambling sequence;
determining a data width of threads;
determining a number of allocated threads of a plurality of blocks of threads allocated to generate the descrambling sequence based on the size in bits of the descrambling sequence and the data width of the threads, and the number of allocated threads being sufficient to descramble in parallel at least as many input data values as the size in bits of the descrambling sequence;
reading into thread local memory an array of input data values;
reading a descrambling segment from the shared memory; and
descrambling the array of input data values using the descrambling segment.

### Claim 6 (depends on 1)

The method of claim 1, wherein a graphics processing unit (GPU) comprising the one or more PPUs is an element of a cellular network base station.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
obtaining an initialization value for a first cycling process from a first generator polynomial for generating the descrambling sequence, wherein cycles of the first cycling process generate the descrambling sequence and the first generator polynomial corresponds to a many-to-one linear feedback shift register (LFSR) of the one or more many-to-one LFSRs with a first feedback pattern in which a plurality of register values are feedback to a single input of the many-to-one LFSR;
determining a second cycling process represented by a one-to-many LFSR of the two or more one-to-many LF SRs, converting from the first feedback pattern to a second feedback pattern, represented by a second generator polynomial, in which a single input of the one-to-many LFSR is fed back to a plurality of stages of the one-to-many LFSR according to the second generator polynomial;
initializing a plurality of threads of a graphics processing unit (GPU) to process at least a portion of the second cycling process, wherein the plurality of threads include the two or more threads;
initializing a first thread of the plurality of threads to operate a first thread LFSR, wherein the first thread LFSR is initialized to a first position in the descrambling sequence with polynomial multiplication modulo the second generator polynomial and a first monomial with a first degree corresponding to the first position;
initializing a second thread of the plurality of threads to operate a second thread LFSR, wherein the second thread LFSR is initialized to a second position in the descrambling sequence with polynomial multiplication modulo the second generator polynomial and a second monomial with a second degree corresponding to the second position, wherein the first position and the second position are distinct; and
storing a first output of the first thread and a second output of the second thread as at least a portion of the descrambling sequence in a shared memory of the GPU.

### Claim 8

A processor, comprising:
one or more circuits to generate a descrambling sequence derived from one or more many-to-one Linear Feedback Shift Registers (LFSRs) based, at least in part, on two or more threads of one or more parallel processing units (PPUs) operating on two or more one-to-many LFSRs that are advanced through a number of cycles that differ across the two or more threads with outputs of the two or more one-to-many LFSRs provided as inputs to the one or more many-to-one LFSRs.

### Claim 9 (depends on 8)

The processor of claim 8, wherein the one or more circuits are to generate the descrambling sequence using linear feedback shift registers (LFSRs).

### Claim 10 (depends on 8)

The processor of claim 8, wherein descrambling sequence is defined by a generator polynomial and a Fibonacci linear feedback shift register (LFSR), wherein the one or more circuits are to generate the descrambling sequence using a plurality of threads of a graphics processing unit (GPU) by operating each thread of the plurality of threads to generate a descrambling segment of the descrambling sequence.

### Claim 11 (depends on 8)

The processor of claim 8, wherein the one or more circuits are to use the descrambling sequence by XOR-ing an output of a first linear feedback shift register (LFSR) and an output of a second linear feedback shift register (LFSR).

### Claim 12 (depends on 8)

The processor of claim 8, wherein the one or more circuits are to perform the descrambling sequence using the two or more threads using a bitwise XOR on a first Fibonacci linear feedback shift register (LFSR) output and a second Fibonacci linear feedback shift register (LFSR) output.

### Claim 13 (depends on 8)

The processor of claim 8, wherein the one or more circuits are to perform cycle advancement for linear feedback shift registers (LFSRs) on a plurality of threads of a graphics processing unit (GPU) in parallel, wherein each descrambling segment of the descrambling sequence is output by at least one thread of the plurality of threads.

### Claim 14

A computer readable medium having stored thereon a set of instructions, which if performed by one or more processors, cause the one or more processors to generate a descrambling sequence derived from one or more many-to-one Linear Feedback Shift Registers (LFSRs) based, at least in part, on two or more threads of one or more parallel processing units (PPUs) operating on two or more one-to-many LFSRs that are advanced through a number of cycles that differ across the two or more threads with outputs of the two or more one-to-many LFSRs provided as inputs to the one or more many-to-one LFSRs.

### Claim 15 (depends on 14)

The computer readable medium of claim 14, wherein the descrambling sequence is 1024 bits, a plurality of thread hardware units comprises 32 thread hardware units, and one or more descrambling segments are 32 bits wide, and wherein a first array location and a second array location are word-length memory locations in a shared memory.

### Claim 16 (depends on 14)

The computer readable medium of claim 14, wherein the descrambling sequence is a pseudorandom bit sequence that is a function of a user identifier of a user device having transmitted an input data sequence and of a base station identifier of a base station having received the input data sequence.

### Claim 17 (depends on 14)

The computer readable medium of claim 14, wherein the set of instructions which if performed by the one or more processors, cause the one or more processors to:
cause a global memory of a graphics processing unit (GPU) to be accessible to a first thread hardware unit and a second thread hardware unit; and
a sequence identifier storage of the global memory to store a sequence user identifier and a sequence base station identifier associated with an array of descrambling segments, usable to match a user identifier of a subsequent input data sequence with the sequence user identifier and a base station identifier of the subsequent input data sequence with the sequence base station identifier, wherein if the user identifier is equal to the sequence user identifier and the base station identifier is equal to the sequence base station identifier, the array of descrambling segments is provided for descrambling the subsequent input data sequence.

### Claim 18 (depends on 14)

The computer readable medium of claim 14, wherein the set of instructions which if performed by the one or more processors, cause the one or more processors to allocate the two or more threads to generate the descrambling sequence.

### Claim 19 (depends on 14)

The computer readable medium of claim 14, wherein the set of instructions which if performed by the one or more processors, cause the one or more processors to allocate the two or more threads to generate the descrambling sequence based on a size in bits of the descrambling sequence, a data width of the allocated two or more threads, and/or a number of allocated threads being sufficient to generate in parallel the bits of the descrambling sequence.

### Claim 20

A system, comprising:
one or more processors to generate a descrambling sequence derived from one or more many-to-one Linear Feedback Shift Registers (LFSRs) based, at least in part, on two or more threads of one or more parallel processing units (PPUs) operating on two or more one-to-many LFSRs that are advanced through a number of cycles that differ across the two or more threads with outputs of the two or more one-to-many LFSRs provided as inputs to the one or more many-to-one LFSRs.

### Claim 21 (depends on 20)

The system of claim 20, wherein the generated descrambling sequence comprises a sequence of bits to be used in XOR to descramble input data.

### Claim 22 (depends on 20)

The system of claim 20, wherein the one or more processors are to cause each thread of a graphics processing unit (GPU) to calculate a different set of bits of the descrambling sequence.

### Claim 23 (depends on 20)

The system of claim 20, wherein the one or more processors are to derive the descrambling sequence from one or more Fibonacci linear feedback shift registers (LFSRs) that are generated using Galois LFSRs using a plurality of threads of a graphics processing unit (GPU).

### Claim 24 (depends on 20)

The system of claim 20, wherein the two or more threads are a part of a graphics processing unit (GPU) of a software-defined radio access network (RAN) interface.

### Claim 25 (depends on 20)

The system of claim 20, wherein the descrambling sequence is a pseudorandom bit sequence that is a function of a user identifier of a user device having transmitted an input data sequence and of a base station identifier of a base station having received the input data sequence.
