Multi-core architectures. Jernej Barbic 15-213, Spring 2007 May 3, 2007



Similar documents
Lecture 11: Multi-Core and GPU. Multithreading. Integration of multiple processor cores on a single chip.

Multicore Processor and GPU. Jia Rao Assistant Professor in CS

Multi-Threading Performance on Commodity Multi-Core Processors

Introduction to Cloud Computing

Lecture 3: Modern GPUs A Hardware Perspective Mohamed Zahran (aka Z) mzahran@cs.nyu.edu

Generations of the computer. processors.

Achieving Nanosecond Latency Between Applications with IPC Shared Memory Messaging

Multithreading Lin Gao cs9244 report, 2006

Vorlesung Rechnerarchitektur 2 Seite 178 DASH

Operating System Impact on SMT Architecture

~ Greetings from WSU CAPPLab ~

Multi-Core Programming

Operating Systems. 05. Threads. Paul Krzyzanowski. Rutgers University. Spring 2015

Enabling Technologies for Distributed and Cloud Computing

An examination of the dual-core capability of the new HP xw4300 Workstation

Multi-core and Linux* Kernel

CHAPTER 1 INTRODUCTION

GPUs for Scientific Computing

Multi-core Programming System Overview

Parallel Programming Survey

CPU Scheduling Outline

Choosing a Computer for Running SLX, P3D, and P5

Parallel Algorithm Engineering

Introduction to GPU hardware and to CUDA

Design and Implementation of the Heterogeneous Multikernel Operating System


This Unit: Putting It All Together. CIS 501 Computer Architecture. Sources. What is Computer Architecture?

Multicore Processor, Parallelism and Their Performance Analysis

GPU Architectures. A CPU Perspective. Data Parallelism: What is it, and how to exploit it? Workload characteristics

Enabling Technologies for Distributed Computing

Chapter 2 Parallel Computer Architecture

Chapter 12: Multiprocessor Architectures. Lesson 09: Cache Coherence Problem and Cache synchronization solutions Part 1

Introduction to GPU Programming Languages

Embedded Parallel Computing

Course Development of Programming for General-Purpose Multicore Processors

Making Multicore Work and Measuring its Benefits. Markus Levy, president EEMBC and Multicore Association

Chapter 5 Process Scheduling

Chapter 1 Computer System Overview

GPU System Architecture. Alan Gray EPCC The University of Edinburgh

HyperThreading Support in VMware ESX Server 2.1

Thomas Fahrig Senior Developer Hypervisor Team. Hypervisor Architecture Terminology Goals Basics Details

Chapter 1: Introduction. What is an Operating System?

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-12: ARM

Parallel Computing 37 (2011) Contents lists available at ScienceDirect. Parallel Computing. journal homepage:

Overview. CPU Manufacturers. Current Intel and AMD Offerings

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

Putting it all together: Intel Nehalem.

Virtualization Technologies and Blackboard: The Future of Blackboard Software on Multi-Core Technologies

Bindel, Spring 2010 Applications of Parallel Computers (CS 5220) Week 1: Wednesday, Jan 27

Week 1 out-of-class notes, discussions and sample problems

Deciding which process to run. (Deciding which thread to run) Deciding how long the chosen process can run

Navigating the Enterprise Database Selection Process: A Comparison of RDMS Acquisition Costs Abstract

Lesson Objectives. To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization

CHAPTER 2: HARDWARE BASICS: INSIDE THE BOX

- Nishad Nerurkar. - Aniket Mhatre

Binary search tree with SIMD bandwidth optimization using SSE

Operating Systems for Parallel Processing Assistent Lecturer Alecu Felician Economic Informatics Department Academy of Economic Studies Bucharest

VLIW Processors. VLIW Processors

This Unit: Multithreading (MT) CIS 501 Computer Architecture. Performance And Utilization. Readings

Discovering Computers Living in a Digital World

Computer Architecture TDTS10

Real-Time Operating Systems for MPSoCs

CPU Session 1. Praktikum Parallele Rechnerarchtitekturen. Praktikum Parallele Rechnerarchitekturen / Johannes Hofmann April 14,

Intel Pentium 4 Processor on 90nm Technology

PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0

Chapter 2 Parallel Architecture, Software And Performance

CISC, RISC, and DSP Microprocessors

Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6

Hardware performance monitoring. Zoltán Majó

Dual-Core Processors on Dell-Supported Operating Systems

BLM 413E - Parallel Programming Lecture 3

Multiprocessor Cache Coherence

Next Generation GPU Architecture Code-named Fermi

The Motherboard Chapter #5

Operating Systems 4 th Class

Computer Organization

VirtualCenter Database Performance for Microsoft SQL Server 2005 VirtualCenter 2.5

Why Computers Are Getting Slower (and what we can do about it) Rik van Riel Sr. Software Engineer, Red Hat

An Implementation Of Multiprocessor Linux

Thread Level Parallelism II: Multithreading

Real-time processing the basis for PC Control

CMSC 611: Advanced Computer Architecture

IBM CELL CELL INTRODUCTION. Project made by: Origgi Alessandro matr Teruzzi Roberto matr IBM CELL. Politecnico di Milano Como Campus

Multicore Programming with LabVIEW Technical Resource Guide

Testing Database Performance with HelperCore on Multi-Core Processors

Parallelism and Cloud Computing

Scheduling. Scheduling. Scheduling levels. Decision to switch the running process can take place under the following circumstances:

Windows Server 2008 R2 Hyper V. Public FAQ

FPGA-based Multithreading for In-Memory Hash Joins

How To Understand The Concept Of A Distributed System

Symmetric Multiprocessing

ADVANCED COMPUTER ARCHITECTURE

Overview. Lecture 1: an introduction to CUDA. Hardware view. Hardware view. hardware view software view CUDA programming

LSN 2 Computer Processors

CSC 2405: Computer Systems II

Operatin g Systems: Internals and Design Principle s. Chapter 10 Multiprocessor and Real-Time Scheduling Seventh Edition By William Stallings

Transcription:

Multi-core architectures Jernej Barbic 15-213, Spring 2007 May 3, 2007 1

Single-core computer 2

Single-core CPU chip the single core 3

Multi-core architectures This lecture is about a new trend in computer architecture: Replicate multiple processor cores on a single die. Core 1 Core 2 Core 3 Core 4 Multi-core CPU chip 4

Multi-core CPU chip The cores fit on a single processor socket Also called CMP (Chip Multi-Processor) c o r e c o r e c o r e c o r e 1 2 3 4 5

The cores run in parallel thread 1 thread 2 thread 3 thread 4 c o r e c o r e c o r e c o r e 1 2 3 4 6

Within each core, threads are time-sliced (just like on a uniprocessor) several threads several threads several threads several threads c o r e c o r e c o r e c o r e 1 2 3 4 7

Interaction with the Operating System OS perceives each core as a separate processor OS scheduler maps threads/processes to different cores Most major OS support multi-core today: Windows, Linux, Mac OS X, 8

Why multi-core? Difficult to make single-core clock frequencies even higher Deeply pipelined circuits: heat problems speed of light problems difficult design and verification large design teams necessary server farms need expensive air-conditioning Many new applications are multithreaded General trend in computer architecture (shift towards more parallelism) 9

Instruction-level parallelism Parallelism at the machine-instruction level The processor can re-order, pipeline instructions, split them into microinstructions, do aggressive branch prediction, etc. Instruction-level parallelism enabled rapid increases in processor speeds over the last 15 years 10

Thread-level parallelism (TLP) This is parallelism on a more coarser scale Server can serve each client in a separate thread (Web server, database server) A computer game can do AI, graphics, and physics in three separate threads Single-core superscalar processors cannot fully exploit TLP Multi-core architectures are the next step in processor evolution: explicitly exploiting TLP 11

General context: Multiprocessors Multiprocessor is any computer with several processors SIMD Single instruction, multiple data Modern graphics cards MIMD Multiple instructions, multiple data Lemieux cluster, Pittsburgh supercomputing center 12

Multiprocessor memory types Shared memory: In this model, there is one (large) common shared memory for all processors Distributed memory: In this model, each processor has its own (small) local memory, and its content is not replicated anywhere else 13

Multi-core processor is a special kind of a multiprocessor: All processors are on the same chip Multi-core processors are MIMD: Different cores execute different threads (Multiple Instructions), operating on different parts of memory (Multiple Data). Multi-core is a shared memory multiprocessor: All cores share the same memory 14

What applications benefit from multi-core? Database servers Web servers (Web commerce) Compilers Multimedia applications Scientific applications, CAD/CAM In general, applications with Thread-level parallelism (as opposed to instructionlevel parallelism) Each can run on its own core 15

More examples Editing a photo while recording a TV show through a digital video recorder Downloading software while running an anti-virus program Anything that can be threaded today will map efficiently to multi-core BUT: some applications difficult to parallelize 16

A technique complementary to multi-core: Simultaneous multithreading Problem addressed: The processor pipeline can get stalled: Waiting for the result of a long floating point (or integer) operation Waiting for data to arrive from memory Other execution units wait unused L2 Cache and Control Bus Integer BTB L1 D-Cache D-TLB Schedulers Uop queues Rename/Alloc Trace Cache Decoder BTB and I-TLB Floating Point ucode ROM Source: Intel 17

Simultaneous multithreading (SMT) Permits multiple independent threads to execute SIMULTANEOUSLY on the SAME core Weaving together multiple threads on the same core Example: if one thread is waiting for a floating point operation to complete, another thread can use the integer units 18

Without SMT, only a single thread can run at any given time L1 D-Cache D-TLB L2 Cache and Control Integer Floating Point Schedulers Uop queues Rename/Alloc BTB Trace Cache ucode ROM Decoder Bus BTB and I-TLB Thread 1: floating point 19

Without SMT, only a single thread can run at any given time L1 D-Cache D-TLB L2 Cache and Control Integer Floating Point Schedulers Uop queues Rename/Alloc BTB Trace Cache ucode ROM Decoder Bus BTB and I-TLB Thread 2: integer operation 20

SMT processor: both threads can run concurrently L1 D-Cache D-TLB L2 Cache and Control Integer Floating Point Schedulers Uop queues Rename/Alloc BTB Trace Cache ucode ROM Decoder Bus BTB and I-TLB Thread 2: Thread 1: floating point integer operation 21

But: Can t simultaneously use the same functional unit L1 D-Cache D-TLB L2 Cache and Control Integer Floating Point Schedulers Uop queues Rename/Alloc BTB Trace Cache ucode ROM Bus Decoder BTB and I-TLB Thread 1 Thread 2 IMPOSSIBLE This scenario is impossible with SMT on a single core (assuming a single integer unit) 22

SMT not a true parallel processor Enables better threading (e.g. up to 30%) OS and applications perceive each simultaneous thread as a separate virtual processor The chip has only a single copy of each resource Compare to multi-core: each core has its own copy of resources 23

Multi-core: threads can run on separate cores L1 D-Cache D-TLB L1 D-Cache D-TLB L2 Cache and Control Integer BTB Schedulers Uop queues Rename/Alloc Trace Cache Decoder Floating Point ucode ROM L2 Cache and Control Integer BTB Schedulers Uop queues Rename/Alloc Trace Cache Decoder Floating Point ucode ROM Bus BTB and I-TLB Bus BTB and I-TLB Thread 1 Thread 2 24

Multi-core: threads can run on separate cores L1 D-Cache D-TLB L1 D-Cache D-TLB L2 Cache and Control Integer BTB Schedulers Uop queues Rename/Alloc Trace Cache Decoder Floating Point ucode ROM L2 Cache and Control Integer BTB Schedulers Uop queues Rename/Alloc Trace Cache Decoder Floating Point ucode ROM Bus BTB and I-TLB Bus BTB and I-TLB Thread 3 Thread 4 25

Combining Multi-core and SMT Cores can be SMT-enabled (or not) The different combinations: Single-core, non-smt: standard uniprocessor Single-core, with SMT Multi-core, non-smt Multi-core, with SMT: our fish machines The number of SMT threads: 2, 4, or sometimes 8 simultaneous threads Intel calls them hyper-threads 26

SMT Dual-core: all four threads can run concurrently L1 D-Cache D-TLB L1 D-Cache D-TLB L2 Cache and Control Integer BTB Schedulers Uop queues Rename/Alloc Trace Cache Decoder Floating Point ucode ROM L2 Cache and Control Integer BTB Schedulers Uop queues Rename/Alloc Trace Cache Decoder Floating Point ucode ROM Bus BTB and I-TLB Bus BTB and I-TLB Thread 1 Thread 3 Thread 2 Thread 4 27

Comparison: multi-core vs SMT Advantages/disadvantages? 28

Comparison: multi-core vs SMT Multi-core: Since there are several cores, each is smaller and not as powerful (but also easier to design and manufacture) However, great with thread-level parallelism SMT Can have one large and fast superscalar core Great performance on a single thread Mostly still only exploits instruction-level parallelism 29

The memory hierarchy If simultaneous multithreading only: all s shared Multi-core chips: L1 s private L2 s private in some architectures and shared in others Memory is always shared 30

Fish machines Dual-core Intel Xeon processors Each core is hyper-threaded Private L1 s Shared L2 s C O R E 1 L1 hyper-threads C O R E 0 L2 memory L1 31

Designs with private L2 s C O R E 1 L1 C O R E 0 L1 C O R E 1 L1 C O R E 0 L1 L2 L2 L2 L2 memory L3 L3 Both L1 and L2 are private Examples: AMD Opteron, AMD Athlon, Intel Pentium D memory A design with L3 s Example: Intel Itanium 2 32

Private vs shared s? Advantages/disadvantages? 33

Private vs shared s Advantages of private: They are closer to core, so faster access Reduces contention Advantages of shared: Threads on different cores can share the same data More space available if a single (or a few) high-performance thread runs on the system 34

The coherence problem Since we have private s: How to keep the data consistent across s? Each core should perceive the memory as a monolithic array, shared by all the cores 35

The coherence problem Suppose variable x initially contains 15213 Core 1 Core 2 Core 3 Core 4 Main memory x=15213 multi-core chip 36

The coherence problem Core 1 reads x Core 1 Core 2 Core 3 Core 4 x=15213 Main memory x=15213 multi-core chip 37

The coherence problem Core 2 reads x Core 1 Core 2 Core 3 Core 4 x=15213 x=15213 Main memory x=15213 multi-core chip 38

The coherence problem Core 1 writes to x, setting it to 21660 Core 1 Core 2 Core 3 Core 4 x=21660 x=15213 multi-core chip Main memory x=21660 assuming write-through s 39

The coherence problem Core 2 attempts to read x gets a stale copy Core 1 Core 2 Core 3 Core 4 x=21660 x=15213 Main memory x=21660 multi-core chip 40

Solutions for coherence This is a general problem with multiprocessors, not limited just to multi-core There exist many solution algorithms, coherence protocols, etc. A simple solution: invalidation-based protocol with snooping 41

Inter-core bus Core 1 Core 2 Core 3 Core 4 Main memory multi-core chip inter-core bus 42

Invalidation protocol with snooping Invalidation: If a core writes to a data item, all other copies of this data item in other s are invalidated Snooping: All cores continuously snoop (monitor) the bus connecting the cores. 43

The coherence problem Revisited: Cores 1 and 2 have both read x Core 1 Core 2 Core 3 Core 4 x=15213 x=15213 Main memory x=15213 multi-core chip 44

The coherence problem Core 1 writes to x, setting it to 21660 Core 1 Core 2 Core 3 Core 4 x=21660 x=15213 sends invalidation request Main memory x=21660 INVALIDATED assuming write-through s multi-core chip inter-core bus 45

The coherence problem After invalidation: Core 1 Core 2 Core 3 Core 4 x=21660 Main memory x=21660 multi-core chip 46

The coherence problem Core 2 reads x. Cache misses, and loads the new copy. Core 1 Core 2 Core 3 Core 4 x=21660 x=21660 Main memory x=21660 multi-core chip 47

Alternative to invalidate protocol: update protocol Core 1 writes x=21660: Core 1 Core 2 Core 3 Core 4 x=21660 x=21660 UPDATED broadcasts updated value Main memory x=21660 assuming write-through s multi-core chip inter-core bus 48

Which do you think is better? Invalidation or update? 49

Invalidation vs update Multiple writes to the same location invalidation: only the first time update: must broadcast each write (which includes new variable value) Invalidation generally performs better: it generates less bus traffic 50

Invalidation protocols This was just the basic invalidation protocol More sophisticated protocols use extra state bits MSI, MESI (Modified, Exclusive, Shared, Invalid) 51

Programming for multi-core Programmers must use threads or processes Spread the workload across multiple cores Write parallel algorithms OS will map threads/processes to cores 52

Thread safety very important Pre-emptive context switching: context switch can happen AT ANY TIME True concurrency, not just uniprocessor time-slicing Concurrency bugs exposed much faster with multi-core 53

However: Need to use synchronization even if only time-slicing on a uniprocessor int counter=0; void thread1() { int temp1=counter; counter = temp1 + 1; } void thread2() { int temp2=counter; counter = temp2 + 1; } 54

Need to use synchronization even if only time-slicing on a uniprocessor temp1=counter; counter = temp1 + 1; temp2=counter; counter = temp2 + 1 gives counter=2 temp1=counter; temp2=counter; counter = temp1 + 1; counter = temp2 + 1 gives counter=1 55

Assigning threads to the cores Each thread/process has an affinity mask Affinity mask specifies what cores the thread is allowed to run on Different threads can have different masks Affinities are inherited across fork() 56

Affinity masks are bit vectors Example: 4-way multi-core, without SMT 1 1 0 1 core 3 core 2 core 1 core 0 Process/thread is allowed to run on cores 0,2,3, but not on core 1 57

Affinity masks when multi-core and SMT combined Separate bits for each simultaneous thread Example: 4-way multi-core, 2 threads per core 1 1 0 0 1 0 1 1 core 3 core 2 core 1 core 0 thread 1 thread 0 thread 1 thread 0 thread 1 thread 0 thread 1 thread 0 Core 2 can t run the process Core 1 can only use one simultaneous thread 58

Default Affinities Default affinity mask is all 1s: all threads can run on all processors Then, the OS scheduler decides what threads run on what core OS scheduler detects skewed workloads, migrating threads to less busy processors 59

Process migration is costly Need to restart the execution pipeline Cached data is invalidated OS scheduler tries to avoid migration as much as possible: it tends to keeps a thread on the same core This is called soft affinity 60

Hard affinities The programmer can prescribe her own affinities (hard affinities) Rule of thumb: use the default scheduler unless a good reason not to 61

When to set your own affinities Two (or more) threads share data-structures in memory map to same core so that can share Real-time threads: Example: a thread running a robot controller: - must not be context switched, or else robot can go unstable - dedicate an entire core just to this thread Source: Sensable.com 62

Kernel scheduler API #include <sched.h> int sched_getaffinity(pid_t pid, unsigned int len, unsigned long * mask); Retrieves the current affinity mask of process pid and stores it into space pointed to by mask. len is the system word size: sizeof(unsigned int long) 63

Kernel scheduler API #include <sched.h> int sched_setaffinity(pid_t pid, unsigned int len, unsigned long * mask); Sets the current affinity mask of process pid to *mask len is the system word size: sizeof(unsigned int long) To query affinity of a running process: [barbic@bonito ~]$ taskset -p 3935 pid 3935's current affinity mask: f 64

Windows Task Manager core 2 core 1 65

Legal licensing issues Will software vendors charge a separate license per each core or only a single license per chip? Microsoft, Red Hat Linux, Suse Linux will license their OS per chip, not per core 66

Conclusion Multi-core chips an important new trend in computer architecture Several new multi-core chips in design phases Parallel programming techniques likely to gain importance 67