Architectural Support for Parallel Computers with Fair Reader/Writer Synchronization

Total Page:16

File Type:pdf, Size:1020Kb

Architectural Support for Parallel Computers with Fair Reader/Writer Synchronization Universidad de Cantabria Departamento de Electrónica y Computadores Tesis Doctoral SOPORTE ARQUITECTÓNICO A LA SINCRONIZACIÓN IMPARCIAL DE LECTORES Y ESCRITORES EN COMPUTADORES PARALELOS Enrique Vallejo Gutiérrez Santander, Marzo de 2010 Universidad de Cantabria Departamento de Electrónica y Computadores Dr. Ramón Beivide Palacio Catedrático de Universidad Y Dr. Fernando Vallejo Alonso Profesor Titular de Universidad Como directores de la Tesis Doctoral: ARCHITECTURAL SUPPORT FOR PARALLEL COMPUTERS WITH FAIR READER/WRITER SYNCHRONIZATION realizada por el doctorando Don Enrique Vallejo Gutiérrez, Ingeniero de Telecomunicación, en el Departamento de Electrónica y Computadores de la Universidad de Cantabria, autorizan la presentación de la citada Tesis Doctoral dado que reúne las condiciones necesarias para su defensa. Santander, Marzo de 2010 Fdo: Ramón Beivide Palacio Fdo. Fernando Vallejo Alonso Agradecimientos Son tantas las personas a las que tengo que agradecer su ayuda y apoyo que esta sección debiera ser la más larga de la tesis. Por ello, no pretendo convertirla en una lista exhaustiva, que además, siempre se olvidaría de alguien importante. Ahí van, por tanto, mis agradecimientos condensados. A Mónica, por su apoyo incondicional, culpable última de que tengas esta tesis en tus manos. A mi familia, especialmente a mis padres, por el soporte y apoyo recibido. A mis directores de tesis, Mon y Fernando. Aunque esto sea una carrera en solitario, es necesaria una buena guía para llegar al final. A los revisores de la tesis, tanto los revisores externos oficiales, Rubén González y Tim Harris, como todos aquellos que se molestaron en leer el trabajo y ayudaron con sugerencias y posibles mejoras. A los compañeros del Grupo de Arquitectura y Tecnología de Computadores de la Universidad de Cantabria, por la ayuda y colaboración en el desarrollo del trabajo, en especial a Carmen Martínez. A la gente del BSC-MSR Center y de la UPC, en especial a Mateo Valero y Adrián Cristal. Sin su trabajo previo en Kilo-Instruction Processors esta tesis hubiera sido imposible; pero también lo hubiera sido sin su guía, ayuda y apoyo y dirección durante su desarrollo. També voldria agrair l’ajuda i col·laboració dels companys del Departament d'Arquitectura de Computadors de la UPC, especialment a Miquel Moretó, i del BSC. You all know who you are, locos. I meet a lot of bright and helpful people during my internship in the Systems and Networking Group in Microsoft Research Cambridge, and they all deserve a sincere acknowledgement. But specially, I had the luck to work under the supervision of Tim Harris. He deserves a double acknowledgement. First, for his help, support and encouraging during my internship and the subsequent work. Second, because most of the work presented here would have been impossible without his prior pioneering work on nonblocking synchronization and Transactional Memory. Thanks, Tim. A todos mis amigos que tuvieron que sufrir de vez en cuando alguna aburrida explicación (culpa suya, por preguntar…) y supieron recordarme que de vez en cuando que existe un mundo real al otro lado de la pantalla. This work has been partially supported by the Spanish Ministry of Education and Science / Ministry of Science and Innovation, under contracts TIN2004-07440-C02-01, TIN2007-68023- C02-01, CONSOLIDER Project CSD2007-00050 and grant AP-2004-6907, by Microsoft Research Cambridge and by the joint BSC-Microsoft Research Centre. The author would also like to thank the support of the European Network of Excellence on High-Performance Embedded Architecture and Compilation (HiPEAC). Para Mónica Resumen Resumen La evolución tecnológica en el campo de los microprocesadores nos ha llevado a sistemas paralelos con múltiples hilos de ejecución simultánea, o threads. Estos sistemas son más difíciles de programar y presentan sobrecargas en la ejecución mayores que los sistemas uniprocesadores tradicionales, lo que puede limitar su rendimiento y escalabilidad. Estas sobrecargas se deben principalmente a los mecanismos de sincronización, el protocolo de coherencia y el modelo de consistencia y otros detalles requeridos para garantizar una ejecución correcta. El Capítulo 1 de esta tesis hace una introducción a los mecanismos necesarios para diseñar y hacer funcionar tal sistema paralelo, detallando en gran medida el trabajo reciente del área. En primer lugar, el apartado 1.1 estudia los mecanismos que hacen posible la construcción de sistemas de memoria común: El protocolo de coherencia y el modelo de consistencia del sistema. Estos dos mecanismos garantizan que los diferentes procesadores tienen una visión uniforme de la memoria del sistema, y especifican cómo puede comportarse el sistema cuando hay carreras en el acceso a datos compartidos. A continuación, en el apartado 1.2 se exponen los fundamentos de la programación paralela en tal modelo de memoria común, con énfasis en los mecanismos de sincronización: barreras y secciones críticas protegidas por locks. Se discuten las principales dificultades que presenta esta programación paralela con respecto a la programación single-threaded: la ley de Ahmdal, que limita la escalabilidad del sistema por la componente secuencial de los programas; el compromiso en cuanto al nivel de granularidad del paralelismo, en que una granularidad más fina permite más paralelismo pero presenta más overhead en la ejecución; los problemas de deadlock (interbloqueo), inversión de prioridad y starvation (inanición), inherentes a sistemas basados en locks; y finalmente, se analiza la complejidad del diseño de estructuras de datos concurrentes, especialmente por dos problemas: la dificultad de ampliar una estructura de datos con nuevos métodos sin conocer en detalle la implementación del resto de métodos, y la falta de composibilidad, es decir, que la construcción de una estructura de datos de un nivel superior, a partir de estructuras basadas en locks más sencillas, puede dar lugar a deadlock. Existen múltiples implementaciones alternativas de locks, que se revisan en el apartado 1.3. En esencia, un lock es una abstracción que protege una cierta zona de memoria o parte del código, de forma que sólo un thread pueda acceder a la zona protegida. Alternativamente, existen locks de lectura/escritura, que permiten un único escritor que modifique los datos, o múltiples lectores que accedan a la vez a los datos compartidos sin modificarlos. Hay implementaciones centralizadas, en que el lock es una única palabra de memoria a la que se accede mediante operaciones atómicas del procesador. Una implementación así genera contienda: todos los threads que quieren tomar el lock acceden a la misma posición de memoria, lo que implica múltiples invalidaciones a nivel de coherencia, empeorando el rendimiento del sistema. Alternativamente, existen implementaciones distribuidas, como los locks basados en colas: cada thread que quiera tomar el lock reserva una estructura denominada “nodo” en memoria, y los diferentes nodos de cada thread se enlazan en forma de una cola de solicitantes. En estos diseños el lock se pasa en orden de un nodo al siguiente, lo que evita la contienda, y además garantiza el fairness: existe una política que garantiza que todos los threads que pretenden tomar un lock lo consiguen hacer en un tiempo razonable, sin producirse starvation. En este apartado 1.3 se discuten también múltiples alternativas de locks, como aquellos que abortan si el lock no se toma en un cierto periodo de tiempo (trylocks), las implementaciones jerárquicas, o locks diseñados para comportarse especialmente bien en caso de existir un comportamiento patológico, como ser adquirido siempre por el mismo thread (biased locks). Una propuesta relativamente reciente que aborda los problemas de programación paralela es la Memoria Transaccional (Transactional Memory, TM), que se introduce en el apartado 1.4. Un sistema de Memoria Transaccional proporciona al programador la abstracción de una transacción con la que puede realizar modificaciones en memoria compartida. Las transacciones en memoria son análogas a las transacciones de las bases de datos, garantizando las propiedades de atomicidad (se ejecuta toda la transacción, o se aborta toda la transacción, pero no parte de ella) y aislamiento (ningún thread es capaz de ver el estado intermedio de otra transacción) al código que corre dentro de la transacción. Esto permite eliminar la gestión de locks de la tarea de programación al sustituir secciones críticas por transacciones, evitar el problema de deadlock, simplificar la modificación de código existente y proporcionar composibilidad. Para garantizar una ejecución correcta, el sistema de Memoria Transaccional debe ejecutar el código transaccional de manera especulativa, almacenando los cambios que realiza la transacción (el write-set) en algún tipo de buffer, y utilizar un mecanismo de validación (commit) que garantice que los cambios se hacen visibles a nivel global (al resto de threads) de forma atómica, sin que hayan ocurrido cambios en las posiciones de memoria leídas (el read- set). Además, el sistema debe detectar las violaciones: si dos transacciones acceden de manera concurrente a los mismos datos en memoria (solapándose parcialmente el write-set de una de ellas con el read-set o el write-set de la otra) una de las transacciones debe pararse y esperar al commit de la otra, o abortar y reiniciarse. El mecanismo que decide la acción cuando se detecta un conflicto se denomina contention manager. Existen múltiples implementaciones de Memoria Transaccional,
Recommended publications
  • A Chip Multi-Cluster Architecture with Locality Aware Task Distribution
    A CHIP MULTI-CLUSTER ARCHITECTURE WITH LOCALITY AWARE TASK DISTRIBUTION A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and Physical Sciences 2007 Matthew James Horsnell School of Computer Science Contents List of Tables 7 List of Figures 8 List of Algorithms 12 Abstract 13 Declaration 14 Copyright 15 Acknowledgements 16 1 Introduction 17 1.1 Motivation . 17 1.2 Microprocessor Design Challenges . 19 1.2.1 Wire Delay . 20 1.2.2 Memory Gap . 21 1.2.3 Limits of Instruction Level Parallelism . 22 1.2.4 Power Limits . 23 1.2.5 Design Complexity . 24 1.3 Design Solutions . 26 1.3.1 Exploiting Parallelism . 26 2 1.3.2 Partitioned Designs . 29 1.3.3 Bridging the Memory Gap . 30 1.3.4 Design Abstraction and Replication . 31 1.4 Summary . 33 1.5 Research Aims . 33 1.6 Contributions . 33 1.7 Thesis Structure . 34 1.8 Publications . 35 2 Parallelism 36 2.1 Application Parallelism . 36 2.1.1 Amdahl's Law . 37 2.1.2 Implicit and Explicit Parallelism . 37 2.1.3 Granularity of Parallelism . 39 2.2 Architectural Parallelism . 42 2.2.1 Bit Level Parallelism . 42 2.2.2 Data Level Parallelism . 43 2.2.3 Instruction Level Parallelism . 44 2.2.4 Multithreading . 47 2.2.5 Simultaneous Multithreading . 50 2.2.6 Chip Multiprocessors . 50 2.3 Summary . 51 3 Jamaica CMP and Software Environment 52 3.1 The Jamaica Chip Multiprocessor . 52 3.1.1 Multithreading . 53 3.1.2 Register Windows .
    [Show full text]
  • C 2012 Neal Clayton Crago ENERGY-EFFICIENT LATENCY TOLERANCE for 1000-CORE DATA PARALLEL PROCESSORS with DECOUPLED STRANDS
    c 2012 Neal Clayton Crago ENERGY-EFFICIENT LATENCY TOLERANCE FOR 1000-CORE DATA PARALLEL PROCESSORS WITH DECOUPLED STRANDS BY NEAL CLAYTON CRAGO DISSERTATION Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Electrical and Computer Engineering in the Graduate College of the University of Illinois at Urbana-Champaign, 2012 Urbana, Illinois Doctoral Committee: Professor Sanjay J. Patel, Chair Professor Wen-mei W. Hwu Associate Professor Steven S. Lumetta Associate Professor Deming Chen ABSTRACT This dissertation presents a novel decoupled latency tolerance technique for 1000-core data parallel processors. The approach focuses on developing in- struction latency tolerance to improve performance for a single thread. The main idea behind the approach is to leverage the compiler to split the original thread into separate memory-accessing and memory-consuming instruction streams. The goal is to provide latency tolerance similar to high-performance techniques such as out-of-order execution while leveraging low hardware com- plexity similar to an in-order execution core. The research in this dissertation supports the following thesis: Pipeline stalls due to long exposed instruction latency are the main performance lim- iter for cached 1000-core data parallel processors. Leveraging natural decou- pling of memory-access and memory-consumption, a serial thread of execu- tion can be partitioned into strands providing energy-efficient latency toler- ance. This dissertation motivates the need for latency tolerance in 1000-core data parallel processors and presents decoupled core architectures as an alterna- tive to currently used techniques. This dissertation discusses the limitations of prior decoupled architectures, and proposes techniques to improve both latency tolerance and energy-efficiency.
    [Show full text]
  • Chip Multithreading: Opportunities and Challenges
    Chip Multithreading: Opportunities and Challenges Lawrence Spracklen & Santosh G. Abraham Scalable Systems Group Sun Microsystems Inc., Sunnyvale, CA lawrence.spracklen,santosh.abraham @sun.com f g Abstract be improved significantly due to low ILP and off-chip CPI is large and growing, due to relative increases in memory latency. How- Chip Multi-Threaded (CMT) processors provide support for ever, typical server applications concurrently serve a large number many simultaneous hardware threads of execution in various of users or clients; for instance, a contemporary database server ways, including Simultaneous Multithreading (SMT) and Chip may have hundreds of active processes, each associated with a dif- Multiprocessing (CMP). CMT processors are especially suited to ferent client. Furthermore, these processes are currently multi- server workloads, which generally have high levels of Thread- threaded to hide disk access latencies. This structure leads to high Level Parallelism (TLP). In this paper, we describe the evolution levels of TLP. Thus, it is extremely attractive to couple the high of CMT chips in industry and highlight the pervasiveness of CMT TLP in the application domain with support for multiple threads designs in upcoming general-purpose processors. The CMT de- of execution on a processor chip. sign space accommodates a range of designs between the extremes Chip Multi-Threaded (CMT) processors support many simulta- represented by the SMT and CMP designs and a variety of attrac- neous hardware strands (or threads) of execution via a combination tive design options are currently unexplored. Though there has of support for multiple cores (Chip Multiprocessors (CMP)) [1] been extensive research on utilizing multiple hardware threads to and Simultaneous Multi-Threading (SMT) [2].
    [Show full text]
  • Reducing Exception Management Overhead with Software Restart
    Reducing Exception Management Overhead with Software Restart Markers by Mark Jerome Hampton Bachelor of Science in Computer and Systems Engineering Bachelor of Science in Computer Science Rensselaer Polytechnic Institute, May 1999 Master of Science in Electrical Engineering and Computer Science Massachusetts Institute of Technology, June 2001 Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Doctor of Philosophy at the MASSACHUSETTS INSTITUTE OF TECHNOLOGY February 2008 c Massachusetts Institute of Technology 2008. All rights reserved. Author............................................................................ Department of Electrical Engineering and Computer Science February 1, 2008 Certified by........................................................................ Krste Asanovi´c Associate Professor Thesis Supervisor Accepted by....................................................................... Terry P. Orlando Chair, Department Committee on Graduate Students 2 Reducing Exception Management Overhead with Software Restart Markers by Mark Jerome Hampton Submitted to the Department of Electrical Engineering and Computer Science on February 1, 2008, in partial fulfillment of the requirements for the degree of Doctor of Philosophy Abstract Modern processors rely on exception handling mechanisms to detect errors and to implement various features such as virtual memory. However, these mechanisms are typically hardware- intensive because of the need
    [Show full text]
  • Runahead Threads
    ADVERTIMENT . La consulta d’aquesta tesi queda condicionada a l’acceptació de les següents condicions d'ús: La difusió d’aquesta tesi per mitjà del servei TDX ( www.tesisenxarxa.net ) ha estat autoritzada pels titulars dels drets de propietat intel·lectual únicament per a usos privats emmarcats en activitats d’investigació i docència. No s’autoritza la seva reproducció amb finalitats de lucre ni la seva difusió i posada a disposició des d’un lloc aliè al servei TDX. No s’autoritza la presentació del seu contingut en una finestra o marc aliè a TDX (framing). Aquesta reserva de drets afecta tant al resum de presentació de la tesi com als seus continguts. En la utilització o cita de parts de la tesi és obligat indicar el nom de la persona autora. ADVERTENCIA . La consulta de esta tesis queda condicionada a la aceptación de las siguientes condiciones de uso: La difusión de esta tesis por medio del servicio TDR ( www.tesisenred.net ) ha sido autorizada por los titulares de los derechos de propiedad intelectual únicamente para usos privados enmarcados en actividades de investigación y docencia. No se autoriza su reproducción con finalidades de lucro ni su difusión y puesta a disposición desde un sitio ajeno al servicio TDR. No se autoriza la presentación de su contenido en una ventana o marco ajeno a TDR (framing). Esta reserva de derechos afecta tanto al resumen de presentación de la tesis como a sus contenidos. En la utilización o cita de partes de la tesis es obligado indicar el nombre de la persona autora.
    [Show full text]
  • Chip Multithreading: Opportunities and Challenges
    Chip Multithreading: Opportunities and Challenges Lawrence Spracklen & Santosh G. Abraham Scalable Systems Group Sun Microsystems Inc., Sunnyvale, CA lawrence.spracklen,santosh.abraham @sun.com f g Abstract be improved significantly due to low ILP and off-chip CPI is large and growing, due to relative increases in memory latency. How- Chip Multi-Threaded (CMT) processors provide support for ever, typical server applications concurrently serve a large number many simultaneous hardware threads of execution in various of users or clients; for instance, a contemporary database server ways, including Simultaneous Multithreading (SMT) and Chip may have hundreds of active processes, each associated with a dif- Multiprocessing (CMP). CMT processors are especially suited to ferent client. Furthermore, these processes are currently multi- server workloads, which generally have high levels of Thread- threaded to hide disk access latencies. This structure leads to high Level Parallelism (TLP). In this paper, we describe the evolution levels of TLP. Thus, it is extremely attractive to couple the high of CMT chips in industry and highlight the pervasiveness of CMT TLP in the application domain with support for multiple threads designs in upcoming general-purpose processors. The CMT de- of execution on a processor chip. sign space accommodates a range of designs between the extremes Chip Multi-Threaded (CMT) processors support many simulta- represented by the SMT and CMP designs and a variety of attrac- neous hardware strands (or threads) of execution via a combination tive design options are currently unexplored. Though there has of support for multiple cores (Chip Multiprocessors (CMP)) [1] been extensive research on utilizing multiple hardware threads to and Simultaneous Multi-Threading (SMT) [2].
    [Show full text]