EmbeddedRelated.com
Forums

RCM33xx and block arithmetic instructions

Started by slal_md January 5, 2005

I was reading some of the RCM manuals and discovered that the RCM33xx
and RCM3700 have 'new block arithmetic instructions.' Is anyone aware
of these instruction? Anyone where you can get more information on them?

Thanks




--- In rabbit-semi@rabb..., "slal_md" <slal_md@y...> wrote:
>
> I was reading some of the RCM manuals and discovered that the
RCM33xx
> and RCM3700 have 'new block arithmetic instructions.' Is anyone
aware
> of these instruction? Anyone where you can get more information
on them?
>
> Thanks

These instructions were designed specifically to accelerate RSA
public key operations to make SSL handshaking fast enough. They are
on the R3000A chip, which has been shipping on all Rabbit 3000 based
products for at least a year. The RCM33xx and the RCM37xx never
shipped with any other processor.

http://www.rabbitsemiconductor.com/documentation/docs/manuals/Rabbit2
000/InstructionReference/5insta2.html#812116




>
http://www.rabbitsemiconductor.com/documentation/docs/manuals/Rabbit2
> 000/InstructionReference/5insta2.html#812116

unbroken link:

http://tinyurl.com/53rwe




--- In rabbit-semi@rabb..., "bmurthazw" <bmurthazw@y...> wrote:
> These instructions were designed specifically to accelerate RSA
> public key operations to make SSL handshaking fast enough. They are
> on the R3000A chip, which has been shipping on all Rabbit 3000 based
> products for at least a year. The RCM33xx and the RCM37xx never
> shipped with any other processor.

I played around with them for a few evenings when I found that the CPU
on my Imagine Tools board was an R3000A. (aside: what happened to the
Yahoo! Imagine Tools group? It was deleted without even a whimper.)

My example was writing a 64 bit math library using the new
instructions. What I found was that on 8-byte strings, the overhead
of loading up the parameters for the fancy new instruction swamped out
the speed benefit compared to doing things the nromal, byte-wise way.
I think the new instructions would be a win for numeric values longer
than 80 or 128 bits (for example, on the 512 and 1024 bit RSA operations).

Kelly




Kelly,
Thanks alot. We are playing to using these instructions for numberic
values. You don't by chance happen to have any code segments on how
you used this do you? We are just starting to get into it and any
help would be appreciated.

Thanks
--- In rabbit-semi@rabb..., "Kelly" <kmhfoofoo@p...> wrote:
>
> --- In rabbit-semi@rabb..., "bmurthazw" <bmurthazw@y...> wrote:
> > These instructions were designed specifically to accelerate RSA
> > public key operations to make SSL handshaking fast enough. They are
> > on the R3000A chip, which has been shipping on all Rabbit 3000 based
> > products for at least a year. The RCM33xx and the RCM37xx never
> > shipped with any other processor.
>
> I played around with them for a few evenings when I found that the CPU
> on my Imagine Tools board was an R3000A. (aside: what happened to the
> Yahoo! Imagine Tools group? It was deleted without even a whimper.)
>
> My example was writing a 64 bit math library using the new
> instructions. What I found was that on 8-byte strings, the overhead
> of loading up the parameters for the fancy new instruction swamped out
> the speed benefit compared to doing things the nromal, byte-wise way.
> I think the new instructions would be a win for numeric values longer
> than 80 or 128 bits (for example, on the 512 and 1024 bit RSA
operations).
>
> Kelly




--- In rabbit-semi@rabb..., "Kelly" <kmhfoofoo@p...> wrote:

> I think the new instructions would be a win for numeric values
longer
> than 80 or 128 bits (for example, on the 512 and 1024 bit RSA
operations).

I wouldn't expect much benefit for a short block, but it provides
about a 8 or 10 X speed-up for the intial SSL 512 bit key RSA
operation, reducing the initial handshake time to from about 25
seconds to under 3 seconds at 44MHz.

>
> Kelly




--- In rabbit-semi@rabb..., "slal_md" <slal_md@y...> wrote:
> Thanks alot. We are playing to using these instructions
> for numberic values. You don't by chance happen to have
> any code segments on how you used this do you? We are
> just starting to get into it and any help would
> be appreciated.

Not at work, no. I'll see what I can find on my disk tonight ;)

As I recall, I wrapped each new opcode in a C function so that it was
easy to pass in different paramenters and experiement.

Kelly




Thanks a bunch I will keep an eye out for it. Thanks again.

--- In rabbit-semi@rabb..., "Kelly" <kmhfoofoo@p...> wrote:
>
> --- In rabbit-semi@rabb..., "slal_md" <slal_md@y...> wrote:
> > Thanks alot. We are playing to using these instructions
> > for numberic values. You don't by chance happen to have
> > any code segments on how you used this do you? We are
> > just starting to get into it and any help would
> > be appreciated.
>
> Not at work, no. I'll see what I can find on my disk tonight ;)
>
> As I recall, I wrapped each new opcode in a C function so that it was
> easy to pass in different paramenters and experiement.
>
> Kelly




--- In rabbit-semi@rabb..., "slal_md" <slal_md@y...> wrote:
> Thanks a bunch I will keep an eye out for it. Thanks again.

What I found on my disk has been placed in the files area
(64bit_test.c I think). It's the core of a 64-bit int library, which
I thought would be a good starting place for an arbitrary precision
math library.

Since my disk got thrashed several months back I had to recreate the
file from a backup. It might not compile as it is.

Best of luck,
Kelly



slal_md wrote:

> I was reading some of the RCM manuals and discovered that the RCM33xx
> and RCM3700 have 'new block arithmetic instructions.' Is anyone aware
> of these instruction? Anyone where you can get more information on them?

Look in appendix B of the Rabbit 3000 Microprocessor Manual, which
lists differences between the Rabbit 3000 and 3000A, where the new
instructions were added.

-Lynn