[J-core] Sorry for the radio silence.
BGB
cr88192 at gmail.com
Wed May 17 21:56:52 EDT 2017
On 5/17/2017 4:25 PM, Rob Landley wrote:
> On 05/15/2017 12:17 AM, BGB wrote:
>>> There's a fun talk an AMD guy gave a while back about how they can't
>>> simulate their chip design in even the highest-end FPGAs because it's
>>> just way too big:
>>>
>>> https://www.youtube.com/watch?v=eDmv0sDB1Ak&t=52m0s
>>>
>>> Meanwhile, our stuff fits in the cheap low-end FPGAs. :)
>> yeah; granted, a modern x86 chip is a pretty big complicated thing.
> That's an understatement.
>
> https://twitter.com/0xabU/status/862345132363755520
yeah, FWIW, there are also several thousand I-forms IIRC (and a fair bit
more of one counts the various ModR/M forms separately).
it isn't quite as bad if one sticks to a 486-like subset (sufficient for
a majority of 32-bit code).
but, my own thinking has been more like:
the existing SH ISA would remain as the primary ISA
probably also what compilers would target by default.
a 64-bit mode could exist as an extension
some extensions would exist mostly to pave over some "rough areas"
as a result, the vast majority to the extensions in this case
ended up being MOV forms.
ex: larger displacements, and an analog of x86's
[base+index*scale+disp] addressing.
the thinking is these could potentially improve both code
density and performance.
these would likely be optional features intended for more
performance-oriented cores.
optional extensions to the FPU (ex: to add SIMD, ...)
these are intended more as a special purpose feature (1).
probably most cores would skip this in favor of a more basic FPU.
unlike the memory ops, SIMD is less directly relevant for
normal C code.
it is admittedly intended more for running something more
like GLSL or similar.
as for the random idea of reorganizing the FPU registers in 64-bit mode;
I dropped it as I realized soon afterwards than this would have an
adverse effect on the C ABI.
sort of a running "idea spec" for the SIMD design (as-is):
https://github.com/cr88192/bgbtech_shxemu/wiki/BJX1-NV_SIMD1
a similar idea spec for the BJX1 ISA extensions:
https://github.com/cr88192/bgbtech_shxemu/wiki/SH-BJX1-ISA
though, it is likely that only parts of BJX1 would be implemented, a
partial goal of the compiler effort is to identify what can potentially
offer the most "bang for the buck" here.
a grey area though is what all parts of the opcode space may be reserved
for larger escape-coded I-Forms.
as-is, the space for escape-coded forms looks like:
0xx0 (SH 2A), MOVI20
0xx1 (SH 2A), MOVI20S
3xx1 (SH 2A), various
3xx9 (SH 2A), various
4nF8 (BJX1), LDSH16 #imm16, Rn (Rn=(Rn<<16)|Imm)
82xx (BJX1), reserved (probably various)
8Axx (BJX1), MOV #imm24, R0
8Exx (BJX1), various
FxxF (BJX1), reserved (probably mostly for FPU/SIMD ops)
use of anything from 2A is debatable, and would probably be limited
mostly to its MOV I-forms.
or such...
More information about the J-core
mailing list