Регистровое представление чисел в ЭВМ и моделирование

advertisement
Ðåãèñòðîâîå ïðåäñòàâëåíèå ÷èñåë â ÝÂÌ
è ìîäåëèðîâàíèå ðàâíîìåðíî ðàñïðåäåëåííûõ
÷èñåë ñ áîëüøèì ïåðèîäîì
Â. Á. Õðèñòèíè÷, Î. Â. Õðèñòèíè÷
Ñàíêò-Ïåòåðáóðãñêèé ãîñóäàðñòâåííûé óíèâåðñèòåò1
 ðàáîòå ââîäèòñÿ óäîáíîå ïðåäñòàâëåíèå áîëüøèõ ÷èñåë â ÝÂÌ ñ ó÷åòîì
àðõèòåêòóðû ïðîöåññîðîâ òèïà Intel P6. Èñõîäÿ èç ââåäåííîãî ïðåäñòàâëåíèÿ
ðàññìàòðèâàåòñÿ âîïðîñ î ìîäåëèðîâàíèè ðàâíîìåðíûõ ïñåâäîñëó÷àéíûõ ÷èñåë ñ áîëüøèì ïåðèîäîì. Îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ è ôîðìà ïðåäñòàâëåíèÿ ñëó÷àéíîãî ÷èñëà ñâÿçûâàþòñÿ ñ èíôîðìàòèâíîñòüþ ñèñòåìû ñ÷èñëåíèÿ.
1.
Ââåäåíèå
Âîïðîñ î ìîäåëèðîâàíèè ñëó÷àéíûõ ÷èñåë â ïðîèçâîëüíîé ñèñòåìå
ñ÷èñëåíèÿ ðàññìàòðèâàëñÿ â [1], ãäå îñíîâíîå âíèìàíèå óäåëÿëîñü ñèñòåìàì ñ÷èñëåíèÿ ñ îñíîâàíèåì p = 2; 5; 10, ÷òî áûëî ñâÿçàíî ñ àëãîðèòìîì
ìîäåëèðîâàíèÿ ÷èñåë â äåñÿòè÷íîé ñèñòåìå ñ÷èñëåíèÿ. Òàì æå áûëî ââåäåíî ïîíÿòèå ýôôåêòèâíîñòè ìåòîäà, ñâÿçàííîå òîëüêî ñ ÷èñëîì ðàçðÿäîâ äâîè÷íûõ ÷èñåë è ñ ÷èñëîì ðàçðÿäîâ, çàíèìàåìûõ ÷èñëîì â äðóãîé
ñèñòåìå ñ÷èñëåíèÿ. Òàêîå ïðåäñòàâëåíèå ýôôåêòèâíîñòè ìåòîäà íå ñâÿçàíî íà ïðÿìóþ ñ ïåðèîäîì äàò÷èêà, íå îòðàæàåò òðóäîåìêîñòü àëãîðèòìà
è èíôîðìàòèâíîñòü èñïîëüçóåìîé ñèñòåìû ñ÷èñëåíèÿ.
 äàííîé ðàáîòå ââîäèòñÿ óäîáíîå ïðåäñòàâëåíèå áîëüøèõ ÷èñåë â
ÝÂÌ ñ ó÷åòîì àðõèòåêòóðû ñîâðåìåííûõ ïðîöåññîðîâ òèïà Intel P6, ÷òî
ïîçâîëÿåò ïðåäëîæèòü àëãîðèòìû äëÿ èñïîëüçîâàíèÿ äîïîëíèòåëüíûõ
ðåãèñòðîâ ïðîöåññîðà ïðè ïðîâåäåíèè àðèôìåòè÷åñêèõ îïåðàöèé. Èñõîäÿ
èç ââåäåííîãî ïðåäñòàâëåíèÿ ðàññìàòðèâàåòñÿ âîïðîñ î ìîäåëèðîâàíèè
ðàâíîìåðíûõ ïñåâäîñëó÷àéíûõ ÷èñåë. Äëÿ óâåëè÷åíèÿ ïåðèîäà ïñåâäîñëó÷àéíûõ ÷èñåë îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ è ôîðìà ïðåäñòàâëåíèÿ
ñëó÷àéíîãî ÷èñëà ñâÿçûâàþòñÿ ñ èíôîðìàòèâíîñòüþ ñèñòåìû ñ÷èñëåíèÿ.
2.
Ðåãèñòðîâîå ïðåäñòàâëåíèå
äëèííûõ ÷èñåë â ÝÂÌ
Äëèíà ïåðèîäà äàò÷èêà ðàâíîìåðíûõ ÷èñåë çàâèñèò îò ÷èñëà èñïîëüçóåìûõ ðàçðÿäîâ ÝÂÌ ïðè åãî ìîäåëèðîâàíèè. Íàèáîëåå ÷àñòî èñïîëüçóåòñÿ ìóëüòèïëèêàòèâíûé, êîíãðóýíòíûé äàò÷èê ñëó÷àéíûõ ÷èñåë
ñ ðàâíîìåðíûì ðàñïðåäåëåíèåì èç [0; 1]
1
Zn+1 = A Zn [mod(2L )];
n = 1; 2:::;
(1)
c Â. Á. Õðèñòèíè÷, Î. Â. Õðèñòèíè÷, 2005
274
ãäå Zn ïîñëåäîâàòåëüíîñòü ñëó÷àéíûõ ÷èñåë, A ìóëüòèïëèêàòîð, L
÷èñëî ðàçðÿäîâ äëÿ ñðàâíåíèÿ. Ïåðèîä ïñåâäîñëó÷àéíûõ ÷èñåë äëÿ
äàò÷èêà (1) ðàâåí 2L 2 ; L 3 è äîñòèãàåòñÿ ïðè A 3(mod 8) èëè
A 5(mod 8) äëÿ âñåõ íå÷åòíûõ Z0 [3].
 íàèáîëåå ðàñïðîñòðàíåííûõ ñèñòåìàõ ïðîãðàììèðîâàíèÿ öåëûå
÷èñëà Zn çàíèìàþò: integer 2 áàéòà è long integer 4 áàéòà. Ïðè ýòîì
ìîäåëèðîâàíèå ïñåâäîñëó÷àéíûõ ÷èñåë îáû÷íûìè ñðåäñòâàìè ïðîãðàììèðîâàíèÿ íå ïðåäñòàâëÿåò ñëîæíîñòè. Ïåðèîä çàâèñèò îò ðàçðÿäíîñòè äâîè÷íîãî ÷èñëà è âîçíèêàåò íåîáõîäèìîñòü èñïîëüçîâàíèÿ áîëüøåãî
÷èñëà ðàçðÿäîâ (ðåãèñòðîâ ïðîöåññîðà).
Àëãîðèòì äëÿ èñïîëüçîâàíèÿ äîïîëíèòåëüíûõ ðåãèñòðîâ ïðîöåññîðà ñ öåëüþ óâåëè÷åíèÿ ðàçðÿäíîñòè öåëîãî ÷èñëà ïðè óìíîæåíèè áûë
ïðåäëîæåí Àáåëåì [2]. Äëÿ ïðåäñòàâëåíèÿ áîëüøèõ ÷èñåë â ÝÂÌ èñïîëüçóåòñÿ ðåãèñòðîâàÿ ïàìÿòü ïðîöåññîðà, ãäå ÷èñëà, áîëüøå ÷åì 2p 1,
p = 8; 16; 32; 64; ::: çàíèìàþò ðÿä äîïîëíèòåëüíûõ ðåãèñòðîâ. Åñëè ÷èñëî
áîëüøå ÷åì 2p 1, òî åãî âåðõíÿÿ ÷àñòü õðàíèòñÿ íà äâóõ, òðåõ è ò. ä.
äîïîëíèòåëüíûõ ðåãèñòðàõ.
Ñóùåñòâóåò õîðîøî èçâåñòíûé ïðèåì [2] êàê ïðîèçâåñòè óìíîæåíèå
äâóõ áîëüøèõ ÷èñåë, åñëè îíè ðàçáèòû íà äâå ãðóïïû. Ê ïðèìåðó, óìíîæèì äâà ÷èñëà, íàõîäÿùèåñÿ â ïàðàõ ðåãèñòðîâ DX : AX â âèäå ïàðû
(d; a) è BX : CX â âèäå ïàðû (b; c). Ðåçóëüòàò ïðîèçâåäåíèÿ ðàçìåñòèì
íà ðåãèñòðàõ DX : AX . Ïðîèçâåäåíèå ñòðîèòñÿ â âèäå:
d
b
b*d
b*d
a
c
c*d
b*a
c*d+b*a
(2)
c*a
c*a .
Ñëåäîâàòåëüíî, äëÿ ïîëó÷åíèÿ 32-õ ðàçðÿäíîãî ÷èñëà íóæíî ñîâåðøèòü
÷åòûðå óìíîæåíèÿ è îäíî ñëîæåíèå ìåæäó äâóìÿ 16-òè ðàçðÿäíûìè ÷èñëàìè. Ýòîò æå àëãîðèòì èñïîëüçóåòñÿ äëÿ ãåíåðèðîâàíèÿ 64-õ áèòîâûõ
ñëó÷àéíûõ ÷èñåë ñ 32-õ ðàçðÿäíûìè ðåãèñòðàìè. Ïðè ýòîì èñïîëüçîâàòü
íå ïîëíîñòüþ çàíÿòûå áèòû ðåãèñòðîâ íåýôôåêòèâíî ñ òî÷êè çðåíèÿ çàãðóçêè ïðîöåññîðà.
Àëãîðèòì (2) ëåãêî îáîáùàåòñÿ, åñëè ðàñïîëîæèòü öåëîå ÷èñëî íà
ãðóïïå èç òðåõ ðåãèñòðîâ DX : AX : EX â âèäå òðîéêè (e; d; a) è (f; b; c)
e
f
d
b
f e
f e
b e
f d
f d + b e
a
c
c e
b d
f a
f a + c e + b d
c d
b a
c a
c d + b a
c a .
(3)
275
 àëãîðèòìàõ òàêîãî òèïà âîçíèêàåò âîïðîñ, íà êàêèõ ðåãèñòðàõ íóæíî õðàíèòü ïðîìåæóòî÷íóþ ãðóïïó óìíîæåíèÿ. Òàêæå íåîáõîäèìî ïðåäóñìîòðåòü ñëó÷àé, êîãäà â ðåçóëüòàòå ñëîæåíèÿ ïîëó÷àåòñÿ ÷èñëî áîëüøåå, ÷åì ìàêñèìàëüíîå ÷èñëî íà ðåãèñòðå ïðîöåññîðà.
Ïðè ìîäåëèðîâàíèè ïñåâäîñëó÷àéíûõ ÷èñåë âîçíèêàþò äîïîëíèòåëüíûå çàäà÷è, ñâÿçàííûå ñ èñïîëüçîâàíèåì äîïîëíèòåëüíûõ ðåãèñòðîâ ïðîöåññîðà. Ïåðå÷èñëèì èõ:
1)
Ìóëüòèïëèêàòîð ïðè ìîäåëèðîâàíèè ïñåâäîñëó÷àéíûõ ÷èñåë ïî
àëãîðèòìó (1) ìîæåò èìåòü ìåíüøåå ÷èñëî ðàçðÿäîâ, ÷òî ìîæåò
íåçíà÷èòåëüíî ñêàçàòüñÿ íà êà÷åñòâå ïñåâäîñëó÷àéíûõ ÷èñåë, íî
óâåëè÷èò ïðîèçâîäèòåëüíîñòü.
2)
Ãåíåðèðóåìûå ïñåâäîñëó÷àéíûå ÷èñëà áîëüøîé äëèíû äîëæíû áûòü
óäîáíûì îáðàçîì îïðåäåëåíû â ñèñòåìàõ ïðîãðàììèðîâàíèÿ, è
ñîñòîÿòü èç ëåãêî ïðåäñòàâèìûõ êîìïîíåíò (ìàññèâîâ, ñòðóêòóð,
êëàññîâ).
3)
Êðîìå óìíîæåíèÿ íàä ïñåâäîñëó÷àéíûìè ÷èñëàìè áîëüøîé äëèíû íåîáõîäèìî âûïîëíÿòü äîïîëíèòåëüíûå äåéñòâèÿ: àääèòèâíûå
è ìóëüòèïëèêàòèâíûå îïåðàöèè, à òàêæå ïåðåâîäû â äðóãèå ñèñòåìû ñ÷èñëåíèÿ ñ èñïîëüçîâàíèåì äîïîëíèòåëüíûõ ðåãèñòðîâ.
Èç ñôîðìóëèðîâàííûõ çàäà÷ âèäíî, ÷òî âîçíèêàåò íåîáõîäèìîñòü îáùåãî ïðåäñòàâëåíèÿ áîëüøèõ ÷èñåë ñ èñïîëüçîâàíèåì äîïîëíèòåëüíûõ
ðåãèñòðîâ. Îáùèå àëãîðèòìû äåéñòâèé ñ áîëüøèìè ÷èñëàìè ñ èñïîëüçîâàíèåì äîïîëíèòåëüíûõ ðåãèñòðîâ îòñóòñòâóþò â ëèòåðàòóðå, ÷òî ïðèâîäèò ê íåîáõîäèìîñòè äëÿ êàæäîãî êîíêðåòíîãî äåéñòâèÿ ðàçðàáàòûâàòü
àëãîðèòìû ïîäîáíûå àëãîðèòìó Àáåëÿ [2].
Äëÿ ðàáîòû ñ äëèííûìè ÷èñëàìè è èñïîëüçîâàíèÿ äîïîëíèòåëüíûõ
ðåãèñòðîâ, ðàññìîòðèì ñèñòåìó ñ÷èñëåíèÿ ñ îñíîâàíèåì p = 2i , ãäå i =
8
8; 16; 32 ÷èñëî áèòîâ ðåãèñòðà. Äëÿ p = 2 : AL; BL; CL; DL ìëàäøèå
áàéòû (ðàçðÿäû 7-0) è AH , BH , CH , DH ñòàðøèå áàéòû (ðàçðÿäû
15-8) ðåãèñòðîâ AX; BX; CX; DX .
Äëÿ p = 216 : AX; BX; CX; DX; SI; DI; BP; SP .
Äëÿ p = 232 : EAX; EBX; ECX; EDX; ESI; EDI; EBP; ESP ðåãèñòðû îáùåãî íàçíà÷åíèÿ, ïðåäíàçíà÷åííûå äëÿ õðàíåíèÿ äàííûõ è àäðåñîâ. Ýòè ðåãèñòðû ïðîöåññîðîâ òèïà Intel P6 (Pentium 3, 4 è äð.). Ïðè
ââåäåíèè òàêîé ñèñòåìû ñ÷èñëåíèÿ çàäà÷è 1 è 3, ïåðå÷èñëåííûå âûøå,
ìîæíî ðåøèòü ñ ïîìîùüþ çàïèñè ðàçëè÷íûõ äåéñòâèé â ñèñòåìàõ ñ÷èñëåíèÿ ñ îñíîâàíèåì p = 2i , à àëãîðèòìû (2), (3) ìîæíî ïðåäñòàâèòü êàê
óìíîæåíèå ÷èñåë â ñèñòåìå ñ÷èñëåíèÿ ñ îñíîâàíèåì p = 216 .
Êàê èçâåñòíî, ëþáîå ÷èñëî ïðåäñòàâëÿåòñÿ â ïîçèöèîííîé ñèñòåìå
ñ÷èñëåíèÿ ñ îñíîâàíèåì p â âèäå:
an pn + ::: + a1 p1 + a0 p0 + b1 p 1 + b2 p 2 + ::: + bm p m ;
(4)
276
ãäå êîýôôèöèåíòû ai (i = 0:::n) è bj (j = 1:::m) òàêèå, ÷òî 0 ai ; bj < p.
Êîýôôèöèåíòû ai (i = 0:::n) îïðåäåëÿþò öåëóþ ÷àñòü ÷èñëà, à bj (j =
1:::m) îïðåäåëÿþò äðîáíóþ ÷àñòü ÷èñëà. Âñå äåéñòâèÿ: ñëîæåíèå, âû÷èòàíèå, óìíîæåíèå è äåëåíèå îïðåäåëåíû äëÿ ÷èñåë (4).
Î ï ð å ä å ë å í è å 1 Íàçîâåì ïðåäñòàâëåíèå (4) ðåãèñòðîâûì
ïðåäñòàâëåíèåì áîëüøèõ ÷èñåë â ÝÂÌ, ãäå p 1 ìàêñèìàëüíîå ÷èñëî
íà ðåãèñòðå.
 ñèñòåìàõ ïðîãðàììèðîâàíèÿ ðåãèñòðîâîå ïðåäñòàâëåíèå áîëüøèõ
÷èñåë ââåäåì êàê ïîñëåäîâàòåëüíîñòü
[an an
1 :::a1 a0 b1 b2 :::bm ]p ;
(5)
ãäå ai (i = 0:::n) è bj (j = 1:::m) ýëåìåíòû ìàññèâà öåëûõ ÷èñåë èëè öåëûå
ïîëÿ ñòðóêòóð, êëàññîâ.
 ïðåäëîæåííîé ñèñòåìå ñ÷èñëåíèÿ àëãîðèòìû (2), (3) áóäóò çàïèñàíû â âèäå
ep2 + dp1 + ap0
fp2 + bp1 + cp0 :
(6)
Ýòî îáû÷íûå ïðàâèëà äåéñòâèÿ ñ êîýôôèöèåíòàìè ai è bj â ñèñòåìå ñ÷èñëåíèÿ p = 216 . Ïðîèçâåäåíèå ÷èñåë ðàçëè÷íîé äëèíû, ò. å. èñïîëüçóþùèõ
ðàçëè÷íîå ÷èñëî ðåãèñòðîâ çàïèñûâàåòñÿ â âèäå
epn + ::: + dp1 + ap0
fpm + ::: + bp1 + cp0 ;
êîòîðûé äàåò âîçìîæíîñòü ëåãêî èçìåíÿòü ýòè àëãîðèòìû ïðè ëþáîé
äëèíå ìóëüòèïëèêàòîðà. Äðóãèå àääèòèâíûå è ìóëüòèïëèêàòèíûå îïåðàöèè íàä äëèííûìè ÷èñëàìè (ïîäîáíûå ñäâèãó, âçÿòèþ ïî ìîäóëþ ÷èñëà (1), ñâÿçàííûå ñ ïðåäñòàâëåíèåì öèêëè÷åñêèõ äðîáåé) ñ èñïîëüçîâàíèåì äîïîëíèòåëüíûõ ðåãèñòðîâ ïðîöåññîðà ìîãóò òàêæå áûòü çàïèñàíû
â îáùåì âèäå ïðè ðàçëè÷íîé äëèíå îïåðàíäîâ. Äëÿ ïðîèçâîëüíûõ ñèñòåì
ñ÷èñëåíèÿ îíè ïðèâåäåíû â [4]. Èçâåñòíî òàêæå áîëüøîå ÷èñëî îïðåäåëåííûõ ñâîéñòâ ÷èñåë â ïðåäñòàâëåíèè (4) òàêèå, êàê ïðèçíàêè äåëèìîñòè è
ïîñòðîåíèå ðàçëè÷íûõ ìíîæåñòâ.
Îòìåòèì îñîáåííîñòü ââåäåííîé ñèñòåìû ñ÷èñëåíèÿ: íåîáõîäèìî îïðåäåëèòü çíàêè ai è bj . Ïîä çíàêàìè áóäåì ïîíèìàòü èõ ÷èñëîâûå çíà÷åíèÿ.
Íàïðèìåð, ÷èñëî [a0 = 3; b1 = 9279; b2 = 27272] áóäåì çàïèñûâàòü â âèäå
[3; (9272); (27272)]p=216 :
×èñëî a0 íà ðåãèñòðå 1, b1 íà ðåãèñòðå 2, b2 íà ðåãèñòðå 3.
277
Ïîëüçóÿñü îáû÷íûì ïðàâèëîì ïåðåâîäà ÷èñåë, ïåðåâåäåì äàííîå ÷èñëî â äåñÿòè÷íóþ ñèñòåìó ñ÷èñëåíèÿ
a0 20 + b1 2 16 + b2 2 32
= 3; 141592654:
Îòñþäà âèäíî óäîáñòâî ðåãèñòðîâîãî ïðåäñòàâëåíèÿ äëèííûõ ÷èñåë â
ÝÂÌ. Äîñòàòî÷íî çàíåñòè òðè ÷èñëà íà ðåãèñòðû, ÷òîáû ïîëó÷èòü ñ
òî÷íîñòüþ äî 9 çíàêîâ. Îáðàòíûé ïåðåâîä îñóùåñòâëÿåòñÿ ïî èçâåñòíîé
ñõåìå
0; 141592654
16
2
9279; 416146
16
2
27272; 52328
Ïåðâîå öåëîå ÷èñëî 9279 âîçüìåì â êà÷åñòâå b1 , à âòîðîå öåëîå ÷èñëî
27272 b2 . Ìû ïîòðàòèëè äëÿ ïåðåâîäà ÷èñëà â ðåãèñòðîâîå ïðåäñòàâëåíèå ñ îñíîâàíèåì p = 216 âñåãî äâà óìíîæåíèÿ íà ÷èñëî 216 , ÷òî íàìíîãî áûñòðåå, ÷åì ïðè äðóãèõ ñïîñîáàõ ïåðåâîäà ÷èñëà â äâîè÷íóþ èëè â
øåñòíàäöàòåðè÷íóþ ñèñòåìó ñ÷èñëåíèÿ. Óäîáñòâî ñîñòîèò åùå è â òîì,
÷òî ìû ïîëó÷èëè ñðàçó ÷èñëà íåîáõîäèìûå äëÿ çàíåñåíèÿ íà ðåãèñòðû
ïðîöåññîðà, à óìíîæåíèå íà ñòåïåíü äâîéêè ìîæíî çàìåíèòü ñäâèãîì,
÷òî åùå óáûñòðÿåò ýòè äåéñòâèÿ.
3.
Àðõèòåêòóðà ðåãèñòðîâ
è èíôîðìàòèâíîñòü ðåãèñòðîâîãî
ïðåäñòàâëåíèÿ äëèííûõ ÷èñåë â ÝÂÌ
Ðàññìîòðèì îáùèå ñâîéñòâà ââåäåííîé ñèñòåìû ñ÷èñëåíèÿ.
Âîïðîñ î êîíêðåòíîì âûáîðå îñíîâàíèÿ p ðåãèñòðîâîãî ïðåäñòàâëåíèÿ áîëüøèõ ÷èñëå â ÝÂÌ íåîáõîäèìî ðåøàòü ñ òî÷êè çðåíèÿ èíôîðìàòèâíîñòè ñèñòåìû ñ÷èñëåíèÿ è àðõèòåêòóðû ðåãèñòðîâ.
Êàê èçâåñòíî, èíôîðìàòèâíîñòüþ ñèñòåìû ñ÷èñëåíèÿ ñ îñíîâàíèåì p
íàçûâàåòñÿ åå ñâîéñòâî ïîñòðîåíèÿ êîëè÷åñòâà ÷èñåë ïðè ôèêñèðîâàííîì
÷èñëå çíàêîâ ÷èñëà [4]. Åñëè âçÿòü n çíàêîâ, òî ïîëó÷èòñÿ n=p ðàçðÿäîâ,
è êîëè÷åñòâî ÷èñåë, êîòîðîå ìîæíî çàïèñàòü, áóäåò ðàâíî
n
I (p) = p p :
Ìàêñèìóì ýòîé ôóíêöèè äîñòèãàåòñÿ ïðè p = e, ãäå e îñíîâàíèå íàòóðàëüíîãî ëîãàðèôìà.  ñèëó ïîñëåäíåãî, íàèáîëåå èíôîðìàòèâíîé ÿâëÿåòñÿ òðîè÷íàÿ ñèñòåìà ñ÷èñëåíèÿ.
Ðàññìîòðèì ñèñòåìó ñ÷èñëåíèÿ ñ îñíîâàíèåì p = 2i , ãäå i ÷èñëî áèòîâ ðåãèñòðà. Òîãäà èíôîðìàòèâíîñòü ðåãèñòðîâîãî ïðåäñòàâëåíèÿ
278
äëèííûõ ÷èñåë â ÝÂÌ áóäåò
i
I (p) = I (2i ) = I (i) = 2in2 ;
i 1:
Ïóñòü â íàøåì ðàñïîðÿæåíèè èìååòñÿ 32 áèòà. 32 áèòà ñîäåðæàò 64
çíàêà è â íèõ ìîæíî çàïèñàòü 232 öåëûõ ÷èñåë. Ìàêñèìàëüíîå ÷èñëî íà
ðåãèñòðå áóäåò 232 1. Åñëè ðàçáèòü 32 áèòà íà äâå ãðóïïû ïî 16 áèòîâ, òî
â êàæäîé èç ïîäãðóïï ìîæíî çàïèñàòü 216 öåëûõ ÷èñåë. Ðàçáèâ íà ÷åòûðå
ãðóïïû ïî 8 áèò ïî 16 çíàêîâ, ìîæíî çàïèñàòü 28 öåëûõ ÷èñåë â êàæäîé
ãðóïïå. Îòñþäà âèäíî, ÷òî åñëè ðàçáèâàòü ðåãèñòðû íà ãðóïïû ñòåïåíè 2,
òî èíôîðìàòèâíîñòü ñèñòåìû äëÿ êàæäîãî ðàçáèåíèÿ íå ìåíÿåòñÿ.
Ò å î ð å ì à 1 Èíôîðìàòèâíîñòü äëÿ ñèñòåìû ñ÷èñëåíèÿ ñ
îñíîâàíèåì p = 2i íå ìåíÿåòñÿ ïðè ðàçáèåíèè ðåãèñòðîâ íà ãðóïïû,
åñëè ÷èñëî çíàêîâ íà ðåãèñòðå n = 2i k, ãäå k ÷èñëî ðåãèñòðîâ.
Äîêàçàòåëüñòâî òåîðåìû 1 íåïîñðåäñòâåííî ïîëó÷àåòñÿ ïîäñòàíîâêîé
â ôîðìóëó äëÿ èíôîðìàòèâíîñòè ñèñòåìû ñ÷èñëåíèÿ.
Èç óòâåðæäåíèÿ òåîðåìû 1 ñëåäóåò, ÷òî ââåäåííîå ïðåäñòàâëåíèå
áîëüøèõ ÷èñåë (4) íå óõóäøàåò èíôîðìàòèâíîñòü äâîè÷íîé ñèñòåìû
ñ÷èñëåíèÿ è íå âëèÿåò íà äëèíó ïåðèîäà äàò÷èêà ñëó÷àéíûõ ÷èñåë. Ïðè
äðóãîì ðàçáèåíèè ðåãèñòðîâ íà ãðóïïû ïîñëåäíåå íå âûïîëíÿåòñÿ. Ïðè
ðåãèñòðîâîì ïðåäñòàâëåíèè áîëüøèõ ÷èñåë â ÝÂÌ óäîáíî, ÷òîáû ÷èñëî
áèòîâ íà ðåãèñòðå ñîâïàäàëî ñ ÷èñëîì ðåãèñòðîâ. Ýòî òðåáîâàíèå ëåãêî
âûïîëíÿåòñÿ íà ïðîöåññîðàõ Intel 8086, Intel 80386. Îäíàêî ñîâðåìåííûå ïîêîëåíèÿ ïðîöåññîðîâ, òèïà Intel P6, ñîäåðæàò íåäåëèìóþ âåðõíþþ ÷àñòü ðåãèñòðîâ ïðîöåññîðà òèïà EAX , ÷òî ñ íàøåé òî÷êè çðåíèÿ
ÿâëÿåòñÿ íåäîñòàòêîì èõ àðõèòåêòóðû, ò. ê. ðåãèñòðîâîå ïðåäñòàâëåíèå
áîëüøèõ ÷èñåë ÿâëÿåòñÿ îáùåé ïðîáëåìîé àðõèòåêòóðû ïðîöåññîðîâ. Ýòî
âûíóæäàåò íàñ èñïîëüçîâàòü p = 2i , i = 16; k = 16, à â êà÷åñòâå ai è bj
÷èñëà òèïà integer â ñèñòåìàõ ïðîãðàììèðîâàíèÿ. Îòìåòèì, ÷òî èìåííî ñ
ýòèìè ÷èñëàìè íàèáîëåå áûñòðî îñóùåñòâëÿåòñÿ ðàáîòà ïðîöåññîðà òèïà
Intel P6.
4.
Äàò÷èêè ïñåâäîñëó÷àéíûõ âåëè÷èí
Äëÿ ïðèìåðà ðàññìîòðèì äàò÷èê ãåíåðèðîâàíèÿ ïñåâäîñëó÷àéíûõ
÷èñåë ñ äëèíîé ìóëüòèïëèêàòîðà â äâà ðàçà ìåíüøå. Ïðèìåíèì ðåãèñòðîâîå ïðåäñòàâëåíèå áîëüøèõ ÷èñåë â ÝÂÌ äëÿ àëãîðèòìà ìóëüòèïëèêàòèâíîãî äàò÷èêà ñ ïåðèîäîì
i 2 ; ãäå i = 16; 32:::
2
279
Ìóëüòèïëèêàòîð A ìîæåò áûòü ïðåäñòàâëåí ìåíüøèì ÷èñëîì ðåãèñòðîâ
ïðîöåññîðà.
(ak ak 1 :::a1 )p ; ãäå
k n:
Äëÿ çàïîìèíàíèÿ ñëó÷àéíîãî ÷èñëà íóæíî n ðåãèñòðîâ, à äëÿ ìóëüòèïëèêàòîðà k n ðåãèñòðîâ. Âíîâü ïîëó÷èì ÷èñëî ïî àëãîðèòìó (1),
ãäå n ÷èñëî êîýôôèöèåíòîâ â ðåãèñòðîâîì ïðåäñòàâëåíèè ñëó÷àéíîãî
÷èñëà [ak ak 1 :::a1 a0 ]p , p = 2i , i ÷èñëî áèòîâ ðåãèñòðà.
Ïðîâåðèì ñâîéñòâà íîâîãî äàò÷èêà ñ áîëüøèì ïåðèîäîì, ñðàâíèâàÿ äàò÷èêè ñ ðåãèñòðîâîé ïàìÿòüþ i = 16 è i = 32 äëÿ îòâåòà íà
âîïðîñ î çàòðàòàõ è èõ ïðîèçâîäèòåëüíîñòè. Äàò÷èê ïåðâûé: Zn+1 =
Zn A mod (216 ), ãäå Zn öåëûå ÷èñëà ñ îñíîâàíèåì ñèñòåìû ñ÷èñëåíèÿ
p = 216 . Äàò÷èê âòîðîé: Zn+1 = Zn A mod (232 ), ãäå Zn ÷èñëà (a; b)p
(a; b öåëûå). Â ðåãèñòðîâîì ïðåäñòàâëåíèè îïåðàòîð óìíîæåíèÿ âî
âòîðîì äàò÷èêå îïðåäåëåí ïðåäñòàâëåíèåì: (d; a)p (b; c)p ïî àëãîðèòìó
(2). Äëÿ óáûñòðåíèÿ äåéñòâèé ìîæíî ðàññìîòðåòü ìóëüòèïëèêàòîð A â
âèäå (e; f )p èëè (0; f )p (0 a0 < p). Ñâîéñòâà ïñåâäîñëó÷àéíûõ ÷èñåë
íåçíà÷èòåëüíî óõóäøàþòñÿ â ýòîì ñëó÷àå ïðè âûáîðå ìóëüòèïëèêàòîðà,
ê ïðèìåðó 24357, à âðåìÿ ìîäåëèðîâàíèÿ îäíîãî ïñåâäîñëó÷àéíîãî ÷èñëà ñîêðàùàåòñÿ ñ 0,22 0,24 ìèêðîñåêóíä, äî 0,1 0,17 ìèêðîñåêóíä äëÿ
ïðîöåññîðà Intel Pentium 4.
Ñïèñîê ëèòåðàòóðû
[1]
Ìàíäæãàëàäçå Ï. Â., Ìîðîçîâ À. Ì., Ñóäàêîâ Ä. Ì. Ôîðìèðîâàíèå
ñëó÷àéíûõ öèôð â ïðîèçâîëüíîé ñèñòåìå ñ÷èñëåíèÿ // Òðóäû Âû÷èñëèòåëüíîãî öåíòðà (èì. Ìóñõåëèæâèëè Í. Í.) ÀÍ Ãðóç. ÑÑÑÐ.
Ò. 21.  2. 1981. Ñ. 74104.
[2]
Àáåëü Ï. ßçûê Àññåìáëåðà äëÿ IBM PC è ïðîãðàììèðîâàíèÿ.
Ì.:Âûñø. øê. 1992. 447 ñ.
[3]
Åðìàêîâ Ñ. Ì., Ìèõàéëîâ Ã. À., Ñòàòèñòè÷åñêîå ìîäåëèðîâàíèå. Ì.
Íàóêà. 1982. 294 ñ.
[4]
Ôîìèí Ñ. Â. Ñèñòåìû ñ÷èñëåíèÿ. Ì. Íàóêà. 1987. 40 ñ.
280
Download