If I took the various methods to make more compact instructions, and
combined them all, going all out, I could make memory-reference
instructions that were only 22 bits long. That would leave enough room
to allow them to be _predicated_ without a header!
Alas, no. Even making instructions as short as possible to exist in a
limited form does _not_ permit them to coexist with the existing full instruction set as I had hoped in this particular fashion.
It may, however, be possible to salvage something from this idea.
I found and corrected some errors in the opcode space allocated to headers. Some bit patterns were overlapping with instructions.
This happened as I was preparing to change the ISA of Concertina II. I thought that the 14-bit short instructions weren't really all that useful, and I would be better off by using the four-bit pattern it consumed to indicate a header indicating a block consisting of seven 36-bit instructions.
But that seemed like just making a third basic instruction set format... with all three of them being different ways of doing the same thing. Something else suggested itself to me instead.
If I took the various methods to make more compact instructions, and combined them all, going all out, I could make memory-reference
instructions that were only 22 bits long. That would leave enough room to allow them to be _predicated_ without a header!
But that had its own problems. Predication and break bits... were what was normally associated with a VLIW instruction set. And even if those didn't need headers, I still didn't see a way to avoid them for pseudo-
immediates. This might reduce the need for headers and block structure,
and allow the scheme of headers to be simplified, but it wouldn't mean I could do without it. So would this radical change _really_ make things better?
So I'm getting to that point I dreaded - the one where instead of settling on _this_ iteration of Concertina II, I go back to going around in
circles. Will I find a satisfying genuine improvement?
Your messages suggest that you are building your instruction encoding by hand. There are rather old algorithms like Huffman compression and
optimal search tree. If you define instructions and add weight factors (importance or expected frequency) appropriate algorithm shoul be able
to pack your instructions as densly as possible and guarantee that there
are no overlap.
What I salvaged was memory to register operate instructions that could
fit inside the basic 32-bit instruction set.
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 1,064 |
Nodes: | 10 (0 / 10) |
Uptime: | 148:04:40 |
Calls: | 13,691 |
Calls today: | 1 |
Files: | 186,936 |
D/L today: |
33 files (6,120K bytes) |
Messages: | 2,410,932 |