Determing cache sizes -- request for testing

dsimcha dsimcha at yahoo.com
Wed Sep 10 09:43:09 PDT 2008


== Quote from Don (nospam at nospam.com.au)'s article
> This is a multi-part message in MIME format.
> --------------000507070609070404050303
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> Content-Transfer-Encoding: 7bit
> To implement efficient memory-intensive operations (memcpy, array
> operations, matrix multiplication, etc), you really need to know the
> sizes of the data caches.
> Although most modern CPUs provide methods to determine the sizes of
> their built-in caches, it's a complete pigs breakfast. There are
> multiple complicated methods, and documentation is scant.
> I've written some code to make this mess usable, and provide what you
> really want. For each level of cache, the code provides size in KB, ways
> of associativity, and the cache line size.
> The attached code should eventually become part of std.cpuid, and an
> equivalent module in Tango. But, it needs significant further testing.
> Please compile and run the code, and report the results. Any results
> would be useful, but particularly valuable would be:
> (1) Multicore AMD machines;
> (2) Early AMD machines (K6 or earlier).
> (3) Early Intel machines;
> (4) anything from another manufacturer.
> (5) any crashes or obvious bugs.

Seems to get things wrong for quad core Intels.  No, I'm not rich enough to own
one myself, this is my work computer.

Vendor string:    GenuineIntel
Processor string: Intel(R) Core(TM)2 Quad CPU           @ 2.66GHz
Signature:        Family=6 Model=15 Stepping=7
Features:         MMX FXSR SSE SSE2 SSE3 SSSE3 AMD64 HTT
Multithreading:   4 threads / 4 cores

Family=6 Model=F Stepping=7
Data caches:
Level 1 size=8K, ways=8 linesize=64
Level 2 size=1024K, ways=16 linesize=64
Level 3 size=4194303K, ways=1 linesize=64

According to CPU-Z, the L2 cache is 4096 Kb * 2.  I'm pretty sure that the
quad-core Intels are basically two dual-cores stuck together, meaning that they
have 2 L2 caches, each shared between two of the cores.  Also, the L1 cache info
is wrong if CPU-Z is right.  I actually have 32K of L2 cache per core.  For your
convenience, I've attached my CPU-Z HTML output.
begin 644 cpuz.htm
M/&AT;6P^/&AE860^/'1I=&QE/D-052U:(#$N-#4 at 2%1-3"!R97!O<G0 at 9FEL
M93PO=&ET;&4^/"]H96%D/CQB;V1Y(&)G8V]L;W(]1D9&1D9&/@T*/&9O;G0@
M9F%C93TB87)I86PB(&-O;&]R/2(C,#`P,#`P(CX-"CQT86)L92!B;W)D97(]
M,"!W:61T:#TB,3`P)2(@8V5L;'-P86-I;F<](C`B(&-E;&QP861D:6YG/2(U
M(CX-"CQT<B!A;&EG;CTB;&5F="(^#0H\=&0^#0H\<#X\82!H<F5F/2)H='1P
M.B\O=W=W+F-P=6ED+F-O;2(@=&%R9V5T/6)L86YK/CQI;6<@<W)C/2)H='1P
M.B\O=W=W+F-P=6ED+F-O;2]P:6-S+VQO9V\N:G!G(B!B;W)D97(](C`B('=I
M9'1H/2(Q-S(B(&AE:6=H=#TB-34B/CPO83X\+W`^#0H\<#X\8CY#4%4M6B`Q
M+C0U(')E<&]R="!F:6QE/"]B/CPO<#X-"CPO=&0^#0H\+W1R/@T*/'1R/CQT
M9#X\=&%B;&4 at 8F]R9&5R/2(Q(B!W:61T:#TB,3`P)2(@8V5L;'-P86-I;F<]
M(C`B(&-E;&QP861D:6YG/2(R(B!B9V-O;&]R/2(C1C!&,$8P(CX-"CQT<B!V
M86QI9VX](G1O<"(@8F=C;VQO<CTB(T4P13!&1B(^/'1D('=I9'1H/2(S,"4B
M/CQS;6%L;#X\8CY0<F]C97-S;W(H<RD\+V(^/"]S;6%L;#X\+W1D/CQT9"!V
M86QI9VX](F-E;G1E<B(^/'-M86QL/CQS;6%L;#X\9F]N="!C;VQO<CTB(S`P
M,#!!,"(^)FYB<W`\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-
M"CPO=&%B;&4^/"]T9#X\+W1R/@T*/'1R/CQT9#X\=&%B;&4 at 8F]R9&5R/2(Q
M(B!W:61T:#TB,3`P)2(@8V5L;'-P86-I;F<](C`B(&-E;&QP861D:6YG/2(R
M(B!B9V-O;&]R/2(C1C!&,$8P(CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I
M9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^3G5M8F5R(&]F('!R;V-E<W-O
M<G,\+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^
M/&9O;G0 at 8V]L;W(](B,P,#`P03`B/C$\+V9O;G0^/"]S;6%L;#X\+W-M86QL
M/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B
M/CQS;6%L;#X\<VUA;&P^/&(^3G5M8F5R(&]F(&-O<F5S/"]B/CPO<VUA;&P^
M/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C
M,#`P,$$P(CXT('!E<B!P<F]C97-S;W(\+V9O;G0^/"]S;6%L;#X\+W-M86QL
M/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B
M/CQS;6%L;#X\<VUA;&P^/&(^3G5M8F5R(&]F('1H<F5A9',\+V(^/"]S;6%L
M;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(]
M(B,P,#`P03`B/C0@<&5R('!R;V-E<W-O<CPO9F]N=#X\+W-M86QL/CPO<VUA
M;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED=&@](C,P
M)2(^/'-M86QL/CQS;6%L;#X\8CY.86UE/"]B/CPO<VUA;&P^/"]S;6%L;#X\
M+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CY)
M;G1E;"!#;W)E(#(@17AT<F5M92!16#8W,#`\+V9O;G0^/"]S;6%L;#X\+W-M
M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S
M,"4B/CQS;6%L;#X\<VUA;&P^/&(^0V]D92!.86UE/"]B/CPO<VUA;&P^/"]S
M;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P
M,$$P(CY+96YT<V9I96QD/"]F;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO
M='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB,S`E(CX\<VUA;&P^
M/'-M86QL/CQB/E-P96-I9FEC871I;VX\+V(^/"]S;6%L;#X\+W-M86QL/CPO
M=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(](B,P,#`P03`B/DEN
M=&5L*%(I($-O<F4H5$TI,B!1=6%D($-052`@("`@("`@("`@0"`R+C8V1TAZ
M/"]F;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N
M/2)T;W`B/CQT9"!W:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/E!A8VMA
M9V4\+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^
M/&9O;G0 at 8V]L;W(](B,P,#`P03`B/E-O8VME="`W-S4 at 3$=!/"]F;VYT/CPO
M<VUA;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT
M9"!W:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/D9A;6EL>2]-;V1E;"]3
M=&5P<&EN9SPO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS
M;6%L;#X\9F]N="!C;VQO<CTB(S`P,#!!,"(^-BY&+C<\+V9O;G0^/"]S;6%L
M;#X\+W-M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I
M9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^17AT96YD960 at 1F%M:6QY+TUO
M9&5L/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL
M/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CXV+D8\+V9O;G0^/"]S;6%L;#X\+W-M
M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S
M,"4B/CQS;6%L;#X\<VUA;&P^/&(^0V]R92!3=&5P<&EN9SPO8CX\+W-M86QL
M/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\9F]N="!C;VQO<CTB
M(S`P,#!!,"(^0C,\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-
M"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA
M;&P^/&(^5&5C:&YO;&]G>3PO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^
M/'-M86QL/CQS;6%L;#X\9F]N="!C;VQO<CTB(S`P,#!!,"(^-C4@;FT\+V9O
M;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O
M<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^0V]R92!3<&5E
M9#PO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\
M9F]N="!C;VQO<CTB(S`P,#!!,"(^,C8V,2XP($U(>CPO9F]N=#X\+W-M86QL
M/CPO<VUA;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED
M=&@](C,P)2(^/'-M86QL/CQS;6%L;#X\8CY-=6QT:7!L:65R('@@0G5S('-P
M965D/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL
M/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CXQ,"XP('@@,C8V+C$@34AZ/"]F;VYT
M/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B
M/CQT9"!W:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/E)A=&5D($)U<R!S
M<&5E9#PO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L
M;#X\9F]N="!C;VQO<CTB(S`P,#!!,"(^,3`V-"XT($U(>CPO9F]N=#X\+W-M
M86QL/CPO<VUA;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@
M=VED=&@](C,P)2(^/'-M86QL/CQS;6%L;#X\8CY3=&]C:R!F<F5Q=65N8WD\
M+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O
M;G0 at 8V]L;W(](B,P,#`P03`B/C(V-C8 at 34AZ/"]F;VYT/CPO<VUA;&P^/"]S
M;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB
M,S`E(CX\<VUA;&P^/'-M86QL/CQB/DEN<W1R=6-T:6]N('-E=',\+V(^/"]S
M;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L
M;W(](B,P,#`P03`B/DU-6"P at 4U-%+"!34T4R+"!34T4S+"!34U-%,RP at 14TV
M-%0\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI
M9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^3#$@
M1&%T82!C86-H92`H<&5R('!R;V-E<W-O<BD\+V(^/"]S;6%L;#X\+W-M86QL
M/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(](B,P,#`P03`B
M/C0@>"`S,B!+0GET97,L(#@M=V%Y('-E="!A<W-O8VEA=&EV92P at -C0M8GET
M92!L:6YE('-I>F4\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-
M"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA
M;&P^/&(^3#$@26YS=')U8W1I;VX at 8V%C:&4@*'!E<B!P<F]C97-S;W(I/"]B
M/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT
M(&-O;&]R/2(C,#`P,$$P(CXT('@@,S(@2T)Y=&5S+"`X+7=A>2!S970 at 87-S
M;V-I871I=F4L(#8T+6)Y=&4@;&EN92!S:7IE/"]F;VYT/CPO<VUA;&P^/"]S
M;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB
M,S`E(CX\<VUA;&P^/'-M86QL/CQB/DPR(&-A8VAE("AP97(@<')O8V5S<V]R
M*3PO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\
M9F]N="!C;VQO<CTB(S`P,#!!,"(^,B!X(#0P.38 at 2T)Y=&5S+"`Q-BUW87D@
M<V5T(&%S<V]C:6%T:79E+"`V-"UB>71E(&QI;F4@<VEZ93PO9F]N=#X\+W-M
M86QL/CPO<VUA;&P^/"]T9#X\+W1R/@T*/"]T86)L93X\+W1D/CPO='(^#0H\
M='(^/'1D/CQT86)L92!B;W)D97(](C$B('=I9'1H/2(Q,#`E(B!C96QL<W!A
M8VEN9STB,"(@8V5L;'!A9&1I;F<](C(B(&)G8V]L;W(](B-&,$8P1C`B/@T*
M/'1R('9A;&EG;CTB=&]P(B!B9V-O;&]R/2(C13!%,$9&(CX\=&0@=VED=&@]
M(C,P)2(^/'-M86QL/CQB/D-H:7!S970@)B!-96UO<GD\+V(^/"]S;6%L;#X\
M+W1D/CQT9"!V86QI9VX](F-E;G1E<B(^/'-M86QL/CQS;6%L;#X\9F]N="!C
M;VQO<CTB(S`P,#!!,"(^)FYB<W`\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO
M=&0^/"]T<CX-"CPO=&%B;&4^/"]T9#X\+W1R/@T*/'1R/CQT9#X\=&%B;&4@
M8F]R9&5R/2(Q(B!W:61T:#TB,3`P)2(@8V5L;'-P86-I;F<](C`B(&-E;&QP
M861D:6YG/2(R(B!B9V-O;&]R/2(C1C!&,$8P(CX-"CQT<B!V86QI9VX](G1O
M<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^3F]R=&AB<FED
M9V4\+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^
M/&9O;G0 at 8V]L;W(](B,P,#`P03`B/DY6241)02!N1F]R8V4T(%-,22!);G1E
M;"!%9&ET:6]N(')E=BX at 0S$\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^
M/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L
M;#X\<VUA;&P^/&(^4V]U=&AB<FED9V4\+V(^/"]S;6%L;#X\+W-M86QL/CPO
M=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(](B,P,#`P03`B/DY6
M241)02!N1F]R8V4 at -3<P(%-,22!R978N($$R/"]F;VYT/CPO<VUA;&P^/"]S
M;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB
M,S`E(CX\<VUA;&P^/'-M86QL/CQB/D=R87!H:6, at 26YT97)F86-E/"]B/CPO
M<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O
M;&]R/2(C,#`P,$$P(CY00TDM17AP<F5S<SPO9F]N=#X\+W-M86QL/CPO<VUA
M;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED=&@](C,P
M)2(^/'-M86QL/CQS;6%L;#X\8CY00TDM12!,:6YK(%=I9'1H/"]B/CPO<VUA
M;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R
M/2(C,#`P,$$P(CYX,38\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T
M<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\
M<VUA;&P^/&(^4$-)+44 at 36%X($QI;FL at 5VED=&@\+V(^/"]S;6%L;#X\+W-M
M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(](B,P,#`P
M03`B/G at Q-CPO9F]N=#X\+W-M86QL/CPO<VUA;&P^/"]T9#X\+W1R/@T*/'1R
M('9A;&EG;CTB=&]P(CX\=&0@=VED=&@](C,P)2(^/'-M86QL/CQS;6%L;#X\
M8CY-96UO<GD at 5'EP93PO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M
M86QL/CQS;6%L;#X\9F]N="!C;VQO<CTB(S`P,#!!,"(^1$12,CPO9F]N=#X\
M+W-M86QL/CPO<VUA;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\
M=&0@=VED=&@](C,P)2(^/'-M86QL/CQS;6%L;#X\8CY-96UO<GD at 4VEZ93PO
M8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\9F]N
M="!C;VQO<CTB(S`P,#!!,"(^-#`Y-B!-0GET97,\+V9O;G0^/"]S;6%L;#X\
M+W-M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H
M/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^365M;W)Y($9R97%U96YC>3PO8CX\
M+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\9F]N="!C
M;VQO<CTB(S`P,#!!,"(^,S,R+C8 at 34AZ("@T.C4I/"]F;VYT/CPO<VUA;&P^
M/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T
M:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/D-!4R, at 3&%T96YC>2`H=$-,*3PO
M8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\9F]N
M="!C;VQO<CTB(S`P,#!!,"(^-2XP(&-L;V-K<SPO9F]N=#X\+W-M86QL/CPO
M<VUA;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED=&@]
M(C,P)2(^/'-M86QL/CQS;6%L;#X\8CY205,C('1O($-!4R,@*'120T0I/"]B
M/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT
M(&-O;&]R/2(C,#`P,$$P(CXU(&-L;V-K<SPO9F]N=#X\+W-M86QL/CPO<VUA
M;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED=&@](C,P
M)2(^/'-M86QL/CQS;6%L;#X\8CY205,C(%!R96-H87)G92`H=%)0*3PO8CX\
M+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\9F]N="!C
M;VQO<CTB(S`P,#!!,"(^-2!C;&]C:W,\+V9O;G0^/"]S;6%L;#X\+W-M86QL
M/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B
M/CQS;6%L;#X\<VUA;&P^/&(^0WEC;&4 at 5&EM92`H=%)!4RD\+V(^/"]S;6%L
M;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(]
M(B,P,#`P03`B/C$U(&-L;V-K<SPO9F]N=#X\+W-M86QL/CPO<VUA;&P^/"]T
M9#X\+W1R/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED=&@](C,P)2(^/'-M
M86QL/CQS;6%L;#X\8CY"86YK($-Y8VQE(%1I;64@*'120RD\+V(^/"]S;6%L
M;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(]
M(B,P,#`P03`B/C(P(&-L;V-K<SPO9F]N=#X\+W-M86QL/CPO<VUA;&P^/"]T
M9#X\+W1R/@T*/"]T86)L93X\+W1D/CPO='(^#0H\='(^/'1D/CQT86)L92!B
M;W)D97(](C$B('=I9'1H/2(Q,#`E(B!C96QL<W!A8VEN9STB,"(@8V5L;'!A
M9&1I;F<](C(B(&)G8V]L;W(](B-&,$8P1C`B/@T*/'1R('9A;&EG;CTB=&]P
M(B!B9V-O;&]R/2(C13!%,$9&(CX\=&0@=VED=&@](C,P)2(^/'-M86QL/CQB
M/E-Y<W1E;3PO8CX\+W-M86QL/CPO=&0^/'1D('9A;&EG;CTB8V5N=&5R(CX\
M<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CXF;F)S<#PO9F]N
M=#X\+W-M86QL/CPO<VUA;&P^/"]T9#X\+W1R/@T*/"]T86)L93X\+W1D/CPO
M='(^#0H\='(^/'1D/CQT86)L92!B;W)D97(](C$B('=I9'1H/2(Q,#`E(B!C
M96QL<W!A8VEN9STB,"(@8V5L;'!A9&1I;F<](C(B(&)G8V]L;W(](B-&,$8P
M1C`B/@T*/'1R('9A;&EG;CTB=&]P(CX\=&0@=VED=&@](C,P)2(^/'-M86QL
M/CQS;6%L;#X\8CY3>7-T96T at 36%N=69A8W1U<F5R/"]B/CPO<VUA;&P^/"]S
M;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P
M,$$P(CY$96QL($EN8RX\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T
M<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\
M<VUA;&P^/&(^4WES=&5M($YA;64\+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^
M/'1D/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(](B,P,#`P03`B/D1E;&P@
M6%!3-S$P/"]F;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@
M=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB
M/E-Y<W1E;2!3+TX\+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L
M;#X\<VUA;&P^/&9O;G0 at 8V]L;W(](B,P,#`P03`B/CA60UHP1#$\+V9O;G0^
M/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX](G1O<"(^
M/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^36%I;F)O87)D(%9E
M;F1O<CPO8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L
M;#X\9F]N="!C;VQO<CTB(S`P,#!!,"(^1&5L;"!);F,N/"]F;VYT/CPO<VUA
M;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W
M:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/DUA:6YB;V%R9"!-;V1E;#PO
M8CX\+W-M86QL/CPO<VUA;&P^/"]T9#X\=&0^/'-M86QL/CQS;6%L;#X\9F]N
M="!C;VQO<CTB(S`P,#!!,"(^,%59,C4S/"]F;VYT/CPO<VUA;&P^/"]S;6%L
M;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB,S`E
M(CX\<VUA;&P^/'-M86QL/CQB/D))3U, at 5F5N9&]R/"]B/CPO<VUA;&P^/"]S
M;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P
M,$$P(CY$96QL($EN8RX\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T
M<CX-"CQT<B!V86QI9VX](G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\
M<VUA;&P^/&(^0DE/4R!697)S:6]N/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D
M/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CXQ+C0N
M,3PO9F]N=#X\+W-M86QL/CPO<VUA;&P^/"]T9#X\+W1R/@T*/'1R('9A;&EG
M;CTB=&]P(CX\=&0@=VED=&@](C,P)2(^/'-M86QL/CQS;6%L;#X\8CY"24]3
M($1A=&4\+V(^/"]S;6%L;#X\+W-M86QL/CPO=&0^/'1D/CQS;6%L;#X\<VUA
M;&P^/&9O;G0 at 8V]L;W(](B,P,#`P03`B/C`U+S`W+S(P,#<\+V9O;G0^/"]S
M;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-"CPO=&%B;&4^/"]T9#X\+W1R/@T*
M/'1R/CQT9#X\=&%B;&4 at 8F]R9&5R/2(Q(B!W:61T:#TB,3`P)2(@8V5L;'-P
M86-I;F<](C`B(&-E;&QP861D:6YG/2(R(B!B9V-O;&]R/2(C1C!&,$8P(CX-
M"CQT<B!V86QI9VX](G1O<"(@8F=C;VQO<CTB(T4P13!&1B(^/'1D('=I9'1H
M/2(S,"4B/CQS;6%L;#X\8CY-96UO<GD at 4U!$/"]B/CPO<VUA;&P^/"]T9#X\
M=&0@=F%L:6=N/2)C96YT97(B/CQS;6%L;#X\<VUA;&P^/&9O;G0 at 8V]L;W(]
M(B,P,#`P03`B/B9N8G-P/"]F;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO
M='(^#0H\+W1A8FQE/CPO=&0^/"]T<CX-"CQT<CX\=&0^/'1A8FQE(&)O<F1E
M<CTB,2(@=VED=&@](C$P,"4B(&-E;&QS<&%C:6YG/2(P(B!C96QL<&%D9&EN
M9STB,B(@8F=C;VQO<CTB(T8P1C!&,"(^#0H\='(@=F%L:6=N/2)T;W`B/CQT
M9"!W:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/DUO9'5L92`Q/"]B/CPO
M<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O
M;&]R/2(C,#`P,$$P(CY$1%(R+"!00S(M-3,P,"`H,S,S($U(>BDL(#$P,C0@
M34)Y=&5S+"!1:6UO;F1A/"]F;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO
M='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB,S`E(CX\<VUA;&P^
M/'-M86QL/CQB/DUO9'5L92`R/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT
M9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CY$1%(R+"!0
M0S(M-3,P,"`H,S,S($U(>BDL(#$P,C0 at 34)Y=&5S+"!1:6UO;F1A/"]F;VYT
M/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B
M/CQT9"!W:61T:#TB,S`E(CX\<VUA;&P^/'-M86QL/CQB/DUO9'5L92`S/"]B
M/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT
M(&-O;&]R/2(C,#`P,$$P(CY$1%(R+"!00S(M-3,P,"`H,S,S($U(>BDL(#$P
M,C0 at 34)Y=&5S+"!1:6UO;F1A/"]F;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D
M/CPO='(^#0H\='(@=F%L:6=N/2)T;W`B/CQT9"!W:61T:#TB,S`E(CX\<VUA
M;&P^/'-M86QL/CQB/DUO9'5L92`T/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D
M/CQT9#X\<VUA;&P^/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CY$1%(R
M+"!00S(M-3,P,"`H,S,S($U(>BDL(#$P,C0 at 34)Y=&5S+"!1:6UO;F1A/"]F
M;VYT/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\+W1A8FQE/CPO=&0^
M/"]T<CX-"CQT<CX\=&0^/'1A8FQE(&)O<F1E<CTB,2(@=VED=&@](C$P,"4B
M(&-E;&QS<&%C:6YG/2(P(B!C96QL<&%D9&EN9STB,B(@8F=C;VQO<CTB(T8P
M1C!&,"(^#0H\='(@=F%L:6=N/2)T;W`B(&)G8V]L;W(](B-%,$4P1D8B/CQT
M9"!W:61T:#TB,S`E(CX\<VUA;&P^/&(^4V]F='=A<F4\+V(^/"]S;6%L;#X\
M+W1D/CQT9"!V86QI9VX](F-E;G1E<B(^/'-M86QL/CQS;6%L;#X\9F]N="!C
M;VQO<CTB(S`P,#!!,"(^)FYB<W`\+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO
M=&0^/"]T<CX-"CPO=&%B;&4^/"]T9#X\+W1R/@T*/'1R/CQT9#X\=&%B;&4@
M8F]R9&5R/2(Q(B!W:61T:#TB,3`P)2(@8V5L;'-P86-I;F<](C`B(&-E;&QP
M861D:6YG/2(R(B!B9V-O;&]R/2(C1C!&,$8P(CX-"CQT<B!V86QI9VX](G1O
M<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^5VEN9&]W<R!6
M97)S:6]N/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^/'-M
M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CY-:6-R;W-O9G0 at 5VEN9&]W<R!8
M4"!(;VUE($5D:71I;VX@(%-E<G9I8V4 at 4&%C:R`S("A"=6EL9"`R-C`P*2`\
M+V9O;G0^/"]S;6%L;#X\+W-M86QL/CPO=&0^/"]T<CX-"CQT<B!V86QI9VX]
M(G1O<"(^/'1D('=I9'1H/2(S,"4B/CQS;6%L;#X\<VUA;&P^/&(^1&ER96-T
M6"!697)S:6]N/"]B/CPO<VUA;&P^/"]S;6%L;#X\+W1D/CQT9#X\<VUA;&P^
M/'-M86QL/CQF;VYT(&-O;&]R/2(C,#`P,$$P(CXY+C!C/"]F;VYT/CPO<VUA
M;&P^/"]S;6%L;#X\+W1D/CPO='(^#0H\+W1A8FQE/CPO=&0^/"]T<CX-"CPO
59F]N=#X\+V)O9'D^/"]H=&UL/@T*
`
end



More information about the Digitalmars-d mailing list