Ok, so I've gone through my arch and IS more, and have come up with a pretty interesting system ![Wink Wink](https://forum.openredstone.org/images/smilies/wink.png)
So, a lot of instructions in my IS would make more sense as double-width instructions, but doing that would slow down the whole system in a lot of cases.
This is because the time taken to decode a register would be considered every time, even if I was performing the same op with the same registers. (This is a minor example)
So, I designed my IS so that the second half of a double-width instruction can be executed independently![Big Grin Big Grin](https://forum.openredstone.org/images/smilies/biggrin.png)
e.g. my alu ops look like this:
[(A reg)(!A)(B reg)(!B)] [(C reg)(OR)(FC)(Cin)(SHR)(Pop)]
The next op would go the same way.
but, if I didn't need to change the source registers afterwards (e.g. A+B=A works with this arch),
I could do this op by itself:
[(C reg)(OR)(FC)(Cin)(SHR)(Pop)]
also, I am doing the cpu async, so the first half will be a LOT faster to resolve than the second half.
e.g. <5 ticks and 10 ticks respectively.
Also note that I put the inverters in with the first (reg load) op. They would have added 1-2 ticks to each op if I put it with the second part of the instruction![Sad Sad](https://forum.openredstone.org/images/smilies/sad.png)
ok, here's some tentative specs:
(spoilered because the info is slightly outdated... It still is worth a read though
)
yup i think that's it for now :3
![Wink Wink](https://forum.openredstone.org/images/smilies/wink.png)
So, a lot of instructions in my IS would make more sense as double-width instructions, but doing that would slow down the whole system in a lot of cases.
This is because the time taken to decode a register would be considered every time, even if I was performing the same op with the same registers. (This is a minor example)
So, I designed my IS so that the second half of a double-width instruction can be executed independently
![Big Grin Big Grin](https://forum.openredstone.org/images/smilies/biggrin.png)
e.g. my alu ops look like this:
[(A reg)(!A)(B reg)(!B)] [(C reg)(OR)(FC)(Cin)(SHR)(Pop)]
The next op would go the same way.
but, if I didn't need to change the source registers afterwards (e.g. A+B=A works with this arch),
I could do this op by itself:
[(C reg)(OR)(FC)(Cin)(SHR)(Pop)]
also, I am doing the cpu async, so the first half will be a LOT faster to resolve than the second half.
e.g. <5 ticks and 10 ticks respectively.
Also note that I put the inverters in with the first (reg load) op. They would have added 1-2 ticks to each op if I put it with the second part of the instruction
![Sad Sad](https://forum.openredstone.org/images/smilies/sad.png)
ok, here's some tentative specs:
(spoilered because the info is slightly outdated... It still is worth a read though
![Wink Wink](https://forum.openredstone.org/images/smilies/wink.png)