IEEE 754-2008 리비전

IEEE 754-2008 revision

IEEE 754-2008(이전의 IEEE 754r)은 2008년 8월에 발행되었으며 IEEE 754-1985 부동소수점 표준을 대체하고 있으며, 2019년에는 마이너 리비전 IEEE 754-2019[1]업데이트되었다.2008년 개정안은 필요한 곳에서 이전 표준을 확장하고, 10진 산술과 형식을 추가했으며, 정의되지 않은 원래 표준의 특정 영역을 강화했으며, IEEE 854(기수 독립 부동 소수점 표준)에 통합되었다.

바이너리 부동소수점 산술의 엄격한 정의가 일부 기존 구현과 성능 호환성이 없을 수 있는 경우에는 이러한 정의가 선택 사항으로 지정되었습니다.

수정 프로세스

이 기준은 2000년부터 개정되어 2006년 12월 완료를 목표로 하고 있다.IEEE 표준의 개정은, 대략 다음의 3개의 국면에 따릅니다.

  1. 작업 그룹 – 표준 초안을 작성하는 위원회
  2. 투표용지 – 이해 당사자가 투표 그룹에 가입하여 초안에 투표합니다(그룹의 75%, 초안이 진행되려면 75%가 찬성해야 합니다). 투표용지의 의견은 투표 결의 위원회(BRC)에 의해 결정되며, 실질적인 경우 새 투표용지를 사용하여 변경 사항을 재순환해야 합니다.
  3. 모든 코멘트가 해결되고 추가 변경이 없는 경우 초안은 IEEE에 제출되어 검토, 승인 및 공개된다(이는 드문 일이지만 변경과 투표가 발생할 수도 있다).

2008년 6월 11일 IEEE 개정위원회(RevCom)에 의해 만장일치로 승인되었으며 2008년 6월 12일 IEEE-SA 표준위원회(Standards Board)에 의해 정식으로 승인되었습니다.그것은 2008년 8월 29일에 출판되었다.

754r 작업 그룹 단계

표준 초안 작성에는 부동소수점 산수에 대한 확실한 지식을 가진 사람들이 참여할 수 있었다.실리콘밸리에서 열린 월례 모임 중 적어도 한 번은 90명 이상이 참석했고 메일링 리스트를 통해 더 많은 사람들이 참여했다.

2005년[2] 9월 15일 회의에서 의장은 "진전은 이루어지지 않고 있으며, 그 이유로 추후 통지가 있을 때까지 회의를 중단한다"고 선언하였다.2005년 12월, 위원회는 2006년 12월 완료일을 목표로 하는 새로운 규칙에 따라 재편성되었습니다.

새로운 정책과 절차는 2006년 2월에 채택되었다.2006년 9월, 작업 초안은 편집을 위해 모 후원 위원회(IEEE 마이크로프로세서 표준 위원회(MSC))에 보내져 스폰서 투표에 보내지는 것이 승인되었습니다.

754r 투표 단계

MSC에 제출된 최신 초안 버전 1.2.5는 2006년 [3]10월 4일부터였다.MSC는 2006년 10월 9일에 초안을 받아들였다.투표 과정에서 초안이 상당히 세부적으로 변경되었다.

첫 번째 후원자 투표는 2006년 11월 29일부터 2006년 12월 28일까지 실시되었다.84명의 투표 기관 구성원 중 85.7%가 찬성표를 던졌다.반대표(및 400개 이상의 코멘트)가 있었기 때문에 2007년 3월에 재순환 투표가 실시되었습니다.이 투표는 84%의 찬성을 얻었습니다.2007년 4월 중순에 시작된 두 번째 15일 재순환 투표용지에 대한 세 번째 초안이 준비되었다는 충분한 의견(130개 이상)이 투표용지로부터 있었다.기술적인 이유로 2007년 10월의 제4회 투표와 함께 투표 프로세스가 재개되었습니다.또, 650명의 유권자의 코멘트와 스폰서(IEEE MSC)의 요청에 의해, 초안에 큰 변경이 있었습니다.이 투표는, 필요한 75%의 찬성에 이르지 못했습니다.5차 투표는 98.0%의 응답률과 91.0%의 찬성으로 비교적 작은 변화를 가져왔다.6차, 7차 및 8차 투표는 각 초안에 대한 코멘트 수가 점차 줄어들면서 90% 이상의 지지율을 유지했다. 8차 투표(범위 내 코멘트 없음: 9개는 이전 코멘트의 반복이고 1개는 초안에 없는 자료)는 IEEE 표준 개정 위원회('RevCom')에 제출되어 IEE 표준으로 승인되었다.

754r 리뷰 및 승인 단계

IEEE 표준 개정 위원회(RevCom)는 2008년 6월 회의에서 IEEE 754r 초안을 검토하여 만장일치로 승인하였으며, 2008년 6월 12일 IEEE-SA 표준 이사회에 의해 승인되었습니다.최종 편집이 완료되어 문서는 IEEE 표준 출판부로 전송되어 공개되었습니다.

IEEE 규격 754-2008 자료

새로운 IEEE 754(공식적으로 IEEE 규격 754-2008, IEEE 표준 부동소수점 산술)는 2008년 8월 29일에 IEEE 컴퓨터 협회에 의해 발행되었으며 IEE Xplore[4] 웹사이트에서 구할 수 있다.

이 표준은 IEEE 754-1985를 대체합니다.IEEE 854, Radix-Independent 부동 소수점 표준은 2008년 12월에 철회되었습니다.

개정의 개요

이 표준의 가장 명백한 확장 기능은 16비트와 128비트의 바이너리 타입과 3개의 10진수 타입, 몇 가지 새로운 조작 및 많은 권장 기능의 추가입니다.그러나 용어집 전반에 걸쳐 상당한 명확화가 이루어지고 있습니다.이 요약은 이 기준서의 각 주요 조항의 주요 차이점을 강조한다.

조항 1: 개요

범위(표준의 스폰서에 의해 결정됨)는 10진 형식과 산술적 형식을 포함하도록 확대되었으며 확장 가능한 형식을 추가하였다.

조항 2: 정의

대부분의 정의는 명확성과 일관성을 위해 다시 작성되었습니다.명확성을 위해 일부 용어의 이름이 변경되었습니다(예: 정규화 해제된 용어의 이름이 정규 미만임).

조항 3: 형식

포맷의 설명은 산술 형식(연산을 실행할 수 있는 형식)과 교환 형식(표준 인코딩을 가진 형식)을 구별하여 보다 규칙적으로 되었습니다.표준에 대한 준수는 이제 이러한 용어로 정의된다.

부동소수점 형식의 사양 레벨이 열거되어 다음 차이를 명확히 하고 있습니다.

  1. 이론상의 실수(확장번호선)
  2. 형식(-0, 무한NaN과 함께 유한한 수의 집합)으로 나타낼 수 있는 실체
  3. 실체의 특정 표현: 부호-등가-등가 등
  4. 사용되는 비트 패턴(표준)입니다.

그런 다음 대표 가능한 실체의 집합을 상세하게 설명하여 유의로 처리할 수 있음을 보여주고 분수 또는 정수로 간주한다.기본 포맷으로 알려진 특정 세트가 정의되며 바이너리 포맷과 10진 포맷의 교환에 사용되는 인코딩에 대해 설명합니다.

바이너리 인터체인지 포맷에는 '반정밀'(16비트 스토리지 포맷)과 '4비트 포맷'(128비트 포맷)이 추가되어 있으며, 일부 더 넓은 포맷에 대한 일반화된 공식도 포함되어 있습니다.기본 포맷에는 32비트, 64비트 및 128비트 인코딩이 있습니다.

32~128비트 바이너리 형식의 길이와 일치하는 3개의 새로운 10진수 형식이 설명되어 있습니다.이것들은 7, 16 및 34 자리수의 중요도를 가지는 10 진수의 교환 형식을 나타냅니다.이 형식은 정규화 또는 정규화되지 않을 수 있습니다.최대 범위와 정밀도를 위해 이들 형식은 지수와 유의의 일부를 결합 필드로 병합하고 나머지 유의는 10진수 정수 부호화(Density Packed Decimal 또는 BCD 압축 형식인 DPD) 부호화 또는 기존 이진수 정수 부호화 중 하나를 사용하여 압축합니다.기본 포맷은 64비트와 128비트의 인코딩을 갖춘 2개의 큰 사이즈입니다.일부 다른 교환 형식에 대한 일반화된 공식도 지정됩니다.

확장 및 확장 가능한 형식을 통해 다른 정밀도 및 범위에서의 산술이 가능합니다.

조항 4: 속성과 반올림

이 절은 부동소수점 연산을 제어하기 위한 정적 애트리뷰트 사용을 권장하기 위해 변경되었습니다.또한 (필요한 반올림 애트리뷰트 외에) 대체 예외 처리, 중간 결과의 확대, 값 변경 최적화 및 재현성을 허용합니다.

반올림에서 가장 가까운 반올림 속성이 추가되었습니다(10진수 연산에만 필요).

조항 5: 운용

이 섹션에는 수많은 설명이 있습니다(특히 비교 영역에서). 이전에 권장했던 몇 가지 작업(복사, 부정, 복근, 클래스 등)이 필요합니다.

새로운 연산에는 융합 곱셈 가산(FMA), 명시적 변환, 분류 술어(isNan(x) 등), 다양한 최소 및 최대 함수, 총 순서 술어 및 두 개의 소수 고유 연산(같은 수량 및 양자화)이 포함됩니다.

최소값과 최대값

최소 연산과 최대 연산은 정의되지만 입력 값이 동일하지만 표현이 다른 경우에는 약간의 여유가 있습니다.특히:

  • min(+0,−0)또는min(−0,+0)는 값이 0인 것을 생성해야 하지만 항상 첫 번째 인수를 반환할 수 있습니다.

NaN 입력을 어느 하나의 엔드 포인트로 조용히 치환해야 하는 윈도우 설정 등의 조작을 지원하기 위해 naN이 아닌 숫자x 를 선택하도록 min 및 max 를 정의합니다.

  • min(x,qNaN) = min(qNaN,x) = x
  • max(x,qNaN) = max(qNaN,x) = x

이러한 함수는 minNum maxNum이라고 불리며, 무음 NaN보다 숫자가 우선함을 나타냅니다.다만, 시그널링 NaN 입력이 존재하는 경우, 통상의 조작과 같이 조용한 NaN이 반환됩니다.표준이 발표된 후, 이러한 규칙이 이러한 운영을 비연관성으로 만든다는 것을 알게 되었다. 이러한 이유로 IEEE 754-2019의 새로운 운영으로 대체되었다.

십진법 산술

Java, C#, PL/I, COBOL, Python, REXX 등에서 사용되는 것과 호환되는 10진 산술도 이 섹션에서 정의됩니다.일반적으로 10진수 산술은 이진수 산술과 동일한 규칙(결과가 올바르게 반올림되는 등)을 따르며 결과의 지수를 정의하는 추가 규칙(대부분의 경우 여러 개 가능)을 따릅니다.

올바르게 반올림된 베이스 변환

854와 달리 754-2008에서는 형식에 따라 달라지는 범위 내에서 소수점과 2진수 부동소수점 사이의 올바른 반올림 베이스 변환이 필요합니다.

조항 6: Infinity, NaN 및 부호 비트

이 조항은 수정되고 명확해졌지만, 크게 추가되지는 않았다.특히 시그널링/quiet NaN 스테이트의 부호화에 대해 정식으로 권장하고 있습니다.

조항 7: 기본 예외 처리

이 조항은 수정되고 상당히 명확해졌지만, 크게 추가되지는 않았다.

조항 8: 대체 예외 처리

이 조항은 트랩 및 try/catch와 같은 기타 모델을 포함하여 다양한 형태의 선택적 예외 처리를 허용하도록 이전 조항 8('Traps')에서 확장되었습니다.IEEE 754-1985에서와 같이 트랩 및 기타 예외 메커니즘은 옵션인 채로 있습니다.

조항 9: 권장 작업

이 절은 언어 표준에서 정의해야 하는 로그, 멱함수 및 삼각함수를 포함하여 50개의 연산을 권장합니다.이것들은 모두 옵션입니다(표준에 준거하기 위해서 필요한 것은 없습니다).이 작업에는 속성의 동적 모드와 일련의 축소 작업(합계, 스케일링 곱 등)이 포함됩니다.

조항 10: 표현 평가

이 조항은 새로운 것으로 언어 표준이 어떻게 연산 시퀀스의 의미를 규정해야 하는지 권장하고 결과의 값을 변경하는 문자 그대로의 의미와 최적화의 미묘한 점을 지적합니다.

조항 11: 재현성

이 조항은 새로운 조항이다. 언어 표준은 재현 가능한 프로그램(즉, 언어의 모든 구현에서 동일한 결과를 생성하는 프로그램)을 작성할 수 있는 수단을 제공해야 하며 재현 가능한 결과를 달성하기 위해 무엇을 해야 하는지를 기술해야 한다.

부록 A: 참고 문헌

이 부록은 새로운 것입니다.이 부록에는 유용한 참고 자료가 몇 가지 기재되어 있습니다.

부록 B: 프로그램 디버깅 지원

이 부록은 새로운 것으로 부동소수점 코드의 디버깅을 지원하기 위해 필요한 기능을 디버거 개발자에게 안내합니다.

작업 색인

이것은 표준(필수 또는 옵션)에 설명된 모든 작업을 나열하는 새로운 인덱스입니다.

논의되었지만 포함되지 않음

CPU 설계와 개발의 변경으로 인해 2008 IEEE 부동소수점 표준은 1985년에 대체된 표준과 같이 역사적이거나 구식으로 간주될 수 있습니다.표준화 프로세스에서 다루지 않은 많은 외부 논의와 항목이 있었습니다.다음 항목은 일반에 알려진 항목입니다.

  • 부록 "L"은 언어 개발자에게 표준의 항목을 언어의 기능에 바인딩하는 방법을 권장한다.
  • 부록 "U"는 수치적 언더플로 정의 선택에 대한 지침을 제공했다.
754년 언더플로우의 정의는 결과가 작고 정확성의 상실을 경험하는 것이었습니다.
'타이니' 조건의 결정에 대해 두 가지 정의가 허용되었다. 무한정 정확한 결과를 작업 정밀도로 반올림하기 전 또는 후, 무한 지수(unbounded expension)가 있다.
정확도 손실에 대한 두 가지 정의가 허용되었다. 즉, 부정확한 결과 또는 정규화 해제에 의한 손실이다.후자를 실장하고 있는 기존의 하드웨어 시스템은 없으며, 옵션으로 개정된 표준에서 삭제되었습니다.
754r의 Annex U는 반올림 후 주석성만 언더플로우 신호의 원인이며 정확도 상실로 부정확할 것을 권고했다.
  • 부록 "Z"는 다른 고정 폭 부동 소수점 형식과 임의 정밀도 형식(즉, 실행 시 표현과 반올림의 정밀도가 결정되는 형식)을 지원하기 위한 선택적 데이터 유형을 도입했다. 이 자료의 일부는 섹션 5에 의해 초안 본문으로 이동되었다.임의 정밀도가 삭제되었습니다.
  • 모드(예외 처리, 치환, 반올림) 및 플래그(inexact, underflow, overflow, 0으로 나누기, 무효) 상속 및 전파.플래그가 발신자에게 전파되도록 하고 모드 변경을 착신자에게 상속할 수 있지만 발신자에게는 영향을 주지 않도록 하는 것이 목적입니다.
  • 구간 및 기타 산술은 논의되었지만 범위 외(및 그 자체의 큰 작업)로 포함되지 않았습니다.인터벌 산술에 관한 IEEE 규격에 관한 작업은 2008년에 개시되고 있습니다.

레퍼런스

  1. ^ "ANSI/IEEE Std 754-2019". 754r.ucbtest.org. Retrieved 2019-08-06.
  2. ^ "15 September 2005 meeting".{{cite web}}: CS1 maint :url-status (링크)
  3. ^ DRAFT Standard for Floating-Point Arithmetic P754, version 1.2.5. Revising ANSI/IEEE Std 754-1985 (Report). 2006-10-04.
  4. ^ 754-2008 - IEEE Standard for Floating-Point Arithmetic. IEEE. 2008-08-29. doi:10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5752-8. (NB. IEEE 754-2008의 개정판 IEEE 규격 754-2019로 대체됨).

외부 링크