From WikiChip
Editing nec/microarchitectures/sx-aurora

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 25: Line 25:
 
|predecessor link=nec/microarchitectures/sx-ace
 
|predecessor link=nec/microarchitectures/sx-ace
 
}}
 
}}
'''SX-Aurora''' is the successor to the {{\\|SX-ACE}}, a [[16 nm]] [[vector processor]] microarchitecture designed by [[NEC]] and introduced in [[2018]].
+
'''SX-Aurora''' is [[NEC]]'s successor to the {{\\|SX-ACE}}, a [[16 nm]] microarchitecture for [[vector processors]] first introduced in [[2018]].
  
 
== History ==
 
== History ==
The SX-Aurora is the successor to the {{\\|SX-ACE}}, a series of vector processors that NEC has been developing since the early 1980s. NEC first announced the SX-Aurora TSUBASA product line on October 26 2017 with a complete lineup that ranges from a workstation featuring one vector engine (VE) card to a full supercomputer with 64 VEs. NEC disclosed the architecture of the chip at Hot Chips 30 in August 2018.
+
{{empty section}}
  
 
== Architecture ==
 
== Architecture ==
 
=== Key changes from {{\\|SX-ACE}} ===
 
=== Key changes from {{\\|SX-ACE}} ===
* [[Accelerator]] architecture (From self-hosted)
 
** Relies on an [[x86]] host
 
 
* [[16 nm process]] (from [[28 nm]])
 
* [[16 nm process]] (from [[28 nm]])
 
* 1.6x frequency (1.6 GHz, up from 1 GHz)
 
* 1.6x frequency (1.6 GHz, up from 1 GHz)
Line 42: Line 40:
 
** 3x [[FLOPs]]/cycle (192 FLOPs/cycle, up from 64 FLOPs/cycle)
 
** 3x [[FLOPs]]/cycle (192 FLOPs/cycle, up from 64 FLOPs/cycle)
 
* Memory
 
* Memory
** Removed assignable data buffer (ADB)
+
** 16 MiB L3 [[LLC]]
*** Added 2 MiB L3 [[LLC]] slice per core
 
 
** 6x [[HBM2]] (from 12x [[DDR3]])
 
** 6x [[HBM2]] (from 12x [[DDR3]])
 
*** 4.7x memory bandwidth (1.2 TB/s, up from 256 GB/s)
 
*** 4.7x memory bandwidth (1.2 TB/s, up from 256 GB/s)
Line 50: Line 47:
 
== Block Diagram ==
 
== Block Diagram ==
 
=== Entire SoC ===
 
=== Entire SoC ===
:[[File:sx-aurora block diagram.svg|600px]]
+
:[[File:sx-aurora block diagram.svg|700px]]
  
 
=== Vector core ===
 
=== Vector core ===
:[[File:sx-aurora vector core block diagram.svg|700px]]
+
:[[File:sx-aurora vector core block diagram.svg|1200px]]
  
 
== Memory Hierarchy ==
 
== Memory Hierarchy ==
Line 80: Line 77:
  
 
== Overview ==
 
== Overview ==
[[File:sx-aurora overview.svg|thumb|right|350px|Overview of the SX-Aurora|class=wikichip_ogimage]]
+
[[File:sx-aurora overview.svg|thumb|right|400px|Overview of the SX-Aurora]]
 
The SX-Aurora is [[NEC]]'s successor to the {{\\|SX-ACE}}, a [[vector processor]] designed for [[high-performance]] scientific/research applications and supercomputers. The SX-Aurora deviates from all prior chips in the kind of markets it's designed to address. Therefore, NEC made slightly different design choice compared to prior generations of vector processors. In an attempt to broaden their market, NEC extended beyond supercomputers to the conventional server and workstation market. This is done through the use of [[PCIe]]-based [[accelerator cards]].
 
The SX-Aurora is [[NEC]]'s successor to the {{\\|SX-ACE}}, a [[vector processor]] designed for [[high-performance]] scientific/research applications and supercomputers. The SX-Aurora deviates from all prior chips in the kind of markets it's designed to address. Therefore, NEC made slightly different design choice compared to prior generations of vector processors. In an attempt to broaden their market, NEC extended beyond supercomputers to the conventional server and workstation market. This is done through the use of [[PCIe]]-based [[accelerator cards]].
  
Line 86: Line 83:
  
 
The chip itself consists of eight very [[big cores]] along with 16 MiB of [[last level cache]] on a 2-dimensional mesh. Attached to the LLC are the two memory controllers which interface with the six [[high-bandwidth memory]] sitting on an [[interposer]]. Fabricated on [[TSMC]]'s [[16 nm process]], the SX-Aurora operates at up to 1.6 GHz delivering up to 307.2 [[gigaFLOPS]] ([[double-precision]]) per core for a total of up to 2.45 [[teraFLOPS]].
 
The chip itself consists of eight very [[big cores]] along with 16 MiB of [[last level cache]] on a 2-dimensional mesh. Attached to the LLC are the two memory controllers which interface with the six [[high-bandwidth memory]] sitting on an [[interposer]]. Fabricated on [[TSMC]]'s [[16 nm process]], the SX-Aurora operates at up to 1.6 GHz delivering up to 307.2 [[gigaFLOPS]] ([[double-precision]]) per core for a total of up to 2.45 [[teraFLOPS]].
 
== Vector core ==
 
[[File:sx-aurora vector core overview.svg|thumb|left|300px|Vector core]]
 
Like {{\\|SX-ACE|its predecessor}}, the SX-Aurora vector core itself has three main components - the scalar processing unit (SPU), the vector processing unit (VPU), and the memory subsystem. Though all three were enhanced over the {{\\|SX-ACE}}, the emphasis was on the VPU and the new [[memory subsystem]]. The majority of the compute capability is in the VPU which can deliver up to 192 [[double precision|DP]] [[FLOPS]] per cycle for up to 307.2 GFLOPS at 1.6 GHz. The VPU is fed by a high-bandwidth mesh capable of 256 B/cycle for a total of up to 410 GB/s for load and store each. The SPU is designed to provide all basic functionalities a typical [[CPU]]. Because the SX-Aurora is not a typical offload engine but a self-hosted accelerator, the SPU is designed to deliver high performance to keep pace with the VPU and other operating system-related tasks.
 
 
The memory subsystem on the SX-Aurora has been greatly enhanced from the {{\\|SX-ACE}}. The primary focus of here is to support contiguous vector memory accesses. To that end, in order to feed the vector pipeline, the address generation unit can receive a vector instruction from the SPU in advance in order to calculate the address and disperse the request to the sixteen ports on the mesh network. 16 elements/cycle vector address generation and translation, as well as 17 requests issued/cycle, can be performed. The bandwidth of the crossbars is matched with the bandwidth of the loads and stores at 256 B/cycle for up to 410 GB/s for load and stores each.
 
{{clear}}
 
=== Scalar processing unit ===
 
[[File:sx-aurora-fe.svg|thumb|right|200px|The scalar processing unit (SPU) is 4-wide.]]
 
Although the majority of the processing is handled by the VPU, the scalar processing unit (SPU) has to have a reasonably high performance in order to act as a host CPU for all the serial workloads including handling all the required operating system tasks. Additionally, the SPU has to provide the VPU with a sufficient stream of operations in order to maintain a high sustained performance as well as to calculate the base memory address for vector accesses.
 
 
==== Front-end ====
 
[[File:sx-aurora scheduler.svg|thumb|left|200px|Scheduler]]
 
The SPU has 32 KiB of level 1 cache from which it fetches instructions from. The SPU on the SX-Aurora is four wide - capable of fetching and decoding four instructions per cycle. NEC stated that the SPU features a sophisticated [[branch predictor]] for [[hardware prefetching]], however, they did not delve into any details. The SPU supports out-of-order execution with 8 stages of speculative execution.
 
{{clear}}
 
==== Back end ====
 
[[File:sx-aurora eus.svg|thumb|right|350px|Execution Ports]]
 
On the back end, the SPU includes a [[unified scheduler]] capable of issuing up to five instructions per cycle. Instructions are issued [[out-of-order]] once dependencies are resolved. The SX-Aurora has five separate execution units - two general [[ALUs]] for both [[integer]] and [[floating-point]] pipelines for general scalar arithmetic, a dedicated branch ALU, a single [[LSU]] execution unit, and a vector EU. Beyond the typical scalar operations, the SPU is required to calculate the base memory address for the vector accesses. Typically this is done prior to the vector instructions being sent to the VPU in order to ensure that the data is ready by that time. The SPU features a vector coherence control logic which supports high-speed vector memory accesses with up to 16 elements/cycle for vector stores. The SPU can send up to a single instruction to the VPU each cycle which goes to the instruction buffer of the VPU for reodering and scheduling.
 
 
=== Vector processing unit ===
 
[[File:sx-aurora-vpu.svg|thumb|right|vector processing unit (VPU) and 32 VPPs|400px]]
 
The bulk of the compute work is done on the vector processing unit (VPU). The VPU has a fairly simple pipeline, though it does employ [[out-of-order scheduling]]. [[Instructions]] issued by the SPU are sent to the [[instruction buffer]] where they await renaming, reordering, and scheduling. NEC renames the 64 [[architectural registers|architectural vector registers]] (VRs) onto 256 [[physical registers]]. There is support for enhanced preloading and avoids [[WAR]]/[[WAW]] dependencies. Scheduling is relatively simple. There is a dedicated pipeline for complex operations. Things such as vector summation, division, mask [[population count]], are sent to this execution unit. The dedicate execution unit for complex operations is there to prevent stalls due to the high latency involved in those operations.
 
 
The majority of the operations are handled by the vector parallel pipeline (VPP). The SX-Aurora doubles the number of VPPs per VPU from the {{\\|SX-ACE}}. Each VPU now has 32 VPPs - all identical. Note that all of the control logic described before are outside of the VPP which is relatively a simple block of vector execution. The VPP has an eight-port vector register, 16 mask registers, and six execution pipes, and a set of forwarding logic between them.
 
 
The six execution pipes include three [[floating-point]] pipes, two integer [[ALU]]s, and a complex and store pipe for data output. Note that ALU1 and the Store pipe share the same read ports. Likewise, FMA2 and ALU0 share a read port. All in all, the effective number of pipelines executing each cycle is actually four. Compared to the {{\\|SX-Ace}}, the SX-Aurora now has one extra FMA unit per VPP. The VPP is designed such that all three FMAs can execute each cycle – each one can be independently operated by a different vector instruction. Every FMA unit is 64-bit wide and can support narrower packed operation such as 32-bit for double the peak theoretical performance. NEC's SX architecture has a very wide vector length the size of 256 elements with each element being 8 bytes (i.e., 2 KiB). Therefore a single vector operation requires eight cycles to complete by a single FMA pipeline across all 32 VPPS.
 
 
The peak theoretical performance that can be achieved is 3 FMAs per VPP per cycle. With 32 VPPs per VPU, there are a total of 96 FMAs/cycle for a total of 192 DP FLOPs/cycle. With a peak frequency of 1.6 GHz for the SX-Aurora Tsubasa vector processor, each VPU has a peak performance of 307.2 [[gigaFLOPS]]. Each FMA can perform operations on packed data types. That is, the single-precision floating-point is doubled through the packing of 2 32-bit elements for a peak performance of 614.4 [[gigaFLOPS]].
 
 
== Memory subsystem ==
 
Maintaining a high [[bytes Per FLOP]] is important for vector operations that rely on large data sets. With over five times the FLOPS per core, the SX-Aurora had to significantly improve the memory subsystem to prevent workloads from memory bottlenecking, thereby preventing them from reaching the peak compute power of the chip. The {{\\|SX-Ace}} reached 256 GB/s of [[memory bandwidth]] using a whopping 16 channels of DDR3 memory. It becomes impossible to increase this further to bring a sufficiently large improvement in bandwidth. For this reason, NEC opted to use [[HBM2]] memory instead. The SX-Aurora has six HBM2 modules delivering 1.22 TB/s of bandwidth, nearly 5-fold improvement over the {{\\|SX-Ace}}. However, despite the large memory bandwidth improvement, the SX-Aurora achieves 0.5 [[bytes/FLOPs]] which is half of the {{\\|SX-Ace}}.
 
 
The SX-Aurora got rid of the 1 MiB assignable data buffer (ADB) from the {{\\|SX-Ace}} and added a memory side cache designed to avoid snoop traffic. It's worth pointing out that the new LLC does retain an ADB-like feature whereby the priority of a [[cache line]] is controlled via a flag for vector memory access instructions. The caches are sliced into eight 2 MiB chunks which consist of 16 [[memory banks]] each for a total of 128 memory banks. The LLC is [[inclusive]] of both the [[L1]] and [[L2]]. The [[last level cache|LLC]] interfaces with the IMC at 200 GB/s per chunk (1600 TB/s in total) and those provide a memory bandwidth of 1.22 TB/s through it's 6 HBM2 modules.
 
 
[[File:sx-aurora memory subsystem.svg|700px|center]]
 
 
=== B/FLOP ===
 
{{main|bytes_per_flop|l1=Bytes Per FLOP (B/F)}}
 
 
{|class="wikitable"
 
|-
 
! Type || HBM:SoC || LLC:NoC || NoC:Core
 
|-
 
| Rate || 0.5 B/FLOP || 1.22 B/FLOP || 2.67 B/FLOP
 
|}
 
 
== Mesh interconnect ==
 
All eight cores are interconnected using a 2D mesh network. The designed favored minimal wiring for maximum bandwidth. The SX-Aurora features a 16-layer 2D mesh network that uses [[dimension-ordered routing]] along with virtual channels for requests and replies. As illustrated in the diagram below, the router crossbar points are arranged in a diamond shape in order to minimize distance to the request and reply crossbars in the core. With the SX-Ace, replies to the cores were slightly unbalanced. In the SX-Aurora, the requests crossbars and the reply crossbars, each, have the same bandwidth. With each request being 16B, this works out to around 410 GB/s for each crossbar or 820 GB/s per core. Coming from the cache size, there is a total of 3.05 GB/s of available bandwidth distributed across all eight LLC chunks.
 
 
 
 
[[File:sx-aurora 2d 16-layer mesh.svg|900px|center]]
 
 
== NUMA Mode ==
 
The SX-Aurora supports partitioning mode whereby the vector cores, the [[last level cache]], and the [[HBM]] memory stacks are partitioned into two equal NUMA segments. When enabled, the cores in one NUMA node only utilize the LLC and memory allocated to that segment. The effect is that less LLC conflict might occur, however, the memory capacity and overall bandwidth are halved. This model is disabled by default, however, in some situations, certain applications might see better performance.
 
 
 
[[File:sx-aurora numa.svg|center|600px]]
 
  
 
== Package ==
 
== Package ==
Line 152: Line 91:
 
File:sx-aurora chip (annotated).png
 
File:sx-aurora chip (annotated).png
 
</gallery>
 
</gallery>
 
  
 
The package itself is very big at 60 mm x 60 mm. The VE processor die itself is 15 mm x 33 mm with a very large interposer with a total Si area of 1,235 mm² (32.5 mm x 38 mm).
 
The package itself is very big at 60 mm x 60 mm. The VE processor die itself is 15 mm x 33 mm with a very large interposer with a total Si area of 1,235 mm² (32.5 mm x 38 mm).
Line 158: Line 96:
  
 
:[[File:nec sx-aurora tsubasa package.svg|800px]]
 
:[[File:nec sx-aurora tsubasa package.svg|800px]]
 
  
 
Though other chips have reached very large interposer sizes before, the SX-Aurora is the first 6 HBM2 implementation. It uses the second-generation [[CoWoS]] packaging technology ([[CoWoS-XL2]]) to exceed the [[reticle size]] through the use of mask stitching.
 
Though other chips have reached very large interposer sizes before, the SX-Aurora is the first 6 HBM2 implementation. It uses the second-generation [[CoWoS]] packaging technology ([[CoWoS-XL2]]) to exceed the [[reticle size]] through the use of mask stitching.
 
  
 
:[[File:sx-aurora-package-xsection.svg|800px]]
 
:[[File:sx-aurora-package-xsection.svg|800px]]
 
== All SX-Aurora Chips ==
 
<!-- NOTE:
 
          This table is generated automatically from the data in the actual articles.
 
          If a microprocessor is missing from the list, an appropriate article for it needs to be
 
          created and tagged accordingly.
 
 
          Missing a chip? please dump its name here: https://en.wikichip.org/wiki/WikiChip:wanted_chips
 
-->
 
{{comp table start}}
 
<table class="comptable sortable tc3 tc4 tc5">
 
{{comp table header|main|7:List of SX-Aurora-based Vector Engine Processors}}
 
{{comp table header|main|5:Vector Processor|2:HBM2}}
 
{{comp table header|cols|Launched|Cores|L3$|%Frequency|Performance|Memory|Bandwidth}}
 
{{#ask: [[Category:microprocessor models by nec]] [[microarchitecture::SX-Aurora]]
 
|?full page name
 
|?model number
 
|?first launched
 
|?core count
 
|?l3$ size
 
|?base frequency#GHz
 
|?peak flops (double-precision)#teraFLOPS
 
|?max memory#GiB
 
|?max memory bandwidth#GB/s
 
|format=template
 
|template=proc table 3
 
|userparam=9
 
|mainlabel=-
 
}}
 
{{comp table count|ask=[[Category:microprocessor models by nec]] [[microarchitecture::SX-Aurora]]}}
 
</table>
 
{{comp table end}}
 
  
  
 
== Vector engine (VE) card ==
 
== Vector engine (VE) card ==
The SX-Aurora chip is part of a complete [[accelerator card]] known as the Vector Engine v1. NEC makes those in three variants - passive cooling, active air cooling, and water-cooled.
+
{{empty section}}
 
 
<gallery heights=225px widths=325px>
 
File:sx-aurora ve 1 active air cooling.jpg|Active air cooling card
 
File:sx-aurora ve 1 passive air cooling.jpg|Passive air cooling card
 
File:sx-aurora ve 1 air cooling no cover.jpg|Air cooling without cover
 
File:sx-aurora ve 1 naked card.jpg|Naked VE card
 
File:sx-aurora ve 1 naked card 2.jpg|Naked VE card
 
</gallery>
 
  
 
== Die ==
 
== Die ==
Line 216: Line 112:
  
 
== Bibliography ==
 
== Bibliography ==
* {{bib|hc|30|NEC}}
+
* {{hcbib|30}}
 
* Supercomputing 2018, NEC Aurora Forum
 
* Supercomputing 2018, NEC Aurora Forum
* Supercomputing 2019, NEC
 
 
* ''Some information was obtained directly from NEC''
 
* ''Some information was obtained directly from NEC''

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)