Questions To Ask When Considering Designing Asymmetric Multiprocessing Systems George Cox
Agenda Context of Asymmetric Multiprocessing Systems design Including Asymmetric Multicore Systems Closeness Sharing – tight to loose, up the semantics stack Communication overheads – tight to loose physical connection Closer => less latency => less overheads => Better performance? Lower power? Integrating New Functionality Continuing new types Natural tendency to want to integrate support to improve Performance Power Cost Competitiveness
Context Asymmetric Multiprocessing Systems Including Asymmetric Multicore Systems You have a multi-dimensional space in which to work We will describe a two (2) space example You must pick the optimal(?) point(s) within your design constraints You rarely get a “clean sheet of paper” Historical I/O models – driver-based, “through” data flow Historical coprocessor models – driver-based, “in and back out” data flow
Sharing Equivalent shared semantics Between processing elements Up the semantics stack Physical addressing – size, shared or separated, movement between Logical addressing – address translation (e.g., paging) Virtual addressing – uniform (or not) swapping model Caching – same number of levels, line length, sizes, replacement algorithms, consistency model, inter-core/processor handshakes Processing element functionality Same ISA (or not) Virtual machines – uniform semantics, representation, migration across ISA/performance differences
Communication Overheads Tight to loose physical connection – less to more latency Intra-die Inter-die Inter-package Shared memory Via bus Via network
Design Space Sharing Virtual Addressing Physical Addressing Logical Addressing Caching Processing Element Functionality Virtual Machines Better? Worse? Intra-Die Inter-Die Inter Package Shared Memory Via Bus Via Network Communication Overheads
Integrating New Functionality New types Cryptography, graphics, radios, sensors Granularity Which kind of interface to use Instruction Accelerator(s) - ISA (synchronous or asynchronous) interface I/O – driver (asynchronous) interface Coprocessor – driver (asynchronous) interface Sequencing Synchronous Long running functions can pose response latency for OS; Divide function into sequence of smaller functions (e.g., AESNI) Asynchronous – fork, join In the end We have tried lots of kinds of interfaces over time Instructions (almost always eventually) win