Վերադառնալ

Intel 8087 լողացող կետերի գումարման և հանման միկրոկոդը և տվյալների ուղին
SiTech AI Team3 րոպե ընթերցում

Intel 8087 լողացող կետերի գումարման և հանման միկրոկոդը և տվյալների ուղին

Intel 8087 չիպը լողացող կետերի գումարման ու հանմանը գրեթե 100 անգամ արագացնելու համար օգտագործեց միկրոկոդ, ամբողջ թվերի գումարիչ, տեղաշարժիչը, աստիճանացույցի տրամաբանություն և 80 բիթ ժամանակավոր իրական ձևաչափ։

Ինչու էր կարևոր 8087-ը

Intel-ը 1980 թվականին ներկայացրեց 8087-ը՝ IBM PC-ի և այլ համակարգերի լողացող կետերի գործողությունները ավելի արագ դարձնելու համար։ Չիպը աջակցում էր տանգենսների, քառակուսի արմատների և լոգարիթմների նման առաջադեմ գործողություններ, բայց գումարումն ու հանումը ցույց են տալիս, թե ինչպես աշխատեց տվյալների ուղին։ 8087-ը գումարումն արագացրեց գրեթե 100 անգամ՝ համեմատած 8086 պրոցեսորի հետ, իսկ բարդ գործողությունները ավելի շատ էին բարելավվում։

Չիպի ներսում միկրոկոդի ROM-ը պահեց 1648 միկրոհրահանգ։ Բյուրեղի ստորին կիսամասը տվյալների ուղին էր, որտեղ մշակվում էին 80 բիթ արժեքներ։ Հիմնական բլոկը կենտրոնի մոտ գտնվող 69 բիթ ամբողջ թվերի գումարիչն էր։ Այն մեկ արգումենտ ստանում էր B ռեգիստրից, մյուսը՝ ժամանակավոր կամ ստեկի ռեգիստրների նման բլոկներից, իսկ արդյունքն ուղարկում էր գումարման ռեգիստրում։

Հիմնական թվաբանության տվյալների ուղու բլոկներ

Լողացող կետերի գումարումը սկզբում հավասարեցնում է երկուական կետերը՝ տեղաշարժելով ավելի փոքր աստիճանացույց ունեցող արժեքը, մինչև աստիճանացույցները համընկնեն։ Մանտիսաները որպես ամբողջ թվեր գումարելուց հետո արդյունքը կարող է պահանջել նորմալիզացիա, որպեսզի մանտիսան սկսվի 1 բիթով։ Եթե գումարումը առաջացնում էր ավելորդ բարձր բիթ, արժեքը տեղաշարժվում էր աջ, իսկ աստիճանացույցը մեծանում էր։ Հանումը կարող էր առաջացնել դրական, բացասական կամ զրո արդյունք, իսկ նորմալիզացիան կարող էր պահանջել մեծ տեղաշարժ դեպի ձախ։ Բացասական մանտիսան դրական էր դարձվում, իսկ նշանը շրջվում էր։ Զրո արդյունքը վերադարձվում էր դրական կամ բացասական զրո՝ ըստ պայմանի։

Տեղաշարժիչը տեղաշարժում էր 68 բիթ արժեքը կամայական թվով դիրքեր ձախ կամ աջ և զբաղեցնում էր բյուրեղի մեծ տարածք, քանի որ տեղաշարժումները պետք է լինեին արագ։ Նախազրոյական սխեմը հաշվում էր ձախ կողմի զրո բիթերը կամ բայթերը, որպեսզի դրանք հնարավոր լիներ տեղաշարժել։ Աստիճանացույցները մշակող փոխարկիչը հայտնաբերում էր գերլցումն ու թերլցումը։ Հավասարեցման համար CREATE_DENORM միկրոծրագրային ենթաընթացը տեղաշարժում էր երկրորդ արգումենտը գումարման ռեգիստրով փոխանցված աստիճանացույցների տարբերությամբ։

Ռեգիստրներ, միկրոկոդի հոսք և հատուկ արժեքներ

8087-ը ներսում օգտագործեց 80 բիթ ժամանակավոր իրական ձևաչափ՝ նշանի բիթով, 16383-ով շեղված 15 բիթ աստիճանացույցով և 64 բիթ մանտիսայով։ Ութ ռեգիստրներ կազմեցին ստեկ, և յուրաքանչյուր արժեք պիտակ ուներ՝ զրո, վավեր, հատուկ կամ դատարկ։ Ներքին ժամանակավոր ռեգիստրների մեջ էին tmpA-ն ու tmpB-ն, իսկ tmpC-ն ուներ 68 բիթ մանտիսա և հսկող, կլորացման, կպչուն բիթեր։

Հիմնական մաթեմատիկական գործողությունները սկսվում էին միկրոկոդի 0001 հասցեից, տեղադրում էին երկու արգումենտները tmpA-ում ու tmpB-ում, այնուհետ կանչում էին հրահանգի տեսակով ընտրված նպատակը։ Գումարումն ու հանումը գործում էին 0232 հասցեից։ Միկրոկոդը մշակում էր զրոյի դեպքերը, համեմատում էր աստիճանացույցները, երբ անհրաժեշտ էր փոխում էր արգումենտները և հսկում էր նշանի փոփոխությունները նշանի սողնակում։ Այնուհետ ընտրում էր առանց նշանի գումարում կամ առանց նշանի հանում՝ ըստ օպերանդների նշանների և գործողության։

Առանց նշանի գումարման ուղու վրա հավասարեցված մանտիսաները գումարվում էին, փոխանցման բիթը առաջացնում էր մեկ բիթի աջ տեղաշարժ և աստիճանացույցի կարգավորում, ճշտությունը կրճատվում էր 80, 64 կամ 32 բիթ արժեքների համար, իսկ աստիճանացույցը ստուգվում էր գերլցման կամ թերլցման համար։ Առանց նշանի հանման ժամանակ գումարիչը հաշվում էր tmpA-ից հանած tmpB-ը, կլորացման բիթերը կարող էին սահմանել արդյունքի ստորին բիթը, իսկ նախազրոների մշակումը հանգեցնում էր բայթային ու բիթային տեղաշարժերի։ Ընդհանուր կոդը նաև մշակում էր անվերջությունները, «թիվ չէ» արժեքները, չնորմալիզված արժեքները, զրոները, ստեկից հանելու վարքագիծը և չնորմալիզված արժեքների համար ընդհատումները։

Աղբյուրներ: righto.com

SiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։