<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>RE: [openib-general] IPoIB IETF WG presentation updated again</TITLE>
</HEAD>
<BODY>
<BR>
<BR>

<P><FONT SIZE=2>> -----Original Message-----</FONT>
<BR><FONT SIZE=2>> From: Roland Dreier [<A HREF="mailto:roland@topspin.com">mailto:roland@topspin.com</A>]</FONT>
<BR><FONT SIZE=2>> Sent: Tuesday, August 03, 2004 5:24 PM</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>>     Hal> Cloning an AH is probably faster than creating a new one from</FONT>
<BR><FONT SIZE=2>>     Hal> scratch. (We would need an additional verb for this). How</FONT>
<BR><FONT SIZE=2>>     Hal> much does this cost ? Is this optimization worth it ?</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> Actually cloning an AH is probably slower on Tavor than creating one</FONT>
<BR><FONT SIZE=2>> from scratch, at least if the AH is in Tavor memory.  To clone an AH</FONT>
<BR><FONT SIZE=2>> one has to do a bunch of reads across PCI and then write the data back</FONT>
<BR><FONT SIZE=2>> across PCI, while creating a new one is just a matter of taking the</FONT>
<BR><FONT SIZE=2>> address attributes (which are almost certainly already in CPU cache)</FONT>
<BR><FONT SIZE=2>> and writing them across PCI.  (Reads across PCI are much more</FONT>
<BR><FONT SIZE=2>> expensive than writes, which can be posted and even write-combined)</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>If you want to do a fair comparison, then you need to compare ModifyAH</FONT>
<BR><FONT SIZE=2>with DestroyAH+CreateAH. Anyway, since AVs are read only from the HCA </FONT>
<BR><FONT SIZE=2>perspective, if you want to do a good implementation of AV operations, then </FONT>
<BR><FONT SIZE=2>you can completely avoid PIO reads. Just maintain a shadow data structure</FONT>
<BR><FONT SIZE=2>in the process address space that will hold the kind of information that</FONT>
<BR><FONT SIZE=2>you intended to read from the device memory. While this solution requires</FONT>
<BR><FONT SIZE=2>more memory, this memory doesn't need to be pinned, so it's relatively </FONT>
<BR><FONT SIZE=2>a cheap resource and it reduces PIO reads completely.</FONT>
</P>

<P><FONT SIZE=2>Dror</FONT>
</P>

</BODY>
</HTML>