Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
apollo_core:start [2019/12/18 23:43]
muaddib
apollo_core:start [2020/08/02 12:37] (current)
Line 1: Line 1:
 ====== 68080 Core ====== ====== 68080 Core ======
  
-{{:apollo-01.png?​nolink&​128|}}+{{:crom_apollo-02.png?​nolink&​128|}}
  
 ===== Overview ===== ===== Overview =====
  
-**68080** is a new CPU that is code-compatible with the **Motorola ​M68K** processors.+**68080** is a new CPU that is code-compatible with the **Motorola ​68k** processors.
  
-It is an affordable CPU for your classic Amigas that is **much faster than the fastest 68060**. It is compatible with all CPUs and [[apollo_core:​fpu|FPUs]] of the Motorola 68000 family, except ​rare instructions currently not supported.  ​**AmigaOS 3.x** currently recognizes APOLLO CPU as a **68040**. This new CPU is designed according to modern CPU standards, fully written in **VHDL**, and is intended to run on [[https://​www.intel.com/​content/​www/​us/​en/​products/​programmable/​cyclone-series.html|Altera Cyclone FPGAs]].+It is an affordable CPU for your classic Amigas ​(or Amiga compatibles) ​that is **much faster than the fastest 68060**. It is compatible with all CPUs and [[apollo_core:​fpu|FPUs]] of the Motorola 68000 family. [(Few rare instructions ​are currently not supported.)]  It is designed according to modern CPU standards, ​is fully written in **VHDL**, and is intended to run on [[https://​www.intel.com/​content/​www/​us/​en/​products/​programmable/​cyclone-series.html|Altera Cyclone FPGAs]]
 + 
 +**AmigaOS 3.x** currently recognizes this new CPU as a **68040**.
  
 ---- ----
Line 34: Line 36:
 {{:​benchmark.png?​nolink&​48|}} {{:​benchmark.png?​nolink&​48|}}
  
-68080 CPU, when embedded on ''​FPGA''​ chips such as ''​Cyclone III''​ and ''​Cyclone V'',​ is much faster than the fastest ''​68060''​. This is possible because of the advanced design of the APOLLO Core, because of large and fast Instruction/Data Caches, and because of the very fast Read/Write Memory Access.+68080 CPU, when embedded on ''​FPGA''​ chips such as ''​Cyclone III''​ and ''​Cyclone V'',​ is much faster than the fastest ''​68060''​. This is possible because of the advanced design of the APOLLO Core, because of large and fast instruction/data caches, and because of the very fast read/write memory access.
  
 {{:​performance1.png?​direct}} {{:​performance1.png?​direct}}
  
-Below are some benchmarks done with [[http://​minibench.apollo-accelerators.com|MiniBench]][(Other than the latest version, you can also grab the [[http://​www.greyhound-data.com/​gunnar/​minibench|original MiniBench]],​ from before the APOLLO-Team started maintaining it.)] tool among some classic Amiga machines. All tests show that the Core is much faster than a fast A1200 + 68060 @ 66Mhz - scores are all confirmed by [[http://​aminet.net/​package/​util/​moni/​SysInfo|SysInfo]],​ [[http://​aminet.net/​package/​util/​moni/​sspeed26|SysSpeed]] and [[http://​aminet.net/​package/​util/​moni/​AIBB_65|AIBB]] benchmarking tools.+Below are some benchmarks done with the [[http://​minibench.apollo-accelerators.com|MiniBench]][(Other than the latest version, you can also grab the [[http://​www.greyhound-data.com/​gunnar/​minibench|original MiniBench]],​ from before the APOLLO-Team started maintaining it.)] tool for some classic Amiga machines. All tests show that the Core is much faster than a fast A1200 + 68060 @ 66Mhz - scores are all confirmed by [[http://​aminet.net/​package/​util/​moni/​SysInfo|SysInfo]],​ [[http://​aminet.net/​package/​util/​moni/​sspeed26|SysSpeed]] and [[http://​aminet.net/​package/​util/​moni/​AIBB_65|AIBB]] benchmarking tools.
  
 ^ System ^ Accelerator ^ CPU ^ Frequency ^ Performance ^ MiniBench Points ^  ^ System ^ Accelerator ^ CPU ^ Frequency ^ Performance ^ MiniBench Points ^ 
Line 49: Line 51:
 | Amiga 1200   | MK2          | 68060   ​| ​ 66 MHz |   65 | ++++++++++++++++ |  | Amiga 1200   | MK2          | 68060   ​| ​ 66 MHz |   65 | ++++++++++++++++ | 
 | Amiga 600    | Vampire 600 V2   | SILVER6 |     x15 |  173 | +++++++++++++++++++++++++++++++++++++++++++ |  | Amiga 600    | Vampire 600 V2   | SILVER6 |     x15 |  173 | +++++++++++++++++++++++++++++++++++++++++++ | 
 +
 +More detailed comparisons to an overclocked 68060 can be found [[http://​www.apollo-core.com/​knowledge.php?​note=30521|here]].
  
 ---- ----
 +
 ===== Features ===== ===== Features =====
  
 {{:​cpu.png?​nolink&​48|}} {{:​cpu.png?​nolink&​48|}}
  
-The 68080 CPU covers all the instructions and architectural designs of the classic MC680x0. It also brings some new features that make it faster. The table below shows the architectural improvements ​among previous <​nowiki>​680x0</​nowiki>​ CPUs and the new one.+The 68080 CPU covers all the instructions and architectural designs of the classic MC680x0. It also brings some new features that make it faster. The table below shows the architectural improvements ​for previous <​nowiki>​680x0</​nowiki>​ CPUs and this new one.
  
 ^ Feature ^ 68000 ^ 68020 ^ 68030 ^ 68040 ^ 68060 ^ 68080 ^  ^ Feature ^ 68000 ^ 68020 ^ 68030 ^ 68040 ^ 68060 ^ 68080 ^ 
-68K ISA                          |  X     ​| ​ X     ​| ​ X     ​| ​ X    |  X    |  X     |+68k ISA                          |  X     ​| ​ X     ​| ​ X     ​| ​ X    |  X    |  X     |
 | Extended EA-modes ​               |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     | | Extended EA-modes ​               |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     |
 | BitFields ​                       |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     | | BitFields ​                       |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     |
Line 94: Line 99:
   * [[.code_samples:​|68080 asm code samples]]   * [[.code_samples:​|68080 asm code samples]]
  
-^ Not supported ​instructions ​^ Notes ^ +Unsupported ​instructions: 
-''​TAS2'' ​Never used on AmigaOS ​| +  ​* ​''​TAS2''​Never used on AmigaOS. 
-''​MMU''​ related ​| Not implemented | +  ​* ​''​MMU''​-related: ​Rarely used on AmigaOS.
- +
----- +
- +
- +
-===== New 64-bit instructions ===== +
- +
-{{:64bit.png?​nolink&​48|}}+
  
-The instructions are very similar to the ''​SSE''​ / ''​ALTIVEC''​ version of them. APOLLO lets you use EA as 1 source and to update 3rd registers ​so normally not overwrite source registers.+==== AMMX: New 64-bit instructions ====
  
-  * **(ea)** can be any Effective Address. +These instructions are very similar to the ''​SSE''​ / ''​AltiVec''​ versions ​of them.
-  * **B** is one of 16 Source Regs. +
-  * **C** is one of 16 Source Regs. +
-  * **D** is one of 16 Destination Regs.+
  
-^ Instruction ^ Operands ^ Description ^ +68080 lets you use EA as 1 source and to update 3rd registers ​so normally not overwrite source registers.
-| [[apollo_core:​instructions:​perm|PERM]] ​    | (ea),B,C,D | Permute Bytes. | +
-| [[apollo_core:​instructions:​bsel|BSEL]] ​    | (ea),​B,​D ​  | Select Bytes. | +
-| [[apollo_core:​instructions:​por|POR]] ​      | (ea),​B,​D ​  | Parallel OR. | +
-| [[apollo_core:​instructions:​pand|PAND]] ​    | (ea),​B,​D ​  | Parallel AND. | +
-| [[apollo_core:​instructions:​pand|PANDN]] ​   | (ea),​B,​D ​  | Parallel ANDN. | +
-| [[apollo_core:​instructions:​padd|PADD.B]] ​  | (ea),​B,​D ​  | Parallel ADD.B. | +
-| [[apollo_core:​instructions:​padd|PADD.W]] ​  | (ea),​B,​D ​  | Parallel ADD.W. | +
-| [[apollo_core:​instructions:​padd|PADDss.B]] | (ea),​B,​D ​  | Parallel ADDss.B ​Signed with Saturate. | +
-| [[apollo_core:​instructions:​padd|PADDss.W]] | (ea),​B,​D ​  | Parallel ADDss.W - Signed with Saturate. | +
-| [[apollo_core:​instructions:​padd|PADDus.B]] | (ea),​B,​D ​  | Parallel ADDus.B - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​padd|PADDus.W]] | (ea),​B,​D ​  | Parallel ADDus.W - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUB.B]] ​  | (ea),​B,​D ​  | Parallel SUB.B. | +
-| [[apollo_core:​instructions:​psub|PSUB.W]] ​  | (ea),​B,​D ​  | Parallel SUB.W. | +
-| [[apollo_core:​instructions:​psub|PSUBss.B]] | (ea),​B,​D ​  | Parallel SUBss.B - Signed with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUBss.W]] | (ea),​B,​D ​  | Parallel SUBss.W - Signed with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUBus.B]] | (ea),​B,​D ​  | Parallel SUBus.B - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUBus.W]] | (ea),​B,​D ​  | Parallel SUBus.W - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​pavg|PAVG.B]] ​  | (ea),​B,​D ​  | Parallel AVG.B. | +
-| [[apollo_core:​instructions:​pavg|PAVG.W]] ​  | (ea),​B,​D ​  | Parallel AVG.W. | +
-| [[apollo_core:​instructions:​pcmp|PCMPeq.B]] | (ea),​B,​D ​  | Parallel CMPeq.B - Equal. | +
-| [[apollo_core:​instructions:​pcmp|PCMPeq.W]] | (ea),​B,​D ​  | Parallel CMPeq.W - Equal. | +
-| [[apollo_core:​instructions:​pcmp|PCMPgt.B]] | (ea),​B,​D ​  | Parallel CMPgt.B - Greater Than. | +
-| [[apollo_core:​instructions:​pcmp|PCMPgt.W]] | (ea),​B,​D ​  | Parallel CMPgt.W - Greater Than. | +
-| [[apollo_core:​instructions:​pmul|PMULSH.W]] | (ea),​B,​D ​  | Parallel MULSH.W. | +
-| [[apollo_core:​instructions:​pmul|PMULSL.W]] | (ea),​B,​D ​  | Parallel MULSL.W|+
  
   * Quick Reference: [[http://​www.apollo-core.com/​AMMXQuickRef.pdf|PDF]]   * Quick Reference: [[http://​www.apollo-core.com/​AMMXQuickRef.pdf|PDF]]
Last modified: le 2020/08/02 12:37