After many years of active development, AROS finally seems to be able to ‘evolve’ the now 30+ years old architecture of the Amiga API. The original Amiga computers from Commodore brought to home users and professionals the first pre-emptive, window based operating system at affordable prices, although its kernel was tailored to the single Motorola 68000 CPU mounted on the machines. After Commodore’s demise in 1994, a long debate started about the evolution of the Amiga platform and, although many announcements were made, current AmigaOS 4.1 is still a 32bit-based, single-core oriented operating system, and the same is true for Amiga-like alternatives MorphOS and AROS.
Things, however, are changing. In his weekly survey about AROS progress on AROS-EXEC.org and Amigaworld.net, Krzysztof Smiechowicz talked about “Work on handling additional CPU cores in x86_64 AROS kernel”, adding “Initial version of SMP scheduler has been introduced in AROS i386/x86_64 kernel” just a week later. In the following weeks, a screenshot from coder Nick Andrews and a video on Youtube showed a 64-bit version of AROS, runnning on multicore AMD and Intel processors, handling 4 and 8 cores correctly.
SMP is being added to AROS by experienced coders Nick Andrews and Michal Schulz, and while it is not available in public nightly builds just yet, there is finally the chance to see an Amiga-like operating system handling modern CPUs properly.
This should have been done in the early 2000s when x86-64 became the de facto standard.
Yeah but AROS was mostly not around at the time and had to reverse engineer the whole OS first and that takes time … !
The first release of AROS was in 1995
Which barely counted as an OS. It wasn’t until mid to late 2000 it was at all usable.
I wouldn’t say that amd64 became a de facto standard in early 2000s. It was more at the end of that decade. Before that most of the people didn’t even know about that or still used 32 bit systems even with 64 bit capable CPUs (Intel released first CPU with these instructions in June 2004 only according to wikipedia). But it may have made sense to do earlier during this decade (though it wasn’t a purpose of this OS I guess).
SMP and 64-bit support on an Amiga-like has literally never been done before even on AmigaOS 4 or MorphOS. Even the AmigaOne X1000 could only use one core of its PowerPC chip under AmigaOS 4 and shipped with a Debian-ppc dualboot so that users could have an SMP capable system. This is even more impressive given that MorphOS and AmigaOS 4 sacrificed AmigaOS 1.x-3.x API compatibility and AROS has not.
Hell, in the entire history of 80s microcomputer OSes, NONE of them got SMP. OS X and NT are descended from minicomputer OSes dressed up to look like their extinct relatives.
Have they? That’s strange, because I do a lot of my OS3.x development under OS4 and MorphOS, and I haven’t noticed any API changes that have stopped me doing that.
Well its unfair to imply it should’ve been done the second a 64bit CPU showed face – when it has taken Linux and windows a large part of the time since to get their operating systems taking advantage of it, or persuade users of the benefits/reasons. You could probably argue they are still fine tuning how they run in SMP environments.
AROS is developed by a handful of devs at most times, as a hobby, and they don’t all necessarily have the skills to work on the kernel/exec/low level hardware. It has taken a while to get the pieces in place to even tackle it, especially when there are so many other things in AROS that also get worked on.
Actually Linux pretty much had support as soon as the cpus were available in a decent supply. Not all distributions had a multi-arch setup like they do now, though the RHEL based ones certainly did.
These days the only thing I’ve seen that has to be 32bit are some emulators that have been coded so tightly to work in 32bit land that they need large amounts of coding to make work with 64bit, and for the most part it’d bring no performance advantage.
Don’t underestimate the amount of closed-source code that’s not going to get ported, such as Windows applications which require a 32-bit WINEPREFIX to function properly.
Not true. AROS still has API compatability with AOS 3.1 as it’s main guideline. Which is why it hasn’t had multicore support until now.
> “This should have been done in the early 2000s when x86-64 became the de facto standard.”
Two considerations:
1. AROS is not as famous and as popular among users and companies like Linux was in early 2000s, when AMD presented the Athlon64 and already provided all necessary tools to develop software for it.
2. 64-bit version of AROS is now about 10 years old. It has never been kept under consideration by users for the very simple reason there is no software for it (as I’ve always said, a bigger address space ALONE is not a fancy feature for people who like to use “ancient” software written for an aged API)
The real news here is about SMP.
This is what 4.1 should have had on the X1000. I sold mine and got out of the Amiga scene but AROS may bring me back if they keep up this kind of work. Always looking for a viable alternative to Windows and Linux.
Hello, there’s no need to give up completely. Icaros Desktop can run hosted and native on real hardware or, for your convenience, in a cosy virtual machine. You can try it from time to time and keep an eye on its developments. AROS is always looking for people willing to do something (any kind) to help.
I already downloaded it to see what it’s like, I’m a coder so might be able to make myself useful… Though time is often hard to come by
That’s the problem our small band of devs all have sadly, so we try to do as much in that time as we can ;D
If you have any queries though I would suggest registering on the mailing list and asking there.
SMP means _symmetric_ multi-processing – a multi-processing system where processors are treated the same. However this design is obviously _not_ symmetric: “… my goal is to have the scheduler running on all the cores, and able to run tasks on them (if they _specifically_ are created to run on other cores) but normal tasks will still be assigned to the boot core” (Kalamantee @ Aros-exec.org)
Adding MP (note no S) to AmigaOS isn’t a problem and nobody claim it have ever been a problem. But it isn’t SMP and it isn’t transparent to user programs.
Technically it may not be symmetric, but I’d wait for the final implementation before commenting. Please remember that the AmigaOS API was not designed for multi-core processor, nor software has ever been written with this chance in mind. Probably adding MP would have never been a problem, but reality is no one ever did. AROS taking the lead to this milestone, however, should finally help Amiga naysayers that its open source development model *IS* an advantage.
Its not SMP because we don’t automatically run everything on any core – even though the scheduling runs on all the cores and runs available tasks that are allowed to run on the specified cores based on their affinity masks? Hmm yeah. So as soon as I tell a task to stop using other cores on windows and Linux, they are no longer SMP OS’es?
P.S – you cant just remove “S” from SMP, “MP” is memory protection, though I get the feeling you like to invent your own descriptions of what things mean.
Edited 2017-02-27 15:03 UTC
It would be SMP if you automatically removed the affinity for the boot core and let processes float.
Yes I invented things before I was born (no I’m not young). Is this the quality of discussion you want to have?
There’s a reason I questioned if this really was SMP and that is that it is “known” that AmigaOS-compatible systems can’t be made to run as SMP with the original ABI (note I’m not convinced of that myself). The quote seems to indicate that this system require programs to be written to support multiprocessing hinting at not being SMP but multiprocessing. Is that a reason to try to insult me?
BTW: Most TLAs are have multiple meanings and that applies to shorter ones too.
http://searchdatacenter.techtarget.com/definition/SMP
what you want to add to the definition by way of what tasks and such are running is your prerogative but the definition is pretty clear.
ps. TLA means literally “Three letter acronym” so you cant apply it to any old combination. Like SMP having a pretty clear definition, so does TLA, and MP.
So you can’t read. TLAs and shorter -> ?
So you can’t reason. TLAs and shorter (acronyms) have multiple meanings -> ?
I’ll note that you haven’t actually tried to respond to my question instead trying to attack me. I’ll make it easy for you:
. Can all core operating system code run on any processor?
. Can device drivers run on any processor?
. Can things like interrupt handling etc. run on any processor?
. Can tasks on arbitrary processors communicate with each other using the standard Amiga API?
. Can tasks on arbitrary processors synchronize using the standard Amiga API?
Because all processors being treated the same by hardware and operating system is what makes the system symmetric.
Hi,
SMP means that all CPUs are the same, which is a hardware characteristic. For software, “SMP support” just means that the software supports “hardware where all CPUs are the same”; and it doesn’t mean that software uses the CPUs in the same way.
The opposite is AMP (asymmetrical multi-processor), which means that some CPUs are different to others. An example of this might be Cell (where there’s some major differences between “PPEs” and “SPEs”).
MP is just a less specific term. CPUs must either be the same or different (and can’t be “same and different”) and “MP” doesn’t specify which. The only other possibility is “only one CPU” (not MP, and therefore not SMP or AMP).
AROS supports “hardware with 2 or more CPUs that are the same”, therefore MP and SMP are both correct, and SMP is more specific.
– Brendan
It sounds to me like you are confusing 2 different things:
* OS designs which treat all processors identically and can distribute any task to any core. This is symmetric multiprocessing and it has nothing to do with the hardware design of the processors.
* Computer designs where there are multiple processors or cores in a single machine, but they are dissimilar.
For instance, ARM’s big.LITTLE design:
https://en.wikipedia.org/wiki/ARM_big.LITTLE
Or the Acorn RISC PC with a PC 2nd processor:
http://chrisacorns.computinghistory.org.uk/docs/Mags/PCW/PCW_Jun95_…
The Taos operating system was able to run on both ARM and x86 cores simultaneously and migrate its (processor-neutral) tasks between them.
Taos was discussed on OSnews back at the time:
http://www.osnews.com/comments/743
BTW — a fascinating discussion of Tao, Taos, Elate/Intent and more on HackerNews:
https://news.ycombinator.com/item?id=9806607
Perhaps the single most impressive OS technology I have ever seen in the last 40 years.
Yes it was interesting in many ways (but limited). Don’t see what it have to do with this article?
Can you try to be a bit less dogmatic and a bit more open to discussion?
SMP does _not_ require identical processors. It is a _software_ architecture. I provided multiple examples in my reply.
ARM setups with dissimilar cores which only share an instruction set, with different hardware designs running at different speeds, in the interests of better power management.
Yes, it is SMP, but the cores are not identical. This invalidates your argument.
SMP is *not* about hardware.
Yes, the Risc PC was a coprocessor design. The point here being that with suitable software, a coprocessor setup can actually act like an SMP system with identical processors, even, in this unique example, with different CPU architectures.
Taos, the relevance of which you appeared not to understand. The relevance being that it could move tasks between an ARM and an x86 chip.
Other examples include NUMA machines and compute clusters.
As I said: you appear to be conflating 2 different things, and this is both incorrect and unhelpful.
Sorry, but you’re COMPLETELY wrong on this. Please learn a bit more before talking about things you know nothing about. Start here: https://en.wikipedia.org/wiki/Symmetric_multiprocessing
That has a good explanation that’s not too technical for you non-engineers (and you’re clearly not an engineer).
It requires processors that are symmetric in the way used in the SMP definition. That is that all resources should be equally accessible from all processors, if not one can’t start program X on an arbitrary processor N. So SMP is linked to the actual hardware (but see below).
I agree that Elate VPs (Virtual Processors – as it is yet again an acronym with a huge amount of different uses) or similar could be used to implement a SMP system, don’t know if they ever did.
However even in that case the OS presents a virtual system where processors (VPs) execute the same code and have a common message passing interface for communication. In that way the system is symmetric.
IIRC one could use shared memory between tightly coupled processors as an optimization, if so (and shared memory not being emulated* between loosely coupled processors) that means it isn’t a SMP system as it isn’t fully symmetric.
(Actually didn’t get what you meant with the Taos reference – my bad)
(* emulating shared memory would most likely use the VM support to detect modifications, Taos/Elate didn’t support that AFAIK which would mean a very slow check-every-memory-reference design would be the only choice)
We’ve had multiprocessing for over 20 years, it just isn’t SMP.
http://powerup.amigaworld.de/index.php?lang=en&page=15
Don’t invent new terms when there are existing ones.
Multiprocessing that is not symmetrical is called asymmetric multiprocessing or AMP:
https://en.wikipedia.org/wiki/Asymmetric_multiprocessing
*SIGH* I know the terms and multiprocessing is a term. Asymmetric multiprocessing is mostly a creation after SMP was use to describe a subset of multiprocessing systems. There are other subtypes too but I don’t know if I dare to spell it out without a bunch of know-it-all popping up? E.g. master slave systems have many other names, I suggest you look it up and maybe learn something new.
A system that isn’t asymmetric but not symmetric is possible to create. Think about it.
How about you people that accuse me of inventing things read some relevant literature before assuming you know it all?