throbber
&
`
`CM& Morgan Claypool Publishers
`A Primer on Memory
`Consistency and
`Cache Coherence
`
`Daniel J. Sorin
`Mark D. Hill
`David A. Wood
`
`SYNTHESIS LECTURES ON
`COMPUTER ARCHITECTURE
`Mark D. Hill, Series Editor
`
`SORIN • HILL • WOOD
`
`A PRIMER ON MEMORY CONSISTENCY AND CACHE COHERENCE
`
`MORGAN & CLAYPOOL
`
`Series ISSN: 1935-3235
`
`SYNTHESIS LECTURES ON
`COMPUTER ARCHITECTURE
`Series Editor: Mark D. Hill, University of Wisconsin
`A Primer on Memory Consistency
`and Cache Coherence
`Daniel J. Sorin, Duke University
`Mark D. Hill and David A. Wood, University of Wisconsin, Madison
`
`Many modern computer systems and most multicore chips (chip multiprocessors) support shared
`memory in hardware. In a shared memory system, each of the processor cores may read and write to
`a single shared address space. For a shared memory machine, the memory consistency model defines
`the architecturally visible behavior of its memory system. Consistency definitions provide rules about
`loads and stores (or memory reads and writes) and how they act upon memory. As part of supporting
`a memory consistency model, many machines also provide cache coherence proto-cols that ensure that
`multiple cached copies of data are kept up-to-date. The goal of this primer is to provide readers with
`a basic understanding of consistency and coherence. This understanding includes both the issues that
`must be solved as well as a variety of solutions. We present both high-level concepts as well as specific,
`concrete examples from real-world systems.
`
`About SYNTHESIs
`This volume is a printed version of a work that appears in the Synthesis
`Digital Library of Engineering and Computer Science. Synthesis Lectures
`provide concise, original presentations of important research and development
`topics, published quickly, in digital and print formats. For more information
`visit www.morganclaypool.com
`&
`Morgan Claypool Publishers
`w w w . m o r g a n c l a y p o o l . c o m
`
`ISBN: 978-1-60845-564-5
`90000
`
`9 781608 455645
`
`

`
`

`
`A Primer on Memory Consistency
`and Cache Coherence
`
`

`
`ii
`
`One liner Chapter TitleSynthesis Lectures on Computer
`
`Architecture
`
`Editor
`Mark D. Hill, University of Wisconsin
`Synthesis Lectures on Computer Architecture publishes 50- to 100-page publications on topics
`pertaining to the science and art of designing, analyzing, selecting and interconnecting hardware
`components to create computers that meet functional, performance and cost goals. The scope will
`largely follow the purview of premier computer architecture conferences, such as ISCA, HPCA,
`MICRO, and ASPLOS.
`
`A Primer on Memory Consistency and Cache Coherence
`Daniel J. Sorin, Mark D. Hill, and David A. Wood
`2011
`
`Dynamic Binary Modification: Tools, Techniques, and Applications
`Kim Hazelwood
`2011
`
`Quantum Computing for Computer Architects, Second Edition
`Tzvetan S. Metodi, Arvin I. Faruque, Frederic T. Chong
`2011
`
`High Performance Datacenter Networks: Architectures, Algorithms, and Opportunities
`Dennis Abts, John Kim
`2011
`
`Processor Microarchitecture: An Implementation Perspective
`Antonio González, Fernando Latorre, and Grigorios Magklis
`2011
`
`Transactional Memory, 2nd edition
`Tim Harris, James Larus, and Ravi Rajwar
`2010
`
`

`
`iii
`
`Computer Architecture Performance Evaluation Models
`Lieven Eeckhout
`2010
`
`Introduction to Reconfigurable Supercomputing
`Marco Lanzagorta, Stephen Bique, and Robert Rosenberg
`2009
`
`On-Chip Networks
`Natalie Enright Jerger and Li-Shiuan Peh
`2009
`
`The Memory System: You Can’t Avoid It, You Can’t Ignore It, You Can’t Fake It
`Bruce Jacob
`2009
`
`Fault Tolerant Computer Architecture
`Daniel J. Sorin
`2009
`
`The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines
`Luiz André Barroso and Urs Hölzle
`2009
`
`Computer Architecture Techniques for Power-Efficiency
`Stefanos Kaxiras and Margaret Martonosi
`2008
`
`Chip Multiprocessor Architecture: Techniques to Improve Throughput and Latency
`Kunle Olukotun, Lance Hammond, and James Laudon
`2007
`
`Transactional Memory
`James R. Larus and Ravi Rajwar
`2006
`
`Quantum Computing for Computer Architects
`Tzvetan S. Metodi and Frederic T. Chong
`2006
`
`

`
`Copyright © 2011 by Morgan & Claypool
`
`All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in
`any form or by any means—electronic, mechanical, photocopy, recording, or any other except for brief quotations
`in printed reviews, without the prior permission of the publisher.
`
`A Primer on Memory Consistency and Cache Coherence
`Daniel J. Sorin, Mark D. Hill, and David A. Wood
`www.morganclaypool.com
`
`ISBN: 9781608455645 paperback
`
`ISBN: 9781608455652 ebook
`
`DOI: 10.2200/S00346ED1V01Y201104CAC016
`
`A Publication in the Morgan & Claypool Publishers series
`
`SYNTHESIS LECTURES ON COMPUTER ARCHITECTURE #16
`
`Lecture #16
`
`Series Editor: Mark D. Hill, University of Wisconsin
`
`Series ISSN
`ISSN 1935-3235
`ISSN 1935-3243
`
`print
`electronic
`
`

`
`A Primer on Memory Consistency
`and Cache Coherence
`
`Daniel J. Sorin, Mark D. Hill, and David A. Wood
`
`SYNTHESIS LECTURES ON COMPUTER ARCHITECTURE #16
`
`

`
`vi
`
`ABSTRACT
`Many modern computer systems and most multicore chips (chip multiprocessors) support shared
`memory in hardware. In a shared memory system, each of the processor cores may read and write
`to a single shared address space. For a shared memory machine, the memory consistency model
`defines the architecturally visible behavior of its memory system. Consistency definitions provide
`rules about loads and stores (or memory reads and writes) and how they act upon memory. As part
`of supporting a memory consistency model, many machines also provide cache coherence proto-
`cols that ensure that multiple cached copies of data are kept up-to-date. The goal of this primer
`is to provide readers with a basic understanding of consistency and coherence. This understanding
`includes both the issues that must be solved as well as a variety of solutions. We present both high-
`level concepts as well as specific, concrete examples from real-world systems.
`
`KEYWORDS
`computer architecture, memory consistency, cache coherence, shared memory, memory systems,
`multicore processor, multiprocessor
`
`

`
`vii
`
`Preface
`
`This primer is intended for readers who have encountered memory consistency and cache coher-
`ence informally, but now want to understand what they entail in more detail. This audience includes
`computing industry professionals as well as junior graduate students.
`We expect our readers to be familiar with the basics of computer architecture. Remembering
`the details of Tomasulo’s algorithm or similar details is unnecessary, but we do expect readers to
`understand issues like architectural state, dynamic instruction scheduling (out-of-order execution),
`and how caches are used to reduce average latencies to access storage structures.
`The primary goal of this primer is to provide readers with a basic understanding of consis-
`tency and coherence. This understanding includes both the issues that must be solved as well as a
`variety of solutions. We present both high-level concepts as well as specific, concrete examples from
`real-world systems. A secondary goal of this primer is to make readers aware of just how complicated
`consistency and coherence are. If readers simply discover what it is that they do not know—without
`actually learning it—that discovery is still a substantial benefit. Furthermore, because these topics
`are so vast and so complicated, it is beyond the scope of this primer to cover them exhaustively. It
`is not a goal of this primer to cover all topics in depth, but rather to cover the basics and apprise the
`readers of what topics they may wish to pursue in more depth.
`We owe many thanks for the help and support we have received during the development of
`this primer. We thank Blake Hechtman for implementing and testing (and debugging!) all of the
`coherence protocols in this primer. As the reader will soon discover, coherence protocols are com-
`plicated, and we would not have trusted any protocol that we had not tested, so Blake’s work was
`tremendously valuable. Blake implemented and tested all of these protocols using the Wisconsin
`GEMS simulation infrastructure [http://www.cs.wisc.edu/gems/].
`For reviewing early drafts of this primer and for helpful discussions regarding various topics
`within the primer, we gratefully thank Trey Cain and Milo Martin. For providing additional feed-
`back on the primer, we thank Newsha Ardalani, Arkaprava Basu, Brad Beckmann, Bob Cypher, Joe
`Devietti, Sandip Govind Dhoot, Alex Edelsburg, Jayneel Gandhi, Dan Gibson, Marisabel Gue-
`vara, Gagan Gupta, Blake Hechtman, Derek Hower, Zachary Marzec, Hiran Mayukh, Ralph Na-
`than, Marc Orr, Vijay Sathish, Abhirami Senthilkumaran, Simha Sethumadhavan, Venkatanathan
`
`

`
`viii A PRIMER ON MEMORY CONSISTENCY AND CACHE COHERENCE
`
`Varadarajan, Derek Williams, and Meng Zhang. While our reviewers provided great feedback, they
`may or may not agree with all of the final contents of this primer.
`This work is supported in part by the National Science Foundation (CNS-0551401, CNS-
`0720565, CCF-0916725, CCF-0444516, and CCF-0811290), Sandia/DOE (#MSN123960/
`DOE890426), Semiconductor Research Corporation (contract 2009-HJ-1881), and the University
`of Wisconsin (Kellett Award to Hill). The views expressed herein are not necessarily those of the
`NSF, Sandia, DOE, or SRC.
`Dan thanks Deborah, Jason, and Julie for their love and for putting up with him taking the
`time to work on another synthesis lecture. Dan thanks his Uncle Sol for helping inspire him to be
`an engineer in the first place. Lastly, Dan dedicates this book to the memory of Rusty Sneiderman,
`a treasured friend of thirty years who will be dearly missed by everyone who was lucky enough to
`have known him.
`Mark wishes to thank Sue, Nicole, and Gregory for their love and support.
`David thanks his coauthors for putting up with his deadline-challenged work style, his par-
`ents Roger and Ann Wood for inspiring him to be a second-generation Computer Sciences profes-
`sor, and Jane, Alex, and Zach for helping him remember what life is all about.
`
`

`
`ix
`
`Contents
`
`Preface ....................................................................................................................... ix
`
`1.
`
`2.
`
`Introduction to Consistency and Coherence .........................................................1
`1.1 Consistency (a.k.a., Memory Consistency, Memory Consistency Model,
`or Memory Model) .............................................................................................. 2
`1.2 Coherence (a.k.a., Cache Coherence) .................................................................. 4
`1.3 A Consistency and Coherence Quiz .................................................................... 6
`1.4 What this Primer Does Not Do .......................................................................... 6
`
`Coherence Basics ................................................................................................9
`2.1 Baseline System Model ....................................................................................... 9
`2.2 The Problem: How Incoherence Could Possibly Occur .................................... 10
`2.3 Defining Coherence .......................................................................................... 11
`2.3.1 Maintaining the Coherence Invariants .................................................. 13
`2.3.2 The Granularity of Coherence .............................................................. 13
`2.3.3 The Scope of Coherence ....................................................................... 15
`2.4 References .......................................................................................................... 15
`
`3. Memory Consistency Motivation and Sequential Consistency ............................ 17
`3.1 Problems with Shared Memory Behavior .......................................................... 17
`3.2 What Is a Memory Consistency Model? ........................................................... 20
`3.3 Consistency vs. Coherence ................................................................................ 21
`3.4 Basic Idea of Sequential Consistency (SC) ........................................................ 22
`3.5 A Little SC Formalism ...................................................................................... 24
`3.6 Naive SC Implementations ............................................................................... 26
`3.7 A Basic SC Implementation with Cache Coherence......................................... 27
`3.8 Optimized SC Implementations with Cache Coherence .................................. 29
`3.9 Atomic Operations with SC .............................................................................. 32
`3.10 Putting it All Together: MIPS R10000 ............................................................. 33
`
`

`
`x A PRIMER ON MEMORY CONSISTENCY AND CACHE COHERENCE
`
`4.
`
`5.
`
`3.11 Further Reading Regarding SC ......................................................................... 34
`3.12 References .......................................................................................................... 35
`
`Total Store Order and the x86 Memory Model .................................................... 37
`4.1 Motivation for TSO/x86 ................................................................................... 37
`4.2 Basic Idea of TSO/x86 ...................................................................................... 38
`4.3 A Little TSO Formalism and an x86 Conjecture .............................................. 42
`Implementing TSO/x86 .................................................................................... 45
`4.4
`4.5 Atomic Instructions and Fences with TSO ....................................................... 46
`4.5.1 Atomic Instructions ............................................................................... 46
`4.5.2 Fences .................................................................................................... 47
`4.6 Further Reading Regarding TSO ...................................................................... 47
`4.7 Comparing SC and TSO ................................................................................... 48
`4.8 References .......................................................................................................... 49
`
`5.3
`
`Relaxed Memory Consistency ............................................................................ 51
`5.1 Motivation ......................................................................................................... 51
`5.1.1 Opportunities to Reorder Memory Operations ..................................... 52
`5.1.2 Opportunities to Exploit Reordering .................................................... 53
`5.2 An Example Relaxed Consistency Model (XC) ................................................ 55
`5.2.1 The Basic Idea of the XC Model........................................................... 55
`5.2.2 Examples Using Fences under XC......................................................... 56
`5.2.3 Formalizing XC ..................................................................................... 57
`5.2.4 Examples Showing XC Operating Correctly......................................... 59
`Implementing XC ............................................................................................. 61
`5.3.1 Atomic Instructions with XC ................................................................ 62
`5.3.2 Fences with XC ..................................................................................... 64
`5.3.3 A Caveat ................................................................................................ 64
`5.4 Sequential Consistency for Data-Race-Free Programs ..................................... 64
`5.5 Some Relaxed Model Concepts ......................................................................... 68
`5.5.1 Release Consistency ............................................................................... 68
`5.5.2 Causality and Write Atomicity .............................................................. 69
`5.6 A Relaxed Memory Model Case Study: IBM Power ........................................ 70
`5.7 Further Reading and Commercial Relaxed Memory Models ............................ 74
`5.7.1 Academic Literature .............................................................................. 74
`5.7.2 Commercial Models .............................................................................. 74
`
`

`
`6.
`
`7.
`
`CONTENTS xi
`
`5.8 Comparing Memory Models ............................................................................. 75
` How Do Relaxed Memory Models Relate to Each Other and
`5.8.1
`TSO and SC? ............................................................................... ......... 75
`5.8.2 How Good Are Relaxed Models? .......................................................... 76
`5.9 High-Level Language Models .......................................................................... 76
`5.10 References .......................................................................................................... 79
`
`Coherence Protocols ......................................................................................... 83
`6.1 The Big Picture ................................................................................................. 83
`6.2 Specifying Coherence Protocols ........................................................................ 85
`6.3 Example of a Simple Coherence Protocol ......................................................... 86
`6.4 Overview of Coherence Protocol Design Space ................................................ 88
`6.4.1 States ..................................................................................................... 88
`6.4.2 Transactions ........................................................................................... 92
`6.4.3 Major Protocol Design Options ............................................................ 95
`6.5 References .......................................................................................................... 97
`
`7.2.3
`
`Snooping Coherence Protocols .......................................................................... 99
`7.1
`Introduction to Snooping .................................................................................. 99
`7.2 Baseline Snooping Protocol ............................................................................. 103
`7.2.1 High-Level Protocol Specification ...................................................... 104
` Simple Snooping System Model: Atomic Requests,
`7.2.2
`Atomic Transactions ..................................................................... ....... 104
` Baseline Snooping System Model: Non-Atomic Requests,
`Atomic Transactions ..................................................................... ....... 109
`7.2.4 Running Example ................................................................................ 113
`7.2.5 Protocol Simplifications....................................................................... 114
`7.3 Adding the Exclusive State.............................................................................. 115
`7.3.1 Motivation ........................................................................................... 115
`7.3.2 Getting to the Exclusive State ............................................................. 115
`7.3.3 High-Level Specification of Protocol .................................................. 116
`7.3.4 Detailed Specification .......................................................................... 118
`7.3.5 Running Example ................................................................................ 119
`7.4 Adding the Owned State ................................................................................. 119
`7.4.1 Motivation ........................................................................................... 119
`7.4.2 High-Level Protocol Specification ...................................................... 121
`
`

`
`xii A PRIMER ON MEMORY CONSISTENCY AND CACHE COHERENCE
`
`7.4.3 Detailed Protocol Specification ........................................................... 121
`7.4.4 Running Example ................................................................................ 122
`7.5 Non-Atomic Bus ............................................................................................. 123
`7.5.1 Motivation ........................................................................................... 124
`7.5.2 In-Order vs. Out-of-Order Responses ................................................ 124
`7.5.3 Non-Atomic System Model ................................................................ 124
`7.5.4 An MSI Protocol with a Split-Transaction Bus .................................. 126
` An Optimized, Non-Stalling MSI Protocol with a
`7.5.5
`Split-Transaction Bus ................................................................... ....... 130
`7.6 Optimizations to the Bus Interconnection Network ....................................... 132
`7.6.1 Separate Non-Bus Network for Data Responses ................................. 132
`7.6.2 Logical Bus for Coherence Requests ................................................... 133
`7.7 Case Studies .................................................................................................... 133
`7.7.1 Sun Starfire E10000 ............................................................................ 133
`7.7.2 IBM Power5 ........................................................................................ 135
`7.8 Discussion and the Future of Snooping ........................................................... 137
`7.9 References ........................................................................................................ 138
`
`8. Directory Coherence Protocols ........................................................................ 139
`8.1
`Introduction to Directory Protocols ................................................................ 139
`8.2 Baseline Directory System ............................................................................... 141
`8.2.1 Directory System Model ..................................................................... 141
`8.2.2 High-level Protocol Specification ........................................................ 142
`8.2.3 Avoiding Deadlock .............................................................................. 144
`8.2.4 Detailed Protocol Specification ........................................................... 146
`8.2.5 Protocol Operation .............................................................................. 147
`8.2.6 Protocol Simplifications....................................................................... 149
`8.3 Adding the Exclusive State.............................................................................. 150
`8.3.1 High-Level Protocol Specification ...................................................... 150
`8.3.2 Detailed Protocol Specification ........................................................... 152
`8.4 Adding the Owned State ................................................................................. 153
`8.4.1 High-Level Protocol Specification ..................................................... 153
`8.4.2 Detailed Protocol Specification ......................................................... 155
`8.5 Representing Directory State .......................................................................... 156
`8.5.1 Coarse Directory ................................................................................ 157
`8.5.2 Limited Pointer Directory .................................................................. 157
`
`

`
`CONTENTS xiii
`
`8.6 Directory Organization ................................................................................... 158
`8.6.1 Directory Cache Backed by DRAM ................................................... 159
`8.6.2 Inclusive Directory Caches .................................................................. 160
`8.6.3 Null Directory Cache (with no backing store)..................................... 163
`8.7 Performance and Scalability Optimizations..................................................... 163
`8.7.1 Distributed Directories ........................................................................ 163
`8.7.2 Non-Stalling Directory Protocols ........................................................ 164
`8.7.3 Interconnection Networks without Point-to-Point Ordering .............. 166
`8.7.4 Silent vs. Non-Silent Evictions of Blocks in State S ........................... 168
`8.8 Case Studies .................................................................................................... 169
`8.8.1 SGI Origin 2000 ................................................................................. 169
`8.8.2 Coherent HyperTransport ................................................................... 171
`8.8.3 HyperTransport Assist......................................................................... 172
`8.8.4 Intel QPI ............................................................................................. 173
`8.9 Discussion and the Future of Directory Protocols ........................................... 175
`8.10 References ........................................................................................................ 175
`
`Advanced Topics in Coherence ........................................................................ 177
`9.1 System Models ................................................................................................ 177
`9.1.1 Instruction Caches ............................................................................... 177
`9.1.2 Translation Lookaside Buffers (TLBs) ................................................ 178
`9.1.3 Virtual Caches ..................................................................................... 179
`9.1.4 Write-Through Caches ....................................................................... 180
`9.1.5 Coherent Direct Memory Access (DMA)........................................... 180
`9.1.6 Multi-Level Caches and Hierarchical Coherence Protocols ............... 181
`9.2 Performance Optimizations ............................................................................. 184
`9.2.1 Migratory Sharing Optimization ........................................................ 184
`9.2.2 False Sharing Optimizations ............................................................... 185
`9.3 Maintaining Liveness ...................................................................................... 186
`9.3.1 Deadlock ............................................................................................. 186
`9.3.2 Livelock ............................................................................................... 189
`9.3.3 Starvation ............................................................................................ 192
`9.4 Token Coherence ............................................................................................. 193
`9.5 The Future of Coherence ................................................................................ 193
`9.6 References ........................................................................................................ 193
`
`9.
`
`Author Biographies .................................................................................................. 197
`
`

`
`

`
`1
`
`C H A P T E R 1
`Introduction to Consistency
`and Coherence
`
`Many modern computer systems and most multicore chips (chip multiprocessors) support shared
`memory in hardware. In a shared memory system, each of the processor cores may read and write to
`a single shared address space. These designs seek various goodness properties, such as high perfor-
`mance, low power, and low cost. Of course, it is not valuable to provide these goodness properties
`without first providing correctness. Correct shared memory seems intuitive at a hand-wave level,
`but, as this lecture will help show, there are subtle issues in even defining what it means for a shared
`memory system to be correct, as well as many subtle corner cases in designing a correct shared
`memory implementation. Moreover, these subtleties must be mastered in hardware implementa-
`tions where bug fixes are expensive. Even academics should master these subtleties to make it more
`likely that their proposed designs will work.
`We and many others find it useful to separate shared memory correctness into two sub-issues:
`consistency and coherence. Computer systems are not required to make this separation, but we find
`it helps to divide and conquer complex problems, and this separation prevails in many real shared
`memory implementations.
`It is the job of consistency (memory consistency, memory consistency model, or memory
`model) to define shared memory correctness. Consistency definitions provide rules about loads and
`stores (or memory reads and writes) and how they act upon memory. Ideally, consistency definitions
`would be simple and easy to understand. However, defining what it means for shared memory to
`behave correctly is more subtle than defining the correct behavior of, for example, a single-threaded
`processor core. The correctness criterion for a single processor core partitions behavior between one
`correct result and many incorrect alternatives. This is because the processor’s architecture mandates
`that the execution of a thread transforms a given input state into a single well-defined output state,
`even on an out-of-order core. Shared memory consistency models, however, concern the loads and
`stores of multiple threads and usually allow many correct executions while disallowing many (more)
`incorrect ones. The possibility of multiple correct executions is due to the ISA allowing multiple
`threads to execute concurrently, often with many possible legal interleavings of instructions from
`
`

`
`2 A PRIMER ON MEMORY CONSISTENCY AND CACHE COHERENCE
`
`different threads. The multitude of correct executions complicates the erstwhile simple challenge of
`determining whether an execution is correct. Nevertheless, consistency must be mastered to imple-
`ment shared memory and, in some cases, to write correct programs that use it.
`Unlike consistency, coherence (or cache coherence) is neither visible to software nor required.
`However, as part of supporting a consistency model, the vast majority of shared memory systems
`implement a coherence protocol that provides coherence. Coherence seeks to make the caches of
`a shared-memory system as functionally invisible as the caches in a single-core system. Correct
`coherence ensures that a programmer cannot determine whether and where a system has caches by
`analyzing the results of loads and stores. This is because correct coherence ensures that the caches
`never enable new or different functional behavior (programmers may still be able to infer likely cache
`structure using timing information).
`In most systems, coherence protocols play an important role in providing consistency. Thus,
`even though consistency is the first major topic of this primer, we begin in Chapter 2 with a brief
`introduction to coherence. The goal of this chapter is to explain enough about coherence to under-
`stand how consistency models interact with coherent caches, but not to explore specific coherence
`protocols or implementations, which are topics we defer until the second portion of this primer in
`Chapters 6–9. In Chapter 2, we define coherence using the single-writer–multiple-reader (SWMR)
`invariant. SWMR requires that, at any given time, a memory location is either cached for writing
`(and reading) at one cache or cached only for reading at zero to many caches.
`
`1.1
`
`CONSISTENCY (A.K.A., MEMORY CONSISTENCY, MEMORY
`CONSISTENCY MODEL, OR MEMORY MODEL)
`Consistency models define correct shared memory behavior in terms of loads and stores (memory
`reads and writes), without reference to caches or coherence. To gain some real-world intuition on
`why we need consistency models, consider a university that posts its course schedule online. As-
`sume that the Computer Architecture course is originally scheduled to be in Room 152. The day
`before classes begin, the university registrar decides to move the class to Room 252. The registrar
`sends an e-mail message asking the web site administrator to update the online schedule, and a few
`minutes later, the registrar sends a text message to all registered students

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket