Improving GPU Performance Through Instruction Redistribution and Diversification

Total Page:16

File Type:pdf, Size:1020Kb

Improving GPU Performance Through Instruction Redistribution and Diversification Improving GPU Performance through Instruction Redistribution and Diversification A Dissertation Presented by Xiang Gong to The Department of Electrical and Computer Engineering in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Engineering Northeastern University Boston, Massachusetts August 2018 ProQuest Number:10933866 All rights reserved INFORMATION TO ALL USERS The quality of this reproduction is dependent upon the quality of the copy submitted. In the unlikely event that the author did not send a complete manuscript and there are missing pages, these will be noted. Also, if material had to be removed, a note will indicate the deletion. ProQuest 10933866 Published by ProQuest LLC ( 2018). Copyright of the Dissertation is held by the Author. All rights reserved. This work is protected against unauthorized copying under Title 17, United States Code Microform Edition © ProQuest LLC. ProQuest LLC. 789 East Eisenhower Parkway P.O. Box 1346 Ann Arbor, MI 48106 - 1346 To my family for their unconditional love and support. i Contents List of Figures vi List of Tables viii List of Acronyms ix Acknowledgments xi Abstract of the Dissertation xii 1 Introduction 1 1.1 Toward Peak Performance on GPUs . .2 1.1.1 Challenge 1: A general lack of appropriate tools to perform systematic hardware/software studies on GPUs . .3 1.1.2 Challenge 2: alleviating memory contention in GPUs . .3 1.1.3 Challenge 3: the insufficient instruction diversity in GPUs . .5 1.2 Contributions of This Thesis . .6 1.3 Organization of Thesis . .7 2 Background 8 2.1 Overview of Parallelism . .8 2.1.1 The Rise of Parallelism . .8 2.1.2 The Evolution of Hardware and Software . .9 2.2 GPU architecture . 10 2.2.1 Compute Unit . 11 2.2.2 Memory Hierarchy . 12 2.3 GPU programming model . 13 2.3.1 OpenCL Platform Model . 14 2.3.2 OpenCL Memory Model . 14 2.3.3 OpenCL execution model . 16 2.3.4 OpenCL Programming Model . 17 2.3.5 OpenCL compilation model . 19 2.4 Multi2Sim . 19 2.4.1 Disassembler . 20 ii 2.4.2 Functional Simulator . 20 2.4.3 Architectural Simulator . 21 2.4.4 Multi2Sim OpenCL Runtime and Driver Stack . 21 2.5 Summary . 22 3 Related Work 23 3.1 Tools for GPU Research . 23 3.1.1 GPU Benchmarks Suites . 23 3.1.2 GPU Compilers . 24 3.1.3 GPU Simulator . 25 3.2 Optimization of Memory Contention in GPUs . 27 3.2.1 Wavefront Scheduling . 27 3.2.2 Thread Block/Work-group Scheduler . 27 3.3 Optimization of Resource Utilization on GPUs . 28 3.3.1 Software-based CKE . 28 3.3.2 Hardware-based CKE . 29 3.4 Summary . 29 4 M2C and M2V 30 4.1 Overview . 30 4.2 M2C: An open source GPU compiler for Multi2Sim . 31 4.2.1 The Front-end . 32 4.2.2 The Back-end . 35 4.2.3 The Finalizer . 40 4.2.4 The Test Suite . 41 4.3 M2V: A visualization infrastructure for Multi2Sim . 42 4.3.1 The data serialization layer . 43 4.3.2 The back-end . 44 4.3.3 The front-end . 45 4.3.4 Visualization Examples . 45 4.4 Summary . 48 5 Twin Kernels 49 5.1 Motivation . 50 5.1.1 Instruction Scheduling and Performance . 51 5.2 Implementation . 53 5.2.1 Memory Consistency . 54 5.2.2 The Twin Kernel Compiler . 55 5.2.3 The Twin Kernel Binary . 56 5.2.4 Twin Kernel Assignment . 57 5.2.5 The Twin Kernel Execution Engine . 59 5.3 Evaluation . 61 5.3.1 Methodology . 61 5.3.2 Results . 62 5.4 Summary . 66 iii 6 Rebalanced Kernel 67 6.1 Motivation . 68 6.2 Rebalanced Kernel . 70 6.2.1 Addressing Spatial Imbalance with Kernel Fusion . 70 6.2.2 Addressing Temporal Imbalance with Twin Kernels . 82 6.2.3 Rebalanced Kernel . 82 6.3 Evaluation . 83 6.3.1 Methodology . 83 6.3.2 Performance Improvement: Stage 1 . 84 6.3.3 Performance Improvement: Stage 2 . 86 6.3.4 Further Discussion . 87 6.3.5 Predictive Modeling . 89 6.4 Summary of ReBalanced Kernels . 96 7 Conclusion 97 7.1 Conclusion . 97 7.2 Future Work . 98 Bibliography 99 iv List of Figures 2.1 Overview of a GPU. 10 2.2 Diagram of an AMD GCN Compute Unit. 11 2.3 Diagram of the GCN GPU memory system. 12 2.4 Diagram of OpenCL Platform Model. 14 2.5 Diagram of the OpenCL Memory Model. 15 2.6 Diagram of the OpenCL Kernel Execution Model. 16 2.7 OpenCL Compilation Models . 19 2.8 Multi2Sim software modules [36] . 20 2.9 Multi2Sim Runtime and Driver Software Stack [36] . 22 4.1 M2C architecture diagram . 31 4.2 The Stages of the M2C front-end. 32 4.3 Abstract Syntax Tree of the Vector Addition kernel. 34 4.4 The transition of VecAdd Kernel in Muti2C Front-end. 35 4.5 Stages of the M2C Back-end pipeline. 36 4.6 Vector Addition: translating LLVM IR to SelectionDAG. 37 4.7 Vector Addition: The DAG before and after instruction selection. 38 4.8 M2V architecture . 43 4.9 Breakdown of Stalls in Compute Unit . 46 4.10 Breakdown of Instructions Count and Cycle . 47 4.11 Utilization of Execution Unit . 47 4.12 Length of Different Type of Instructions . 47 4.13 Instruction Activity Comparison . 48 5.1 Visualization of instruction of Matrix Multiplication kernel . 50 5.2 Execution timeline for five systems. 51 5.3 Workflow for the Twin Kernel Compiler. 55 5.4 Comparison of a Twin Kernel Binary and two regular kernel binaries. 57 5.5 Assign Twin Kernels to wavefronts by setting the initial PC. 58 5.6 Performance of 5 instruction schedulers in the SIMT model, relative to the average performance of 10 instruction schedulers. 59 5.7 Best performance in SIMT, relative to the baseline . 62 5.8 Speedup of TKMT, relative to the baseline . 63 v.
Recommended publications
  • AMD Accelerated Parallel Processing Opencl Programming Guide
    AMD Accelerated Parallel Processing OpenCL Programming Guide November 2013 rev2.7 © 2013 Advanced Micro Devices, Inc. All rights reserved. AMD, the AMD Arrow logo, AMD Accelerated Parallel Processing, the AMD Accelerated Parallel Processing logo, ATI, the ATI logo, Radeon, FireStream, FirePro, Catalyst, and combinations thereof are trade- marks of Advanced Micro Devices, Inc. Microsoft, Visual Studio, Windows, and Windows Vista are registered trademarks of Microsoft Corporation in the U.S. and/or other jurisdic- tions. Other names are for informational purposes only and may be trademarks of their respective owners. OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos. The contents of this document are provided in connection with Advanced Micro Devices, Inc. (“AMD”) products. AMD makes no representations or warranties with respect to the accuracy or completeness of the contents of this publication and reserves the right to make changes to specifications and product descriptions at any time without notice. The information contained herein may be of a preliminary or advance nature and is subject to change without notice. No license, whether express, implied, arising by estoppel or other- wise, to any intellectual property rights is granted by this publication. Except as set forth in AMD’s Standard Terms and Conditions of Sale, AMD assumes no liability whatsoever, and disclaims any express or implied warranty, relating to its products including, but not limited to, the implied warranty of merchantability, fitness for a particular purpose, or infringement of any intellectual property right. AMD’s products are not designed, intended, authorized or warranted for use as compo- nents in systems intended for surgical implant into the body, or in other applications intended to support or sustain life, or in any other application in which the failure of AMD’s product could create a situation where personal injury, death, or severe property or envi- ronmental damage may occur.
    [Show full text]
  • Exploring Weak Scalability for FEM Calculations on a GPU-Enhanced Cluster
    Exploring weak scalability for FEM calculations on a GPU-enhanced cluster Dominik G¨oddeke a,∗,1, Robert Strzodka b,2, Jamaludin Mohd-Yusof c, Patrick McCormick c,3, Sven H.M. Buijssen a, Matthias Grajewski a and Stefan Turek a aInstitute of Applied Mathematics, University of Dortmund bStanford University, Max Planck Center cComputer, Computational and Statistical Sciences Division, Los Alamos National Laboratory Abstract The first part of this paper surveys co-processor approaches for commodity based clusters in general, not only with respect to raw performance, but also in view of their system integration and power consumption. We then extend previous work on a small GPU cluster by exploring the heterogeneous hardware approach for a large-scale system with up to 160 nodes. Starting with a conventional commodity based cluster we leverage the high bandwidth of graphics processing units (GPUs) to increase the overall system bandwidth that is the decisive performance factor in this scenario. Thus, even the addition of low-end, out of date GPUs leads to improvements in both performance- and power-related metrics. Key words: graphics processors, heterogeneous computing, parallel multigrid solvers, commodity based clusters, Finite Elements PACS: 02.70.-c (Computational Techniques (Mathematics)), 02.70.Dc (Finite Element Analysis), 07.05.Bx (Computer Hardware and Languages), 89.20.Ff (Computer Science and Technology) ∗ Corresponding author. Address: Vogelpothsweg 87, 44227 Dortmund, Germany. Email: [email protected], phone: (+49) 231 755-7218, fax: -5933 1 Supported by the German Science Foundation (DFG), project TU102/22-1 2 Supported by a Max Planck Center for Visual Computing and Communication fellowship 3 Partially supported by the U.S.
    [Show full text]
  • Tech Tools Tech Tools
    NEWS Tech Tools Tech Tools LLVM 3.0 Released Low Level Virtual Machine (LLVM) recently announced ver- replacing the C/ Objective-C compiler in the GCC system with a sion 3.0 of it compiler infrastructure. Originally implemented more easily integrated system and wider support for multithread- for C/ C++, the language-agnostic design of LLVM has ing. Other features include a new register allocator (which can spawned a wide variety of provide substantial perfor- front ends, including Objec- mance improvements in gen- tive-C, Fortran, Ada, Haskell, erated code), full support for Java bytecode, Python, atomic operations and the Ruby, ActionScript, GLSL, new C++ memory model, Clang, and others. and major improvement in The new release of LLVM the MIPS back end. represents six months of de- All LLVM releases are velopment over the previous available for immediate version and includes several download from the LLVM re- major changes, including dis- leases web site at: http:// continued support for llvm- llvm.​­org/​­releases/. For more gcc; the developers recom- information about LLVM, mend switching to Clang or visit the main LLVM website DragonEgg. Clang is aimed at at: http://​­llvm.​­org/. YaCy Search Engine Online Open64 5.0 Released The YaCy project has released version 1.0 of its Open64, the open source (GPLv2-licensed) peer-to-peer Free Software search engine. YaCy compiler for C/C++ and Fortran that’s does not use a central server; instead, its search re- backed by AMD and has been developed by sults come from a network of independent peers. SGI, HP, and various universities and re- According to the announcement, in this type of dis- search organizations, recently released ver- tributed network, no single entity decides which sion 5.0.
    [Show full text]
  • Heterogeneous Computing for Advanced Driver Assistance Systems
    TECHNISCHE UNIVERSITAT¨ MUNCHEN¨ Lehrstuhl fur¨ Robotik, Kunstliche¨ Intelligenz und Echtzeitsysteme Heterogeneous Computing for Advanced Driver Assistance Systems Xiebing Wang Vollstandiger¨ Abdruck der von der Fakultat¨ der Informatik der Technischen Universitat¨ Munchen¨ zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaen (Dr. rer. nat.) genehmigten Dissertation. Vorsitzender: Prof. Dr. Daniel Cremers Prufer¨ der Dissertation: 1. Prof. Dr.-Ing. habil. Alois Knoll 2. Assistant Prof. Xuehai Qian, Ph.D. 3. Prof. Dr. Kai Huang Die Dissertation wurde am 25.04.2019 bei der Technischen Universitat¨ Munchen¨ eingereicht und durch die Fakultat¨ fur¨ Informatik am 17.09.2019 angenommen. Abstract Advanced Driver Assistance Systems (ADAS) is an indispensable functionality in state-of- the-art intelligent cars and the deployment of ADAS in automated driving vehicles would become a standard in the near future. Current research and development of ADAS still faces several problems. First of all, the huge amount of perception data captured by mas- sive vehicular sensors have posed severe computation challenge for the implementation of real-time ADAS applications. Secondly, conventional automotive Electronic Control Units (ECUs) have to cope with the knoy issues such as technology discontinuation and the consequent tedious hardware/soware (HW/SW) maintenance. Lastly, ADAS should be seamlessly shied towards a mixed and scalable system in which safety, security, and real-time critical components must coexist with the less critical counterparts, while next- generation computation resources can still be added exibly so as to provide sucient computing capacity. is thesis gives a systematic study of applying the emerging heterogeneous comput- ing techniques to the design of an automated driving module and the implementation of real-time ADAS applications.
    [Show full text]
  • AMD APP SDK V2.8.1
    AMD APP SDK v2.8.1 FAQ 1 General Questions 1. Do I need to use additional software with the SDK? To run an OpenCL™ application, you must have an OpenCL™ runtime on your system. If your system includes a recent AMD discrete GPU, or an APU, you also should install the latest Catalyst™ drivers, which can be downloaded from AMD.com. Information on supported devices can be found at developer.amd.com/appsdk. If your system does not include a recent AMD discrete GPU, or APU, the SDK installs a CPU-only OpenCL™ run-time. Also, we recommend using the debugging profiling and analysis tools contained in the AMD CodeXL heterogeneous compute tools suite. 2. Which versions of the OpenCL™ standard does this SDK support? AMD APP SDK 2.8.1 supports the development of applications using the OpenCL™ Specification v 1.2. 3. Will applications developed to execute on OpenCL™ 1.1 still operate in an OpenCL™ 1.2 environment? OpenCL™ is designed to be backwards compatible. The OpenCL™ 1.2 run-time delivered with the AMD Catalyst drivers run any OpenCL™ 1.1-compliant application. However, an OpenCL™ 1.2-compliant application will not execute on an OpenCL™ 1.1 run-time if APIs only supported by OpenCL™ 1.2 are used. 4. Does AMD provide any additional OpenCL™ samples, other than those contained within the SDK? The most recent versions of all of the samples contained within the SDK are also available for individual download from the developer.amd.com/appsdk “Samples & Demos” page. This page also contains additional samples that either were too large to include in the SDK, or which have been developed since the most recent SDK release.
    [Show full text]
  • AMD APP SDK V2.9.1 Getting Started
    AMD APP SDK v2.9.1 Getting Started 1 Overview The AMD APP SDK is provided to the developer community to accelerate the programming in a heterogeneous environment by enabling AMD GPUs to work in concert with the system's x86 CPU cores. The SDK provides samples, documentation, and other materials to quickly get you started leveraging accelerated compute using OpenCL™, Bolt, OpenCV, C++ AMP for your C/C++ application, or Aparapi for your Java application. This document provides instructions on using the AMD APP SDK. The necessary prerequisite installations, environment settings, build and execute instructions for the samples are provided. Review the following quick links to the important sections: Section 2, “APP SDK on Windows” Section 2.1, “Installation” Section 2.2, “General Prerequisites” Section 2.3, “OpenCL” Section 2.4, “BOLT” Section 2.5, “C++ AMP” Section 2.6, “Aparapi” Section 2.7, “OpenCV” Section 3, “APP SDK on Linux” Section 3.1, “Installation” Section 3.2, “General prerequisites” Section 3.3, “OpenCL” Section 3.4, “BOLT” Section 3.5, “Aparapi” Section 3.6, “OpenCV” Section Appendix A, “Important Notes” Section Appendix C, “CMAKE” Section Appendix D, “Building OpenCV from sources” Getting Started 1 of 19 2 APP SDK on Windows 2.1 Installation The AMD APP SDK 2.9.1 installer is delivered as a self-extracting installer for 32-bit and 64-bit systems on Windows. For details on how to install the APP SDK on Windows, see the AMD APP SDK Installation Notes document. The default installation path is C:\Users\<userName>\AMD APP SDK\<appSdkVersion>\.
    [Show full text]
  • Conga-TR4 User's Guide
    COM Express™ conga-TR4 COM Express Type 6 Basic module based on 4th Generation AMD Embedded V- and R-Series SoC User’s Guide Revision 1.10 Copyright © 2018 congatec GmbH TR44m110 1/66 Revision History Revision Date (yyyy.mm.dd) Author Changes 0.1 2018.01.15 BEU • Preliminary release 1.0 2018.10.15 BEU • Updated “Electrostatic Sensitive Device” information on page 3 • Corrected single/dual channel MT/s rates for two variants in table 2 • Updated section 2.2 “Supported Operating Systems” • Added values for four variants in section 2.5 "Power Consumption" • Added values in section 2.6 "Supply Voltage Battery Power" • Updated images in section 4 "Cooling Solutions" • Added note about requiring a re-driver on carrier for USB 3.1 Gen 2 in section 5.1.2 "USB" and 7.4 "USB Host Controller" • Added Intel® Ethernet Controller i211 as assembly option in table 4 "Feature Summary" and section 5.1.4 "Ethernet" • Corrected section 7.4 "USB Host Controller" • Added section 9 "System Resources" 1.1 2019.03.19 BEU • Corrected image in section 2.4 "Supply Voltage Standard Power" • Updated section 10.4 "Supported Flash Devices" 1.2 2019.04.02 BEU • Corrected supported memory in table 2, 3, and added information about supported memory in table 4 • Added information about the new industrial variant in table 3 and 7 1.3 2019.07.30 BEU • Updated note in section 4 "Cooling Solutions" • Changed number of supported USB 3.1 Gen 2 interfaces to two throughout the document • Added note regarding USB 3.1 Gen 2 in section 7.4 "USB Host Controller" 1.4 2020.01.07 BEU
    [Show full text]
  • AMD APP SDK V3.0 Beta
    AMD APP SDK v3.0 Beta FAQ 1 General Questions 1. Do I need to use additional software with the SDK? For information about the additional software to be used with the AMD APP SDK, see the AMD APP SDK Getting Started Guide. Also, we recommend using the debugging profiling and analysis tools contained in the AMD CodeXL heterogeneous compute tools suite. 2. Which versions of the OpenCL™ standard does this SDK support? AMD APP SDK version 3.0 Beta supports the development of applications using the OpenCL™ Specification version 2.0. 3. Will applications developed to execute on OpenCL™ 1.2 still operate in an OpenCL™ 2.0 environment? OpenCL™ is designed to be backwards compatible. The OpenCL™ 2.0 run-time delivered with the AMD Catalyst drivers run any OpenCL™ 1.2-compliant application. However, an OpenCL™ 2.0-compliant application will not execute on an OpenCL™ 1.2 run-time if APIs only supported by OpenCL™ 2.0 are used. 4. Does AMD provide any additional OpenCL™ samples, other than those contained within the SDK? The most recent versions of all of the samples contained within the SDK are also available for individual download from the developer.amd.com/appsdk “Samples & Demos” page. This page also contains additional samples that either were too large to include in the SDK, or which have been developed since the most recent SDK release. Check the AMD APP SDK web page for new, updated, or large samples. 5. How often can I expect to get AMD APP SDK updates? Developers can expect that the AMD APP SDK may be updated two to three times a year.
    [Show full text]
  • AMD APP SDK Developer Release Notes
    AMD APP SDK v3.0 Beta Developer Release Notes 1 What’s New in AMD APP SDK v3.0 Beta 1.1 New features in AMD APP SDK v3.0 Beta AMD APP SDK v3.0 Beta includes the following new features: OpenCL 2.0: There are 20 samples that demonstrate various features of OpenCL 2.0 such as Shared Virtual Memory, Platform Atomics, Device-side Enqueue, Pipes, New workgroup built-in functions, Program Scope Variables, Generic Address Space, and OpenCL 2.0 image features. For the complete list of the samples, see the AMD APP SDK Samples Release Notes (AMD_APP_SDK_Release_Notes_Samples.pdf) document. Support for Bolt 1.3 library. 6 additional samples that demonstrate various APIs in the Bolt C++ AMP library. One new sample that demonstrates the consumption of SPIR 1.2 binary. Enhancements and bug fixes in several samples. A lightweight installer that supports the following features: Customized online installation Ability to download the full installer for install and distribution 1.2 New features for AMD CodeXL version 1.6 The following new features in AMD CodeXL version 1.6 provide the following improvements to the developer experience: GPU Profiler support for OpenCL 2.0 API-level debugging for OpenCL 2.0 Power Profiling For information about CodeXL and about how to use CodeXL to gather performance data about your OpenCL application, such as application traces and timeline views, see the CodeXL home page. Developer Release Notes 1 of 4 2 Important Notes OpenCL 2.0 runtime support is limited to 64-bit applications running on 64-bit Windows and Linux operating systems only.
    [Show full text]
  • A Review of Gpuopen Effects
    A REVIEW OF GPUOPEN EFFECTS TAKAHIRO HARADA & JASON LACROIX • An initiative designed to help developers make better content by “opening up” the GPU • Contains a variety of software modules across various GPU needs: • Effects and render features • Tools, SDKs, and libraries • Patches and drivers • Software hosted on GitHub with no “black box” implementations or licensing fees • Website provides: • The latest news and information on all GPUOpen software • Tutorials and samples to help you optimise your game • A central location for up-to-date GPU and CPU documentation • Information about upcoming events and previous presentations AMD Public | Let’s build… 2020 | A Review of GPUOpen Effects | May 15, 2020 | 2 LET’S BUILD A NEW GPUOPEN… • Brand new, modern, dynamic website • Easy to find the information you need quickly • Read the latest news and see what’s popular • Learn new tips and techniques from our engineers • Looks good on mobile platforms too! • New social media presence • @GPUOpen AMD Public | Let’s build… 2020 | A Review of GPUOpen Effects | May 15, 2020 | 3 EFFECTS A look at recently released samples AMD Public | Let’s build… 2020 | A Review of GPUOpen Effects | May 15, 2020 | 4 TRESSFX 4.1 • Self-contained solution for hair simulation • Implementation into Radeon® Cauldron framework • DirectX® 12 and Vulkan® with full source • Optimized physics simulation • Faster velocity shock propagation • Simplified local shape constraints • Reorganization of dispatches • StrandUV support • New LOD system • New and improved Autodesk® Maya®
    [Show full text]
  • Porting Open64 to the Cygwin Environment
    Porting Open64 to the Cygwin Environment Nathan Tallent Mike Fagan ∗ November 2003 Abstract Cygwin is a Linux-like environment for Windows. It is sufficiently com- plete and stable that porting even very large codes to the environment is relatively straightforward. Cygwin is easy enough to download and install that it provides a convenient platform for traveling with code and giving conference demonstra- tions (via laptop) – even potentially expanding a code’s audience and user base (via desktop). However, for various reasons, Cygwin is not 100% compatible with Linux. We describe the major problems we encountered porting Rice University’s Open64/SL code base to Cygwin and present our solutions. 1 Introduction Cygwin is a Linux-like environment for Windows. It provides a Windows DLL that emulates nearly all of the Linux API. Programs written for Linux can link with the Cygwin DLL and thus run on Windows. A reasonably proficient Unix user can easily download and install a relatively complete Linux environment, including shells, de- velopment tools (GCC, make, gdb), editors (emacs, vi) and a graphical environment (XFree86). Moreover, the environment is complete and stable enough that it is rela- tively straightforward to port even very large codes to Cygwin. Because of the preva- lence of Windows-based desktops and laptops, Cygwin provides an attractive means for traveling with code and demonstrating it at conferences – even potentially expand- ing a code’s audience and user base. However, for full-time development or for critical applications, Unix remains superior. More information about Cygwin can be found on its web site, http://www.cygwin.com.
    [Show full text]
  • AMD APU Series
    AMD APU series Connor Goss, Jefferson Medel Agenda ➢ Overview ➢ APU vs. CPU+GPU ➢ Graphics Engines ➢ CPU Architecture ➢ Future Overview ● What is an APU? ○ Accelerated Processing Unit ○ A processor that combines CPU and GPU elements into a single architecture ● APU brand of AMD, Intel uses different name ● Why APU? ○ Able to perform tasks of both a CPU and GPU with less space and power. ○ At cost of performance compared to high end individual units ○ Sufficient for majority of computers Essentially... ● CPUs use serial data processing ● GPUs use parallel data processing http://www.legitreviews.com/amd-vision-the-399-brazos-notebook-platform-preview_1464 History ● Single Core ○ Limitations ■ Speed ■ Power ■ Complexity ● Multi Core ○ Limitations ■ Power ■ Scalability ● Heterogeneous ○ CPU and GPUs designed separately do not work optimally together ○ Graphics Capability included in chip rather than in chipset Bandwidth http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/apu101.pdf Heterogeneous System Architecture http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/ Iterations ➢ Desktop Processors ○ Llano - Trinity - Richland - Kaveri ➢ Server Processors ○ Kyoto ➢ Mobile CPUs and GPUs ● Different Design Goals ○ CPUs are base on maximizing performance of a single thread ○ GPUs maximize throughput at cost of individual thread performance ● CPU ○ Dedicated to reduce latency to memory ● GPU ○ Focus on ALU and registers ○ Focus on covering latency Graphics Engine ➢ Based on AMD/ATI
    [Show full text]