aglew@urbsdc.Urbana.Gould.COM (11/02/88)
>There are many other operations which are cheap in hardware and expensive in >software. Maybe we should have a "competition" to see how many operations >we can come up with for which silicon can do a quick, efficient, accurate job, >but which are clumsy and expensive in software. > >I will toss in a few for starters. > > Find the distance to the next one in a bit stream FAST. It would >be good to have an exception handler if one is not found. I am considering >algorithms not worth implementing if the operation is slow. > >Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907 >Phone: (317)494-6054 >hrubin@l.cc.purdue.edu (Internet, bitnet, UUCP) Out of curiousity, would you care to explain exactly what you use the bit spacing primitives for? I can guess, based on conversations with users and signal processing experience, but I'd like an exact understanding. Ditto the POP, bit population, count the number of set bits in a word, operation.
aglew@urbsdc.Urbana.Gould.COM (11/06/88)
>/* Written 10:45 pm Nov 2, 1988 by ok@quintus.uucp in urbsdc:comp.arch */ >...a generation of programmers has been brainwashed that Hardware Rules, >and if some potentially useful operation is expensive it is their job >to avoid it rather than have the hardware and compiler people get it >right. People are still avoiding procedure calls (and RISC designers >are assuming that procedure calls are not deeply nested) because old >designs made procedure calls expensive. > >... > >The bottom line is that architectures should _support_ the operations >programmers find useful, but that some architects have shown that good >enough support can be had by doing part of an operation in hardware, >part in software. Too bad about Whizzbang. >/* End of text from urbsdc:comp.arch */ Bravo! I'm not sure about the frequency of use of multiply/divide, but I heartily agree about procedure calls, and with the overall sentiment that programmers should do what is best from the viewpoint of algorithmic efficiency, etc., and hardware should seek to support that. Procedure calls are one of the few good ideas that Computer Science has had. Building machines that are going to encourage people not to nest their procedures deeply is criminal, if those machines are likely to be used in SDI. At Gould, we were always finding places where Berkeley and AT&T code written for the VAX went to ridiculous lengths to avoid floating point and integer multiply/divide. For instance, we had poor buffer cache behaviour, using the %(2^n) algorithm.