Z-Rays: Divide Arrays and Conquer Speed and Flexibility
| dc.contributor.author | Sartor, Jennifer B. | |
| dc.contributor.author | Blackburn, Stephen | |
| dc.contributor.author | Frampton, Daniel | |
| dc.contributor.author | Hirzel, Martin | |
| dc.contributor.author | McKinley, Kathryn | |
| dc.coverage.spatial | Toronto Canada | |
| dc.date.accessioned | 2015-12-10T22:32:22Z | |
| dc.date.created | June 2-10 2010 | |
| dc.date.issued | 2010 | |
| dc.date.updated | 2016-02-24T10:18:07Z | |
| dc.description.abstract | Arrays are the ubiquitous organization for indexed data. Throughout programming language evolution, implementations have laid out arrays contiguously in memory. This layout is problematic in space and time. It causes heap fragmentation, garbage collection pauses in proportion to array size, and wasted memory for sparse and over-provisioned arrays. Because of array virtualization in managed languages, an array layout that consists of indirection pointers to fixed-size discontiguous memory blocks can mitigate these problems transparently. This design however incurs significant overhead, but is justified when real-time deadlines and space constraints trump performance. This paper proposes z-rays, a discontiguous array design with flexibility and efficiency. A z-ray has a spine with indirection pointers to fixed-size memory blocks called arraylets, and uses five optimizations: (1) inlining the first N array bytes into the spine, (2) lazy allocation, (3) zero compression, (4) fast array copy, and (5) arraylet copy-on-write. Whereas discontiguous arrays in prior work improve responsiveness and space efficiency, z-rays combine time efficiency and flexibility. On average, the best z-ray configuration performs within 12.7% of an unmodified Java Virtual Machine on 19 benchmarks, whereas previous designs have two to three times higher overheads. Furthermore, language implementers can configure z-ray optimizations for various design goals. This combination of performance and flexibility creates a better building block for past and future array optimization. | |
| dc.identifier.isbn | 9781450300193 | |
| dc.identifier.uri | http://hdl.handle.net/1885/55730 | |
| dc.publisher | Association for Computing Machinery Inc (ACM) | |
| dc.relation.ispartofseries | ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2010) | |
| dc.source | Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation (PLDI 2010) | |
| dc.source.uri | http://www.cs.stanford.edu/pldi10/ | |
| dc.subject | Keywords: Array design; Array layout; Array optimization; Array sizes; Building blockes; Design goal; Garbage collection; Inlining; Java virtual machines; Memory blocks; Programming language; Space and time; Space constraints; Space efficiencies; Time efficiencies; arraylets; arrays; compression; heap; z-rays | |
| dc.title | Z-Rays: Divide Arrays and Conquer Speed and Flexibility | |
| dc.type | Conference paper | |
| local.contributor.affiliation | Sartor, Jennifer B., University of Texas | |
| local.contributor.affiliation | Blackburn, Stephen, College of Engineering and Computer Science, ANU | |
| local.contributor.affiliation | Frampton, Daniel, College of Engineering and Computer Science, ANU | |
| local.contributor.affiliation | Hirzel, Martin, IBM | |
| local.contributor.affiliation | McKinley, Kathryn, University of Texas | |
| local.contributor.authoruid | Blackburn, Stephen, u3789498 | |
| local.contributor.authoruid | Frampton, Daniel, u3293014 | |
| local.description.embargo | 2037-12-31 | |
| local.description.notes | Imported from ARIES | |
| local.description.refereed | Yes | |
| local.identifier.absfor | 080308 - Programming Languages | |
| local.identifier.absseo | 970108 - Expanding Knowledge in the Information and Computing Sciences | |
| local.identifier.ariespublication | U3594520xPUB338 | |
| local.identifier.doi | 10.1145/1806596.1806649 | |
| local.identifier.scopusID | 2-s2.0-77954753579 | |
| local.type.status | Published Version |