미니 인초

Minifloat

컴퓨팅에서 미니플로트극소수의 비트로 표현되는 부동소수점 값입니다.예상대로 범용 수치 계산에는 적합하지 않습니다.그것들은 특수한 목적으로 사용되며, 대부분의 경우 반복이 작고 정밀도가 심미적인 [citation needed]효과가 있는 컴퓨터 그래픽스에서 사용됩니다.머신러닝에서도 bfloat16과 같은 형식이 사용됩니다.또한 이들은 컴퓨터 과학 과목에서 부동 소수점 산술과 IEEE 754 숫자의 특성과 구조를 설명하기 위한 교육학적 도구로 자주 사용된다.

16비트의 미니플로트는 반정밀 수치입니다(단일 정밀도2배 정밀도와는 반대).8비트 이하의 미니플로트도 있습니다.

미니플로트는 IEEE 754 표준의 원칙에 따라 설계할 수 있습니다.이 경우 서브노멀과 노멀의 경계에 대한 (명시적으로 기술되지 않은) 규칙을 준수해야 하며 무한대와 NaN에 대한 특별한 패턴을 가져야 합니다.정규화된 숫자는 편향된 지수로 저장됩니다.표준의 새로운 리비전인 IEEE 754-2008에는 16비트 바이너리 미니플로트가 탑재되어 있습니다.

Radeon R300R420 GPU는 7비트의 지수 및 16비트(+1)의 [1]가수인 "fp24" 부동소수점 형식을 사용했습니다.Direct3D 9.0의 "Full Precision"은 자체 24비트 부동소수점 형식입니다.마이크로소프트의 D3D9(섀도 모델 2.0) 그래픽스 API는 처음에는 FP24(ATI의 R300 칩)와 FP32(Nvidia의 NV30 칩)를 모두 "Full Precision"으로 지원했으며 그래픽 하드웨어에 의해 수행된 정점 및 픽셀 셰이더 계산을 위한 FP16(Partial Precision)으로 지원했습니다.

표기법

미니 인양기는 보통 4개숫자(S, E, M, B)의 태플을 사용하여 설명된다.

  • S는 기호 필드의 길이입니다.보통 0 또는 1 중 하나입니다.
  • E는 지수 필드의 길이입니다.
  • M은 가수(significand) 필드의 길이입니다.
  • B지수 바이어스입니다.

따라서 (S, E, M, B)로 나타나는 미니 인양 포맷은 S + E + M 비트 길이입니다.

컴퓨터 그래픽스에서는 미니 플로트가 정수 값만을 나타내는 데 사용되는 경우가 있습니다.동시에 정규 미만의 값이 존재해야 하는 경우 최소 정규 미만의 숫자는 1이어야 합니다.IEEE당 2개의 특수 지수 값이 사용된다고 가정하면, 이 경우 바이어스 값은 B = E - M - 1된다.

(S, E, M, B) 표기법은 (IEEE의 지수 사용으로) (2, M + 1, B + 1, 2S - B)로서 (B, P, L, U) 형식으로 변환할 수 있습니다.

8비트 미니 인양 예시 레이아웃(1.4.3).
서명하다 지수 의미심장
0 0 0 0 0 0 0 0

이 예에서는 1개의 부호 비트, 4개의 지수 비트 및 3개의 유효 비트(8비트)로 이루어진 1바이트(8비트)의 미니 인셉트가 정수 값을 나타내기 위해 사용됩니다.모든 IEEE 754 원칙이 유효해야 합니다.유일한 자유값은 지수 바이어스이며 정수의 경우 -2로 정의합니다.알 수 없는 지수는 모멘트 x에 대해 호출됩니다.

다른 베이스의 숫자는...base로 표시됩니다(예2: 101 = 5).비트 패턴에는 부품을 시각화하기 위한 공간이 있습니다.

0의 표현

0 0000 000 = 0

미정규격

significant and는 "0"으로 확장됩니다.

0 0000 001 = 0.0012 × 2x = 0.125 × 2x = 1 (최소 정규수)...0 0000 111 = 0.1202 × 2x = 0.875 × 2x = 7 (표준 미정규수)

정규화된 수

significant와 significant는 "1"로 확장됩니다.

0 0001 000 = 1.0002 × 2x = 1 × 2x = 8 (최소 정규화 수) 0 0001 001 = 1.0012 × 2x = 1.125 × 2x = 9 ...0 0010 000 = 1.00022 × 2x+1 = 1 × 2x+1 = 16 0 0010 001 = 1.0012 × 2x+1 = 1.125 × 2x+1 = 18 ... 0 1110 000 = 1.00022 × 2x+13x+13 = 65536 0 1110 001 = 1.125 × 2x+13x+13 = 737 8 = 110 ...

Infinity

0 1111 000 = +param 1 1111 000 = -param

지수 필드가 특별히 처리되지 않은 경우 값은 다음과 같습니다.

0 1111 000 = 1.0002 × 2x+14 = 217 = 131072

숫자가 아니다

x 1111 yy = NaN(yy 000 000인 경우)

IEEE 754에서 가장 큰 지수의 특별한 처리가 없다면 가능한 가장 큰 값은 다음과 같습니다.

0 1111 111 = 1.1202 × 2x+14 = 1.875 × 217 = 245760

편중값

최소 정규 이하 값(위의 두 번째 줄)이 1이어야[citation needed] 하는 경우 x 은 x = 3이어야 합니다.따라서 치우침은 -2여야[citation needed] 합니다. 즉, 모든 저장된 지수를 -2만큼 줄이거나 2만큼 늘려야 수치 지수를 얻을 수 있습니다.

값의 표

이것은 플로트를 IEEE 플로트와 유사하게 취급할 때 가능한 모든 값의 차트입니다.

... 000 ... 001 ... 010 ... 011 ... 100 ... 101 ... 110 ... 111
0 0000 ... 0 0.125 0.25 0.375 0.5 0.625 0.75 0.875
0 0001 ... 1 1.125 1.25 1.375 1.5 1.625 1.75 1.875
0 0010 ... 2 2.25 2.5 2.75 3 3.25 3.5 3.75
0 0011 ... 4 4.5 5 5.5 6 6.5 7 7.5
0 0100 ... 8 9 10 11 12 13 14 15
0 0101 ... 16 18 20 22 24 26 28 30
0 0110 ... 32 36 40 44 48 52 56 60
0 0111 ... 64 72 80 88 96 104 112 120
0 1000 ... 128 144 160 176 192 208 224 240
0 1001 ... 256 288 320 352 384 416 448 480
0 1010 ... 512 576 640 704 768 832 896 960
0 1011 ... 1024 1152 1280 1408 1536 1664 1792 1920
0 1100 ... 2048 2304 2560 2816 3072 3328 3584 3840
0 1101 ... 4096 4608 5120 5632 6144 6656 7168 7680
0 1110 ... 8192 9216 10240 11264 12288 13312 14336 15360
0 1111 ... 인피 NaN NaN NaN NaN NaN NaN NaN
1 0000 ... -0 -0.125 -0.25 -0.375 -0.5 -0.625 -0.75 -0.875
1 0001 ... -1 -1.125 -1.25 -1.375 -1.5 -1.625 -1.75 -1.875
1 0010 ... -2 -2.25 -2.5 -2.75 -3 -3.25 -3.5 -3.75
1 0011 ... -4 -4.5 -5 -5.5 -6 -6.5 -7 -7.5
1 0100 ... −8 −9 −10 −11 −12 −13 −14 −15
1 0101 ... −16 −18 −20 −22 −24 −26 −28 −30
1 0110 ... −32 −36 −40 −44 −48 −52 −56 −60
1 0111 ... −64 −72 −80 −88 −96 −104 −112 −120
1 1000 ... −128 −144 −160 −176 −192 −208 −224 −240
1 1001 ... −256 −288 −320 −352 −384 −416 −448 −480
1 1010 ... −512 −576 −640 −704 −768 −832 −896 −960
1 1011 ... −1024 −1152 −1280 −1408 −1536 −1664 −1792 −1920
1 1100 ... −2048 −2304 −2560 −2816 −3072 −3328 −3584 −3840
1 1101 ... −4096 −4608 −5120 −5632 −6144 −6656 −7168 −7680
1 1110 ... −8192 −9216 −10240 −11264 −12288 −13312 −14336 −15360
1 1111 ... - 인피 NaN NaN NaN NaN NaN NaN NaN

이 예의 속성

일체형(1.4.3.2) 미니플로트의 그래픽 표현

1바이트의 적분 미니플로트는 -128 ~ +127 범위의 2의 보완 정수보다 ±122 880의 범위가 더 큽니다.범위가 클수록 낮은 정밀도로 보상됩니다. 왜냐하면 소수점 2자리보다 약간 많은 4개의 가수 비트만 존재하기 때문입니다.또한 범위가 ±65 504인 반정밀 미니플로트보다 범위가 넓으며, 분율 부족과 낮은 정밀도로도 보상됩니다.

비트 패턴 중 14개가 NaN을 나타내기 때문에 242개의 다른 값만 있습니다(+0과 -0이 다른 것으로 간주되는 경우).

0 ~ 16 의 값은 미니 인셉트 또는 2 의 보완 정수와 같은 비트 패턴을 가집니다.값이 다른 첫 번째 패턴은 00010001로 미니 인초 18, 2의 보완 정수 17입니다.

이 미니 인양기는 부호 있는 크기 형식이기 때문에 음수 값에서는 이 우연이 전혀 발생하지 않습니다.

오른쪽의 (수직) 실선은 부동소수점 값의 다양한 밀도를 명확하게 나타냅니다.이것은 부동소수점 시스템에 공통적인 속성입니다.이 다양한 밀도로 인해 지수 함수와 유사한 곡선이 생성됩니다.

곡선이 매끄럽게 보일 수 있지만 그렇지 않습니다.그래프는 실제로 개별 점으로 구성되며 이러한 점은 개별 경사가 있는 선 세그먼트에 있습니다.지수 비트의 값은 가수 비트의 절대 정밀도를 결정하며, 이 정밀도가 각 선형 세그먼트의 기울기를 결정합니다.

산술

추가

(1.3.2.3) 미니플로트 추가

이 그림에서는 6비트로 구성된 더 작은(1.3.2.3) 미니플로트의 추가를 보여 줍니다.이 부동소수점 시스템은 IEEE 754 규칙을 정확히 따릅니다.오퍼랜드로서의 NaN은 항상 NaN 결과를 생성합니다.Inf - Inf 및 (-Inf) + Inf 결과 NaN도 표시됩니다(녹색 영역).Inf는 변화 없이 유한값만큼 증감할 수 있습니다.유한 피연산자를 합하면 무한 결과를 얻을 수 있습니다(즉, 14.0 + 3.0 = +Inf는 시안 영역, -Inf는 마젠타 영역).유한 오퍼랜드의 범위는 x + y = c 곡선으로 채워집니다. 여기서 c는 항상 대표 가능한 부동 값 중 하나입니다(양수 및 음수 결과에 대해서는 각각 파란색과 빨간색).

뺄셈, 곱셈, 나눗셈

다른 산술 연산도 마찬가지로 설명할 수 있습니다.

임베디드 디바이스 내

미니플로트도 임베디드 기기, 특히 소프트웨어로 부동소수를 에뮬레이트해야 하는 마이크로 컨트롤러에서 일반적으로 사용됩니다.계산 속도를 높이기 위해 일반적으로 가수(sortissa)가 비트의 정확히 절반을 차지하므로 레지스터 경계가 이동하지 않고 자동으로 부품을 처리합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ 를 클릭합니다Buck, Ian (13 March 2005), "Chapter 32. Taking the Plunge into GPU Computing", in Pharr, Matt (ed.), GPU Gems, ISBN 0-321-33559-7, retrieved 5 April 2018.

추가 정보

외부 링크