I do see the point to separating concerns, as I have expressed above - but the Pine64 Ox64 seems to be overly asymmetric just for its own sake.
I disagree.
It is true that heterogenous/asymmetric hardware is not well suited for a traditional kernel model. This does not mean heterogenous/asymmetric hardware is harmful or overly asymmetric for its own sake; it is simply not well suited for a traditional kernel model. Zeptoforth is
designed on top of a traditional single-local-kernel model, and just isn't well suited for heterogenous/asymmetric hardware.
Asymmetric hardware with heterogenous instruction set architectures are best suited for
multiple kernels, and therefore best suited for
distributed designs; not
parallel ones. (Note how I already mentioned this reminded me of an MPI discussion ages ago? It is exactly because of the difference between
distributed computing and
parallel computing.)
It does not really matter what the various different cores' kernels are, actual OS kernels or just subsystems. The key is the distributed approach, as opposed to parallel approach.
If you start looking at Ox64 as a distributed system, you should realize that to adapt zeptoforth to this system, you'd need to implement the core separation and core targeting in the language; perhaps even have a zeptoforth instance for each core, and a cross-core communication system – some kind of Message Passing Interface, perhaps.
(I assume you know this, this is just for the benefit of others here who may not know what big.LITTLE is).
Yup. To be specific, I have both big.LITTLE SoCs (Samsung Exynos octa-core series, 4+4, Odroid HC1), as well as a couple of the smaller Ox64's.
Interestingly, initially Intel's heterogenous cores also had ISA differences, namely AVX512 support was available only on the P-cores, not on the E-cores. Intel Alder Lake processors P-cores do have AVX512, only disabled (AIUI with MSI Z690 firmware being capable of re-enabling it for the P-cores). Thus, there are more people who agree with you, and fewer that agree with me, if that sort of thing is important or useful data point to you. It is not for me: that sort of popularity is irrelevant. The corollary to that is the saying that a billion flies cannot be wrong: excrement tastes good.
As an example of what I'm experimenting with the smaller Ox64's: An USB-controlled external display module using small displays (see e.g.
BuyDisplay.com aka EastRising's IPS panels with ILI9341, ST7789, etc. controllers using parallel interfaces), with one core combining the output to the panel from at least two framebuffers ("background" and "overlay", latter with alpha support), and another handling USB communications. Having completely separate cores for this makes things
simpler – no need to worry about clock jitter due to interrups and so on –, and is basically perfect for this.
Further options include emulating old games and systems at 320x240 (or perhaps 480x320) resolutions, again with each core having their own assigned emulation tasks. I have used Teensy LC, 3.2, 4.0, and MicroMod for the exact same purpose: many of my appliances would benefit a lot from such displays.
Now, consider implementing that with zeptoforth. You'd definitely want to control which core executed which code, and not say parallelize things willy-nilly. Even having their "own" zeptoforth kernels/interpreters/JIT-compilers would make more sense.