12 December 2021, 12:46 | #1 |
Amiga Games Database
Join Date: Jun 2006
Location: South West England
Posts: 1,285
|
Amiga cpu architecture/patchability question
I had always thought that if you fitted an accelerator card to an an Amiga, say an 030 to a 1200 (or indeed to a 500/600) then you lost all ability to access the original cpu 68020/68000. Is that correct?
But if that's the case, is it absolutely impossible for the Amiga to reach it? Scenario: A team of Amiga WHDLoad patchers are in a spaceship (attempting to avoid a barrage of slave requests from rabid Amiga flightsim fans). En route to their destination world the ship is damaged by a meteor and the Nav computer is completely destroyed. However, one of the patchers has brought a 1200 with him, with an 030 fitted. With their characteristic skill and determination, the Navigation program code is converted to 68K machine code by the team. Unfortunately despite their best efforts at optimisation, the 030 can only complete 90% of the jump trajectory before the ship's tachyon trace system loses it's reference points and needs to reset and restart the process from scratch. It might as well be 9% - They've hit a brick wall. At this point, the ship's janitor walks past and mutters, "Couldn't you access the 020, farm out some of the calculations to that, to push it over the line?" Should they: a)Dismiss it as impossible b)Attempt it with renewed vigour c) Space the mouthy twat for having the audacity to talk to his betters. |
12 December 2021, 13:00 | #2 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,311
|
Quote:
Some boards have the option to disable themselves, upon a reboot, and then of course the main CPU takes over. |
|
12 December 2021, 13:34 | #3 |
Amiga Games Database
Join Date: Jun 2006
Location: South West England
Posts: 1,285
|
Thanks, but what I'm trying to say, is there any conceivable way of getting them to work together, even if one of them is doing a tiny amount of work?
|
12 December 2021, 13:44 | #4 |
Registered User
Join Date: Nov 2010
Location: South Wales
Age: 47
Posts: 944
|
No, because they would be sharing the same memory, chip access etc etc. System would just crash. Even if you could somehow make the system use both and some how organise which cpu is accessing what when both cpu would just be able to do less.
|
12 December 2021, 14:15 | #5 |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,311
|
|
12 December 2021, 14:46 | #6 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,200
|
If a board was specially designed to run in parallel eg. with separate memory like the PPC PowerUp boards from Phase5, the context switches killed the performance boost because AmigaOS wasn't designed for parallel processing. AmigaOS 4.1 still can't use both cores on a dual-core AmigaOne x5000. On the same hardware, Linux can use both cores.
The problem isn't just on the hardware side. It's a shortcoming of Exec.library. you'd need a different OS. Even MorphOS can't use both G5 PPC chips on the dual G5 PowerMacs it runs on. |
12 December 2021, 20:49 | #7 | |
Registered User
Join Date: Jul 2014
Location: Finland
Posts: 1,186
|
Quote:
Is this 'Destination: Void' with Amiga's? |
|
12 December 2021, 21:03 | #8 |
Amiga Games Database
Join Date: Jun 2006
Location: South West England
Posts: 1,285
|
I had to research that to understand your question, as I'm only familiar with Frank Herbert's Dune books. But which patcher would represent Organic Mental Core? :-)
|
13 December 2021, 09:40 | #9 |
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,355
|
No 68k accelerator board i know of will allow running both cpu at once. Only thing that might be doable is to make the 030 disable itself by touching some board i/o, having the 020 take over. On a Blizzard 1230 i could do this but it's then impossible to bring the 030 back by pure software.
While running two cpus at once is in theory possible, it would require to specifically design a board to achieve it and then do everything "by hand" as the OS isn't made for that. Would give some kind of asymmetric multi-processing, like 68000+z80 in the megadrive. Not sure the extra processing power is worth the trouble, though. |
13 December 2021, 17:01 | #10 |
Registered User
Join Date: Jun 2020
Location: Brno
Posts: 90
|
My guess (and my personal view): On A1200, not possible. Alice, responsible for handling the internal (chip RAM) bus access, assigns bus slots according to a device priority. What priority level the second CPU would have? There is no mechanism to assign/re-assign any such priority. Both CPUs would compete for the same bus slots = crash. Even if the second CPU would use only its own RAM (fast RAM), what would be the point of it all if the result of any computation cannot be transferred to the chip-RAM where the first CPU (or any other device) could access it? On any Amiga equipped with ZorriII/III bus, it's possible -- the second CPU board would be a new device (in fact, isn't it already available in a form of some gfx board with programmable GPU, or an emulator board?). However, on a system level the multiprocessing is not supported as stated in previous posts.
Last edited by defor; 14 December 2021 at 12:09. |
13 December 2021, 20:40 | #11 | |
Registered User
Join Date: Apr 2018
Location: Stockholm / Sweden
Posts: 129
|
Quote:
The bus arbitration protocol (BR/BG) would be used so that only one of the processors can access the memory and chipset at any one time. In an A2000 it is the Buster chip that does bus arbitration. In an A500 the accelerator would have to implement bus arbitration. If at least one of the processors is executing long running instructions, such as divisions, then the two processors could perform more useful work together than one of them could alone. As maynaf points out, the architecture would be some kind of asymmetric multiprocessing, with a main processor and a co-processor, rather than symmetric multiprocessing (SMP). |
|
13 December 2021, 20:55 | #12 |
Amiga Games Database
Join Date: Jun 2006
Location: South West England
Posts: 1,285
|
Okay, forgive my ignorance, I know very little about this stuff (as will become clear) but, in theory, could you write a new, very basic OS that partitioned the memory so the 030 just uses the fast ram, the 020 just the chip ram, except for scheduled necessary exceptions, which were handled safely by a governing system in your new OS? Or if there are hardware reasons that make it impossible for 2 cpu's to share resources, then a system that enabled resources to be switched to one cpu while the other either paused or continued with working on tasks that didn't require those resources? |
13 December 2021, 21:06 | #13 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,658
|
Niklas, it's very difficult and expensive to do. This is why no such computer has emerged in the last 30 years. Not only that, both the software to run and the OS must be completely restructured and re-thought to take advantage of the 100x slower CPU. Not just patched.
Typically, parallelism is done by transferring data to a separate "computer" (e.g. GPU) for it to process uninterrupted. An unaccelerated Amiga and an accelerated Amiga can certainly compute in parallel and add the computational result together. Last edited by Photon; 14 December 2021 at 13:18. |
13 December 2021, 21:36 | #14 | |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,200
|
Quote:
|
|
13 December 2021, 21:43 | #15 |
Amiga Games Database
Join Date: Jun 2006
Location: South West England
Posts: 1,285
|
What about if you created a "portable" multitasking calculator that was designed to run purely on the 020 just doing calculations in the background, and recieved tasks and delivered results to the "master" cpu at specified intervals? Like an emulated fpu co-processor kind of deal?
|
13 December 2021, 22:33 | #16 | |
Registered User
Join Date: Apr 2018
Location: Stockholm / Sweden
Posts: 129
|
Quote:
|
|
13 December 2021, 22:53 | #17 | |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,200
|
Quote:
A non-uniform memory architecture (NUMA) can do it easily but then you need a different OS than AmigaOS to manage the message passing because the Amiga message passing assumes shared-memory accesses. AmigaOS is not NUMA capable. |
|
13 December 2021, 23:17 | #18 | |
Registered User
Join Date: Apr 2018
Location: Stockholm / Sweden
Posts: 129
|
Quote:
I agree about the hardware being the easy part. |
|
14 December 2021, 04:29 | #19 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,200
|
The tristate buffers in the CPU allow an I/O bridge via DMA. That's the only way that two processors can share memory. One has to shut down during the DMA but it can be reactivated.
The best option for cross-bus communications IMO is the dual-port memory of an FPGA or CPLD. This block memory can be read from and written to at the same time by two different busses. For what they amount to today, you could just as well replace most of the Amiga chipset with an FPGA and customize the design while you're at it. Maybe get a large one and implement your own CPU based on the open-source WF68K30L core. (That's a 68030 compatible core with a 4-stage pipeline.) |
14 December 2021, 04:38 | #20 |
Registered User
Join Date: Dec 2015
Location: USA
Posts: 2,968
|
Don't get me wrong I'm quite biased, but I'm pretty happy with the WarpOS PPC acting as a co-processor. It's plenty fast when it needs to be. If it was integrated better with the 68k side of things it could be a lot better.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Question: CPU Emulation Speed (?) | Arcade | support.WinUAE | 11 | 25 April 2021 05:04 |
A New Amiga Architecture - 3AC | EAUniW | Amiga scene | 90 | 27 April 2020 09:36 |
Books about Amiga hardware and functional architecture | whitebird | request.Other | 0 | 30 August 2017 14:12 |
Motorola 060 cpu question | jimmer78 | support.Hardware | 5 | 08 February 2013 21:49 |
Which english book explains Amiga OS internals, design and architecture? | snayak | Coders. General | 3 | 08 February 2013 17:56 |
|
|