
Intel 8087-ի տանգենսի ալգորիթմը վերականգնվել է. ավելին, քան CORDIC-ը
Քեն Շիրիֆը ուսումնասիրել է Intel 8087 մաթեմատիկական համապրոցեսորի բյուրեղն ու միկրոկոդը և պարզել, որ FPTAN հրահանգը 64-բիթ ճշգրտության համար համադրել է 16-բիթ CORDIC-ը Padé-ի ռացիոնալ մոտարկման հետ։
1980 թվականին ներկայացված Intel 8087 մաթեմատիկական համապրոցեսորը զգալիորեն արագացրեց լողացող ստորակետով հաշվարկները IBM PC-ում. տանգենսը հաշվվում էր մոտ 90 միկրովայրկյանում՝ 8086-ի մոտ 13 000-ի փոխարեն։ Քեն Շիրիֆը ուսումնասիրել է չիպի բյուրեղը և միկրոկոդը, վերականգնել FPTAN հրահանգի ալգորիթմը և պարզել, որ 8087-ը չի սահմանափակվել միայն CORDIC-ով։
CORDIC՝ B-58-ից մինչև 8087
Չիպը օգտագործում էր CORDIC, որը Ջեք Վոլդերը ստեղծել էր 1956 թվականին B-58 Hustler ռմբակոծիչի համար։ CORDIC-ին պետք են միայն տեղաշարժեր, գումարումներ և նախապես հաշվարկված հատուկ անկյունների աղյուսակ՝ arctan(2^-n), առանց բազմապատկման ու բաժանման. (1, 0) վեկտորը այդ անկյուններով պտտելով ստացվում է (X, Y) կետը, իսկ տանգենսը Y/X է։

Ինչու՞ ռացիոնալ բազմանդամ
CORDIC-ի 16 քայլը տալիս է մոտ 16 բիթ, իսկ 64 բիթի համար կպահանջվեր 64 քայլ։ Ուստի 8087-ը փոքր մնացորդային անկյունը (մոտ 2^-16) հաշվում է Padé-ի մոտարկմամբ՝ 3x/(3-x²) հարաբերությամբ, որի սխալը աճում է x⁴-ի պես և մնում է 2^-64-ից ցածր։ Երկու բազմանդամների հարաբերությունը տանգենսին ավելի լավ է համապատասխանում, քան Թեյլորի շարքը, քանի որ ֆունկցիան անվերջանում է π/2-ում. իսկ FPTAN-ը համարիչն ու հայտարարը վերադարձնում է առանձին, ուստի բաժանումը ոչինչ չարժե։
Երեք փուլ միկրոկոդում
Միկրոկոդի ROM-ը պարունակում է 1648 միկրոհրահանգ, իսկ FPTAN-ը սկսվում է #1039 հասցեից։ Կեղծ բաժանումը մուտքային անկյունը համեմատում է պահված CORDIC անկյունների հետ և որոշումները գրանցում 16-բիթ ռեգիստրում. 0,95 ռադիանի դեպքում հաջորդականությունը 10010101 00100111 է։ Այնուհետև գալիս է ռացիոնալ մոտարկումը, ապա կեղծ բազմապատկումը. պտույտները կատարվում են տեղաշարժերով ու գումարումներով հակառակ կարգով՝ փոքրից սկսած։ Հաշվարկները հիմնականում 64-բիթ ամբողջ թվերով են՝ ենթադրյալ ցուցիչներով. ամենաթանկ քայլը անկյունը քառակուսի բարձրացնելն է։

Սարքավորում և արագություն
Թվերը պահվում են 80-բիթ «temporary real» ձևաչափով՝ նշանի բիթ, 15-բիթ տեղաշարժված ցուցիչ և 64-բիթ մանտիսա. ստեկի ամեն ռեգիստր ունի պիտակ՝ zero, valid, special կամ empty։ FPTAN-ը սովորաբար տևում է 450 տակտ. 0,95-ի դեպքում ժամանակի 33%-ը բաժին է ընկնում կեղծ բաժանմանը, 15%-ը՝ բազմանդամին, 47%-ը՝ կեղծ բազմապատկմանը, 5%-ը՝ օժանդակ ծախսերին։ Pentium-ի համար Intel-ը անցել է բազմանդամային մոտարկումների։
Աշխատանքը կատարվել է «Opcode Collective»-ի հետ. ROM-ի պատկերները միկրոկոդի տվյալների են վերածվել մեքենայական ուսուցման դասակարգիչով։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։