Deutsch English Français Italiano |
<uvmspo$ql2c$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Stephen Fuld <sfuld@alumni.cmu.edu.invalid> Newsgroups: comp.arch Subject: Re: "Mini" tags to reduce the number of op codes Date: Tue, 16 Apr 2024 15:06:48 -0700 Organization: A noiseless patient Spider Lines: 67 Message-ID: <uvmspo$ql2c$1@dont-email.me> References: <uuk100$inj$1@dont-email.me> <YshPN.227779$hN14.133879@fx17.iad> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Wed, 17 Apr 2024 00:06:51 +0200 (CEST) Injection-Info: dont-email.me; posting-host="e4560d6e9e80920818ac28626eb60e90"; logging-data="873548"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/ze8BLQS5Z2lyR4hGsbx4q111jtj1XrIs=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:5fpoTIeGdNc4O2/OfRrk4qeYJeI= Content-Language: en-US In-Reply-To: <YshPN.227779$hN14.133879@fx17.iad> Bytes: 4049 On 4/3/2024 11:44 AM, EricP wrote: > Stephen Fuld wrote: >> There has been discussion here about the benefits of reducing the >> number of op codes. One reason not mentioned before is if you have >> fixed length instructions, you may want to leave as many codes as >> possible available for future use. Of course, if you are doing a >> 16-bit instruction design, where instruction bits are especially >> tight, you may save enough op-codes to save a bit, perhaps allowing a >> larger register specifier field, or to allow more instructions in the >> smaller subset. >> >> It is in this spirit that I had an idea, partially inspired by Mill’s >> use of tags in registers, but not memory. I worked through this idea >> using the My 6600 as an example “substrate” for two reasons. First, >> it has several features that are “friendly” to the idea. Second, I >> know Mitch cares about keeping the number of op codes low. >> >> Please bear in mind that this is just the germ of an idea. It is >> certainly not fully worked out. I present it here to stimulate >> discussions, and because it has been fun to think about. >> >> The idea is to add 32 bits to the processor state, one per register >> (though probably not physically part of the register file) as a tag. >> If set, the bit indicates that the corresponding register contains a >> floating-point value. Clear indicates not floating point (integer, >> address, etc.). There would be two additional instructions, load >> single floating and load double floating, which work the same as the >> other 32- and 64-bit loads, but in addition to loading the value, set >> the tag bit for the destination register. Non-floating-point loads >> would clear the tag bit. As I show below, I don’t think you need any >> special "store tag" instructions. > > If you are adding a float/int data type flag you might as well > also add operand size for floats at least, though some ISA's > have both int32 and int64 ALU operations for result compatibility. Not needed for My 66000, as all floating point loads convert the loaded value to double precision. big snip > Currently the opcode data type can tell the uArch how to route > the operands internally without knowing the data values. > For example, FPU reservation stations monitor float operands > and schedule for just the FPU FADD or FMUL units. > > Dynamic data typing would change that to be data dependent routing. > It means, for example, you can't begin to schedule a uOp > until you know all its operand types and opcode. Seems right. > > Looks like it makes such distributed decisions impossible. > Probably everything winds up in a big pile of logic in the center, > which might be problematic for those things whose complexity grows N^2. > Not sure how significant that is. Could be. Again, IANAHG. -- - Stephen Fuld (e-mail address disguised to prevent spam)