Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

José María Llabería

dblp:l/JMLlaberia · also José M. Llabería · DBLP profile ↗
← Back
47ranked-venue papers
1as first author
1since 2021 · last 2021
0000-0002-3753-4108ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 43 · 1 first-author · 1 since 2021Software engineering, systems software and programming languages · 8 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 3

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
20 papers
Memory systems · 76% Processor architecture and microarchitecture · 16% Parallel and multicore computing · 5%
Software engineering, system software, and programming languages
5 papers
Compilers and program optimization · 100%

Topics — the 30 heaviest of 60, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Memory systems
cache
0.442013
Exploiting reuse locality on inclusive shared last-level caches · ACM Trans. Archit. Code Optim. 2013
ABS: A low-cost adaptive controller for prefetching in a banked shared last-level cache · ACM Trans. Archit. Code Optim. 2012
Store Buffer Design in First-Level Multibanked Data Caches · ISCA 2005
Memory systems
cache coherence
0.222013
Exploiting reuse locality on inclusive shared last-level caches · ACM Trans. Archit. Code Optim. 2013
Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors · ACM Trans. Archit. Code Optim. 2005
Memory systems › cache design
cache inclusion
0.212013
Exploiting reuse locality on inclusive shared last-level caches · ACM Trans. Archit. Code Optim. 2013
Memory systems
cache management
0.212013
The reuse cache: downsizing the shared last-level cache · MICRO 2013
Memory systems › cache management
cache replacement
0.212013
The reuse cache: downsizing the shared last-level cache · MICRO 2013
Memory systems › memory hierarchy › cache hierarchy
last-level cache
0.212013
The reuse cache: downsizing the shared last-level cache · MICRO 2013
Memory systems › cache management › cache replacement
last-level cache replacement
0.212013
Exploiting reuse locality on inclusive shared last-level caches · ACM Trans. Archit. Code Optim. 2013
Memory systems › cache › cache organization
multibanked data cache
0.122009
Store Buffer Design for Multibanked Data Caches · IEEE Trans. Computers 2009
Store Buffer Design in First-Level Multibanked Data Caches · ISCA 2005
Processor architecture and microarchitecture › load/store queue
store buffer
0.122009
Store Buffer Design for Multibanked Data Caches · IEEE Trans. Computers 2009
Store Buffer Design in First-Level Multibanked Data Caches · ISCA 2005
Memory systems › cache › prefetching
hardware prefetching
0.112012
ABS: A low-cost adaptive controller for prefetching in a banked shared last-level cache · ACM Trans. Archit. Code Optim. 2012
Memory systems
speculative memory state buffering
0.122005
Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors · ACM Trans. Archit. Code Optim. 2005
Tradeoffs in Buffering Memory State for Thread-Level Speculation in Multiprocessors · HPCA 2003
Parallel and multicore computing › speculative parallelization
thread-level speculation
0.122005
Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors · ACM Trans. Archit. Code Optim. 2005
Tradeoffs in Buffering Memory State for Thread-Level Speculation in Multiprocessors · HPCA 2003
Memory systems
memory hierarchy
0.112009
Store Buffer Design for Multibanked Data Caches · IEEE Trans. Computers 2009
Processor architecture and microarchitecture
chip multiprocessor
0.122013
Exploiting reuse locality on inclusive shared last-level caches · ACM Trans. Archit. Code Optim. 2013
ABS: A low-cost adaptive controller for prefetching in a banked shared last-level cache · ACM Trans. Archit. Code Optim. 2012
Memory systems › cache management
shared cache management
0.122013
Exploiting reuse locality on inclusive shared last-level caches · ACM Trans. Archit. Code Optim. 2013
ABS: A low-cost adaptive controller for prefetching in a banked shared last-level cache · ACM Trans. Archit. Code Optim. 2012
Compilers and program optimization
loop transformation
0.132002
Register tiling in nonrectangular iteration spaces · ACM Trans. Program. Lang. Syst. 2002
Performance Evaluation of Tiling for the Register Level · HPCA 1998
Loop Transformation Using Nonunimodular Matrices · IEEE Trans. Parallel Distributed Syst. 1995
Compilers and program optimization
loop optimization
0.122003
A Cost-Effective Implementation of Multilevel Tiling · IEEE Trans. Parallel Distributed Syst. 2003
On the Performance of Hand vs. Automatically Optimized Numerical Codes · HPCA 2000
Compilers and program optimization › loop transformation
register tiling
0.122002
Register tiling in nonrectangular iteration spaces · ACM Trans. Program. Lang. Syst. 2002
Performance Evaluation of Tiling for the Register Level · HPCA 1998
Processor architecture and microarchitecture
speculative execution
0.112005
Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors · ACM Trans. Archit. Code Optim. 2005
Compilers and program optimization › loop transformation
multi-level tiling
0.012003
A Cost-Effective Implementation of Multilevel Tiling · IEEE Trans. Parallel Distributed Syst. 2003
Memory systems › cache
cache optimization
0.012003
A Cost-Effective Implementation of Multilevel Tiling · IEEE Trans. Parallel Distributed Syst. 2003
Compilers and program optimization
compiler optimization
0.012002
Register tiling in nonrectangular iteration spaces · ACM Trans. Program. Lang. Syst. 2002
Compilers and program optimization › instruction scheduling
instruction-level parallelism
0.012002
Register tiling in nonrectangular iteration spaces · ACM Trans. Program. Lang. Syst. 2002
Compilers and program optimization › loop optimization
loop tiling
0.012002
Register tiling in nonrectangular iteration spaces · ACM Trans. Program. Lang. Syst. 2002
Memory systems › memory architecture
interleaved memory
0.021999
Minimizing Conflicts Between Vector Streams in Interleaved Memory Systems · IEEE Trans. Computers 1999
Increasing the Number of Strides for Conflict-Free Vector Access · ISCA 1992
Processor architecture and microarchitecture
vector processor
0.031999
Minimizing Conflicts Between Vector Streams in Interleaved Memory Systems · IEEE Trans. Computers 1999
Increasing the Effective Bandwidth of Complex Memory Systems in Multivector Processors · SC 1996
Increasing the Number of Strides for Conflict-Free Vector Access · ISCA 1992
Parallel and multicore computing › task scheduling › dynamic scheduling
dynamically-scheduled processor
0.012009
Store Buffer Design for Multibanked Data Caches · IEEE Trans. Computers 2009
High-performance computing › performance optimization
numerical program optimization
0.012000
On the Performance of Hand vs. Automatically Optimized Numerical Codes · HPCA 2000
Memory systems
memory interference
0.011999
Minimizing Conflicts Between Vector Streams in Interleaved Memory Systems · IEEE Trans. Computers 1999
Processor architecture and microarchitecture › memory system microarchitecture
memory ordering
0.011999
Minimizing Conflicts Between Vector Streams in Interleaved Memory Systems · IEEE Trans. Computers 1999

Methods — techniques the papers use, named apart from their topics

simulation · 0.2cache line reuse detection · 0.2speculative forwarding · 0.1hill-climbing · 0.1adaptive control · 0.1complexity-benefit tradeoff analysis · 0.1fault injection · 0.1tiling · 0.1affine loop bounds computation · 0.1loop tiling · 0.1software pipelining · 0.1unroll-and-jam · 0.0multilevel tiling · 0.0outer unrolling · 0.0inner unrolling · 0.0hermite normal form · 0.0block partitioning · 0.0
YearPublicationVenuePosition
2021 Near-optimal replacement policies for shared caches in multicore processors
Pablo Ibáñez 0001, Teresa Monreal Arnal, Víctor Viñals, José María Llabería
J. Supercomput.5
2019 ReD: A reuse detector for content selection in exclusive shared last-level caches
Teresa Monreal Arnal, Pablo Ibáñez 0001, José María Llabería, Víctor Viñals
J. Parallel Distributed Comput.4
2018 Reuse Detector: Improving the Management of STT-RAM SLLCs
abstract
Various constraints of Static Random Access Memory (SRAM) are leading to consider new memory technologies as candidates for building on-chip shared last-level caches (SLLCs). Spin-Transfer Torque RAM (STT-RAM) is currently postulated as the prime contender due to its better energy efficiency, smaller die footprint and higher scalability. However, STT-RAM also exhibits some drawbacks, like slow and energy-hungry write operations that need to be mitigated before it can be used in SLLCs for the next generation of computers. In this work, we address these shortcomings by leveraging a new management mechanism for STT-RAM SLLCs. This approach is based on the previous observation that although the stream of references arriving at the SLLC of a Chip MultiProcessor (CMP) exhibits limited temporal locality, it does exhibit reuse locality, i.e. those blocks referenced several times manifest high probability of forthcoming reuse. As such, conventional STT-RAM SLLC management mechanisms, mainly focused on exploiting temporal locality, result in low efficient behavior. In this paper, we employ a cache management mechanism that selects the contents of the SLLC aimed to exploit reuse locality instead of temporal locality. Specifically, our proposal consists in the inclusion of a Reuse Detector (RD) between private cache levels and the STT-RAM SLLC. Its mission is to detect blocks that do not exhibit reuse, in order to avoid their insertion in the SLLC, hence reducing the number of write operations and the energy consumption in the STT-RAM. Our evaluation, using multiprogrammed workloads in quad-core, eight-core and 16-core systems, reveals that our scheme reports on average, energy reductions in the SLLC in the range of 37–30%, additional energy savings in the main memory in the range of 6–8% and performance improvements of 3% (quad-core), 7% (eight-core) and 14% (16-core) compared with an STT-RAM SLLC baseline where no RD is employed. More importantly, our approach outperforms DASCA, the state-of-the-art STT-RAM SLLC management, reporting—depending on the specific scenario and the kind of applications used—SLLC energy savings in the range of 4–11% higher than those of DASCA, delivering higher performance in the range of 1.5–14% and additional improvements in DRAM energy consumption in the range of 2–9% higher than DASCA.
Roberto Rodríguez-Rodríguez, Fernando Castro, Pablo Ibáñez 0001, Daniel Chaver, Víctor Viñals, Juan Carlos Saez, Manuel Prieto 0001, Luis Piñuel, Teresa Monreal Arnal, José María Llabería
Comput. J.11
2013 The reuse cache: downsizing the shared last-level cache
abstract
Over recent years, a growing body of research has shown that a considerable portion of the shared last-level cache (SLLC) is dead, meaning that the corresponding cache lines are stored but they will not receive any further hits before being replaced. Conversely, most hits observed by the SLLC come from a small subset of already reused lines.
Jorge Albericio, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
MICRO4
2013 Exploiting reuse locality on inclusive shared last-level caches
abstract
Optimization of the replacement policy used for Shared Last-Level Cache (SLLC) management in a Chip-MultiProcessor (CMP) is critical for avoiding off-chip accesses. Temporal locality, while being exploited by first levels of private cache memories, is only slightly exhibited by the stream of references arriving at the SLLC. Thus, traditional replacement algorithms based on recency are bad choices for governing SLLC replacement. Recent proposals involve SLLC replacement policies that attempt to exploit reuse either by segmenting the replacement list or improving the rereference interval prediction. On the other hand, inclusive SLLCs are commonplace in the CMP market, but the interaction between replacement policy and the enforcement of inclusion has barely been discussed. After analyzing that interaction, this article introduces two simple replacement policies exploiting reuse locality and targeting inclusive SLLCs: Least Recently Reused (LRR) and Not Recently Reused (NRR). NRR has the same implementation cost as NRU, and LRR only adds one bit per line to the LRU cost. After considering reuse locality and its interaction with the invalidations induced by inclusion, the proposals are evaluated by simulating multiprogrammed workloads in an 8-core system with two private cache levels and an SLLC. LRR outperforms LRU by 4.5% (performing better in 97 out of 100 mixes) and NRR outperforms NRU by 4.2% (performing better in 99 out of 100 mixes). We also show that our mechanisms outperform rereference interval prediction, a recently proposed SLLC replacement policy and that similar conclusions can be drawn by varying the associativity or the SLLC size.
Jorge Albericio, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
ACM Trans. Archit. Code Optim.4
2012 Effcient Handling of Lock Hand-off in DSM Multiprocessors with Buffering Coherence Controllers
Benjamín Sahelices, Agustín De Dios Hernández, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
J. Comput. Sci. Technol.5
2012 ABS: A low-cost adaptive controller for prefetching in a banked shared last-level cache
abstract
Hardware data prefetch is a very well known technique for hiding memory latencies. However, in a multicore system fitted with a shared Last-Level Cache (LLC), prefetch induced by a core consumes common resources such as shared cache space and main memory bandwidth. This may degrade the performance of other cores and even the overall system performance unless the prefetch aggressiveness of each core is controlled from a system standpoint. On the other hand, LLCs in commercial chip multiprocessors are more and more frequently organized in independent banks. In this contribution, we target for the first time prefetch in a banked LLC organization and propose ABS, a low-cost controller with a hill-climbing approach that runs stand-alone at each LLC bank without requiring inter-bank communication. Using multiprogrammed SPEC2K6 workloads, our analysis shows that the mechanism improves both user-oriented metrics (Harmonic Mean of Speedups by 27% and Fairness by 11%) and system-oriented metrics (Weighted Speedup increases 22% and Memory Bandwidth Consumption decreases 14%) over an eight-core baseline system that uses aggressive sequential prefetch with a fixed degree. Similar conclusions can be drawn by varying the number of cores or the LLC size, when running parallel applications, or when other prefetch engines are controlled.
Jorge Albericio, Ruben Gran Tejero, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
ACM Trans. Archit. Code Optim.5
2011 Filtering Directory Lookups in CMPs with Write-Through Caches
Ana Bosque, Víctor Viñals, Pablo Ibáñez 0001, José María Llabería
Euro-Par (1)4
2010 Filtering Directory Lookups in CMPs
abstract
Coherence protocols consume an important fraction of power to determine which coherence action should take place. In this paper we focus on CMPs with a shared cache and a directory-based coherence protocol implemented as a duplicate of local caches tags. We observe that a big fraction of directory lookups produce a miss since the block looked up is not cached in any local cache. We propose to add a filter before the directory lookup in order to reduce the number of lookups to this structure. The filter identifies whether the current block was last accessed as a data or as an instruction. With this information, looking up the whole directory can be avoided for most accesses. We evaluate the filter in a CMP with 8 in-order processors with 4 threads each and a memory hierarchy with a shared L2 cache. We show that a filter with a size of 3% of the tag array of the shared cache can avoid more than 70% of all comparisons performed by directory lookups with a performance loss of just 0.2% for SPLASH2 and 1.5% for Specweb2005. On average, the number of 15-bit comparisons avoided per cycle is 54 out of 77 for SPLASH2 and 29 out of 41 for Specweb2005. In both cases, the filter requires less than one read of 1 bit per cycle.
Ana Bosque, Víctor Viñals, Pablo Ibáñez 0001, José María Llabería
DSD4
2009 A Methodology to Characterize Critical Section Bottlenecks in DSM Multiprocessors
Benjamín Sahelices, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
Euro-Par4
2009 On reducing misspeculations in a pipelined scheduler
abstract
Pipelining the scheduling logic, which exposes and exploits the instruction level parallelism, degrades processor performance. In a 4-issue processor, our evaluations show that pipelining the scheduling logic over two cycles degrades performance by 10% in SPEC-2000 integer benchmarks. Such a performance degradation is due to sacrificing the ability to execute dependent instructions in consecutive cycles. Speculative selection is a previously proposed technique that boosts the performance of a processor with a pipelined scheduling logic. However, this new speculation source increases the overall number of misspeculated instructions, and this unuseful work wastes energy. In this work we introduce a non-speculative mechanism named Dependence Level Scheduler (DLS) which not only tolerates the scheduling-logic latency but also reduces the number of misspeculated instructions with respect to a scheduler with speculative selection. In DLS, the selection of a group of one-cycle instructions (producer-level) is overlapped with the wake up in advance of its group of dependent instructions. DLS is not speculative because the group of woken in advance instructions will compete for selection only after issuing all producer-level instructions. On average, DLS reduces the number of misspeculated instructions with respect to a speculative scheduler by 17.9%. From the IPC point of view, the speculative scheduler outperforms DLS by 0.3%. Moreover, we propose two non-speculative improvements to DLS.
Ruben Gran Tejero, Enric Morancho, Àngel Olivé, José María Llabería
IPDPS4
2009 Store Buffer Design for Multibanked Data Caches
abstract
This paper focuses on how to design a Store Buffer (STB) well suited to first-level multibanked data caches. The goal is to forward data from in-flight stores into dependent loads within the latency of a cache bank. Taking into account the store lifetime in the processor pipeline and the data forwarding behavior, we propose a particular two-level STB design in which forwarding is done speculatively from a distributed first-level STB made of extremely small banks, whereas a centralized, second-level STB enforces correct store-load ordering. Besides, the two-level STB admits two simplifications that leave performance almost unchanged. Regarding the second-level STB, we suggest to remove its data forwarding capability, while for the first-level STB, it is possible to: 1) remove the instruction age checking and 2) compare only the less significant address bits. Experimentation covers both integer and floating point codes executing in dynamically scheduled processors. Following our guidelines and running SPEC-2K over an 8-way processor, a two-level STB with four 8-entry banks in the first level performs similar to an ideal, single-level STB with 128-entry banks working at the first-level cache latency. Also, we show that the proposed two-level design is suitable for a memory-latency-tolerant processor.
Enrique F. Torres, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
IEEE Trans. Computers4
2007 On reducing energy-consumption by late-inserting instructions into the issue queue
abstract
In the presence of a long-latency instruction as a L2 miss, the issue queue (IQ) may fill with instructions dependent on the L2 miss; consequently, the IQ will not expose instruction-level parallelism until resolving the miss.
Enric Morancho, José María Llabería, Àngel Olivé
ISLPED2
2007 A comparison of two policies for issuing instructions speculatively
Enric Morancho, José María Llabería, Àngel Olivé
J. Syst. Archit.2
2006 Speeding-Up Synchronizations in DSM Multiprocessors
Agustín De Dios Hernández, Benjamín Sahelices Fernández, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
Euro-Par5
2006 An Enhancement for a Scheduling Logic Pipelined over two Cycles
abstract
Out of order processors use the dynamic scheduling logic both to expose and to exploit parallelism. Pipelining this logic may sacrifice the ability to execute dependent instructions in consecutive cycles. Several previous studies have shown that pipelining the scheduling logic over two cycles degrades performance; our evaluations, in a 4-way machine, on SPEC-2000 integer benchmarks show a performance degradation about 11% compared to an unpipelined scheduling logic. In this work, we present two non-speculative enhancements for a scheduling logic pipelined over two cycles. The idea is computing in advance which instructions will be woken-up by all instructions that are currently competing for selection. Once all of them have been selected, the pre-computed group of instructions can compete for selection in next cycle. The enhancement goal is to tolerate the scheduling-loop latency when not enough ILP is available through the scheduling of dependent instructions in consecutive cycles. Our results in a 4-way machine show that our two proposed enhancements perform, on average, slightly better than two previously proposed speculative schedulers. The performance of our proposals is within a 2.6% and 2% of an unpipelined ideal scheduler.
Ruben Gran Tejero, Enric Morancho, Àngel Olivé, José María Llabería
ICCD4
2005 Store Buffer Design in First-Level Multibanked Data Caches
abstract
This paper focuses on how to design a store buffer (STB) well suited to first-level multibanked data caches. Our goal is to forward data from in-flight stores to dependent loads with the latency of a cache bank. For that we propose a particular two-level STB design in which forwarding is done speculatively from a distributed first-level STB made of extremely small banks, while a centralized, second-level STB enforces correct store-load ordering a few cycles later. To that end we have identified several important design decisions: i) delaying allocation of first-level STB entries until stores execute; ii) deallocating first-level STB entries before stores commit; and iii) selecting a recovery policy well-matched to data forwarding misspeculations. Moreover, the two-level STB admits two enhancements that simplify the design leaving performance almost unchanged: i) removing the data forwarding capability from the second-level STB; and ii) not checking instruction age in first-level STB prior to forwarding data to loads. Following our guidelines and running SPECint-2K over an 8-way out-of-order processor, a two-level STB (first level with four STB banks of 8 entries each) performs similarly to an ideal, single-level STB with 128-entry banks working at the first-level cache latency.
Enrique F. Torres, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
ISCA4
2005 Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors
abstract
Thread-Level Speculation (TLS) provides architectural support to aggressively run hard-to-analyze code in parallel. As speculative tasks run concurrently, they generate unsafe or speculative memory state that needs to be separately buffered and managed in the presence of distributed caches and buffers. Such a state may contain multiple versions of the same variable. In this paper, we introduce a novel taxonomy of approaches to buffer and manage multiversion speculative memory state in multiprocessors. We also present a detailed complexity-benefit tradeoff analysis of the different approaches. Finally, we use numerical applications to evaluate the performance of the approaches under a single architectural framework. Our key insights are that support for buffering the state of multiple speculative tasks and versions per processor is more complexity-effective than support for lazily merging the state of tasks with main memory. Moreover, both supports can be gainfully combined and, in large machines, their effect is nearly fully additive. Finally, the more complex support for storing future state in the main memory can boost performance when buffers are under pressure, but hurts performance when squashes are frequent.
María Jesús Garzarán, Milos Prvulovic, José María Llabería, Víctor Viñals, Lawrence Rauchwerger, Josep Torrellas
ACM Trans. Archit. Code Optim.3
2004 A Mechanism for Verifying Data Speculation
Enric Morancho, José María Llabería, Àngel Olivé
Euro-Par2
2004 Contents Management in First-Level Multibanked Data Caches
Enrique F. Torres, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
Euro-Par4
2003 Counteracting Bank Misprediction in Sliced First-Level Caches
Enrique F. Torres, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
Euro-Par4
2003 Tradeoffs in Buffering Memory State for Thread-Level Speculation in Multiprocessors
abstract
Thread-level speculation provides architectural support to aggressively run hard-to-analyze code in parallel. As speculative tasks run concurrently, they generate unsafe or speculative memory state that needs to be separately buffered and managed in the presence of distributed caches and buffers. Such state may contain multiple versions of the same variable. In this paper, we introduce a novel taxonomy of approaches to buffering and managing multi-version speculative memory state in multiprocessors. We also present a detailed complexity-benefit tradeoff analysis of the different approaches. Finally, we use numerical applications to evaluate the performance of the approaches under a single architectural framework. Our key insights are that support for buffering the state of multiple speculative tasks and versions per processor is more complexity-effective than support for merging the state of tasks with main memory lazily. Moreover, both supports can be gainfully combined and, in large machines, their effect is nearly fully additive. Finally, the more complex support for future state in main memory can boost performance when buffers are under pressure, but hurts performance when squashes are frequent.
María Jesús Garzarán, Milos Prvulovic, José María Llabería, Víctor Viñals, Lawrence Rauchwerger, Josep Torrellas
HPCA3
2003 A Cost-Effective Implementation of Multilevel Tiling
abstract
This paper presents a new cost-effective algorithm to compute exact loop bounds when multilevel tiling is applied to a loop nest having affine functions as bounds (nonrectangular loop nest). Traditionally, exact loop bounds computation has not been performed because its complexity is doubly exponential on the number of loops in the multilevel tiled code and, therefore, for certain classes of loops (i.e., nonrectangular loop nests), can be extremely time consuming. Although computation of exact loop bounds is not very important when tiling only for cache levels, it is critical when tiling includes the register level. This paper presents an efficient implementation of multilevel tiling that computes exact loop bounds and has a much lower complexity than conventional techniques. To achieve this lower complexity, our technique deals simultaneously with all levels to be tiled, rather than applying tiling level by level as is usually done. For loop nests having very simple affine functions as bounds, results show that our method is between 15 and 28 times faster than conventional techniques. For loop nests caving not so simple bounds, we have measured speedups as high as 2,300. Additionally, our technique allows eliminating redundant bounds efficiently. Results show that eliminating redundant bounds in our method is between 22 and 11 times faster than in conventional techniques for typical linear algebra programs.
Marta Jiménez, José María Llabería, Agustín Fernández
IEEE Trans. Parallel Distributed Syst.2
2002 Register tiling in nonrectangular iteration spaces
abstract
Loop tiling is a well-known loop transformation generally used to expose coarse-grain parallelism and to exploit data reuse at the cache level. Tiling can also be used to exploit data reuse at the register level and to improve a program's ILP. However, previous proposals in the literature (as well as commercial compilers) are only able to perform multidimensional tiling for the register level when the iteration space is rectangular. In this article we present a new general algorithm to perform multidimensional tiling for the register level in both rectangular and nonrectangular iteration spaces. We also propose a simple heuristic to determine the tiling parameters at this level. Finally, we evaluate our method using as benchmarks typical linear algebra algorithms having nonrectangular iteration spaces and compare our proposal against hand-optimized vendor-supplied numerical libraries and against commercial compilers able to perform optimizing code transformations such as inner unrolling, unroll-and-jam, and software pipelining. Measurements were taken on three different superscalar microprocessors. Results will show that our method outperforms the native compilers (showing speedups of 2.5 in average) and matches the performance of vendor-supplied numerical libraries. The general conclusion is that compiler technology can make it possible for nonrectangular loop nests to achieve as high performance as hand-optimized codes.
Marta Jiménez, José María Llabería, Agustín Fernández
ACM Trans. Program. Lang. Syst.2
2000 Two-Level Address Storage and Address Prediction (Research Note)
Enric Morancho, José María Llabería, Àngel Olivé
Euro-Par2
2000 On the Performance of Hand vs. Automatically Optimized Numerical Codes
abstract
In this paper, we compare automatic-optimized codes against hand-optimized codes. The automatic-optimized codes have been generated using our own developed tool that implements compiler techniques proposed in our previous work. Our compiler techniques focus on applying multilevel tiling to non-rectangular loop nests. This type of loop nests are commonly found in linear algebra algorithms, typically used in numerical codes. As hand-optimized codes, we use two different numerical libraries: the BLAS3 library provided by the manufacturers and the RISC-BLAS library proposed in Dayde and Duff (1998). Results will show how compiler technology can make it possible for non-rectangular loop nests to achieve as high performance as hand-optimized codes on modern microprocessors.
Marta Jiménez, José María Llabería, Agustín Fernández
HPCA2
2000 Modeling load address behaviour through recurrences
abstract
Addresses of load instructions exhibit regularity in their behaviour which is modelled through several models (locality repetitive patterns, etc.) and exploited in processor and memory hierarchy design. Nevertheless, sparse and symbolic applications are intensive in addressing patterns not entirely covered by current models. In this work we introduce a new recurrence among load pairs called "linear link" in order to identify more regularity from such applications. A linear link is a type of recurrence between the value read by a (producer) load and the address issued by a (consumer) load, which is detected tracking on-the-fly dependencies among loads. We consider a broad workload (Nas, Olden, Perfect, Spec95 and IAbench) and conclude that linear links together with stride recurrences can identify many address streams in symbolic and scientific applications traversing either dense, linked data structures or compressed forms of sparse arrays. The two recurrence combinations identify more than 90% of the addresses in more than a half the programs (in 24 our of 55), and more than 75% of the addresses in 90% of the programs (50 our of 55). Finally, we show several measures related to the use of linear links as address predictors for executing loads speculatively and for issuing data prefetches (prediction distance ahead capacity, etc.).
Luis M. Ramos, Pablo Ibáñez 0001, Víctor Viñals, José María Llabería
ISPASS4
1999 Minimizing Conflicts Between Vector Streams in Interleaved Memory Systems
abstract
The performance of a vector processor accessing vectors placed in memory is strongly dependent on the conflicts produced in the memory subsystem. These conflicts delay the task of the functional units. There can be conflicts between elements of the same vector and between elements of different vector streams. It is known that the presence of the last kind of conflicts is the main cause of cycles lost. This paper proposes an order to access the elements of a vector stream that reduces the average memory access time in vector processors when several vector streams are concurrently accessed. The proposed order determines that the memory system observes the same stride for all the vector streams of a stride family. Conflicts between concurrent vector streams of the same family are completely eliminated if the rate at which memory modules are requested is less than or equal to their service rate. For other cases, the number of lost cycles due to conflicts is dramatically reduced.
Anna M. del Corral, José María Llabería
IEEE Trans. Computers2
1998 Performance Evaluation of Tiling for the Register Level
abstract
Tiling is a well-known loop transformation, which is basically used to expose coarse-grain parallelism and to exploit data reuse at the cache level. However, it can also be used to exploit data reuse at the register level and to improve programs's ILP. Previous work on tiling and also commercial compilers are able to perform tiling for the register level in more than one dimension when the iteration space is rectangular. Non-rectangular iteration spaces are commonly found in linear algebra algorithms or can arise as a result of applying previous transformations such as loop skewing. In this paper we evaluate the technique presented in Jimenez et al. (1996) which is able to perform tiling for the register level in more than one dimension in both rectangular and non-rectangular iteration spaces. We use typical linear algebra algorithms having non-rectangular iteration spaces as benchmarks and compare our proposal against commercial preprocessors able to perform optimizing code transformations such as inner unrolling, outer unrolling and software pipelining. We will also present quantitative data showing the benefits of tiling only for the register level, tiling only for the cache level and tiling for both levels simultaneously. Results measured on a ALPHA 21164 processor show that tiling for both cache and register levels improves upon commercial compilers and preprocessors by factors in the range of 1.3 to 6.3.
Marta Jiménez, José María Llabería, Agustín Fernández
HPCA2
1998 A General Algorithm for Tiling the Register Level
abstract
Tiling is a well-known loop transformation that can be used to exploit data reuse at the register level and to improve a program’s ILP. Previous work on tiling and also commercial compilers are able to perform tiling for the register level in more than one dimension when the iteration space is rectangular. However, they either cannot handle or can only handle limited cases of non-rectangular iteration spaces. Nonrectangular iteration spaces 1 are commonly found in linear algebra algorithms or can arise as a result of applying previous transformations such as loop skewing. In this paper we present a new general algorithm to perform tiling for the register level in more than one dimension in both rectangular and nonrectangular iteration spaces. Our method uses index set splitting to distinguish loop nests that traverse boundary tiles of the tiled iteration space from loop nests that traverse nonboundary tiles. We evaluate our method using as benchmarks typical linear algebra algorithms having non-rectangular iteration spaces. Results measured on both ALPHA 21064 and MIPS R10000 machines show that our method achieves speedups in the range of 1.11 to 5.96 over commercial compilers and preprocessors able to perform optimizing code transformations. 2.
Marta Jiménez, José María Llabería, Agustín Fernández, Enric Morancho
International Conference on Supercomputing2
1996 Reducing Inter-Vector-Conflicts in Complex Memory Systems
abstract
In vector processors, the concurrent memory access of several vector streams causes inter-conflicts between references.In a complex memory system where several memory modules are mapped in every bus the number of conflicts increases because the bus must be shared by vector streams.In addition to the memory module access conflicts, bus access conflicts can appear, and also couplings of both type of conflicts.This paper proposes an access order to the vector elements and a mapping model of memory modules in buses that reduce the inter-conflicts in the steady-state.
Anna M. del Corral, José María Llabería
International Conference on Supercomputing2
1996 Increasing the Effective Bandwidth of Complex Memory Systems in Multivector Processors
abstract
In multivector processors, the lost cycles due to conflicts between concurrent vector streams make the effective throughput be lower than the peak throughput. When the request rate of all the concurrent vector streams to every memory module is less than or equal to the service rate, conflicts appear because concurrent vector streams reference memory modules in different orders. In addition, in a memory system where several memory modules are mapped in every bus (complex memory system) bus conflicts are added to memory module conflicts. This paper proposes an access order to the vector stream elements that reduces the average memory access time in vector processors with complex memory systems. When request rate is greater than the service rate, the proposed order reduces the numbe of lost cycles, and the effective throughput increases. In other cases, the effective throughput reach the peak throughput. The proposed order generates the memory references in such a way that the memory modules shared by the concurrent self-conflict-free vector streams, and the sections where memory modules are mapped, are referenced using the same order.
Anna M. del Corral, José María Llabería
SC2
1995 Loop Transformation Using Nonunimodular Matrices
abstract
Linear transformations are widely used to vectorize and parallelize loops. A subset of these transformations are unimodular transformations. When a unimodular transformation is used, the exact bounds of the transformed loop nest are easily computed and the steps of the loops are equal to 1. Unimodular loop transformations have been widely used since they permit the implementation of many useful loop transformations. Recently, nonunimodular transformations have been proposed to reduce communication requirements or to use the memory hierarchy efficiently. The methods used for unimodular transformations do not work in the case of nonunimodular transformations, since they do not produce the exact bounds of the transformed loop nest. In this paper, we present a method for nested loop transformation which gives the exact bounds for both unimodular and nonunimodular transformations. The basic idea is to use the Hermite Normal Form (HNF) of the transformation matrix.>
Agustín Fernández, José María Llabería, Miguel Valero-García
IEEE Trans. Parallel Distributed Syst.2
1993 Reducing Branch Delay to Zero in Pipelined Processors
abstract
A mechanism to reduce the cost of branches in pipelined processors is described and evaluated. It is based on the use of multiple prefetch, early computation of the target address, delayed branch, and parallel execution of branches. The implementation of this mechanism using a branch target instruction memory is described. An analytical model of the performance of this implementation makes it possible to measure the efficiency of the mechanism with a very low computational cost. The model is used to determine the size of cache lines that maximizes the processor performance, to compare the performance of the mechanism with that of other schemes, and to analyze the performance of the mechanism with two alternative cache organizations.>
Antonio González 0001, José María Llabería
IEEE Trans. Computers2
1992 Scheduling partitions in systolic algorithms
abstract
The authors present a technique for scheduling partitions in systolic algorithms (SA). This technique can be used in combination with any possible projection used for the problem dependent size SA design and with any possible spatial mapping used for the partitions. They also present the necessary code transformations to transform the sequential code into the code that is executed in a processing element (PE) of the systolic processor (SP). This technique is applied to the matrix by vector problem using a non-unimodular transformation matrix and taking into account input and output of data. Cut&pile spatial mapping is used for the partitions.>
Alvaro Suárez, José María Llabería, Agustín Fernández
ASAP2
1992 Increasing the Number of Strides for Conflict-Free Vector Access
abstract
Address transformation schemes, such as skewing and linear transformations, have been proposed to achieve conflict-free vector access for some strides in vector processors with multi-module memories. In this paper, we extend these schemes to achieve this conflict-free access for a larger number of strides. The basic idea is to perform an out-of-order access to vectors of fixed length, equal to that of the vector registers of the processor. Both matched and unmatched memories are considered: we show that the number of strides is even larger for the latter case. The hardware for address calculations and access control is described and shown to be of similar complexity as that required for access in order.
Mateo Valero, Tomás Lang, José María Llabería, Montse Peiron, Eduard Ayguadé, Juan J. Navarro
ISCA3
1992 Evaluation of A + B = K Conditions Without Carry Propagation
abstract
The response time of parallel adders is mainly determined by the carry propagation delay. The evaluation of conditions of the type A+B=K is addressed. Although an addition is involved in the comparison, it is shown that it can be evaluated without carry propagation, thus drastically reducing the computation time. Dependencies produced by branches degrade the performance of pipelined computers. The evaluation of conditions is often one of the critical paths in the execution of branch instructions. A circuit is proposed for the fast evaluation of A+B=K conditions that can significantly improve processor performance.>
Jordi Cortadella, José María Llabería
IEEE Trans. Computers2
1991 Transformation of systolic algorithms for interleaving partitions
abstract
A systematic method to map systolic problems onto multicomputers is presented. A systolic problem is a problem for which it is possible to design a systolic algorithm. This method selects and transforms the systolic algorithm into a parallel algorithm with high granularity. The communications requirements are reduced and the performance can be increased. The proposed scheme requires a classification of dependences and it is based on the interleaved execution of several partitions of the systolic algorithm. The code to be executed in a processing element of the multicomputer system is obtained through application of the proposed systematic transformations to the original sequential code. By applying this method to algebraic path problem (APP), the authors illustrate the main features, and several performance measures for a torus of transputers system are presented, considering the various algorithms which are unified by the APP.>
Agustín Fernández, José María Llabería, Juan J. Navarro, Miguel Valero-García
ASAP2
1991 Performance evaluation of transputer systems with linear algebra problems
Agustín Fernández, José María Llabería, Juan J. Navarro, Miguel Valero-García
Microprocessing and Microprogramming2
1990 Implementation of systolic algorithms using pipelined functional units
abstract
The authors present a method to implement systolic algorithms (SAs) using pipelined functional units (PFUs). This kind of unit makes it possible to improve the throughput of a processor because of the possibility of initiating a new operation before the previous one has been completed. The method permits transformation of a SA so that it can be efficiently executed using PFUs. The method is based on two temporal transformations (slowdown and retiming) and one spatial transformation (coalescing). The temporal transformations permit the modification of the SA in such a way that dependences established by the PFU are preserved. The spatial transformation improves the hardware utilization. The method was applied to 1-D SAs with data contraflow. To demonstrate the effectiveness of the method, the authors describe an efficient implementation of a non-time-homogeneous SA with data contraflow for QR decomposition.>
Miguel Valero-García, Juan J. Navarro, José María Llabería, Mateo Valero
ASAP3
1989 Instruction fetch unit for parallel execution of branch instructions
abstract
A mechanism to reduce the cost of branches in pipelined processors is presented. This technique is implemented by means of a non-conventional cache (branch target cache) and an early branch detection circuit. Branches are executed by the instruction fetch unit (IFU) in parallel with the other instructions. In this way, the execution time cost for many branches can be effectively reduced to zero. In order to obtain the IFU design parameters, the mechanism is evaluated by means of an analytical model. Simulation results show the effectiveness of this technique.
Antonio González 0001, José María Llabería
ICS2
1989 Systematic Hardware Adaptation of Systolic Algorithms
abstract
In this paper we propose a methodology to adapt Systolic Algorithms to the hardware selected for their implementation. Systolic Algorithms obtained can be efficiently implemented using Pipelined Functional Units. The methodology is based on two transformation rules. These rules are applied to an initial Systolic Algorithm, possibly obtained through one of the design methodologies proposed by other authors. Parameters for these transformations are obtained from the specification of the hardware to be used. The methodology has been particularized in the case of one-dimensional Systolic Algorithms with data contraflow.
Miguel Valero-García, Juan J. Navarro, José María Llabería, Mateo Valero
ISCA3
1988 A mechanism for reducing the cost of branches in RISC architectures
Antonio González 0001, José María Llabería, Jordi Cortadella
Microprocess. Microprogramming2
1986 Solving Matrix Problems with No Size Restriction on a Systolic Array Processor
Juan J. Navarro, José María Llabería, Mateo Valero
ICPP2
1986 Computing Size-Independent Matrix Problems on Systolic Array Processors
abstract
A methodology to transform dense to band matrices is presented in this paper. This transformation, is accomplished by triangular blocks partitioning, and allows the implementation of solutions to problems with any given size, by means of contraflow systolic arrays, originally proposed by H.T. Kung. Matrix-vector and matrix-matrix multiplications are the operations considered here. The proposed transformations allow the optimal utilization of processing elements (PEs) of the systolic array when dense matrix are operated. Every computation is made inside the array by using adequate feedback. The feedback delay time depends only on the systolic array size.
Juan J. Navarro, José María Llabería, Mateo Valero
ISCA2
1985 Analysis and Simulation of Multiplexed Single-Bus Networks With and Without Buffering
abstract
Performance issues of a single-bus interconnection network for multiprocessor systems, operating in a multiplexed way, are presented in this paper. Several models are developed and used to allow system performance evaluation. Comparisons with equivalent crossbar systems are provided. It is shown how crossbar EBW values can be reached and exceeded when appropriate operation parameters are chosen in a multiplexed single-bus system. Another architectural feature is considered, concerning the utilization of buffers at the memory modules. With the buffering scheme, memory interference can be reduced so that the system performance is practically improved.
José María Llabería, Mateo Valero, Enrique Herrada Lillo, Jesús Labarta
ISCA1
1983 A performance evaluation of the multiple bus network for multiprocessor systems
abstract
In this paper we present a mathematical model to compute the bandwidth of the multiple bus interconnection network. Due to the computational complexity associated with the exact solution, the processors are removed from the queues at the end of each memory cycle to facilitate the analysis. This leads to approximate solutions which are both easier to obtain and very accurate.
Mateo Valero, José María Llabería, Jesús Labarta, Emilio Sanvicente, Tomás Lang
SIGMETRICS2