This application claims priority under 35 U.S.C. § 119 to Korean Patent Application No. 10-2021-0163767 filed on Nov. 24, 2021 in the Korean Intellectual Property Office, the subject matter of which is hereby incorporated by reference in its entirety.
The inventive concept relates generally to systems performing arithmetic operations and methods that may be used in performing floating-point operations.
For a given number of digital bits, a floating-point format may be used to represent a relatively greater range of numbers than a fixed-point format. However, arithmetic operations on numbers expressed in the floating-point format may be more complicated than arithmetic operations on numbers expressed in the fixed-point format. Along with the development of various computational hardware, the floating-point format has been widely used. However, the accuracy and efficiency of certain applications (e.g., computer vision, neural networks, virtual reality, augmented reality, etc.) requiring the performance (or execution) of multiple arithmetic operations on floating-point numbers may vary in accordance with the type of arithmetic operations being performed. Such variability is undesirable and improvement in the performance of floating-point arithmetic operations is required.
The inventive concept provides systems and methods enabling the performance of more accurate arithmetic operations on floating-point numbers.
According to an aspect of the inventive concept, a method performing floating-point operations includes; obtaining operands, wherein each of the operands is expressed in a floating-point format, calculating a gain based on a range of operand exponents for the operands, generating intermediate values by applying the gain to the operands, wherein each of the intermediate values is expressed in a fixed-point format, generating a fixed-point result value by performing an arithmetic operation on the intermediate values, wherein the fixed-point result value is expressed in the fixed-point format, and generating a floating-point output value from the fixed-point result value, wherein the floating-point output value is expressed in the floating-point format.
According to an aspect of the inventive concept, a system performing floating-point operations may include; a gain calculation circuit configured to obtain operands and calculate a gain based on a range of operand exponents, wherein each of the operands is expressed in a floating-point format, a normalization circuit configured to generate intermediate values by applying the gain to the operands, wherein each of the intermediate values is expressed in a fixed-point format, a fixed-point operation circuit configured to generate a fixed-point result value by performing an arithmetic operation on the intermediate values, wherein the fixed-point result value is expressed in the fixed-point format, and a post-processing circuit configured to transform the fixed-point result value into a floating-point output value, wherein the floating-point output value is expressed in the floating-point format.
According to an aspect of the inventive concept, a system performing floating-point operations may include; a processor, and a non-transitory storage medium storing instructions enabling the processor to perform a floating-point operation. The floating-point operation may include: obtaining operands, wherein each of the operands is expressed in a floating-point format, calculating a gain based on a range of operand exponents for the operands, generating intermediate values by applying the gain to the operands, wherein each of the intermediate values is expressed in a fixed-point format, generating a fixed-point result value by performing an arithmetic operation on the intermediate values, wherein the fixed-point result value is expressed in the fixed-point format, and transforming the fixed-point result value into a floating-point output value, wherein the floating-point output value is expressed in the floating-point format.
Advantages, benefits, and features, as well as the making and use of the inventive concept may be more clearly understood upon consideration of the following detailed description together with the accompanying drawings, in which:
Throughout the written description and drawings, like reference numbers and labels are used to denote like of similar elements, components, features and/or method steps.
Referring to
In this regard, the floating-point format requires a reduced number of bits, as compared with an analogous fixed-point format. And this lesser number of bits requires less data storage space and/or a memory bandwidth within a defined accuracy.
The use of various floating-point formats is well understood in the art. For example, certain embodiments of the inventive concept may operate in accordance with a single-precision, floating-point format using 32 bits (e.g., FP32) and/or a half-precision floating-point format using 16 bits (e.g., FP16), such as those defined in accordance with the 754-2008 technical standard published by the Institute of Electrical and Electronics Engineers (IEEE). (See e.g., related background information published at www.ieee.org).
Using this assumed context as a teaching example, data storage space and/or memory bandwidth for a memory (e.g., a dynamic random access memory (or DRAM)) may be markedly reduced by storing FP16 data, instead of FP32 data. That is, a processor may read FP16 data from the memory and transform the FP16 data into corresponding FP32 data. Alternately, the processor may inversely transform FP32 data into corresponding FP16 data and write the FP16 data in the memory.
Further in this regard, a floating-point format having an appropriate number of bits may be employed in relation to an application. For example, in relation to the performance of a deep learning inference, a feature map and a corresponding weighting expressed in FP16 may be used. Accordingly, the deep learning may be performed with greater accuracy over a wider range, as compared with a fixed-point format (e.g., INT8). Further, the deep learning may be performed with greater efficiency (e.g., storage space, memory bandwidth, processing speed, etc.) as compared with the FP32 format. Accordingly, the use of a floating-point format having relatively fewer bits (e.g., FP16) may be desirable in applications characterized by limited resources (e.g., a portable computing system, such as a mobile phone).
Those skilled in the art will recognize from the foregoing that floating-point operation(s) may be particularly useful in various applications. For example, a floating-point operation may be used in relation to neural networks, such as in relation to a convolution layer, a fully connected (FC) layer, a softmax layer, an average pooling layer, etc. In addition, a floating-point operation may be used in relation to certain transforms, such as a discrete cosine transform (DCT), a fast Fourier transform (FFT), a discrete wavelet transform (DWT), etc. In addition, a floating-point operation may be used in relation to a finite impulse response (FIR) filter, an infinite impulse response (IIR) filter, a linear interpolation, a matrix arithmetic, etc.
However, as the number of bits in a floating-point format decreases, the possibility of a material error occurring in arithmetic operation(s) due to rounding may increase. For example, as described hereafter in relation to
Hereinafter, in certain systems and methods performing floating-point operations consistent with embodiments of the inventive concept, an error due to repetitive rounding in the floating-point operations (e.g., error(s) occurring in relation to an addition order) may be removed. Additionally, in certain systems and methods performing floating-point operations consistent with embodiments of the inventive concept, the overall performance of applications including arithmetic operations performed on floating-point numbers may be improved by removing error(s) from the floating-point operations. More particularly, error(s) in floating-point arithmetic operations having relatively fewer bits may be removed, and floating-point numbers may be efficiently processed using hardware of relatively low complexity.
Referring to
After being calculated (S30), the gain ‘g’ may be applied to the operands (S50). For example, each of the generated operands may be multiplied by the calculated gain (e.g., 2g). Accordingly, a number of intermediate values, each expressed in a particular fixed-point format and respectively corresponding to one of the operands, may be generated. Here, the application of the calculated gain to the operands may be referred to as “normalization.”
Thereafter, a result value expressed in the fixed-point format (hereafter, a “fixed-point result value”) may be generated (S70). For example, one or more arithmetic operations may performed on the intermediate values in order to generate the fixed-point result value. In some embodiments, the step of generating the fixed-point result value may be performed by an arithmetic operation device designed to process numbers expressed in the fixed-point format, wherein the arithmetic operation may be iteratively performed in relation to the intermediate values (i.e., in relation to the generated operands).
One example of the step of generating the fixed-point result value will be described hereafter in relation to
Thereafter, an output value having a floating-point format (hereafter, “floating-point output value”) may be generated using the fixed-point result value (S90). For example, the previously generated, fixed-point result value (e.g., S70) may be transformed into a corresponding output value having the floating-point format. In some embodiments, the floating-point output value may be expressed similarly to the floating-point format of the generated operands.
One example of the step of generating the floating-point output value will be described hereafter in relation to
Referring to the upper part of
Here, ‘q’ may be 1 when the exponent part ‘e’ is zero, and ‘q’ may be 0 when the exponent part e is not zero; the real number ‘v’ may have a hidden lead bit assumed between the tenth bit (b9) and the eleventh bit (b10), such that when the exponent part ‘e’ is zero, the real number ‘v’ may be referred to as a “subnormal number,” wherein in the subnormal number, the hidden lead bit may be 0, and two times the fraction part ‘m’ may be used. Further, the real number ‘v’ that is not a subnormal number may be referred to as a “normal number,” and the hidden lead bit may be 1 in the normal number.
Referring to the lower part of
Referring to
Thereafter, the gain may be calculated based on a difference between the maximum value and the minimum value (S34). In order to add a first operand having the maximum exponent and a second operand having the minimum exponent, respective corresponding values obtained by multiplying a different value between the exponent in the first operand and the exponent in the second operand by the first operand and the second operand may be added. In this manner, for example, the gain may be calculated in relation to the maximum value and the minimum value of the exponents obtained in method step S32.
In an arithmetic operation on N operands (wherein ‘N’ is an integer greater than 1), a real number ‘vn’ of an nth operand may be represented in accordance with Equation 2 below for 1≤n≤N.
Consistent with Equation 1, in Equation 2, ‘sn’ denotes a sign bit of the nth operand, ‘en’ denotes an exponent part of the nth operand, ‘mn’ denotes a fraction part of the nth operand, and ‘qn’ may be 1 when ‘en’ is zero, and may be 0 when ‘en’ is not zero.
To calculate a sum of the N operands, the N operands may be adjusted to have the same exponent. For example, the real number ‘vn’ of the nth operand may be adjusted in accordance with Equation 3 that follows:
Here, ‘sn’ denotes the sign bit of the nth operand, and ‘emax’ denotes an exponent of an operand having a maximum exponent among the N operands.
Consistent with the method of
f
n=2e
Here, Equation 4 may correspond to a real number of an nth intermediate value corresponding to the nth operand in the description of the method of
g≥e
max−(emin+qmax) [Equation 5]
Here, ‘emin’ denotes an exponent of an operand having a minimum exponent among the N operands, and ‘qmax’ may be 0 or 1 in accordance with a minimum value emin of the exponent of the operand. That is, if ‘emin,’ is 0, ‘qmax’ may be 1, otherwise, if ‘emin’ is not zero, ‘qmax’ may be 0. As gain increases, a resource for processing a fixed-point number may increase, and thus, gain may be set as a minimum value (e.g., “emax−(emin+qmax)”) satisfying Equation 5. For example, if the range of the N operands cannot be predicted, ‘emax’, ‘emin’ and ‘qmax’ may be respectively assumed to be 30, 0, and 1. Accordingly, gain ‘g’ may be 29. If the gain ‘g’ is 29, the real number ‘fn’ to which the gain g is applied may be represented by Equation 6 that follows:
f
n=2e
Thus, a maximum value of the real number ‘fn’ may be [2g(210+mn)=229(210+mn)], and when the maximum value of the real number ‘fn’ is expressed in a fixed-point format, at least 40 bits may be required (40=g+11). In addition, a minimum value of the real number ‘fn’ may be ‘mn’, and at least 10 bits may be required. Accordingly, if a range of operands cannot be predicted in the context of FP16, hardware capable of performing a 40-bit fixed-point operation may be used.
In some embodiments, however, the gain ‘g’ may not satisfy Equation 5. For example, when the number of bits which a system uses for fixed-point operations is limited, gain may be set to a less value than [emax−(emin+qmax)]. Accordingly, gain may be determined based on the number of bits in a fixed-point format (e.g., the number of bits of an intermediate value and/or an output value).
Referring to
Once the first sum and second sum have been calculated (S74), a sum of intermediate values may be calculated (S76). For example, the sum of intermediate values may be calculated based on a difference between the first sum and the second sum. In some embodiments, an absolute value of the first sum may be compared with an absolute value of the second sum, and the sum of the intermediate values may be calculated in accordance with a comparison result. One example of method step S76 will be described hereafter in some additional detail with reference to
Referring to
Accordingly, if psum is greater than nsum (psum>nsum), in line 52, an absolute value fsum of a result value may be calculated by subtracting nsum from psum. Additionally in line 53, a MSB of ssum indicating a sign of the result value may be set to 0 indicating a positive number.
If psum is less than or equal to nsum (psum≤nsum), in line 55, the absolute value fsum of the result value may be calculated by subtracting psum from nsum. Additionally in line 56, the MSB of ssum indicating a sign of the result value may be set to 1 indicating a negative number.
Referring to
If the FP output value is greater than the maximum value FPmax of the floating-point format or less than the minimum value FPmin of the floating-point format, the FP output value may be set to positive infinity or negative infinity (S94). For example, if the result value is greater than the maximum value (i.e., 01111011111111112) of FP16, the FP output value may be set to a value indicating positive infinity, i.e., 01111100000000002. Alternately, if the result value is less than the minimum value (i.e., 11111011111111112) of FP16, the FP output value may be set to a value indicating negative infinity, i.e., 11111100000000002.
If the FP output result is less than or equal to the maximum value FPmax of the floating-point format and greater than or equal to the minimum value FPmin of the floating-point format, upper continuous zeros of the result value may be counted (S96). For example, as shown in
nlz=clz(fsum) [Equation 7]
Referring to
e
sum=0x0000, msum=fsum [Equation 8]
Otherwise, if the absolute value (or bits excluding the sign bit) of the result value has a 40-bit length as illustrated in
e
sum=(29−nlz)<<10, msum=round(fsum,(29−nlz)) [Equation 9]
Accordingly, an output value sumout expressed in FP16 may be calculated in accordance with Equation 10 that follows, using ssum generated, for example, by the pseudo code 50 of
sumout=(ssum+esum+msum) [Equation 10]
Referring to
Variables may then be initialized (S100). For example, the gain ‘g’ may be set to 29, ‘psum’ corresponding to a first sum of positive intermediate values and ‘nsum’ corresponding to a second sum of negative intermediate values may be set to 0, and an index ‘n’ may also be set to 0.
An operand x[n] may be selected from set X (S101). That is, one of the operands OP may be obtained.
Then, ‘psum’ or ‘nsum’ may be updated, and n may be increased by 1 (S102). For example, if the selected operand x[n] is a positive number, ‘psum’ may be updated, and if the operand x[n] is a negative number, ‘nsum’ may be updated. One example of method step S102 is described hereafter in some additional details below with reference to
Then, ‘n’ may be compared with ‘N’ (S103). If ‘n’ differs from ‘N’ (e.g., if n is less than N), the method loops may proceed to steps S101 and S102, else if n is equal to N (e.g., if ‘psum’ and ‘nsum’ have been fully calculated, the method may proceed to method step S104.
That is, ‘psum’ may be compared with ‘nsum’ (S104). For example, if ‘psum’ is greater than or equal to ‘nsum’ (S104=YES), the method proceeds to method step S105 and a MSB of ‘ssum’ may be set to 0, and ‘fsum’ may be calculated by subtracting ‘nsum’ from ‘psum.’ Alternately, if psum is less than nsum (S104=NO), the method proceeds to method step S106 and the MSB of ‘ssum’ may be set to 1, and ‘fsum’ may be calculated by subtracting ‘psum’ from ‘nsum.’
Then, ‘fsum’ may be compared with 2g+11 (S107). Here, for example, ‘fsum’ may be compared with 2g+11 to determine whether ‘fsum’ is greater than a maximum value of FP16. And, if ‘fsum’ is greater than or equal to 2g+1′1 (S107=NO), then the method proceeds to S112 wherein ‘esum’ may be set to 0x7C00, and ‘msum’ may be set to 0, so as to indicate positive infinity (S112).
If ‘fsum’ is less than 2g+11 (S107=YES), upper continuous zeros of ‘fsum’ may be counted using a clz function, and nlz may indicate the number of upper continuous zeros of ‘fsum’ (S108).
Then, ‘nlz’ may be compared with the gain ‘g’ (S109). For example, ‘nlz’ may be compared with the gain ‘g’ to determine whether ‘fsum’ is a subnormal or normal number of FP16. Thus, if ‘nlz’ is less than or equal to the gain ‘g’ (i.e., if fsum is a normal number of FP16) (S109=YES), then ‘esum’ may be calculated by shifting (g−nlz) to the right by 10 times, and ‘msum’ may be rounded off by (g-nlz) bits (S110). Else, if ‘nlz’ is greater than the gain ‘g’, (i.e., if fsum is a subnormal number of FP16) (S109=NO), then ‘esum’ may be set to 0, and ‘msum’ may be set to ‘fsum’ (S111).
Then, ‘sumout’ may be calculated (S113). For example, ‘sumout’ may be calculated as a sum of ‘ssum’ calculated in method steps S105 or S106, and ‘esum’ and ‘msum’ may be calculated in method steps S110, S111, or S112. In this manner, output data OUT including sumout may be generated.
As illustrated in
Accordingly, it may be determined whether the exponent ‘ex’ is 0 (S102_2) (e.g., it may be determined whether the operand x[n] is a subnormal number of FP16). That is, if the exponent ‘ex’ is 0 (S102_2=YES) (i.e., if the operand x[n] is a subnormal number), the method proceeds to operation S102_3; else, if the exponent ‘ex’ is non-zero (S102_2=N) (i.e., if the operand x[n] is a normal number), the method proceeds to operation S102_4.
If the operand x[n] is a subnormal number, the exponent ‘ex’ may be set to 1, and ‘fx’ may be set to ‘mx’ (S102_3); else, if the operand x[n] is a normal number, ‘fx’ may be set to a value generated by adding a hidden lead bit to ‘mx’ (S102_4). That is, ‘fx’ may correspond to a fraction of the operand, as adjusted in a manner consistent with FP16.
Then, ‘fx’ may be shifted (S102_5). For example, ‘fx’ may be left-shifted by (ex−1), and accordingly, ‘frac’ may have a fixed-point format.
Then, it may be determined whether ‘sx’ is 0 (S102_6). That is, if ‘sx’ is 0 (S102_6=YES) (i.e., if the operand x[n] is a positive number), ‘frac’ may be added to ‘psum’ (S102_7); else, if ‘sx’ is non-zero (S102_6=NO) (i.e., if the operand x[n] is a negative number), ‘frac’ may be added to ‘nsum’ (S102_8).
Referring to
A product ‘vn’ of the first input value xn and the second input value yn may be then be expressed in accordance with Equation 12 that follows:
As represented in Equation 12, an exponent part of the product ‘vn’ may be based on an exponent en(x) of the first input value xn and an exponent en(y) of the second input value yn, and a fraction part of the product ‘vn’ may be based on a fraction 2q
Then, an operand may be generated (S16). For example, the operand may be generated in relation to a sum of the exponents calculated in method step S12 and a product of the fractions calculated in the method step S14. One example of method step S16 will be described hereafter in relation to
Referring to
s
n
=xor(sn(x),sn(y)) [Equation 13]
The, a product of fractions may be shifted (S16_4). Consistent with the foregoing, a product of the fractions of the first input value xn and the second input value yn may be calculated in step S14 of the method of
Referring to
f
n=2e
Accordingly, a shift amount ‘r’ may be defined according to line 111 of
A shift direction may be determined according to a sign of the shift amount ‘r’ (line 112). As shown in
Referring to
Accordingly, variables may be initialized (S200). For example, as shown in
Then, ‘psum’ or ‘nsum’ may be updated, and ‘n’ may be increased by 1 (S202). For example, if a product of the first input value x[n] and the second input value y[n] selected in step S201 is a positive number, ‘psum’ may be updated, and if the product of the first input value x[n] and the second input value y[n] is a negative number, ‘nsum’ may be updated. One example of method step S202 will be described hereafter in relation to
Then, ‘n’ may be compared with N (S203), and if n differs from N (S203=NO) (i.e., if n is less than N), the method may loop back to steps S201 and S202; else, if n is equal to N (i.e., if ‘psum’ and ‘nsum’ are fully calculated) (S203=YES), the method may proceed to method steps S204 through S213, wherein method steps S204 through S213 respectively correspond to method steps S104 to S113 of the method of
Referring to
Then, a sign ‘sy’, an exponent ‘ey’, and a fraction my may be extracted from the second input value y[n] (S202_5). Then, it may be determined whether the exponent ‘ey’ of the second input value y[n] is 0 (S202_6). Accordingly, if the exponent ‘ey’ is 0 (S202_6=YES) (i.e., if the second input value y[n] is a subnormal number), then the exponent ‘ey’ may be set to 1, and ‘fy’ may be set to ‘m’ (S202_7). However, if the exponent ‘ey’ is non-zero (S202_6=NO) (i.e., if the second input value y[n] is a normal number), then ‘fy’ may be set by adding a hidden lead bit to ‘my’ (S202_8).
Then, a shift may be performed (S202_9). For example, the shift amount ‘r’ may be calculated from an exponent ex[n] of the first input value x[n] and an exponent ey[n] of the second input value y[n]. If the shift amount ‘r’ is a negative number, right shift and rounding may be performed, and if the shift amount ‘r’ is a positive number, left shift may be performed.
The sign ‘sx’ of the first input value x[n] may be compared with the sign ‘sy’ of the second input value y[n] (S202_10). If both of these signs are the same (S202_10=YES), then ‘frac’ may be added to ‘psum’ (S202_11); else, if these signs are different, then ‘frac’ may be added to ‘nsum’ (S202_12).
Referring to
The gain calculation circuit 132 maybe used to perform step S30 of the method of
The normalization circuit 134 may be used to perform step S50 of the method of
The fixed-point operation circuit 136 may be used to perform step S70 of the method of
The post-processing circuit 138 may be used to perform step S90 in the method of
The system 140 may be variously implemented in hardware, firmware and/or software, such that the processor 141 execute instructions defined in accordance with programming code stored in the memory 142. In some embodiment, the system 140 may be an independent computing system, such as the one described hereafter in relation to
The processor 141 may communicate with the memory 142, read instructions and/or data stored in the memory 142, and write data on the memory 142. As shown in
The address generator 141_1 may generate an address for reading an instruction and/or data and provide the generated address to the memory 142. For example, the address generator 141_1 may receive information which the decoding circuit 141_4 has extracted by decoding an instruction, and generate an address based on the received information.
The instruction cache 1412 may receive instructions from a region of the memory 142 corresponding to the address generated by the address generator 141_1 and temporarily store the received instructions. By executing the instructions stored in advance in the instruction cache 1412, a total time taken to execute the instructions may be reduced.
The fetch circuit 141_3 may fetch at least one of the instructions stored in the instruction cache 1412 and provide the fetched instruction to the decoding circuit 141_4. In some embodiments, the fetch circuit 141_3 may fetch an instruction for performing at least a portion of a floating-point operation and provide the fetched instruction to the decoding circuit 141_4.
The decoding circuit 141_4 may receive the fetched instruction from the fetch circuit 141_3 and decode the fetched instruction. As shown in
The execution circuit 141_5 may receive the decoded instruction from the decoding circuit 141_4 and access the registers 141_6. For example, the execution circuit 141_5 may access at least one of the registers 141_6 based on the decoded instruction received from the decoding circuit 141_4 and perform at least a portion of a floating-point operation.
The registers 141_6 may be accessed by the execution circuit 141_5. For example, the registers 141_6 may provide data to the execution circuit 141_5 in response to an access of the execution circuit 141_5 or store data provided from the execution circuit 141_5 in response to an access of the execution circuit 141_5. In addition, the registers 141_6 may store data read from the memory 142 or store data to be stored in the memory 142. For example, the registers 141_6 may receive data from a region of the memory 142 corresponding to the address generated by the address generator 141_1 and store the received data. In addition, the registers 141_6 may provide, to the memory 142, data to be written on a region of the memory 142 corresponding to the address generated by the address generator 141_1.
The memory 142 may have an arbitrary structure configured to store instructions and/or data. For example, the memory 142 may include a volatile memory such as static random access memory (SRAM) or DRAM, or a nonvolatile memory such as flash memory or resistive random access memory (RRAM).
In some embodiments, the computing system 150 may include a stationary computing system such as a desktop computer, a workstation, or a server or a portable computing system such as a laptop computer. The computing system 150 may include at least one processor 151, an input/output (I/O) interface 152, a network interface 153, a memory subsystem 154, a storage 155, and a bus 156, and the at least one processor 151 the I/O interface 152, the network interface 153, the memory subsystem 154, and the storage 155 may communicate with each other via the bus 156.
The at least one processor 151 may be named at least one processing unit and be programmable like a CPU, a GPU, an NPU, and a DSP. For example, the at least one processor 151 may access the memory subsystem 154 via the bus 156 and execute instructions stored in the memory subsystem 154. In some embodiments, the computing system 150 may further include an accelerator as dedicated hardware designed to perform a particular function at a high speed.
The I/O interface 152 may include input devices such as a keyboard and a pointing device and/or output devices such as a display device and a printer or provide access to the input devices and/or the output devices. A user may initiate execution of a program 155_1 and/or loading of data 155_2 and check an execution result of the program 155_1, through the I/O interface 152.
The network interface 153 may provide access to a network outside the computing system 150. For example, the network may include multiple computing systems and/or communication links, wherein each communication link may include one or more hardwired link(s), one or more optically-connected link(s), and/or one or more wireless link(s).
The memory subsystem 154 may store the program 155_1 or at least a portion of the program 155_1 to perform the floating-point operations described above with reference to the accompanying drawings, and the at least one processor 151 may perform at least some of operations included in a floating-point operation by executing the program (or instructions) stored in the memory subsystem 154. The memory subsystem 154 may include read-only memory (ROM), random access memory (RAM), and the like.
The storage 155 may include a non-transitory computer-readable storage medium and may not lose stored data even when power supplied to the computing system 150 is blocked. For example, the storage 155 may include a nonvolatile memory device and include a storage medium such as a magnetic tape, an optical disc, or a magnetic disk. In addition, the storage 155 may be detachable from the computing system 150. As shown in
Before being executed by the at least one processor 151, at least a portion of the program 155_1 may be loaded on the memory subsystem 154. The program 155_1 may include a series of instructions. In some embodiments, the storage 155 may store a file edited using a programming language, and the program 155_1 generated from the file by a compiler or the like or at least a portion of the program 155_1 may be loaded on the memory subsystem 154.
The data 155_2 may include data associated with a floating-point operation. For example, the data 155_2 may include operands, intermediate values, a result value, and/or an output value of the floating-point operation.
While the inventive concept has been particularly shown and described with reference to embodiments thereof, it will be understood that various changes in form and details may be made therein without departing from the spirit and scope of the following claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2021-0163767 | Nov 2021 | KR | national |