Software needs to communicate with & share our CPUs, just like they do for all our hardware.
In my string-centric hypothetical I'd handle this sharing by including cooperative multitasking in the CPU, with some measure to ensure its making progress through its input.
Each thread would have its own callstack, & ensure they can be loaded into dispatch tables.
There'd be a microkernel scheduler in firmware, interpreting a queue of tasks.
1/3?