Кіріспе

Бұл бетте субнормальді сандар туралы жалпы мәліметтер келтірілген. IEEE субнормальді және денормальді сандардың толық сипаттамасы үшін төмендегі IEEE бөлімін қараңыз. Нөлге жақын денормальді қалқыма нүктелі сандар

Компьютер ғылымында субнормальді сандар – қалқыма нүктелі арифметикада нөлге жақын ағылған мәндердің (underflow) жиымы. Шамасы ең кішкентай оң нормальді сандан кіші кез келген нөлдік емес сан субнормальді болып табылады, ал денормаль бұл диапазоннан тыс сандарды да білдіре алады.

Терминология

Кейбір ескі құжаттарда (әсіресе IEEE 754 және C тілінің бастапқы шығарылымдары сияқты стандарттар құжаттарында) "денормал" термині тек қана нормадан төмен сандарды білдіру үшін қолданылады. Бұл қолданыс әртүрлі стандарттық құжаттарда, әсіресе кез келген басқа денормалданған сандарды көрсетуге қабілетсіз жабдықты талқылау кезінде сақталады, бірақ бұл жердегі талқылауда 2008 жылғы IEEE 754 қайта қарауына сәйкес "субнормаль" термині қолданылады. Күнделікті әңгімелерде субнормаль және денормаль терминдері көбінесе бір-бірін алмастырып қолданылады, себебі нормадан төмен IEEE екілік сандары субнормаль диапазонынан тысқары жерде кездеспейді. "Сан" термині математикалық абстракция емес, цифрлардың нақты тізбесін сипаттау үшін еркін қолданылады; нақты сандардың қозғалатын нүктелік өрнектемелермен қалай байланысты екендігі туралы толық мәліметтер үшін "Қозғалатын нүкте" бөлімін қараңыз. Түсініктілік қажет болған жағдайда "өрнектеме" термині "сан" терминінен артық қолданылуы мүмкін.

Анықтама

Математикалық нақты сандар бірнеше қозғалатын нүктелік форматтар арқылы жуықтатылуы мүмкін. Бір формат қалыпты деп анықталады, ал қалғандары қалыптыға қатысты қалыпты емес, денормалды немесе қалыптан тыс деп анықталады. Қалыпты қозғалатын нүктелік мәнде мантиссада (немесе әдеттегідей, мантисса деп аталады) басты цифрлар болмайды; керісінше, басты цифрлар экспонентаны реттеу арқылы жойылады (мысалы, 0.0123 саны 1.23 × 10−2 түрінде жазылады). Керісінше, денормалдық қозғалатын нүктелік мәннің мантиссасы басты цифры нөл болатын болады. Бұл сандардың ішінде қалыпты емес сандар нормаланғанда ең кішкентай экспонентадан төмен экспонентаға ие болатын мәндерді көрсетеді (экспонентаның шектеулі диапазоны бар). IEEE қозғалатын нүктелік санының мантиссасы (немесе мантиссасы) – қозғалатын нүктелік санның маңызды цифрларын көрсететін бөлігі. Оң нормаланған сан үшін оны m0.m1m2m3…mp−2mp−1 түрінде көрсетуге болады (м – маңызды цифрды білдіреді, ал p – дәлдік), мұнда m0 нөлден өзгеше. Екілік негізде басты екілік цифр әрқашан 1 болады. Қалыпты емес санда экспонента ең аз мүмкін мәні болғандықтан, басты маңызды цифр нөл болады (0.m1m2m3…mp−2mp−1), бұл ең кішкентай қалыпты саннан нөлге жақын сандарды көрсетуге мүмкіндік береді. Қозғалатын нүктелік санның экспонентасы ең аз мүмкін мәнді құраса, ол қалыпты емес деп танылуы мүмкін. Осылайша, төменгі ағымдағы аралықты толтыру арқылы маңызды цифрлар жоғалады, бірақ төменгі ағымдағы мәнді нөлге дейін жуу әдісіндегідей (төменгі ағымға жеткенде барлық маңызды цифрларды жою) емес. Сондықтан қалыпты емес санды жасау кейде біртіндеп төменгі ағым деп аталады, өйткені нәтиже кішкентай болғанда есептеудің дәлдігін баяу жоғалтуға мүмкіндік береді. IEEE 754 2008 стандартында денормалдық сандар қалыпты емес сандар деп қайта аталды және екілік және ондық форматтарда қолдау көрсетіледі. Екілік алмасу форматтарында қалыпты емес сандар 0-ге тең смещенный экспонентамен кодталады, бірақ ең кішкентай рұқсат етілген экспонентаның мәнімен интерпретацияланады, ол бірге үлкен (яғни, 1 ретінде кодталғандай). Ондық алмасу форматтарында оларға арнайы кодтама қажет емес, өйткені формат тікелей қалыптан тыс сандарды қолдайды. Математикалық тұрғыдан алғанда, берілген таңбасы бар нормаланған қозғалатын нүктелік сандар шамамен логарифмдік аралықта орналасқандықтан, кез келген шекті мөлшердегі қалыпты қозғалатын сан нөлді қамтымайды. Қалыпты емес қозғалатын сандар – бұл сызықтық аралықта орналасқан мәндер жиынтығы, олар теріс және оң қалыпты қозғалатын сандар арасындағы аралықты жабады.

Өмірбаян

Көшірме емес сандар, қалқыма нүктелі сандарды қосу және алу операцияларының ешқашан шектен шықпайтынына кепілдік береді; екі жақын қалқыма нүктелі санның арасындағы айырмашылық әрқашан нөлден өзге болады. Біртіндеп шектен шығу болмаса, a – b алуы нөлдік нәтиже береді, тіпті егер мәндер тең болмаса да. Бұл өз кезегінде, біртіндеп шектен шығу қолданылғанда болмайтын нөлге бөлу қатесіне алып келуі мүмкін. Көшірме емес сандар, IEEE 754 стандарты жазылып жатқан кезде Intel 8087 процесорында қолданылған. Олар KCS форматының ұсынысындағы ең көп пікірталас тудырған мүмкіндік болды, бірақ бұл іске асыру көшірме емес сандарды практикалық тұрғыда қолдауға болатынын көрсетті. Кейбір қалқыма нүктелі процессорлар көшірме емес сандарды аппараттық деңгейде тікелей қолдамайды, оның орнына бағдарламалық қамтамасыз етуге жібереді. Бұл пайдаланушыға көрінбесе де, көшірме емес сандарды өндіретін немесе тұтынатын есептеулер, қалыпты сандармен жасалған ұқсас есептеулерге қарағанда әлдеқайда баяу болуы мүмкін.

IEEE

IEEE бинарлық жылжымалы нүктелік форматтарында субнормальдар нөлдік экспонент өрісімен және нөлдік емес мәнді өрісімен көрсетіледі. IEEE бинарлық жылжымалы нүктелік форматтарында басқа денормалданған сандар жоқ, бірақ олар кейбір басқа форматтарда бар, соның ішінде IEEE ондық жылжымалы нүктелік форматтарында да.

Орындау мәселелері

Кейбір жүйелер қалыптан төмен мәндерді аппараттық деңгейде қалыпты мәндермен бірдей өңдейді. Басқалары қалыптан төмен мәндерді өңдеуді жүйелік бағдарламалық жасақтамаға ("көмек") жүктейді, аппараттық деңгейде тек қалыпты мәндер мен нөлді ғана өңдейді. Бағдарламалық жасақтамада қалыптан төмен мәндерді өңдеу әрқашан өнімділіктің айтарлықтай төмендеуіне алып келеді. Егер қалыптан төмен мәндер толығымен аппараттық деңгейде есептелсе, оларды қалыпты сандармен салыстырылатын жылдамдықпен өңдеуге мүмкіндік беретін техникалар бар. Дегенмен, көптеген қазіргі заманғы x86 процессорларында есептеу жылдамдығы айтарлықтай төмендейді. Ең нашар жағдайларда, қалыптан төмен операндарды қолданатын нұсқаулар 100 қосымша сағат циклын қажет етеді, бұл ең жылдам нұсқаулардың алты есе баяу жұмыс істеуіне себеп болады. Бұл жылдамдық айырмашылығы қауіпсіздік тәуекеліне әкелуі мүмкін. Зерттеушілер бұл уақыттық арнаның, зымыран ретінде әрекет ететінін көрсетті, бұл қаскөй веб-сайтқа веб-браузер ішіндегі басқа сайттың мазмұнын алуға мүмкіндік береді. Кейбір қолданбаларға қалыптан төмен сандарды болдырмау үшін кодты қамту қажет, әрі дәлдікті сақтау үшін, әрі кейбір процессорлардағы өнімділіктің төмендеуін болдырмау үшін. Мысалы, аудио өңдеуде қалыптан төмен мәндер әдетте адамның есту қабілетінен тыс сигналды білдіреді. Сондықтан, өнімділік төмендеуіне ұшырауы мүмкін процессорларда қалыптан төмен деңгейлерді болдырмау үшін сигнал қалыптан төмен деңгейге жеткенде нөлге дейін қысқарту немесе өте төмен шу сигналымен араластыру шаралары қолданылады. Қалыптан төмен сандарды болдырмаудың басқа әдістеріне DC смещениесін қосу, сандарды кванттау, Найквист сигналын қосу және т.б. жатады. SSE2 процессорлық кеңейтімнен бастап Intel мұндай мүмкіндікті CPU аппараттық құрамында ұсынды, ол қалыптан төмен сандарды нөлге дейін дөңгелейді.