[J-core] Fwd: ISA manual for SH-2

BGB cr88192 at gmail.com
Fri May 26 00:11:57 EDT 2017


On 5/25/2017 8:54 PM, D. Jeff Dionne wrote:
> On May 26, 2017, at 10:18, BGB <cr88192 at gmail.com> wrote:
>> I have my own SH variant (currently mostly independent of J-Core;
> To be clear, are you working on a core (RTL) or a simulator?

still mostly ISA-level emulation, a C compiler, and a sort of primitive 
mock-up OS ("testkern").

the ISA extensions exist as optional features for the CPU emulator and C 
compiler.
     the C compiler was mostly because I don't terribly want to muck 
around in GCC.
     sadly, I still haven't matched GCC in terms of performance or 
stability (1).
     currently it is only producing statically-linked ELF output.
         support for dynamic linking is still on the TODO list.

testkern still isn't really a "real OS", as it still lacks proper 
application launching or multiple processes.
     these are on the TODO list, as some other things I want to 
experiment with will require these.
     plan is to support both MMU and NoMMU cases.
         might also want to test relative performance of PIC vs 
base-relocatable binaries.
         there would be different schemes for NoMMU with PIC and 
base-reloc code.
     it is probably rather unlikely that I will do a GUI for this 
(outside of project scope, ...).
         though, I do have relatively a fancy set of extended escape codes.
         (experimentally, can render Quake1 just using escape-codes... 
though at unrealistic bandwidth levels).


1: currently, my compiler output seems to be typically around 1.5x to 2x 
slower than "gcc -O3".
though, this is mostly in wall-clock time; I see a significant drop in 
MIPS relative to GCC's output, rather than a significant increase in the 
total number of instructions executed (may need more investigation).

it does currently seem to be faster than "gcc -O0" at least (which has 
both higher instruction counts and higher wall-clock times). tried "gcc 
-O1", but for some unknown reason I seem to be getting bugs/crashes in 
programs built with this option.

all this has been while producing plain SH4 code.

there is also an SH2 mode, but as-is, this basically just kills FPU 
support and similar (as opposed to supporting a soft-FPU); and is mostly 
untested.

it is still likely to need a fair bit more work/debugging/... before it 
is "ready for general use"; and maybe trying to optimize more for size 
and performance than trying to optimize how readable the disassembly was 
in the process of trying to hunt down codegen bugs.


I hope to be able to do a VHDL / FPGA version of my extended SH ISA at 
some point, but sadly don't have an abundance of time or money at the 
moment (most of my time recently going into classes; and it may take a 
big chunk of time to learn VHDL). so, this is rather unlikely in the 
near future.



More information about the J-core mailing list