performance - 변환 - 부동소수점 표현 범위



비정규 화 된 수-IEEE 754 부동 소수점 (1)

그래서 저는 부동 소수점 수에 대한 IEEE 754 표준에 정의 된대로 비정규 화 된 수에 대해 더 자세히 배우려고합니다. 이미 Google 검색 결과 덕분에 여러 기사를 읽었으며 여러 개의 StackOverFlow 게시물을 보았습니다. 그러나 나는 아직 답이없는 질문이있다.

먼저, 비정규 화 된 플로트가 무엇인지에 대한 내 이해를 검토하기 위해 :

정밀도가 낮고 정규화 된 숫자보다 작은 (크기) 숫자

본질적으로, 비정규 화 된 부동 소수점은 부동 소수점 값으로 표현 될 수있는 가장 작은 (크기로) 수를 표현하는 능력을가집니다.

소리가 맞습니까? 그보다 더 많은게 있니?

나는 그것을 읽었다.

비정규 화 된 숫자를 사용하면 많은 플랫폼에서 성능 비용이 발생합니다.

이것에 대한 의견?

나는 또한 그 기사 중 하나를 읽었습니다.

하나는 "정규화 된 숫자와 비정규 화 된 숫자의 중첩을 피하십시오"

이것에 대한 의견?

IEEE 표준의 일부 프리젠 테이션에서 부동 소수점 범위가 표시 될 때 비정규 화 된 값이 제외되고 표가 "유효 범위"로 표시됩니다. 이는 발표자가 생각하는 것처럼 거의 "비정규 화 된 숫자는 가능한 가장 작은 플로팅을 나타냅니다 비정규 화 된 숫자의 단점 때문에 일반적인 사용 시나리오에 더 잘 맞는 범위에서 제외시키는 방법을 선택했습니다. "- 비정규 숫자가 일반적으로 사용되지 않는 것처럼 말입니다.

나는 비 정규화 된 숫자를 사용하는 것이 대부분의 경우에 좋지 않은 것으로 드러났습니다.

내 질문에 대답해야한다면 다음과 같이 생각하고 싶을 것입니다.

가능한 한 가장 작은 (크기로) 숫자를 나타낼 수 있기 때문에 비정규 숫자를 사용하는 것이 좋습니다. 정밀도가 중요하지 않고 정규화 된 숫자와 혼합하지 않으면 응용 프로그램의 결과 성능이 요구 사항에 맞습니다.

비정규 숫자를 사용하는 것은 나쁜 것입니다. 왜냐하면 대부분의 응용 프로그램에서는 표현이 너무 작지 않기 때문입니다. 정밀도 손실은 해롭고 정규화 된 숫자와 혼합하여 발에서 너무 쉽게 쏠 수 있으며 성능에는 비용이 들지 않습니다. 대부분의 경우에.

이 두 가지 답변에 대한 의견이 있으십니까? 비정규 화 된 숫자에 대해 내가 누락되었거나 이해할 수없는 것은 무엇입니까?


본질적으로, 비정규 화 된 부동 소수점은 부동 소수점 값으로 표현 될 수있는 가장 작은 (크기로) 수를 표현하는 능력을가집니다.

맞아요.

비정규 화 된 숫자를 사용하면 많은 플랫폼에서 성능 비용이 발생합니다.

페널티는 프로세서마다 다르지만 최대 2 배까지 될 수 있습니다. 이유? 이 충고와 동일합니다 :

하나는 "정규화 된 숫자와 비정규 화 된 숫자의 중첩을 피하십시오"

핵심은 다음과 같습니다. 비정품은 IEEE-754 부동 소수점 형식의 고정 소수점 "마이크로 포맷"입니다 . 일반 숫자에서 지수는 2 진수 점의 위치를 ​​나타냅니다. 비정규 숫자에는 double 값에 대해 2 ~ 1074 의 지수가있는 고정 소수점 표기법의 마지막 52 비트가 포함됩니다.

따라서 비정규직은 특수 처리가 필요하기 때문에 속도가 느립니다. 실제로, 이들은 거의 발생하지 않으며, 칩 제조업체는 드문 경우에 너무 많은 귀중한 리소스를 낭비하기를 좋아하지 않습니다.

형식을 혼합하고 있기 때문에 법선과 함께 비정규 값을 혼합하는 것은 느립니다.

나는 비 정규화 된 숫자를 사용하는 것이 대부분의 경우에 좋지 않은 것으로 드러났습니다.

비정기는 하나의 주요 목적을 위해 생성되었습니다. 점진적인 언더 플로우 . 작은 숫자 간의 상대적 차이를 작게 유지하는 방법입니다. 가장 작은 정상 수를 0으로 돌리면 ( 갑작스런 언더 플로 ) 상대적 변화는 무한합니다. 언더 플로가 발생하면 비정규직에 가면 상대적인 변화가 여전히 정확하지는 않지만 적어도 더 합리적입니다. 그리고 그 차이가 계산에 나타납니다.

그것을 다른 방식으로 표현합니다. 부동 소수점 숫자는 일정하게 분포되지 않습니다. 연속적인 2의 거듭 제곱 사이에는 항상 동일한 양의 숫자가 있습니다. 2 52 (배정 밀도의 경우). 따라서 비정규 계산이 없으면 0과 가장 작은 두 숫자 간의 차이 크기의 522 배인 최소 부동 소수점 숫자 사이의 간격으로 끝납니다. 비정상적으로이 간격을 균일하게 채 웁니다.

급격한 점진적인 언더 플로의 영향에 대한 예로서, 수학적으로 동등한 x == yx - y == 0 . xy 가 작지만 다르며 급격한 언더 플로를 사용하면 차이가 최소 컷오프 값보다 작 으면 그 차이가 0이되어 등가가 위반됩니다.

점차적으로 언더 플로가 발생하면 두 개의 작지만 다른 정상 수의 차이는 여전히 비정규 인 비정 수 (denormal)가됩니다. 동등 함이 유지됩니다.

따라서 예외적 인 경우 백업 메커니즘으로 만 설계되었으므로 비정품 사용은 권장되지 않습니다 .





ieee-754