9851948

Method for Implementing Precomputation of Large Number in Embedded System

PublishedDecember 26, 2017
Assigneenot available in USPTO data we have
Technical Abstract

Patent Claims
15 claims

Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.

Claim 1

Original Legal Text

1. A method for realizing pre-computation for a large number in an embedded system, comprising: SA1 comprising: reading data in a first register, and writing the data which is read into a first random access memory; reading data in a second register, and writing the data which is read into a second random access memory; wherein the first register is configured to store a first data, the second register is configured to store a second data, a sixth register is configured to store a third data, a relationship of the second data to the third data is defined as R=2 n , R represents the second data, n represents the third data, and the third data is an integer; SA2 comprising: invoking a module for modulo to perform an operation on the data in the first random access memory and the data in the second random access memory, and writing a result which is obtained from the operation into a third register and a fourth register respectively; wherein the module for modulo is configured to perform modulo operation with the data in the second random access memory mod the data in the first random access memory; SA3 comprising: reading data in the third register, and writing the data which is read into a third random access memory and a fourth random access memory respectively; reading data in the first register, and writing the data which is read into a fifth random access memory; SA4 comprising: invoking a modulo addition module to perform an operation on the data in the third random access memory, the data in the fourth random access memory and the data in the fifth random access memory, and updating the data in the third register with a result which is obtained from the operation; wherein the modulo addition module is configured to perform modulo addition operation with the data in the third random access memory plus the data in the fourth random access memory to obtain a sum, and the sum mod the data in the fifth random access memory; SA5 comprising: reading data at the least significant bit in the sixth register according to data in a fifth register, and making the data which is read as data at current bit, wherein an initial value of the data in the fifth register is a preset value; SA6 comprising: determining a value of the data at the current bit, executing step SA7 if the value of the data at the current bit is 0; executing step SA10 if the value of the data at the current bit is 1; SA7 comprising: reading data in the third register, and writing the data which is read into a sixth random access memory and a seventh random access memory respectively; reading data in the first register, and writing the data which is read into an eighth random access memory; SA8 comprising: invoking a Montgomery modulo multiplier to perform modulo multiplication on the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory, and updating the data in the third register with a result which is obtained from the modulo multiplication; wherein the Montgomery modulo multiplier is configured to perform modulo multiplication on the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory as a first input parameter, a second input parameter and a third input parameter respectively; SA9 comprising: updating data in the fifth register, and according to the updated data in the fifth register, reading data which is one-bit higher than the data at the current bit from the sixth register, and making the data which is read as updated data at the current bit, and returning to step SA6; SA10 comprising: reading data in the fourth register, and updating the data in the sixth random access memory with the read data; reading data in the third register, and updating the data in the seventh random access memory with the read data; reading data in the first register, and updating the data in the eighth random access memory with the read data; SA11 comprising: invoking a Montgomery modulo multiplier to perform modulo multiplication on the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory, and updating the data in the fourth register with a result which is obtained from the modulo multiplication; SA12 comprising: determining whether data at the current bit is data at the most significant bit in the sixth register, executing step SA13 if the data at the current bit is the data at the most significant bit in the sixth register; returning to step SA7 if the data at the current bit is not the data at the most significant bit in the sixth register; and SA13 comprising: outputting the data in the fourth register.

Plain English Translation

An embedded system pre-computes large numbers using these steps: Load initial data (first data, second data where second data = 2^n, and n is an integer) from registers into RAM. Calculate the modulus of the second data mod first data and store in registers. Move the modulus result and the first data to RAM. Calculate (modulus result + modulus result) mod first data using a modulo addition module, updating a register with the result. Read bits of 'n' (third data) one by one. If the current bit is 0, perform Montgomery modular multiplication of the current result with itself, modulo the first data. If the current bit is 1, update intermediate results with data from a previous step, and then perform Montgomery modular multiplication. Repeat for each bit of 'n', and output the final result.

Claim 2

Original Legal Text

2. The method according to claim 1 , wherein updating data in the fifth register comprises: increasing a preset step to the data in the fifth register, and making a result as the updated data in the fifth register.

Plain English Translation

The method for pre-computation in an embedded system as described, further defines the process of advancing to the next bit of 'n'. This advancement is achieved by incrementing a bit counter. The updated bit counter value then points to the next bit to be processed in the pre-computation loop.

Claim 3

Original Legal Text

3. The method according to claim 2 , wherein: the preset value is 1, the preset step is 1, and determining whether the data at the current bit is the data at the most significant bit in the sixth register comprises: determining whether a value of the data in the fifth register is equal to a length of the data in the sixth register, determining that the data at the current bit is the data at the most significant bit in the sixth register if the value of the data in the fifth register is equal to the length of the data in the sixth register, and determining that the data at the current bit is not the data at the most significant bit in the sixth register if the value of the data in the fifth register is not equal to the length of the data in the sixth register.

Plain English Translation

The method for pre-computation in an embedded system, where the bit counter starts at 1 and increments by 1 for each bit of 'n' processed. Termination of the pre-computation loop occurs when the bit counter equals the total number of bits in 'n'. In this case, if the bit counter is equal to the length of 'n', the process is complete and outputs the final result, otherwise, the process loops.

Claim 4

Original Legal Text

4. A method for realizing pre-computation for a large number in an embedded system, comprising: SC1 comprising: reading data in a first register, and writing the data which is read into a first random access memory; reading data in a second register, and writing the data which is read into a second random access memory; SC2 comprising: invoking a module for modulo to perform an operation on the data in the first random access memory and the data in the second random access memory, and writing a result which is obtained from the operation into a third register and a fourth register respectively; wherein the module for modulo is configured to perform modulo operation with the data in the second random access memory mod the data in the first random access memory; SC3 comprising: reading data in the third register, and writing the data which is read into a third random access memory and a fourth random access memory respectively; reading data in the first register, and writing the data which is read in to a fifth random access memory; SC4 comprising: invoking a modulo addition module to perform an operation on the data in the third random access memory, the data in the fourth random access memory and the data in the fifth random access memory, and updating the data in the third register with a result which is obtained from the operation; wherein the modulo addition module is configured to perform modulo addition operation with the data in the third random access memory plus the data in the fourth random access memory to obtain a sum, and the sum mod the data in the fifth random access memory; SC5 comprising: reading the updated data in the third register, writing the data which is read into a sixth random access memory and a seventh random access memory respectively; reading the data in the first register, and writing the data which is read into an eighth random access memory; SC6 comprising: invoking a Montgomery modulo multiplier to perform modulo multiplication on the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory, and updating the data in the third register with a result which is obtained from the modulo multiplication; wherein the Montgomery modulo multiplier is configured to perform modulo multiplication with the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory as a first input parameter, a second input parameter and a third input parameter respectively; SC7 comprising: updating data in a fifth register, and determining whether the data in the fifth register is equal to a length of data in a sixth register, executing step SC8 if the data in the fifth register is equal to the length of the data in the sixth register; returning to step SC5 if the data in the fifth register is not equal to the length of the data in the sixth register; and SC8 comprising: outputting the data in the third register.

Plain English Translation

An embedded system pre-computes large numbers using these steps: Load initial data (first data, second data) from registers into RAM. Calculate the modulus of the second data mod first data and store in registers. Move the modulus result and the first data to RAM. Calculate (modulus result + modulus result) mod first data using a modulo addition module, updating a register with the result. Store the updated result and the first data into RAM. Perform Montgomery modular multiplication of the updated result with itself, modulo the first data. Repeat the multiplication step a number of times equal to the length of 'n', and output the final result.

Claim 5

Original Legal Text

5. The method according to claim 4 , wherein updating data in the fifth register comprises: adding 1 to data in the fifth register to obtain a result, and taking the result which is obtained as updated data in the fifth register.

Plain English Translation

The method for pre-computation in an embedded system as described, updates a loop counter by incrementing it by 1 after each iteration. This updated loop counter is then used to determine when to terminate the process.

Claim 6

Original Legal Text

6. The method according to claim 4 , wherein before step SC7, the method further comprises: initializing the data in the fifth register.

Plain English Translation

The method for pre-computation in an embedded system as described, includes initializing a loop counter before starting the pre-computation process.

Claim 7

Original Legal Text

7. The method according to claim 6 , wherein initializing the data in the fifth register comprises setting the data in the fifth register as 0.

Plain English Translation

The method for pre-computation in an embedded system as described, initializes a loop counter to 0 before starting the pre-computation process.

Claim 8

Original Legal Text

8. The method according to claim 4 , wherein: the first register is configured to store a first data, the second register is configured to store a second data, a relationship of the second data to a third data is defined as R=2 n , R represents the second data, n represents the third data, and the third data is an integer.

Plain English Translation

The method for pre-computation in an embedded system as described, uses specific data relationships: The first register stores a first data. The second register stores a second data, where second data = 2^n, and n (third data) is an integer.

Claim 9

Original Legal Text

9. The method according to claim 8 , wherein: the sixth register is configured to store the third data, n=2 k , and k is an integer.

Plain English Translation

The method for pre-computation in an embedded system as described, utilizes a third data, n, such that n = 2^k, where k is an integer, and the sixth register stores this third data, n.

Claim 10

Original Legal Text

10. A method for realizing pre-computation for a large number in an embedded system, comprising: SD1 comprising: reading data in a first register, and writing the data which is read into a first random access memory; reading data in a second register, and writing the data which is read into a second random access memory; SD2 comprising: invoking a module for modulo to perform an operation on the data in the first random access memory and the data in the second random access memory, and writing a result which is obtained from the operation into a third register and a fourth register respectively; wherein the module for modulo is configured to perform modulo operation with the data in the second random access memory mod the data in the first random access memory; SD3 comprising: reading data in the third register, and writing the data which is read into a third random access memory and a fourth random access memory respectively; reading data in the first register, and writing the data which is read into a fifth random access memory; SD4 comprising: invoking an modulo addition module to perform an operation on the data in the third random access memory, the data in the fourth random access memory and the data in the fifth random access memory, and updating the data in the third register with a result which is obtained from the operation; wherein the modulo addition module is configured to perform modulo addition operation with the data in the third random access memory plus the data in the fourth random access memory to obtain a sum, and the sum mod the data in the fifth random access memory; SD5 comprising: reading the updated data in the third register, and writing the data which is read into a sixth random access memory and a seventh random access memory respectively; reading the data in the first register, and writing the data which is read into an eighth random access memory; SD6 comprising: invoking a Montgomery modulo multiplier to perform modulo multiplication on the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory, and updating the data in the third register with a result which is obtained from the modulo multiplication; wherein the Montgomery modulo multiplier is configured to perform modulo multiplication with the data in the sixth random access memory, the data in the seventh random access memory and the data in the eighth random access memory as a first input parameter, a second input parameter and a third input parameter respectively; SD7 comprising: determining whether data in a fifth register is equal to a length of data in a sixth register, executing step SD9 if the data in the fifth register is equal to the length of the data in the sixth register; executing step SD8 if the data in the fifth register is not equal to the length of the data in the sixth register; SD8 comprising: updating the data in the fifth register, and returning to step SD5; and SD9 comprising: outputting the data in the third register.

Plain English Translation

An embedded system pre-computes large numbers using these steps: Load initial data (first data, second data) from registers into RAM. Calculate the modulus of the second data mod first data and store in registers. Move the modulus result and the first data to RAM. Calculate (modulus result + modulus result) mod first data using a modulo addition module, updating a register with the result. Store the updated result and the first data into RAM. Perform Montgomery modular multiplication of the updated result with itself, modulo the first data. Repeat the multiplication step a number of times equal to the length of 'n', and output the final result.

Claim 11

Original Legal Text

11. The method according to claim 10 , wherein updating the data in the fifth register comprises: adding 1 to data in the fifth register to obtain a result, and taking the result which is obtained as updated data in the fifth register.

Plain English Translation

The method for pre-computation in an embedded system, updates a loop counter by incrementing it by 1 after each iteration. This updated loop counter is then used to determine when to terminate the process.

Claim 12

Original Legal Text

12. The method according to claim 10 , wherein before step SD7, the method further comprises: initializing the data in the fifth register.

Plain English Translation

The method for pre-computation in an embedded system, includes initializing a loop counter before starting the pre-computation process.

Claim 13

Original Legal Text

13. The method according to claim 12 , wherein initializing the data in the fifth register comprises: initializing the data in the fifth register as 1.

Plain English Translation

The method for pre-computation in an embedded system, initializes a loop counter to 1 before starting the pre-computation process.

Claim 14

Original Legal Text

14. The method according to claim 10 , wherein: the first register is configured to store a first data, the second register is configured to store a second data, and a relationship of the second data to a third data is defined as R=2 n , R represents the second data, n represents the third data, and the third data is an integer.

Plain English Translation

The method for pre-computation in an embedded system, uses specific data relationships: The first register stores a first data. The second register stores a second data, where second data = 2^n, and n (third data) is an integer.

Claim 15

Original Legal Text

15. The method according to claim 14 , wherein: the sixth register is configured to store the third data, n=2 k , and k is an integer.

Plain English Translation

The method for pre-computation in an embedded system, utilizes a third data, n, such that n = 2^k, where k is an integer, and the sixth register stores this third data, n.

Patent Metadata

Filing Date

Unknown

Publication Date

December 26, 2017

Inventors

Zhou LU
Huazhang YU

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, FAQs, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “METHOD FOR IMPLEMENTING PRECOMPUTATION OF LARGE NUMBER IN EMBEDDED SYSTEM” (9851948). https://patentable.app/patents/9851948

© 2026 Nomic Interactive Technology LLC. Machine-readable context available at /api/llm-context/9851948. See llms.txt for full attribution policy.

METHOD FOR IMPLEMENTING PRECOMPUTATION OF LARGE NUMBER IN EMBEDDED SYSTEM