Path: utzoo!attcan!uunet!bu.edu!purdue!mentor.cc.purdue.edu!l.cc.purdue.edu!cik From: cik@l.cc.purdue.edu (Herman Rubin) Newsgroups: comp.arch Subject: Re: Computer Architecture methodology Summary: Some examples Keywords: A Series, B6700 Message-ID: <2328@l.cc.purdue.edu> Date: 9 Jul 90 02:44:15 GMT References: <14279@burdvax.PRC.Unisys.COM> <844@tredysvr.Tredydev.Unisys.COM> <3627@auspex.auspex.com> Distribution: comp.arch Organization: Purdue University Statistics Department Lines: 64 In article <3627@auspex.auspex.com>, guy@auspex.auspex.com (Guy Harris) writes: > >Users can make use of weird instructions. > > If users can make use of any arbitrary "weird instruction", what > prevents the desired instruction set of a machine from being unbounded > above? Eventually you have to choose *some* that you won't implement, > as a machine that implements every possible operation as a single > instruction is clearly unimplementable (few infinite items are > constructable in the real world :-)). ............................. > >You will find that there are good applications uses of most of them. [Example of weird instruction omitted.] > If you can't, then perhaps there are *some* "weird instructions" that > have no good application uses, and therefore, you do need some way of > choosing which "weird instructions" should go in anyway and which should > be deleted. Perhaps a practical suggestion of exactly such a way might > have more effect on the designers of hardware and HLLs than a series of > complaints that they're just not doing things right with no real > suggestions as to how they might do them better? Admittedly there are weird instructions which are at least extremely difficult to justify. In fact, I would even argue that some of the "instructions" on floating point chips, such as the transcendental functions, are nothing more that programs encoded in microcode. But there are lots of reasonable hardware instructions which have either disappeared or were rarely implemented. Examples of simple instructions in hardware, much more expensive in software, and for which I know of "reasonable" applications. Multiplication of integers with both most and least significant parts of the product available Division with quotient and remainder simultaneously Division of floating point numbers, with integer quotient and floating point remainder In the above two operations, allowing the choice of which quotient and remainder, depending on the signs of the arguments. Obtaining the spacing between the ones in a bit sequence. In the algorithms I would produce, this can be a major operation. The use of overflow and carry tests. Fixed point arithmetic. Multiplication of a floating point number by a power of two, not using the multiply unit Better conversion between integer and floating point. There is one major computer company which produces huge numbers of mainframes which do not have any hardware conversion capabilities whatever. Not only that, there was plenty of room for additional instructions when the line was started, and the company's own scientific people complained about the problem. -- Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907 Phone: (317)494-6054 hrubin@l.cc.purdue.edu (Internet, bitnet) {purdue,pur-ee}!l.cc!cik(UUCP)