[comp.protocols.tcp-ip.ibmpc] Why 64K is better than 8K

BILLY@VENERA.ISI.EDU (Billy Brackenridge) (05/16/88)

Last month my company, Information Presentation Technologies released
the IPT-1000 Ethernet card for the Macintosh SE.  It features the
AMD7990 chipset and either 16K or 64K of dual ported memory.

Earlier we designed and still use in house a nearly identical board
for the IBM PC. Our primary product is uShare a Macintosh to Unix
connectivity product. The PC Ethernet card didn't fit into our
product line so we haven't yet manufactured it, but I have had
experience helping design and program this card. 

As much as I'd like to write a glowing sales blurb for our products,
I think it more educational for the PCIP list to give a historical
account of how we came to the same conclusions about dual ported
memory that others seem to be reaching in the ongoing discussion.

As few people on this list are familiar with the Macintosh and
Apple's protocols, let me define some terms. LocalTalk refers to the
physical 225Kbps network hardware built into all Macintosh computers.
AppleTalk refers to Apple's proprietary (but well documented)
software protocols. Two years ago the hardware was called AppleTalk
as well, but this changed when Apple defined the terms LocalTalk and
EtherTalk. EtherTalk refers to sending AppleTalk packets over
EtherNet. Like Humpty Dumpty, protocol designers get to make words
mean what ever they want them to mean.

Both our Ethernet cards were based on our earlier experience (When the
company was named Lutsky Baird Associates) building LocalTalk cards
for various 68000 unix boxes. We discovered early in the networking
game that dual ported memory has many advantages over the traditional
DMA interface.

The AppleTalk protocol suite has at the transport layer: ATP, for
Apple Transaction Protocol. It is a mini version of Dave Clark's
NETBLIT.  You send a one packet request and you get back up to 8
large packets in reply.  You then send a bit mapped ACK indicating
which of the 8 packets you got. This works fine when dedicated
Macintoshes are talking to each other.  Despite LocalTalk's slow
speed of 225Kbps, transactions clip right along.

Our AppleShare file servers and print spoolers run under Unix.
Unix interrupt latency leaves a lot to be desired.  When a half
dozen Macintoshes start firing 8 packets as fast as their little
68000s will go, the lights dim all over Unix land. We found with small
buffers we were losing too many packets as Unix was frequently busy
doing something else it deemed more important than fetching AppleTalk
packets. We found that moving to 64K of dual ported buffers was about
the right "impedance match" for this speed network.

After this experience building LocalTalk hardware, it seemed natural
to build our Ethernet cards the same way. We expect to use them in
client machines, servers, and gateway devices. These machines will
run various operating systems that have differing latency
characteristics. 

How much dual ported memory is enough? We found that 16K wasn't
enough for servers. If 64K isn't enough you have serious problems
somewhere else. If you put your Ethernet chip in promiscuous mode on
a busy Ethernet and your processor isn't fast enough to look at all
the packets, no amount of buffer memory will help.

John Romkey pointed out that deciding where to map dual ported memory
can be very exciting due to conflicts with mapped memory and other
devices. This isn't an issue on the Macintosh, but on the AT we got
around this by making the dual ported memory location programmable on
any 64K memory boundary in the AT's 24 bit address space. As with any
PC product the number of service calls you get is directly
proportional to the number of jumpers the customer can scramble. 

Karl Auerbach mentioned the I/O ready line doesn't work on many AT clones.
We don't use this line as Static RAM runs at AT bus speeds of the fastest
CPUs on the market.

As both our PC and Macintosh cards have 16 bit data paths you have
your choice of 16K memory or 64K memory. Static RAM chips come in
8x8K or 8x32K varieties. We recommend 64K for server machines and
16K for user machines. For this size memory static RAM is cheaper
than dynamic RAM as you don't need memory refresh circuitry.

In order to protect the dual ported memories from simultaneous access
our card acts as if it is doing DMA. When starting the card you tell
the AT DMA controller the card is in "Cascaded" mode. IBM DMA has
always been a black art but someone told me the right I/O instruction,
and I have never had a problem. Whenever the AMD7990 reads or writes
memory it locks out the AT CPU even though it never transfers data
over the AT bus. The Macintosh card uses a similar mechanism.

Our LocalTalk cards have a Z80 CPU so the memory allocation is done
on a per packet basis and the 64K buffer space is efficiently used.
The AMD 7990 and the National chip in the Western Digital card demand
that packet buffers be statically allocated. If a packet arrives larger
than these buffers it will be split across two buffers. For a
gateway application I allocated buffers 1518 bytes long (maximum
ethernet packet size). This is wasteful of space but it makes it easy
to write C code to process the packets without moving them. You need
at least 16K of dual ported RAM to get away with this sort of
extravagance.

Billy Brackenridge
Information Presentation Technologies 
23801 Calabasas road, Suite 2011
Calabasas, CA 91302
(818)347-7791



-------