Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!sri-unix!sri-spam!ames!lll-tis!ohlone!lll-winken!csustan!csun!psivax!nrcvax!ihm From: ihm@nrcvax.UUCP (Ian H. Merritt) Newsgroups: comp.protocols.tcp-ip Subject: Re: TCP performance limitations Message-ID: <1218@nrcvax.UUCP> Date: Thu, 8-Oct-87 12:05:47 EDT Article-I.D.: nrcvax.1218 Posted: Thu Oct 8 12:05:47 1987 Date-Received: Tue, 13-Oct-87 03:04:25 EDT References: <871006093545.3.DCP@KOYAANISQATSI.S4CC.Symbolics.COM> Reply-To: ihm@minnie.UUCP (Ian Merritt) Organization: Network Research Corporation (The Frobbozz Magic Network Company) Lines: 16 >There is a fourth way that we (Symbolics) have done which you did not >mentioned: > >(a) Pick a compile-time unrolling factor, usually a power of 2, say 16 = 2^4. >(b) Divide the data length by the unrolling factor, obtaining a quotient > and remainder. When the unrolling factor is a power of two, the > quotient is a shift and the remainder is a logical AND. >(c) Write a unrolled loop whose length is the unrolling factor. Execute > this loop times. >(d) Write an un-unrolled loop (whose length is therefore 1). Execute > this loop times. Or if you have memory to burn (which is fast becoming a common condition), just unroll the loop for the maximum condition and branch into it at the appropriate point to process the length of the actual packet. --i