Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Mar 2001 21:12:50 -0800 (PST)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        Coleman Kane <cokane@FreeBSD.ORG>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: Machines are getting too damn fast
Message-ID:  <200103050512.f255CoB32923@earth.backplane.com>
References:  <200103040934.f249YHi27877@earth.backplane.com> <20010304230342.A3870@cokane.yi.org>

next in thread | previous in thread | raw e-mail | index | archive | help

:You should see what speed RamBus they were using, 600 or 800 Mhz. It is
:pretty fast for large memory writes and reads. It'd be cool to see how
:the different speeds stack up against one another. DDR comparisons would
:be cool too. Yeah, for the frequency, you have to take into account that
:these are different chips than your PIII or Athlons and the performance
:difference is not simply a linear relation to the frequency rating
:(i.e.: 1.3Ghz is not really over one-billion instructions per second,
:just clocks per second). We installed Linux at a UC Free OS User Group
:installfest here in cincinnati, it was pretty sweet. The machine was a
:Dell and the case was freakin' huge. It also came with a 21" monitor and
:stuff. The performace was really good, but not really any better than I
:hads gleaned from the newer 1Ghz Athlons or PIII's.

    It says 800 MHz (PC-800 RIMMs) on the side of the box.

    The technical reviews basically say that bulk transfer rates for
    RamBus blow DDR away, but DDR wins for random reads and writes
    due to RamBus's higher startup latency.  I don't have any DDR
    systems to test but I can devise a test program.

    Celeron 650 MHz (HP desktop) (DIMM)
	16.16 MBytes/sec (copy)

    Pentium III 550 MHz (Dell 2400) (DIMM)
	25.90 MBytes/sec (copy)

    Pentium 4 1.3 GHz / PC-800 RIMMs (Sony VAIO)
	32.38 MBytes/sec (copy)


						-Matt

Compile -O2, changing the two occurances of '512' to '4' will reproduce
the original bulk-transfer rates.  By default this program tests 
single-transfer (always cache miss).

#include <sys/types.h>
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <unistd.h>

#define NLOOP	100

char Buf1[2 * 1024 * 1024];
char Buf2[2 * 1024 * 1024];

int deltausecs(struct timeval *tv1, struct timeval *tv2);

int
main(int ac, char **av)
{
    int i;
    double dtime;
    struct timeval tv1;
    struct timeval tv2;

    memset(Buf1, 1, sizeof(Buf1));
    for (i = 0; i < 10; ++i)
	bcopy(Buf1, Buf2, sizeof(Buf1));

    gettimeofday(&tv1, NULL);
    for (i = 0; i < NLOOP; ++i) {
	int j;
	int k;
	for (k = sizeof(int); k <= 512; k += sizeof(int)) {
	    for (j = sizeof(Buf1) - k; j >= 0; j -= 512)
		*(int *)(Buf2 + j) = *(int *)(Buf1 + j);
	}
    }
    gettimeofday(&tv2, NULL);

    dtime = (double)deltausecs(&tv1, &tv2);
    printf("%6.2f MBytes/sec (copy)\n", (double)sizeof(Buf1) * NLOOP / dtime);
    return(0);
}

int
deltausecs(struct timeval *tv1, struct timeval *tv2)
{
    int usec;

    usec = (tv2->tv_usec + 1000000 - tv1->tv_usec);
    usec += (tv2->tv_sec - tv1->tv_sec - 1) * 1000000;
    return(usec);
}


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103050512.f255CoB32923>